Carrera : Ingeniería Informática Pontificia Universidad Católica Argentina PROGRAMA DE INGENIERÍA DE SOFTWARE I 2010 Ubicación en el Plan de Estudios : 3 er Año, cuatrimestral Carga Horaria : 8 hs / semana ( 30 clases ) Objetivos de la materia : Aprender los conceptos básicos y las principales técnicas y metodologías relacionadas con el desarrollo de sistemas de información, especialmente las relacionadas con las técnicas orientadas a objeto de desarrollo de sistemas. Contenidos de la materia : I. INTRODUCCION (1ra. y 2da Clase Bibliografía # 1 y 2) Ingeniería de Software. Antecedentes. Definición. La comunicación en el desarrollo de sistemas. Definiciones. El desarrollo de sistemas como resultado colectivo y compartido. Modelo de Mensaje. Lenguaje y estructura de un mensaje. El ciclo de vida de los sistemas de información. Qué es el análisis?. Qué es el diseño?. La pirámide de sistemas de información. Problemas actuales en el desarrollo del software. Complejidad del software. Complejidad del dominio del problema. Atributos de un sistema complejo. Crisis en el desarrollo de sistemas. Modelo Estructurado vs. Modelo Orientado a Objetos. Características y diferencias. Ejercitación Práctica II. DEFINICION DE DATOS (3ra. y 4ta. Clase Bibliografía # 1, 2, 3, 5 y 6) Modelo de Entidad-Relación (ERM). Objetivo. Terminología. Simbología. Cardinalidad y opcionalidad. Etapas de construcción. Modelo Conceptual de Datos (CDM). Terminología y simbología. Pasos para su construcción. Relación con el Modelo de Entidad-Relación. Restricciones de eliminación, dependencia existencial, grado de una relación. Entidades características y asociadas. Relación entre modelos. Diagrama de Estado-Transición (STD). Terminología. Pasos. Relación con otros modelos. Uso. Ejercitación Práctica 1
III. DEFINICION DE PROCESOS (4ta. y 5ta Clase Bibliografía # 1 y 5) Diagrama de Flujo de Datos (DFD). Terminología. Simbología y reglas. Balanceo de diagramas. Primitivas. DFD's físico y lógico: definiciones, pasos para su construcción, diagramas del sistema actual y del propuesto. Relación con el ERM. Ejercitación Práctica IV. ANALISIS ESTRUCTURADO DE SISTEMAS (6ta. y 7ma Clase Bibliografía # 2 y 3) Problemas con el análisis de sistemas tradicional. Análisis estructurado de sistemas. Definición de análisis estructurado. Evolución de las técnicas estructuradas. Elementos del análisis estructurado. Comparación entre Tom de Marco y Gane & Sarson. Críticas al análisis estructurado clásico. Ventajas del enfoque moderno. Concepto de tecnología perfecta. Componentes de un sistema esencial. Modelos. Pasos para lograr el DFD lógico. Partición del sistema en actividades esenciales. Partición de la memoria esencial. Tratamiento de estímulos. Relación con el STD. V. DISEÑO ESTRUCTURADO DE SISTEMAS (8va. y 9na Clase Bibliografía # 3, 4 y 7) Objetivo y definición del diseño estructurado de sistemas. Teorema fundamental de la ingeniería de software. Concepto de independencia entre módulos. Modelos a utilizar para el diseño de procesos. Modelos a utilizar para el diseño de datos. Diseño de Procesos. Objetivo y conceptos fundamentales. Qué es un módulo?. Concepto de la caja negra. Concepto y tipos de conexión. Concepto y tipos de acoplamiento. Diseño de Datos. Modelo Lógico de Datos (LDM). Objetivo. Simbología y reglas. Normalización de datos. Formas Normales. Pasos para la normalización. VI. CRITERIOS DE EVALUACION DEL DISEÑO (10ma. y 11ma Clase Bibliografía # 4, 3 y 7) Distintos tipos de evaluaciones. Acoplamiento y cohesión. Conceptos fundamentales. El efecto Ripple. Acoplamiento: propósito. Principios del acoplamiento. Tipos de acoplamiento: mínimo, datos, estructura, control, común y patológico. Medida del acoplamiento. 2
Cohesión: propósito. Alto y bajo grado de cohesión. Niveles de cohesión: funcional, secuencial, de comunicación, de procedimiento, temporal, lógico y casual. Medida de la cohesión. VII. 1er. Parcial (12va. Clase) VIII. DESARROLLO DE SISTEMAS ORIENTADO A OBJETOS (13va. y 14va Clase Bibliografía # 10 y 11) Introducción. Qué es un objeto?. Qué es orientado a objetos?. Antecedentes y evolución histórica. Conceptos fundamentales. Reusabilidad. Niveles de reusabilidad. Elementos Fundamentales: Abstracción, Encapsulamiento, Modularidad y Jerarquía. Elementos Secundarios. Concurrencia. Persistencia. Tipificación. Clases y objetos. Definiciones. Características fundamentales de los objetos: Estado, Comportamiento e Identidad. Mensaje. Características de las clases: Acoplamiento, Cohesión, Suficiencia y Compleción. Conceptos de Primitiva e Instanciación. Herencia: concepto. Modelo UML. Antecedentes históricos. Qué es UML?. Visón general y conceptos básicos. Principios de modelado. Necesidad de modelar. Desarrollo OO. Diagramas estructurales. Diagramas de comportamiento. Análisis OO. Definiciones. Diagramas. Modelo de Análisis. Diseño OO. Definiciones. Modelo de Diseño. Programación OO. Definiciones e interrelaciones. IX. DIAGRAMA DE CLASES (15va. a 18va Clase Bibliografía # 8 y 11) Terminología y conceptos. Simbología. Distintas notaciones. Relaciones entre clases: definiciones y conceptos. Tipos de relaciones: conceptos. Dependencia, Generalización y Asociación. Agregación, Composición y Enlace. Visibilidad. Similitudes y diferencias con las técnicas estructuradas. Tarjetas CRC. Antecedentes y conceptos. Pasos para obtener las tarjetas CRC. Ingeniería Directa e Ingeniería Inversa: conceptos y definiciones. Reusabilidad del código. Early-Binding y Late-Binding: conceptos y definiciones. Polimorfismo. Overriding y Overloading: conceptos y definiciones. Ampliación del concepto de Herencia: Especialización y Extensión. 3
X. DIAGRAMA DE CASOS DE USO (19va. a 22va Clase Bibliografía # 8 y 12) Definiciones y conceptos. Antecedentes. Secuencia de acciones. Diagrama de Casos de Uso. Simbología. El Caso de Uso como Caja Negra. El Caso de Uso como texto. Actores: definición y concepto. Stakeholders. Actor principal y Actor Secundario. Notación. Diagramas de Caso de Uso: Flujo de Eventos, Interacciones, Escenarios de Éxito y de Fracaso. Pasos para el desarrollo de Diagramas de Casos de Uso. Redacción de Casos de Uso: Plantillas, Precondiciones, Disparadores, Escenarios de Éxito, Extensiones. Reglas y notaciones. Organización de los casos de uso. Niveles de Casos de Uso. Simbología. Relaciones entre Casos de Uso: Asociación, Extensión, Generalización e Inclusión. Colaboraciones. XI. DIAGRAMAS DE INTERACCION (23va. y 25va Clase Bibliografía # 8 y 13) Interacciones y Mensajes: conceptos y definiciones. Tipos de Diagramas de Interacción: Diagrama de Secuencia y Diagrama de Colaboración. Diagrama de Secuencia: definiciones y conceptos. Fortalezas y debilidades. Relaciones con los Casos de Uso. Sintaxis. Pasos y reglas para su construcción. Control Centralizado y Control Distribuido. Creación y destrucción de objetos. Ciclos y condicionales. Llamadas sincrónicas y asincrónicas. Diagrama de Colaboración: definiciones y conceptos. Sintaxis. Pasos y reglas para su construcción. Relaciones con los Casos de Uso. Concepto de Iteración, Bifurcación y Transformación de Objetos. Relación con el Diagrama de Secuencia. Relación con el Diagrama de Clases. XII. PARADIGMAS DE DESARROLLO (26va. Clase Bibliografía # 9 y 14) Distintos paradigmas de desarrollo de sistemas. Ventajas y desventajas. Enfoques para el desarrollo de sistemas. Enfoque en Cascada. Enfoque en Espiral. Modelo de Boehm. Otros modelos en espiral. Prototipos. Definiciones. Clases de prototipos. Costos y beneficios. Prototipación: definición y pasos metodológicos. 4
Desarrollo Iterativo: conceptos. Iteración: definición y conceptos. Planificación manejada por el riesgo y manejada por el cliente. Desarrollo Iterativo Time-Boxing: conceptos y definiciones. Priorización de requerimientos. Consideraciones y riesgos. Desarrollo Iterativo Evolutivo y Desarrollo Evolutivo Adaptable. Entrega Incremental. Desarrollo Agil: conceptos. Manifiesto Agil. Principios. Métodos específicos. Métodos Iterativos: Scrum, XP, Evo, RUP, etc. Principales características. Ventajas y antecedentes. XIII. CONCEPTOS DE CALIDAD Y MANTENIMIENTO DE SISTEMAS (27va. Clase Bibliografía # 5) Calidad del desarrollo de sistemas: definición, Administración de Calidad, componentes de la Administración de la Calidad, Control de Calidad. Prueba de un sistema: definiciones, blackbox y white-box testing, pruebas de regresión, pruebas unitarias, prueba del sistema, prueba de aceptación, pasos para una correcta prueba de un sistema. Mantenimiento de sistemas. Problemática. Distintos enfoques. Pasos clave para un mantenimiento exitoso. Organización del mantenimiento. XIV. 2do. Parcial (28va. Clase) XV. Entrega notas, presentación de TP s (29va. Clase) XVI. Recuperatorios de Parciales (30va. Clase) XVII.BIBLIOGRAFIA 1. STRUCTURED SYSTEMS ANALYSIS: Tools & Techniques; Chris Gane y Trish Sarson; Improved Systems Technologies - 1977. 2. MODERN STRUCTURED ANALYSIS; Edward Yourdon; Prentice Hall - 1989. 3. A PRACTICAL GUIDE TO LOGICAL DATA MODELING; George Tillmann; McGraw- Hill; 1993. 4. THE PRACTICAL GUIDE TO STRUCTURED SYSTEMS DESIGN; Meilir Page-Jones ; Yourdon Press - 1989. 5. STRUCTURED ANALYSIS AND SYSTEM SPECIFICATION; Tom de Marco; Yourdon Press - 1978. 6. JOURNEY OF THE SOFTWARE PROFESSIONAL; Luke Hohmann; Prentice Hall - 1997. 5
7. STRUCTURED DESIGN; Edward Yourdon y Larry Constantine; Yourdon Press - 1979. BIBLIOGRAFIA 2da. PARTE 8. EL LENGUAJE UNIFICADO DE MODELADO; J.Rumbaugh, I.Jacobson & G.Booch; Addison-Wesley. 9. UML y PATRONES; C. Larman; Addison-Wesley. 10. INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS; Timothy Budd; Addison-Wesley. 11. ANÁLISIS Y DISEÑO ORIENTADO A OBJETOS CON APLICACIONES 2da Edición; Grady Booch; Addison-Wesley/Díaz de Santos. 12. WRITING EFFECTIVE USE CASES; A. Cockburn; Addison-Wesley. 13. UML DESTILLED; M. Fowler; Addison-Wesley. 14. AGILE AND ITERATIVE DEVELOPMENT; C. Larman; Addison-Wesley. 6