Ingeniería de Software UNIDAD Nº 4 LIC. CONTRERAS PAMELA.

20
Ingeniería de Software UNIDAD Nº 4 UNIDAD Nº 4 LIC. CONTRERAS PAMELA

Transcript of Ingeniería de Software UNIDAD Nº 4 LIC. CONTRERAS PAMELA.

Page 1: Ingeniería de Software UNIDAD Nº 4 LIC. CONTRERAS PAMELA.

Ingeniería de Software

UNIDAD Nº 4UNIDAD Nº 4

LIC. CONTRERAS PAMELA

Page 2: Ingeniería de Software UNIDAD Nº 4 LIC. CONTRERAS PAMELA.

Ingeniería de Software

Es una disciplina de Ingeniería de Sistemas: se ocupa de la aplicación

de teorías, métodos, herramientas para hacer que las cosas funcionen:

Software que sea fiable y trabaje en maquinas reales.

Teniendo en cuenta restricciones financieras, organizacionales y

técnicas que comprende todos los aspectos de la producción de

software.

Desde la especificación inicial al mantenimiento del sistema.

Administración y gestión del proceso de producción

Principios y metodologías para desarrollo y mantenimiento de

sistemas de software.

Page 3: Ingeniería de Software UNIDAD Nº 4 LIC. CONTRERAS PAMELA.

La informática como una ingeniería de software: para la creación de instrumentos que sustituyan o imiten al ser humano.

Calculo matemático

Almacenamiento y manejo de datos

Realización de algoritmos

Almacenamiento y manejo de informacion

Ejecución de tareas consideradas inteligentes

¿Qué es la Ingeniería de Sistemas?Es el estado actual de la evolución del trabajo de sistemas, desde un clásico concepto artesanal, hacia el logro de la producción industrial de sistemas.-

1. Hacer los planos del Sistemas(Análisis)2. Sobre los planos aprobados por sus usuarios, generar las instrucciones

de fabricación(Diseño)3. Sobre esas instrucciones aprobadas por los usuarios, proceder a

construir el sistema(Desarrollo e implementación)4. Entregar el sistema funcionando, a sus usuarios.5. Prepararse a dar apoyo al sistema durante su vida útil(mantenimiento)

Page 4: Ingeniería de Software UNIDAD Nº 4 LIC. CONTRERAS PAMELA.

¿Cómo construir un Sistema de Información? Identificar a los usuarios Definir la arquitectura del sistema Definir el software a desarrollar

Cada vez mas complejo Desarrollarlo rápidamente Se necesitan métodos mejores de desarrollo

Requerimientos de Usuarios

Sistema de Software

Ofrece un marco de trabajo genérico

LOS SISTEMAS INFORMATICOS ESTÁN COMPUESTO DE:

HARDWAREComponente físico tangible

Es la resolución psíquicaEs el cerebro humano

SOFTWAREComponente lógico intangible

Es la menteEs el pensamientoLa capacidad de inferencia

Page 5: Ingeniería de Software UNIDAD Nº 4 LIC. CONTRERAS PAMELA.

ACTIVIDADES DE LA INGENIERIA DE SOFTWARE

Analizar el problema hasta su total comprensión Diseñar el sistema software que cumpla las expectativas Programarlo, probarlo y mantenerlo hasta que se decida su retiro

¿Qué es el Software?

1. Instrucciones(programa de computadora) que cuando se ejecuta proporcionan la función y el rendimiento deseado

2. Estructura de datos que permiten a los programas manipular adecuadamente la información.-

3. Documentos que describen la construcción y uso de programas. Pressman

• Programas de ordenador y documentación asociada• Los productos de software puede ser

• Genéricos: desarrollados para clientes muy diversos• Hechos a medida: para un cliente particular de acuerdo a su especificación.- Sommerville

Page 6: Ingeniería de Software UNIDAD Nº 4 LIC. CONTRERAS PAMELA.

Ingeniería de Software e Ingeniería de Sistemas

La Ingeniería de Sistemas se refiere a todos los aspectos del desarrollo

de sistemas basados en computadora.

La Ingeniería de software es solo parte de este proceso.

Los especialistas de sistemas se encargan de especificar el sistema,

definir su arquitectura, integrar sus partes.

Al ser el software muchas veces la parte mas importante, las técnicas

de ingeniería de software se aplican en el proceso de ingeniería de

sistemas.-

Page 7: Ingeniería de Software UNIDAD Nº 4 LIC. CONTRERAS PAMELA.

Principios de la Ingeniería de SoftwarePrincipios de la gestión de Proyectos

1.La calidad debe ser siempre primero, se debe cuantificar2.Es posible desarrollar software de alta calidad3.Una buena gestión es mas importante que una buena calidad4.Las personas y el tiempo no son intercambiables.-

Principios técnicos:

5.Seleccionar el modelo de ciclo de vida adecuado6.Entregar productos al usuario lo antes posible7.Determinar el problema antes de escribir los requisitos8.Evaluar la alternativa de diseño9.Nunca diseñar sin documentación10.Minimizar la distancia intelectual entre el problema y el mundo real11.Inspeccionar el código antes de probarlo

Principios de actitud y de filosofía profesional:

12.Usar formalismos distintos para las distintas fases13.Las técnicas son anteriores a las herramientas14.Primero hazlo correcto, después hazlo rápido15.La gente es la clave el éxito16.Introduce las mejoras con cuidado17.Asunción de responsabilidades de hacerlo bien, o no hacerlo18.Las complejidad del software es creciente.

Page 8: Ingeniería de Software UNIDAD Nº 4 LIC. CONTRERAS PAMELA.

Evolución en la construcción de software

Años 70•De la programación al ciclo de vida

Salto conceptual del programa al productoCiclo de vida es el conjunto de ESTADOS por los que pasa el productodesde su nacimiento. El programa es un estado mas en el conjunto del

desarrollo de software.-Se definieron los demás estadosDescripción del problema: Análisis y especificaciónDiseño: de la arquitectura, de funciones, de datosCodificación e integración

Años 80•Del ciclo de vida al Proceso de SoftwareSalto conceptual del producto al proceso.El proceso de software es el conjunto de tareas que realiza el equipo de desarrollo.Definición de la IEEE de un estándar de proceso de proceso de software con la descripción de tareas, independiente del modelo de ciclo de vida.

Page 9: Ingeniería de Software UNIDAD Nº 4 LIC. CONTRERAS PAMELA.

Años 90•Del Proceso de Software a la evaluación de su madurez.Centro de investigaciones: fiabilidad y calidad del software.Condición necesaria para un Buen Producto

Proceso de softwareUn proceso de software es un conjunto de actividades y resultados asociados que conducen a la creación de un producto de software

Proceso de resolución de problema:Proceso de resolución de problema:

1.Decidir que que hacer2.Decidir comocomo hacerlo3.3.HacerloHacerlo4.4.ProbarProbar el resultado5.5.UsarUsar el resultado

Análisis de requerimientosDiseño de sistemaCodificaciónPruebasInstalación

Page 10: Ingeniería de Software UNIDAD Nº 4 LIC. CONTRERAS PAMELA.

El Proceso Software Básico debe estar formado por las siguientes 6 etapas:

1. Obtención de requisitos

2. Diseñar el sistema

3. Programar el código

4. Probar el sistema

5. Instalar el sistema

6. Mantener y ampliar.

Proceso Software

Conjunto de actividades interrelacionadas por diversas estrategias que transforman el producto software

Ciclo de VidaConjunto de estados por los que pasa el producto. Ciclo de transformaciones que el producto sufre a lo largo de su vida.

Proveen un esquema necesario para planificar, organizar, coordinar, asignar personal, presupuestar y dirigir las actividades de construcción de software

Page 11: Ingeniería de Software UNIDAD Nº 4 LIC. CONTRERAS PAMELA.

Ciclo de vida:

Un marco de referencia que contiene los procesos, las actividades y las tareas involucradas en el desarrollo, la explotación y el mantenimiento de un producto de software, abarcando la vida del sistema desde la definición de requisitos hasta la finalización de su uso. ISO 12207-1

• Determina el orden de las fases del proceso• Establece los criterios de transición de una fase a otra

Actividades del Proceso

Obtención de

requisitos

Diseñar el

sistema

Programar el

código

Instalar, mantener ampliar

Probar el

sistema

Estados del Producto

Necesidad

Especific. de

requisitos

Diseño Sistema a Software

Programa

Page 12: Ingeniería de Software UNIDAD Nº 4 LIC. CONTRERAS PAMELA.

Modelos de ciclos de vida

Alternativos Espiral Desarrollo con

prototipado

Desarrolloincrementa

l

Tradicional

Refinamiento sucesivo

Cascada Refinamiento sucesivo

Cascada

Page 13: Ingeniería de Software UNIDAD Nº 4 LIC. CONTRERAS PAMELA.

Requisitos

Diseño

Codificación

Prueba

OperaciónCaracterísticas:•Obliga a especificar lo que el sistema debe hacer antes de construir el sistema•Obliga a definir como van a interactuar los componentes.•Permite detectar y resolver desviaciones sobre la planificación inicial•Requiere que el proceso de desarrollo genere una serie de documentos que posteriormente pueden utilizarse para la validación y el mantenimiento del sistema

Ventajas:•Las etapas están organizadas de un modo lógico•Cada etapa incluye cierto proceso de revisión.•Esta organizado de modo que se pase el menor numero de errores de una etapa a la siguiente•El ciclo es interactivo. El flujo básico es de arriba hacia abajo, no obstante, reconoce que los problemas de etapas inferiores afectan a las decisiones de las etapas superiores.-

Modelo de ciclo de vida en cascada

Page 14: Ingeniería de Software UNIDAD Nº 4 LIC. CONTRERAS PAMELA.

Requerimiento sistema global

Requerimiento sistema software

DiseñoPreliminar

Diseño detallado

Código

Integración software y hardware

Prueba del sistema software

Integracióndel software

Prueba de componente

Prueba de unidad

Visión alternativa del ciclo de vida en Cascada

• Los requisitos del sistema global se dividen en requisitos del hw y requisitos del sw

• Modelo alternativo que enfatiza en la validación de los productos.

Page 15: Ingeniería de Software UNIDAD Nº 4 LIC. CONTRERAS PAMELA.

Requisitos

Diseño de sistema

Diseño detallada

Implementación / pruebas unitarias

Pruebas de componentes

Pruebas de integración

Pruebas de aceptación

Valida requisitos

Verificadiseño

Modelo en cascada en V

Muestra la relación de las actividades de prueba con el análisis y diseño

Page 16: Ingeniería de Software UNIDAD Nº 4 LIC. CONTRERAS PAMELA.

A. Requisitos del sistema

A. Requisitos del sistema

A. Requisitos del softwareA. Requisitos del software

DiseñoDiseño

CodificaciónCodificación

A. Requisitos del softwareA. Requisitos del software

DiseñoDiseño

CodificaciónCodificación

A. Requisitos del softwareA. Requisitos del software

DiseñoDiseño

CodificaciónCodificación

………

Mantenimiento

Modelo incremental

El desarrollo incremental es el proceso de construir una implementación parcial del sistema global y posteriormente ir aumentando la funcionalidad del sistema.•Ventaja: Facilita la incorporación de nuevos requisitos, por lo tanto el software es fácil de mejorar.-•Desventaja: El equipo de desarrollo sacrifica la etapa de análisis a favor de una obtención rápida de la 1º versión, generando un 1º producto alejado de las necesidades del usuario.-

Page 17: Ingeniería de Software UNIDAD Nº 4 LIC. CONTRERAS PAMELA.

Recolección y refinamiento de requisitos

Producto de ingeniería

Diseño rápido

Construcción del prototipo

Evaluación del prototipo por el cliente

Refinamiento del prototipo

Parada

Comienzo Modelo de ciclo de vida Prototipo

Sigue el ciclo de vida tradicional , solo que su tiempo de desarrollo será bastante mas reducido. El usuario, mediante a utilización del prototipo, descubrirá los aspectos o requisitos no captados.

Page 18: Ingeniería de Software UNIDAD Nº 4 LIC. CONTRERAS PAMELA.

Modelo del ciclo de vida en Espiral

• En este modelo el radio representa el costo

• El ángulo representa el progreso obtenido en casa fase del

espiral

• Una distinción importante es que el producto estará

terminado al finalizar el espiral, no al terminal el ciclo

Ventajas:

• Su rango de opciones permite utilizar los modelos de

proceso de construcción de software tradicional, mientras

su orientación al riesgo evita muchas dificultades.

• Se centra en la eliminación de errores y alternativas poco

atractivas.

Page 19: Ingeniería de Software UNIDAD Nº 4 LIC. CONTRERAS PAMELA.

El Proceso Unificado

Es un proceso configurable aunque un único proceso no es adecuado para todas las organizaciones de desarrollo de software, el UP es adaptable y puede configurarse para cubrir las necesidades de proyectos pequeños y grandes.

Page 20: Ingeniería de Software UNIDAD Nº 4 LIC. CONTRERAS PAMELA.

Métodos agiles

Tratan de resolver el problema de los tiempos de desarrollo y de l evolución de los requerimientos

• Livianos : no se detienen en la planificación y documentación.• Adaptativos: rápida reacción a los cambios.• Iterativos: ciclos muy cortos, con entregables pequeños.

Principios agilistas:•Entrega temprana al cliente•Los requerimientos cambiantes son parte del desarrollo•Usuarios y desarrolladores trabajan juntos•Motivación de los desarrolladores•Los ejecutables entregados son la medida de avance•La simplicidad es primordial

Limitaciones:•Difícil de implementar en equipos de trabajo dispersos físicamente o demasiado grandes•Dificultad para desarrollar software grandes y complejos•No contemplan la reutilización de componentes•Problemas para utilizar herramientas CASE.