22
La Ingeniería de Software En esta presentación se dan a conocer: Producto Procesos Modelos de Software Inmer Alexai Flores Rodríguez S-I-B

(Inmer)La Ingenieria de Software

Embed Size (px)

DESCRIPTION

creador: Inmer Alexai Flores Rodriguez ITCA S-I-B 2010

Citation preview

Page 1: (Inmer)La Ingenieria de Software

La Ingeniería de Software

En esta presentación se dan a conocer:

ProductoProcesos

Modelos de Software

Inmer Alexai Flores Rodríguez S-I-B

Page 2: (Inmer)La Ingenieria de Software

Inmer Alexai

Producto

1.1 La Evolución del Software1.2 El Software

1.3 El Software: ¿Una Crisis en el Horizonte?

Page 3: (Inmer)La Ingenieria de Software

Inmer Alexai

1.1 La Evolución de Software

Hoy en día el software tiene un doble papel. Es un producto y, al mismo tiempo, el vehículo para entregarlo. Como producto, hace entrega de la potencia informática que incorpora el hardware informático o, mas ampliamente, una red de computadora que es el accesible por hardware local.

Page 4: (Inmer)La Ingenieria de Software

Inmer Alexai

1.2 El Software

El Software se desarrolla no se fabrica en un sentido clásico. Aunque existen similitudes entre el desarrollo del Software y la construcción del Hardware, ambas actividades son fundamentalmente diferentes. En ambas actividades la buena calidad se adquiere mediante un buen diseño, pero en el hardware puede introducir problemas de calidad que no existen en el Software.

Page 5: (Inmer)La Ingenieria de Software

Inmer Alexai

1.3 El Software: ¿Una crisis en el Horizonte?

Muchos autores han caracterizado los problemas asociados con el desarrollo de Software como una crisis. Esto se define como un punto decisivo en el curso de algo, momento, etapa o evento decisivo o crucial. Sin embrago, en términos de calidad del Software total y de velocidad con la cual son desarrollados los productos y los sistemas basados en computadoras solamente ha habido un lento cambio en disciplinas tecnológicas relacionadas con el Software.

Page 6: (Inmer)La Ingenieria de Software

Inmer Alexai

Proceso

2.1 Ingeniería del Software: Una tecnología Estratificada.

2.2 El Proceso del Software

Page 7: (Inmer)La Ingenieria de Software

Inmer Alexai

2.1 Ingeniería del Software: Una tecnología Estratificada.

Es el establecimiento y uso de principios robustos de la ingeniería a fin de obtener económicamente Software que sea fiable y que funcione eficientemente sobre maquinas reales. Ya que es también una tecnología multicapas estableciendo una organización de calidad. Estratificada porque va por capas siendo desglosada en capas de desarrollo.

Page 8: (Inmer)La Ingenieria de Software

Inmer Alexai

2.2 El Proceso del Software.

Se establece un marco común del proceso definiendo un pequeño numero de actividades del marco de trabajo que son aplicables a todos los proyectos del software. Esto permite que se adapten las características del proyecto del Software y a los requisitos del equipo del proyecto.

Page 9: (Inmer)La Ingenieria de Software

Inmer Alexai

Niveles de Madurez del Proceso.

1. Inicial: se caracteriza según el caso y ocasionalmente incluso de forma caótica. Se definen pocos procesos, y el éxito depende del esfuerzo individual.

2. Repetible: se establecen los procesos de gestión del proyecto para hacer seguimiento del coste, de la planificación y de la funcionalidad.

Page 10: (Inmer)La Ingenieria de Software

Inmer Alexai

3. Definido: el proceso de Software de las actividades de gestión y de ingeniería se documenta, se estandariza y se integra dentro de un proceso de Software de toda una organización.

4. Gestionado: se recopilan medidas detalladas del proceso del Software y de la calidad del producto se incluyen las medidas definidas en el nivel 3.

5. Optimización: mediante una retroalimentación cuantitativa del proceso, ideas y tecnologías innovadoras se posibilita una mejora del proceso. En este nivel se incluyen las características definidas para el nivel 4.

Page 11: (Inmer)La Ingenieria de Software

Inmer Alexai

Modelos de Software

1. Modelo en cascada o Clásico (modelo tradicional)

2. Modelo en espiral (modelo evolutivo) 3. Modelo de prototipos 4. Desarrollo por etapas5. Desarrollo iterativo y creciente o Interativo

Incremental 6. RAD (Rapid Application Development)

Page 12: (Inmer)La Ingenieria de Software

Inmer Alexai

Modelo de Cascada• 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 forma tal 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

Page 13: (Inmer)La Ingenieria de Software

Inmer Alexai

Fases del ModeloAnálisis de requisitos

Se analizan las necesidades de los usuarios finales del software para determinar qué objetivos debe cubrir. De esta fase surge una memoria llamada SRD (documento de especificación de requisitos), que contiene la especificación completa de lo que debe hacer el sistema sin entrar en detalles internos. Es importante señalar que en esta etapa se deben consensuar todo lo que se requiere del sistema y será aquello lo que seguirá en las siguientes etapas, no pudiéndose requerir nuevos resultados a mitad del proceso de elaboración del software.

Diseño del Sistema Se descompone y organiza el sistema en elementos que puedan elaborarse por separado,

aprovechando las ventajas del desarrollo en equipo. Como resultado surge el SDD (Documento de Diseño del Software), que contiene la descripción de la estructura relacional global del sistema y la especificación de lo que debe hacer cada una de sus partes, así como la manera en que se combinan unas con otras..

Diseño del Programa

Es la fase en donde se realizan los algoritmos necesarios para el cumplimiento de los requerimientos del usuario así como también los análisis necesarios para saber que herramientas usar en la etapa de Codificación.

Page 14: (Inmer)La Ingenieria de Software

Inmer Alexai

Codificación

Es la fase de programación o implementación propiamente dicha. Aquí se implementa el código fuente, haciendo uso de prototipos así como pruebas y ensayos para corregir errores. Dependiendo del lenguaje de programación y su versión se crean las librerías y componentes reutilizables dentro del mismo proyecto para hacer que la programación sea un proceso mucho más rápido.

Pruebas Los elementos, ya programados, se ensamblan para componer el sistema y se comprueba que

funciona correctamente antes de ser puesto en explotación.

Implantación El software obtenido se pone en producción. Se implantan los niveles software y hardware que

componen el proyecto. La implantación es la fase con más duración y con más cambios en el ciclo de elaboración de un proyecto.

MantenimientoEs una de las fases finales del proyecto Durante la explotación del sistema software pueden surgir

cambios, bien para corregir errores o bien para introducir mejoras. Todo ello se recoge en los Documentos de Cambios.

Page 15: (Inmer)La Ingenieria de Software

Inmer Alexai

Ejemplo del Modelo de Cascada

Page 16: (Inmer)La Ingenieria de Software

Inmer Alexai

Modelo de EspiralEl Desarrollo en Espiral es un modelo de ciclo de vida desarrollado por Barry Boehm en

1985, utilizado generalmente en la Ingeniería de software. Las actividades de este modelo se conforman en una espiral, cada bucle 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.

En cada vuelta o iteración hay que tener en cuenta Los Objetivos: Que necesidad debe cubrir el producto.Alternativas: Las diferentes formas de conseguir los objetivos de forma exitosa, desde

diferentes puntos de vista como pueden ser:Características: experiencia del personal, requisitos a cumplir, etc.Formas de gestión del sistema.Riesgo asumido con cada alternativa.Desarrollar y Verificar: Programar y probar el software.

Si el resultado no es el adecuado o se necesita implementar mejoras o funcionalidades Se planificaran los siguientes pasos y se comienza un nuevo ciclo de la espiral.

Page 17: (Inmer)La Ingenieria de Software

Inmer Alexai

La espiral tiene una forma de caracola y se dice que mantiene dos dimensiones, la radial y la angular:

Angular: Indica el avance del proyecto software dentro de un ciclo. Radial: Indica el aumento del coste del proyecto, ya que con cada nueva iteración se pasa más tiempo

desarrollando. Este sistema es muy utilizado en proyectos grandes y complejos como puede ser, por ejemplo, la

creación de un Sistema Operativo.Al ser un modelo de Ciclo de Vida orientado a la gestión de riesgo se dice que uno de los aspectos fundamentales de su éxito radica en que el equipo que lo aplique tenga la necesaria experiencia y habilidad para detectar y catalogar correctamente los riesgos.

Tareas Para cada ciclo habrá cuatro actividades:Determinar o fijar objetivos

Fijar también los productos definidos a obtener: requerimientos, especificación, manual de usuario.Fijar las restricciones.

Identificación de riesgos del proyecto y estrategias alternativas para evitarlos.Hay una cosa que solo se hace una vez: planificación inicial o previa.

Page 18: (Inmer)La Ingenieria de Software

Inmer Alexai

Análisis del riesgo Se estudian todos los riesgos potenciales y se seleccionan una o varias alternativas propuestas para reducir o

eliminar los riesgos.

Desarrollar, verificar y validar (probar)

-Tareas de la actividad propia y de prueba.-Análisis de alternativas e identificación resolución de riesgos.-Dependiendo del resultado de la evaluación de los riesgos, se elige un modelo para el desarrollo, el que puede ser cualquiera de los otros existentes, como formal, evolutivo, cascada, etc. Así si por ejemplo si los riesgos en la interfaz de usuario son dominantes, un modelo de desarrollo apropiado podría ser la construcción de prototipos evolutivos. Si lo riesgos de protección son la principal consideración, un desarrollo basado en transformaciones formales podría ser el más apropiado.

Planificar

Revisamos todo lo hecho, evaluándolo, y con ello decidimos si continuamos con las fases siguientes y planificamos la próxima actividad.

Mecanismos de control

La dimensión radial mide el coste.La dimensión angular mide el grado de avance del proyecto.

Page 19: (Inmer)La Ingenieria de Software

Inmer Alexai

Modelo de PrototipoEn Ingeniería de software el desarrollo con prototipación, también llamado modelo

de prototipos que pertenece a los modelos de desarrollo evolutivo, se inicia con la definición de los objetivos globales para el software, luego se identifican los requisitos conocidos y las áreas del esquema en donde es necesaria más definición. Entonces se plantea con rapidez una iteración de construcción de prototipos y se presenta el modelado (en forma de un diseño rápido).El diseño rápido se centra en una representación de aquellos aspectos del software que serán visibles para el cliente o el usuario final (por ejemplo, la configuración de la interfaz con el usuario y el formato de los despliegues de salida). El diseño rápido conduce a la construcción de un prototipo, el cual es evaluado por el cliente o el usuario para una retroalimentación; gracias a ésta se refinan los requisitos del software que se desarrollará. La iteración ocurre cuando el prototipo se ajusta para satisfacer las necesidades del cliente. Esto permite que al mismo tiempo el desarrollador entienda mejor lo que se debe hacer y el cliente vea resultados a corto plazo.

Page 20: (Inmer)La Ingenieria de Software

Inmer Alexai

Desarrollo por Etapas

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

Page 21: (Inmer)La Ingenieria de Software

Inmer Alexai

Desarrollo Iterativo y Creciente

Desarrollo 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.

Page 22: (Inmer)La Ingenieria de Software

Inmer Alexai

RAD( Desarrollo Rápido de Aplicaciones)

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.