Ingeniería de Software
Educativa
Didáctica y Tecnologías de la
Información
Juan Antonio CARBAJAL MAYHUA
¿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
 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 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
Procesar
Sueldos
Procesar
Sueldos
Calcular
impuestos
Calcular
descuentos
Calcular
ingresos
Descuentos
legales
Otros
descuentos
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
Determinar
objetivos, 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 2
Proto-
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 requerimientos
Plan 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.
Calcular
ingresos
Base de datos de empleados
Calcular
descuentos
………………………
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

Ingenieria de software.

  • 1.
    Ingeniería de Software Educativa Didácticay Tecnologías de la Información Juan Antonio CARBAJAL MAYHUA
  • 2.
    ¿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.
  • 3.
    ¿Qué es Ingenieríade 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
  • 4.
    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…..
  • 5.
    Diferencias con elsoftware  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?
  • 6.
    El ciclo devida del software Modificación: para adaptarse a los cambios del entorno. (en otros productos se conoce como reparación o mantención)
  • 7.
    La fase dedesarrollo del ciclo de vida del software
  • 8.
    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
  • 9.
    ¿Qué atributos tieneun 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ñó.
  • 10.
  • 11.
    Modelo de Cascada Diseñode 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.
  • 12.
    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
  • 13.
    Desarrollo evolutivo  Desarrolloexploratorio  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.
  • 14.
    Desarrollo evolutivo Actividades concurrentes Especificación Bosquejo dela descripción Desarrollo Validación Versión inicial Versiones intermedias Versión final
  • 15.
    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.
  • 16.
    Diseño descendente otop-down  Refinamiento por pasos sucesivos  Sistema jerárquico de refinamientos  Como resultado puede tenerse directamente una estructura de módulos
  • 17.
    Estructura de unsistema de sueldos simplificado Procesar Sueldos Procesar Sueldos Calcular impuestos Calcular descuentos Calcular ingresos Descuentos legales Otros descuentos
  • 18.
    Diseño ascendente obottom-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)
  • 19.
    Modelo en espiraldel proceso de Software Prueba de aceptación Servicio Determinar objetivos, 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 2 Proto- 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 requerimientos Plan de ciclo de vida Plan de desarrollo Integración y plan de prueba
  • 20.
    Sectores del modeloen 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.
  • 21.
    Diagramas de flujode datos  Representación gráfica de las trayectorias de los datos en un sistema. Calcular ingresos Base de datos de empleados Calcular descuentos ………………………
  • 22.
    Diagramas entidad-relación  Representacióngrá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
  • 23.
    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.
  • 24.
    Documentación  La documentaciónse requiere para los siguientes fines:  Aprender a utilizar el sistema  Documentación del usuario  Realizar modificaciones o mantención  Documentación técnica