Modelos y capas de la ingenieria de software

17
Sección: S-I-A Alumnos: Jhonatan Alexander Ruiz Zelaya Elmer Josué Ruiz Zelaya Luis Orlando Cruz Tema: Capas de la ingeniería del software y modelos de desarrollo

Transcript of Modelos y capas de la ingenieria de software

Page 1: Modelos y capas  de la ingenieria de software

• Sección: S-I-A

Alumnos: Jhonatan Alexander Ruiz Zelaya

Elmer Josué Ruiz ZelayaLuis Orlando Cruz

Tema:

Capas de la ingeniería del software y modelos de desarrollo

Page 2: Modelos y capas  de la ingenieria de software

• Como parte primordial de este trabajo tenemos que hacer una serie de investigaciones sobre desarrollo del software sus modelos y capas así como también investigar sobre los términos producto y proceso de tal forma que sea de beneficio para nosotros y podamos adquirir mas conocimientos sobre la ingeniería del software su desarrollo, calidad y todo sobre su metodología

Introducción

Page 3: Modelos y capas  de la ingenieria de software

• La ingeniería de software tiene varios modelos, paradigmas o filosofías de desarrollo en los cuales se puede apoyar para la realización de software, de los cuales podemos destacar a éstos por ser los más utilizados y los más completos:

• Modelo en cascada o Clásico (modelo tradicional)• Modelo en espiral (modelo evolutivo)• Modelo por etapas• Modelo iterativo y creciente o Iterativo e Incremental• RAD (Rapid Application Development)• Desarrollo concurrente• RUP (Modelo Racional)• Proceso Unificado

Modelos de desarrollo de software

Page 4: Modelos y capas  de la ingenieria de software

• En Ingeniería de software el desarrollo en cascada, también llamado modelo en cascada, es el enfoque metodológico que ordena rigurosamente las etapas del ciclo de vida del software, de tal forma que el inicio de cada etapa debe esperar a la finalización de la inmediatamente anterior.

Un ejemplo de una metodología de desarrollo en cascada es:• Análisis de requisitos• Diseño del Sistema• Diseño del Programa• Codificación• Pruebas• Implantación• Mantenimiento• De esta forma, cualquier error de diseño detectado en la etapa de prueba conduce

necesariamente al rediseño y nueva programación del código afectado, aumentando los costes del desarrollo. La palabra cascada sugiere, mediante la metáfora de la fuerza de la gravedad, el esfuerzo necesario para introducir un cambio en las fases más avanzadas de un proyecto.

• Si bien ha sido ampliamente criticado desde el ámbito académico y la industria, sigue siendo el paradigma más seguido al día de hoy.

Modelo en cascada

Page 5: Modelos y capas  de la ingenieria de software

• El modelo en espiral es un modelo de ciclo de vida del software definido por primera vez por Barry Boehm en 1988, utilizado generalmente en la Ingeniería de software. Las actividades de este modelo se conforman en una espiral, en la que cada bucle o iteración representa un conjunto de actividades. Las actividades no están fijadas a priori, sino que las siguientes se eligen en función del análisis de riesgo, comenzando por el bucle interior.

Modelo en espiral

Page 6: Modelos y capas  de la ingenieria de software

• El modelo de desarrollo de software por etapas es similar al Modelo de prototipos ya que se muestra al cliente el software en diferentes estados sucesivos de desarrollo, se diferencia en que las especificaciones no son conocidas en detalle al inicio del proyecto y por tanto se van desarrollando simultáneamente con las diferentes versiones del código.

Pueden distinguirse las siguientes fases:• Especificación conceptual• Análisis de requerimientos• Diseño inicial• Diseño detallado, codificación, depuración y liberación•

Estas diferentes fases se van repitiendo en cada etapa del diseño.

Desarrollo por etapas

Page 7: Modelos y capas  de la ingenieria de software

• Modelo iterativo y creciente (o incremental) es un proceso de desarrollo de software, creado en respuesta a las debilidades del modelo tradicional de cascada.

• Para apoyar el desarrollo de proyectos por medio de este modelo se han creado frameworks (entornos de trabajo), de los cuales los dos más famosos son el Rational Unified Process y el Dynamic Systems Development Method. El desarrollo incremental e iterativo es también una parte esencial de un tipo de programación conocido como Extreme Programming y los demás frameworks de desarrollo rápido de software

Modelo iterativo y creciente

Page 8: Modelos y capas  de la ingenieria de software

• El desarrollo rápido de aplicaciones o RAD (acrónimo en inglés de rapid application development) es un proceso de desarrollo de software, desarrollado inicialmente por James Martin en 1980. El método comprende el desarrollo iterativo, la construcción de prototipos y el uso de utilidades CASE (Computer Aided Software Engineering). Tradicionalmente, el desarrollo rápido de aplicaciones tiende a englobar también la usabilidad, utilidad y la rapidez de ejecución.

• Hoy en día se suele utilizar para referirnos al desarrollo rápido de interfaces gráficas de usuario tales como Glade, o entornos de desarrollo integrado completos. Algunas de las plataformas más conocidas son Visual Studio, Delphi, Foxpro o Anjuta.

Desarrollo rápido de aplicaciones

Page 9: Modelos y capas  de la ingenieria de software

• El Proceso Unificado de Racional (Rational Unified Process en inglés, habitualmente resumido como RUP) es un proceso de desarrollo de software y junto con el Lenguaje Unificado de Modelado UML, constituye la metodología estándar más utilizada para el análisis, implementación y documentación de sistemas orientados a objetos.

• El RUP no es un sistema con pasos firmemente establecidos, sino un conjunto de metodologías adaptables al contexto y necesidades de cada organización.

• También se conoce por este nombre al software desarrollado por Rational, hoy propiedad de IBM, el cual incluye información entrelazada de diversos artefactos y descripciones de las diversas actividades. Está incluido en el Rational Method Composer (RMC), que permite la personalización de acuerdo a necesidades.

• Originalmente se diseñó un proceso genérico y de dominio público, el Proceso Unificado, y una especificación más detallada, el Rational Unified Process, que se vendiera como producto

Proceso Unificado de Rational (RUP)

Page 10: Modelos y capas  de la ingenieria de software

• El Proceso Unificado de Desarrollo Software o simplemente Proceso Unificado es un marco de desarrollo de software que se caracteriza por estar dirigido por casos de uso, centrado en la arquitectura y por ser iterativo e incremental. El refinamiento más conocido y documentado del Proceso Unificado es el Proceso Unificado de Rational o simplemente RUP.

• El Proceso Unificado no es simplemente un proceso, sino un marco de trabajo extensible que puede ser adaptado a organizaciones o proyectos específicos. De la misma forma, el Proceso Unificado de Rational, también es un marco de trabajo extensible, por lo que muchas veces resulta imposible decir si un refinamiento particular del proceso ha sido derivado del Proceso Unificado o del RUP. Por dicho motivo, los dos nombres suelen utilizarse para referirse a un mismo concepto.

• El nombre Proceso Unificado se usa para describir el proceso genérico que incluye aquellos elementos que son comunes a la mayoría de los refinamientos existentes. También permite evitar problemas legales ya que Proceso Unificado de Rational o RUP son marcas registradas por IBM (desde su compra de Rational Software Corporation en 2003). El primer libro sobre el tema se denominó, en su versión española, El Proceso Unificado de Desarrollo de Software (ISBN 84-7829-036-2) y fue publicado en 1999 por Ivar Jacobson, Grady Booch y James Rumbaugh, conocidos también por ser los desarrolladores del UML, el Lenguaje Unificado de Modelado. Desde entonces los autores que publican libros sobre el tema y que no están afiliados a Rational utilizan el término Proceso Unificado, mientras que los autores que pertenecen a Rational favorecen el nombre de Proceso Unificado de Rational

• •

Proceso Unificado

Page 11: Modelos y capas  de la ingenieria de software

• La ingeniería de software es una tecnología multicapa, cualquier enfoque de ingeniería debe apoyarse sobre un compromiso de organización de calidad.

• Capas de la Ingeniería de Software.

Capas Ingeniería De Software

Page 12: Modelos y capas  de la ingenieria de software

Herramientas Las herramientas de la ingeniería del software proporcionan un soporte automático o semi-automático para el

proceso y los métodos, a estas herramientas se les llama herramientas CASE (Computer-Aided Software Engineering).

Métodos : Los métodos de la ingeniería de software indican cómo construir técnicamente el software. Los métodos abarcan

una gran gama de tareas que incluyen análisis de requisitos, diseño, construcción de programas, pruebas y mantenimiento. Estos métodos dependen de un conjunto de principios básicos que gobiernan cada área de la tecnología e incluyen actividades de modelado y otras técnicas descriptivas.

Procesos: El fundamento de la ingeniería de software es la capa proceso. El proceso define un marco de trabajo para un

conjunto de áreas clave, las cuales forman la base del control de gestión de proyectos de software y establecen el contexto en el cual: se aplican los métodos técnicos, se producen resultados de trabajo, se establecen hitos, se asegura la calidad y el cambio se gestiona adecuadamente.

Un enfoque de calidad : Son la base o cimientos de la ingeniería de software. Cualquier disciplina de ingeniería (incluida la ingeniería del software) debe descansar sobre un esfuerzo de

organización de calidad. La gestión total de la calidad y las filosofías similares fomentan una cultura continua de mejoras de procesos que conduce al desarrollo de enfoques cada vez más robustos para la ingeniería del software en si esta capa esta referida a la seriedad con la que los programadores trabajan en el desarrollo de software de calidad ya que estos a su vez son criticados por los usuarios y esto puede llevar a mejorar o disminuir el prestigio del programador.

Page 13: Modelos y capas  de la ingenieria de software

• Un producto software en sí es complejo, es prácticamente inviable conseguir un 100% de confiabilidad de un programa por pequeño que sea. Existe una inmensa combinación de factores que impiden una verificación exhaustiva de las todas posibles situaciones de ejecución que se puedan presentar (entradas, valores de variables, datos almacenados, software del sistema, otras aplicaciones que intervienen, el hardware sobre el cual se ejecuta, etc.).

• Un producto software es intangible y por lo general muy abstracto, esto dificulta la definición del producto y sus requisitos, sobre todo cuando no se tiene precedentes en productos software similares. Esto hace que los requisitos sean difíciles de consolidar tempranamente. Así, los cambios en los requisitos son inevitables, no sólo después de entregado en producto sino también durante el proceso de desarrollo.

Producto software

Page 14: Modelos y capas  de la ingenieria de software

• Un proceso de desarrollo de software tiene como propósito la producción eficaz y eficiente de un producto software que reúna los requisitos del cliente. Dicho proceso, Este proceso es intensamente intelectual, afectado por la creatividad y juicio de las personas involucradas .Aunque un proyecto de desarrollo de software es equiparable en muchos aspectos a cualquier otro proyecto de ingeniería, en el desarrollo de software hay una serie de desafíos adicionales, relativos esencialmente a la naturaleza del producto obtenido. A continuación se explican algunas particularidades asociadas al desarrollo de software y que influyen en su proceso de construcción.

El proceso de desarrollo del software

Page 15: Modelos y capas  de la ingenieria de software

• Framework o Marco de trabajo• La palabra inglesa framework define, en términos generales, un conjunto

estandarizado de conceptos, prácticas y criterios para enfocar un tipo de problemática particular, que sirve como referencia para enfrentar y resolver nuevos problemas de índole similar.

• En el desarrollo de software, un framework es una estructura conceptual y tecnológica de soporte definida, normalmente con artefactos o módulos de software concretos, con base en la cual otro proyecto de software puede ser organizado y desarrollado. Típicamente, puede incluir soporte de programas, bibliotecas y un lenguaje interpretado entre otros programas para ayudar a desarrollar y unir los diferentes componentes de un proyecto.

• Representa una arquitectura de software que modela las relaciones generales de las entidades del dominio. Provee una estructura y una metodología de trabajo la cual extiende o utiliza las aplicaciones del dominio.

Marco de trabajo

Page 16: Modelos y capas  de la ingenieria de software

Relación: • Otra perspectiva utilizada para determinar los elementos del proceso de desarrollo de

software es establecer las relaciones entre elementos que permitan responder Quién debe hacer Qué, Cuándo y Cómo debe hacerlo .

• Quién: Las Personas participantes en el proyecto de desarrollo desempeñando uno o más Roles específicos.

• Qué: Un Artefacto es producido por un Rol en una de sus Actividades. Los Artefactos se

especifican utilizando Notaciones específicas. Las Herramientas apoyan la elaboración de Artefactos soportando ciertas Notaciones.

• Cómo y Cuándo: Las Actividades son una serie de pasos que lleva a cabo un Rol durante el proceso de desarrollo. El avance del proyecto está controlado mediante hitos que establecen un determinado estado de terminación de ciertos Artefactos.

Page 17: Modelos y capas  de la ingenieria de software

ANEXOS