24
Ingeniería de Software Educativa Didáctica y Tecnologías de la Información Juan Antonio CARBAJAL MAYHUA Escuela de Post Grado Maestría en Educación

Ingenieria de software

Embed Size (px)

Citation preview

Page 1: Ingenieria de software

Ingeniería de SoftwareEducativa

Didáctica y Tecnologías de la Información

Juan Antonio CARBAJAL MAYHUA

Escuela de Post GradoMaestría en Educación

Page 2: Ingenieria de software

¿Qué es Software?

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.

Page 3: Ingenieria de software

¿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

Page 4: Ingenieria de software

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

Page 5: Ingenieria de software

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?

Page 6: Ingenieria de software

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)

Page 7: Ingenieria de software

La fase de desarrollo del ciclo de vida del software

Page 8: Ingenieria de software

Algunas herramientas

CASEComputer 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

Page 9: Ingenieria de software

¿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ñó.

Page 10: Ingenieria de software

Técnicas de desarrollo de software

Page 11: Ingenieria de software

Modelo de Cascada

Diseño de sistemas y software

Definición de requerimientos

Implementación y prueba de unidades

Integración y prueba de sistema

Operación y mantenimiento

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

Page 12: Ingenieria de software

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

Page 13: Ingenieria de software

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.

Page 14: Ingenieria de software

Desarrollo evolutivo

Actividades concurrentes

Especificación

Bosquejo de la descripción

Desarrollo

Validación

Versión inicial

Versiones intermedias

Versión final

Page 15: Ingenieria de software

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.

Page 16: Ingenieria de software

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

Page 17: Ingenieria de software

Estructura de un sistema de sueldos simplificado

ProcesarSueldos

ProcesarSueldos

Calcularimpuestos

Calculardescuentos

Calcularingresos

Descuentoslegales

Otrosdescuentos

Page 18: Ingenieria de software

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)

Page 19: Ingenieria de software

Modelo en espiral del proceso de Software

Prueba de aceptación

Servicio

Determinarobjetivos, alternativas y

restricciones

Evaluar alternativas e identificar y resolver

riesgos

Planear la siguiente fase Desarrollo, verificar producto del siguiente

nivel

Análisis de riesgos

Análisis de riesgos

Análisis de riesgos

Análisis de

riesgos

Prototipo 3

Prototipo 2Proto-tipo 1

Prototipo operacional

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

Page 20: Ingenieria de software

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.

Page 21: Ingenieria de software

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

………………………

Page 22: Ingenieria de software

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

Page 23: Ingenieria de software

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.

Page 24: Ingenieria de software

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