Upload
juan-antonio-carbajal-mayhua
View
331
Download
1
Embed Size (px)
Citation preview
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
¿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.
¿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
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
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
¿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 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.
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ón
Bosquejo de la descripción
Desarrollo
Validación
Versión inicial
Versiones intermedias
Versió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
ProcesarSueldos
ProcesarSueldos
Calcularimpuestos
Calculardescuentos
Calcularingresos
Descuentoslegales
Otrosdescuentos
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
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
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