Ing. Luis A. Otake
Introducción
Software
Ingeniería de Software
El proceso de la Ingeniería de Software
Modelos de procesos de Software
El estándar IEEE 1074
Modelos de ciclo de vida
Ing. Luis A. Otake 3
¿Por qué tarda tanto la obtención del software terminado?
¿Por qué son altos los costos de desarrollo de software?
¿Por qué es imposible encontrar todos los errores en el software antes
de entregarlo a los clientes?
¿Por qué se gastan tanto tiempo y esfuerzo en el mantenimiento de los
programas existentes?
• Son programas de computadora más la documentación asociada. • Se pueden desarrollar para algún cliente particular o para un
mercado general. Según Sommerville
• El software se forma con
• Las instrucciones (programas) que al ejecutarse proporcionan las características, funciones y el grado de desempeño deseados. • Las estructuras de datos que permiten que los programas
manipulen información de manera adecuada.
• Los documentos que describen la operación y el uso de los programas
Según Pressman
5 Ing. Luis A. Otake
El software se desarrolla o construye; no se manufactura en
el sentido clásico.
El software no se “desgasta”.
• Son sistemas aislados producidos por una organización de desarrollo y que se venden al mercado abierto a cualquier cliente. • La organización que desarrolla el software controla su
especificación. Productos genéricos
• Son sistemas requeridos por un cliente en particular.
• Un contratista de software desarrolla el software especialmente para ese cliente.
• La organización que compra el software controla su especificación. Productos personalizados (o hechos a medida)
7 Ing. Luis A. Otake
1) La aplicación de un enfoque
sistemático, disciplinado y cuantificable
del desarrollo, operación y
mantenimiento del software; es decir, la
aplicación de la ingeniería de software.
Es una actividad
•de modelado: sólo detalles relevantes
•para la solución de problemas
•para la adquisición de conocimiento (que no es
lineal*)
•dirigida por una fundamentación (conjunto de
modelos de problemas, conocimiento adicional
muchas veces no explícito)
9 Ing. Luis A. Otake
Herramientas
Métodos
Proceso
Un enfoque de calidad
11 Ing. Luis A. Otake
La ciencia de la computación comprende la teoría y
los fundamentos
La ingeniería de software comprende las formas
prácticas para desarrollar y liberar un software útil.
Analogía:
13 Ing. Luis A. Otake
•Desarrollar software de sistema y de aplicación que permita que dispositivos pequeños, PCs y sistemas empresariales se comuniquen a través de grandes redes.
Computación ubicua:
•Crear aplicaciones simples y complejas que beneficien a mercados de usuarios finales específicos alrededor del mundo.
Alimentación de la red (WWW)
•Construir un código fuente que sea descriptivo en sí mismo. •Desarrollar técnicas que permitan tanto a los clientes como a los
diseñadores conocer los cambios realizados y la forma en que se manifiesta dentro del software
Fuente abierta
•Construir aplicaciones que faciliten la comunicación y la distribución de productos en masa mediante productos apenas en formación.
Mitos de la
administración
Mitos del
cliente
Mitos del
desarrollador
15 Ing. Luis A. Otake
Ya se tiene un libro lleno de estándares y procedimientos para
la construcción de software. ¿Esto proporcionará a mi gente
todo el conocimiento?
Si se está atrasado en el itinerario es posible contratar más
programadores para así terminar a tiempo.
• “Agregar gente a un proyecto de software atrasado lo atrasa más”
Un enunciado general de los objetivos es
suficiente para comenzar a escribir programas; los
detalles se pueden afinar después.
Los requerimientos del proyecto cambian de
manera continua, pero el cambio puede ajustarse
con facilidad porque el software es flexible.
17 Ing. Luis A. Otake
Una vez que el programa ha sido escrito y puesto a funcionar, el trabajo está terminado.
Mientras el programa no se esté ejecutando, no existe forma de evaluar su calidad.
El único producto del trabajo que puede entregarse para tener un proyecto exitoso es el programa en funcionamiento.
• Se olvidan de la documentación
Entender el problema (comunicación y análisis)
Planear una solución (modelado y diseño de software)
Llevar a cabo el plan (generación de código)
•Donde los clientes e ingenieros definen el software a producir y las restricciones sobre su operación.
Especificación de
software
•Donde el software se diseña y programa.
Desarrollo de
software
•Donde el software se valida para asegurar qué es lo que el cliente requiere.
Validación del
software
•Donde el software se modifica para adaptarlo a los cambios requeridos por el cliente y el mercado.
Evolución del
software
•el cambio en el software es una consecuencia inevitable.
Mantenibilidad
•incluye fiabilidad, seguridad y protección. El software no debe causar daños físicos ni económicos.
Confiabilidad
•incluye tiempos de respuesta y de procesamiento, utilización de memoria, etc.
Eficiencia
•debe ser fácil de utilizar.
Usabilidad
23 Ing. Luis A. Otake
•mantener y actualizar el software antiguo (costos y
continuidad del servicio.
El reto de lo heredado
•desarrollar técnicas para construir software confiable que
sea lo suficientemente flexible.
El reto de la heterogeneidad
Código de ética y práctica profesional (ACM
y IEEE):
• Confidencialidad
• Competencia: no aceptar trabajos fuera de
su capacidad
• Derechos de propiedad intelectual
• Uso inapropiado de computadoras
Un avión de pasajeros está compuesto por varios millones de partes individuales y requiere miles de personas para ensamblarlo. Un puente de autopista de cuatro carriles es otro ejemplo de complejidad. La primera versión de Word para Windows, un procesador de textos lanzado por Microsoft en noviembre de 1989, requirió 55 años hombre, dando como resultado 249,000 líneas de código fuente y entregado con 4 años de retraso. Los aviones y los puentes de autopistas por lo general se entregan a tiempo y debajo de su presupuesto, mientras que con el software a menudo no es así.
Discuta cuáles son las diferencias entre el desarrollo de un avión, un puente y un procesador de textos que pueden causar esta situación.
27 Ing. Luis A. Otake
Es una descripción simplificada de un proceso de software
que presenta una visión de ese proceso.
Pueden incluir actividades que son parte de los procesos y
productos de software y el papel de las personas
involucradas en la ingeniería de software.
•Considera las actividades anteriores y las representa como fases de procesos separados, tales como la especificación de requerimientos, el diseño del software, la implementación, las pruebas, etc. •Después de que cada etapa queda definida “se firma” y el desarrollo continúa con la siguiente etapa. Enfoque en cascada
•Entrelaza las actividades de especificación, desarrollo y validación.
•Un sistema inicial se desarrolla rápidamente a partir de especificaciones muy abstractas. •Éste se refina basándose en las peticiones del cliente para producir un sistema que satisfaga las
necesidades de dicho cliente. •El sistema puede entonces ser entregado.
•De forma alternativa se puede reimplementar utilizando un enfoque más estructurado para producir un sistema más sólido y mantenible.
Desarrollo iterativo
•Supone que las partes del sistema existen.
•El proceso de desarrollo se enfoca en la integración de estas partes más que desarrollarlas desde el principio.
Ingeniería de software basada en componentes (CBSE)
Es un estándar para el desarrollo de procesos del ciclo de vida del software.
Es el conjunto de actividades y procesos obligatorios para el desarrollo y mantenimiento del software.
Su objetivo es establecer un marco común para el desarrollo de modelos de ciclo de vida y proporciona ejemplos de situaciones típicas.
31 Ing. Luis A. Otake
•Conjunto de actividades que se realiza para un propósito
específico.
•IEEE lista un total de 17 procesos.
•Están agrupados en grupos de procesos.
•Cada proceso está compuesto por actividades
Proceso
•Es una tarea o grupo de subactividades que se asignan a un
equipo o a un participante del proyecto para lograr un
propósito específico.
Las tareas consumen recursos (personal, tiempo, dinero) y crean un
producto de trabajo.
Durante la planeación las actividades se descomponen en tareas
específicas del proyecto, se les dan las fechas de inicio y terminación y
se asignan a un equipo o a un participante en el proyecto.
Durante el proyecto se da seguimiento al trabajo real contra las tareas
planeadas, y los recursos se reasignan para responder a los problemas.
33 Ing. Luis A. Otake
Grupos de procesos Procesos
Modelado de ciclo de vida Selección de un modelo de ciclo de vida
Administración del proyecto Inicio del proyecto
Supervisión y control del proyecto Administración de la calidad del software
Predesarrollo Exploración de conceptos
Asignación del sistema
Desarrollo Requerimientos
Diseño Implementación
Posdesarrollo Instalación
Operación y soporte Mantenimiento Retiro
Procesos integrales Verificación y validación
Administración de la configuración del software Desarrollo de la documentación
Un proyecto es una instancia de un ciclo de vida del software
35 Ing. Luis A. Otake
Uno de los objetivos del modelo de madurez de capacidades (CMM) es proporcionar lineamientos para la selección de las actividades del ciclo de vida.
El CMM asume que el desarrollo de los sistemas de software se hace más predecible cuando una organización usa un proceso de ciclo de vida bien estructurado, visible para todos los participantes en el proyecto y que se adapta al cambio.
SPICE (ISO/IEC
15504)
ISO 9001:2000
para software
37 Ing. Luis A. Otake