ingeniería de software. referencias brookshear: introducción a las ciencias de la computación,...

Post on 28-Jan-2016

262 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Ingeniería de Software

Referencias

• Brookshear: Introducción a las Ciencias de la Computación, Cap 6 Ingeniería de Software

• Ian Sommerville: Ingeniería de software, 6ª Edición

¿Qué es Software?

• Programas computacionales y documentación asociada.

• Los productos de software se pueden desarrollar para un cliente en particular o pueden ser desarrollados para un mercado general.

• Productos de software pueden ser:– Genéricos: desarrollados para ser vendidos a un tipo

de clientes.– Específicos: desarrollado para un cliente de acuerdo a

sus necesidades específicas.

¿Qué es Ingeniería de Software?

• La Ingeniería de Sofware es una disciplina de la Ingeniería que se preocupa de todos los aspectos de la producción de software.

• aplicación de los métodos de la ingeniería al proceso de desarrollo de software:– Diseño– Construcción– Mantenimiento

La disciplina – una analogía

• Diseñar y supervisar la construcción de un edificio de oficinas de varios pisos– Recursos? Dinero, tiempo, otros– División del proyecto en partes manejables?– Asegurar que las partes sean compatibles?– Mecanismo de comunicación entre los

encargados de las diversas partes?– Medición del grado de avance?– Muchas otras…..

Diferencias con el software

• Tolerancias para aceptación– Una lavadora que difiere el 2% de su tiempo

de trabajo con el deseado vs– Sistema de contabilidad cuya exactitud difiere

en un 2% ……?

Diferencias con el software

• Métricas – Sistemas de medición de la calidad.– Para un sistema electromecánico: Tiempo

medio entre fallas– (el software no se desgasta)

– ¿El número de líneas de un programa será una buena medida de su complejidad?

El ciclo de vida del software

Modificación: para adaptarse a los cambios del entorno. (en otros productos se conoce como reparación o mantención)

La fase de desarrollo del ciclo de vida del software

Algunas herramientas

• CASE– Computer – Aided Software Engineering– Ingeniería de software asistida por

computador

• Colaboran con– Elaboración de diagramas de flujo– Diagramas entidad relación– Diccionarios de datos– Generadores de código

¿Qué atributos tiene un buen Software?

• El software debería entregar la funcionalidad y desempeño requeridos por el usuario y debería ser mantenible, confiable y usable.

• Mantenibilidad– El software debe evolucionar para cubrir necesidades cambiantes.

• Confiabilidad– El software debe ser confiable.

• Eficiencia– El software no debe malgastar los recursos del sistema.

• Usabilidad– El software debe ser usable por los usuarios para quienes se diseñó.

Técnicas de desarrollo de software

Modelo de Cascada

Diseño de sistemas Diseño de sistemas y softwarey software

Definición de Definición de requerimientosrequerimientos

Implementación y Implementación y prueba de unidadesprueba de unidades

Integración y Integración y prueba de sistemaprueba de sistema

Operación y Operación y mantenimientomantenimiento

Inconveniente: dificultad para incorporar cambios después de que el proceso parte.

Empleo de prototipos

• Desarrollo de versiones simplificadas

– Para ser analizadas antes de continuar el desarrollo– Facilitan el aprendizaje frente a situaciones nuevas o

desconocidas– Elimina la necesidad de un desarrollo en cascada o

secuencial, permite un desarrollo iterativo o en espiral– El prototipo puede ser desechable o evolutivo

Desarrollo evolutivo

• Desarrollo exploratorio– El objetivo es trabajar con los clientes y evolucionar

hacia un sistema final desde una especificación inicial. Debería partir con requerimientos bien conocidos.

• Prototipos desechables– El objetivo es entender los requerimientos del sistema.

Debería comenzar con requerimientos pobremente conocidos.

Desarrollo evolutivo

Actividades concurrentes

EspecificaciónEspecificación

Bosquejo de la Bosquejo de la descripcióndescripción

DesarrolloDesarrollo

ValidaciónValidación

Versión inicialVersión inicial

Versiones Versiones intermediasintermedias

Versión finalVersión final

Desarrollo evolutivo

• Problemas– Los sistemas a menudo resultan pobremente estructurados.– Puede ser necesario contar con habilidades especiales (por

ejemplo, lenguajes para prototipos rápidos).

• Aplicabilidad– Para sistemas interactivos pequeños o de mediano tamaño.– Para partes de sistemas grandes (por ejemplo, la interfaz del

usuario).– Para sistemas de corta vida útil.

Diseño descendente o top-down

• Refinamiento por pasos sucesivos• Sistema jerárquico de refinamientos• Como resultado puede tenerse directamente

una estructura de módulos

Estructura de un sistema de sueldos simplificado

ProcesarProcesarSueldosSueldos

ProcesarProcesarSueldosSueldos

CalcularCalcularimpuestosimpuestos

CalcularCalculardescuentosdescuentos

CalcularCalcularingresosingresos

DescuentosDescuentoslegaleslegales

OtrosOtrosdescuentosdescuentos

Diseño ascendente o bottom-up

• Identifica las tareas individuales• Utiliza las tareas individuales como

herramientas abstractas para resolver problemas mas complejos.

• Estos bloques o módulos individuales podrían ser reutilizados en otras aplicaciones

Ej.: filtros de Sistemas operativos familia Unix (Linux)

Modelo en espiral del proceso de Software

Prueba de aceptación

Servicio

DeterminarDeterminarobjetivos, alternativas y objetivos, alternativas y

restriccionesrestricciones

Evaluar alternativas e Evaluar alternativas e identificar y resolver identificar y resolver

riesgosriesgos

Planear la siguiente fasePlanear la siguiente fase Desarrollo, verificar Desarrollo, verificar producto del siguiente producto del siguiente

nivelnivel

Análisis de Análisis de riesgosriesgos

Análisis de Análisis de riesgosriesgos

Análisis de Análisis de riesgosriesgos

Análisis Análisis de de

riesgosriesgos

Prototipo 3Prototipo 3

Prototipo 2Prototipo 2Proto-Proto-tipo 1tipo 1

Prototipo Prototipo operacionaloperacional

Simulaciones, modelos, pruebas comparativasConcepto

de operación

Validación de requerimientos

Requerimientos de software Diseño del

producto

Diseño de V&V

Diseño detallado

Código

Prueba de unidades

Prueba de integración

REVISIÓN

Plan de requerimientosPlan de ciclo de vida

Plan de desarrollo

Integración y plan de prueba

Sectores del modelo en espiral

• Fijación de Objetivo– Se identifican objetivos específicos para la fase.

• Identificación de riesgo y reducción– Riesgos son identificados y se realizan actividades para reducir

los riesgos clave.

• Desarrollo y validación– Se escoge un modelo de desarrollo para el sistema que puede

ser cualquiera de los modelos genéricos.

• Planificación– Se revisa el proyecto y se planifica la siguiente fase de la espiral.

Diagramas de flujo de datos

• Representación gráfica de las trayectorias de los datos en un sistema.

Hojas de asistenciaCalcularingresos

Base de datos de empleados

Tabl

a su

eldo

bas

e

Calculardescuentos

Ingr

esos

bru

tos

………………………

Diagramas entidad-relación

• Representación gráfica de los elementos de información o entidades manipulados por el sistema, y de sus relaciones

Profesor imparte clase Asiste a alumno1 n nn

Validación de Software

• Verificación es mostrar que un sistema adhiere a las especificaciones.

• Validación: alcanza los requerimientos del cliente del sistema.

• Involucra los procesos de chequeo y revisión, y las pruebas del sistema.

• Las pruebas del sistema consideran la ejecución del mismo con casos de prueba que se derivan desde la especificación de datos reales para ser procesados por el sistema.

Documentación

• La documentación se requiere para los siguientes fines:

– Aprender a utilizar el sistema• Documentación del usuario

– Realizar modificaciones o mantención• Documentación técnica

top related