Asignatura: Asignatura: INGENIERÍA DE SOFTWARE I CARRERA : Licenciatura en Sistemas de Información (LSI) y Licenciatura en Ciencias de la Computación FCEFN. (LCC) AÑO: 3er. Año CREDITO HORARIO: 7 horas reloj semanales ESPLIEGUE segundo cuatrimestre I - CUERPO DOCENTE (Según 308) -Mgter Lic. Mirta Elizabeth NAVARRO - Lic Gustavo Antonio SEVILLA - Lic Lorena Vanesa PARRA - Lic. Juan Antonio ARANDA II - OBJETIVO GENERAL y ESPECIFICOS PROGRAMA ANALÍTICO PLAN DE ESTUDIOS 2011 OBJETIVOS GENERALES: Introducir al alumno en los principios y alcance de la Ingeniería de Software, formarlo en las actividades de administración de requerimientos y aplicación de metodologías y herramientas para el desarrollo de software. OBJETIVOS ESPECIFICOS: UNIDAD 1 INGENIERÍA DE SOFTWARE - Conocer conceptos fundamentales, actividades y principios y Actividades de la Ingeniería de Software,
- Identificar procedimientos, métodos, herramientas de la Ingeniería de Software. - Comprender el Proceso de desarrollo de software, Ciclo de Vida y Modelos de Construcción. - Analizar los Métodos, características, Clasificación y diversidad UNIDAD 2 INGENIERÍA DE REQUERIMIENTOS - Comprender la importancia y actividades de la Ingeniería de Requerimientos. - Identificar los distintos tipos de de Requisito y características de los mismos. - Distinguir los aspectos a considerar en la Ingeniería de Requisitos, prioridades, contexto, análisis del problema, dificultades, evaluación y negociación de los Requisitos. - Analizar y aplicar el Documento de Requisitos IEEE/ANSI 830-1993. - Comprender la evolución, especificación y validación de los Requisitos de SW. - Aplicar técnicas y herramientas en la obtención y especificación. UNIDAD 3 CONCEPTOS ORIENTADOS A OBJETOS - Conocer los distintos conceptos relacionados a la Orientación a Objetos. - Entender el concepto de Modelado Orientado a Objeto. - Comprender el concepto de Desarrollo Orientado a Objetos. UNIDAD 4 METODOLOGIA OMT - Conocer la metodología de desarrollo Orientada a Objetos OMT y realizar su aplicación a un sistema propuesto por la cátedra y a otro sistema una organización local a elección del alumno. - Identificar las distintas fases y modelos propuesto por la Metodología OMT. - Aplicar herramientas CASE para obtener los modelos propuestos por la Metodología OMT. UNIDAD 5 METODOLOGIAS AGILES - Conocer los principios y valores comunes de los procesos ágiles a través del estudio del Ágiles Manifiesto. - Reconocer las diferencias con las metodologías tradicionales y la evolución de las metodologías ágiles. - Desarrollar criterios a partir del estudio de casos reales de aplicación de las metodologías.
- Conocer las metodologías ágiles más difundidas como: XP (Programación Extrema) Distributed XP, Scrum, FDD (Desarrollo guiado por características) - Dimensionar el rol de las personas y el trabajo en equipo en las metodologías ágiles. UNIDAD 6 METODOLOGIA ICONIX - Comprender el enfoque ICONIX, su modelo estático y dinámico, las interrelaciones entre ellos y entender la conducción por casos de usos, de esta metodología ágil para el desarrollo de sistema de información. - Analizar las fases e hitos que la componen. - Entender los modelos que se realizan en cada fase de la metodología ICONIX y la importancia de la documentación generada. - Analizar y emplear herramientas CASE que permitan realizar el análisis del desarrollo de un sistema aplicando la metodología ICONIX UNIDAD 7 SISTEMAS DE TIEMPO REAL Y SISTEMAS COLABORATIVOS - Comprender los conceptos, elementos, características, de los sistemas de tiempo real y de los sistemas colaborativos. - Diferenciar los distintos tipos de Sistemas de Tiempo real y Sistemas Colaborativos. - Entender los aspectos importantes a considerar para el modelado de sistemas de tiempo real. - Aplicar una metodología en el diseño de un de sistemas de tiempo real. - Identificar ventajas y desventajas de los sistemas colaborativos. UNIDAD 8 GESTION DEL CAMBIO REINGENIERIA Objetivos específicos: al término de esta unidad se espera que el alumno sea capaz de - Comprender los Procesos y dinámica del Cambio en los de sistemas informáticos. - Aplicar los métodos y técnicas en la gestión del cambio - Identificar los cambios y actividades del mantenimiento del Software. - Entender los métodos y soluciones técnicas al problema procurando mejoras. - Identificar los roles y principios del equipo de trabajo. - Comprender el procedimiento y métodos de la Reingeniería. - Aplicar los modelos de proceso en reingeniería, ingeniería Inversa y directa. - Estimar costo/beneficio de Reingeniería
III - ORGANIZACIÓN DE LOS CONTENIDOS EN UNIDADES UNIDAD 1 - INGENIERÍA DE SOFTWARE UNIDAD 2 INGENIERÍA DE REQUERIMIENTOS UNIDAD 3 - CONCEPTOS ORIENTADOS A OBJETOS UNIDAD 4 -METODOLOGIA OMT UNIDAD 5- METODOLOGIAS AGILES UNIDAD 6- METODOLOGIA ICONIX UNIDAD 7 - SISTEMAS COLABORATIVOS Y SISTEMAS EN TIEMPO REAL UNIDAD 8- GESTION DEL CAMBIO REINGENIERIA UNIDAD 1 INGENIERÍA DE SOFTWARE Concepto. Introducción y Visión General de Ingeniería de Software: Elementos: Métodos, Procedimientos y Herramientas. Aspectos e Importancia de la Ingeniería de Software. Relación con la Ingeniería de Sistemas y otras Ciencias de la Computación. Personas que participan, Actividades de la Ingeniería de Software, Relevancia, Principios de la Ingeniería de Software, Retos. Software: Definición, Características, Objetivos. Tipos, Costo. Proceso de desarrollo de software: Definición, Características. Proceso mínimo de construcción de software Ciclo de Vida. Evolución de la Construcción del Software. Métodos y Modelos: Cascada, Cascada en V, Incremental, Prototipo, Prototipo Evolutivo, Espiral, Otros. Proceso Unificado. Métodos Ágiles. Metodología de Desarrollo: Características, Clasificación. Herramientas Case. Métodos Formales en Ingeniería de Software. UNIDAD 2 INGENIERÍA DE REQUERIMIENTOS Concepto. Importancia de la Ingeniería de Requerimientos. Actividades de la Ingeniería de Requerimientos Personal Involucrado. Definición de Requerimientos. Clasificación. Características de los Requerimientos del Usuario. Requisitos vs Requerimientos. Importancia en el Ciclo de Vida de SW. Puntos a considerar en la Ingeniería de Requisitos Prioridades. Análisis del Problema. Dificultades al Definirlos. Aspectos Específicos a considerar durante la determinación. Punto de Vista del Usuario o Cliente. Documento de Requisitos estándar IEEE/ANSI 830-93 y Otras Normas. Técnicas y Herramientas Utilizadas en la obtención de Requisitos. Especificación de Requisitos de SW. Evaluación y Negociación de los Requisitos. Validación de los Requisitos. Evolución de los Requisitos. UNIDAD 3 - CONCEPTOS ORIENTADOS A OBJETOS Introducción. Temas Orientados a Objetos: Abstracción, Encapsulamiento, Herencia, Polimorfismo, Clase, operaciones y métodos etc. Modelado y Diseño Orientados a Objetos. Características de los Objetos. El Desarrollo Orientado A Objetos.
UNIDAD 4 METODOLOGIA OMT La Técnica de Modelado de Objetos. Modelado de objetos. Diagramas de Objetos. Enlaces y Asociaciones. Conceptos avanzados de enlace y asociaciones Generalización y Herencia. Construcciones de agrupamiento. Modelado de Avanzado Objetos. Modelado Dinámico. Escenarios y Seguimiento de Sucesos. Diagramas de Estados. Conceptos avanzados. Modelado Funcional. Diagrama. Relación del modelo funcional con los modelos de objeto y dinámico. Etapas de OMT. Análisis de Sistema. Desarrollo del Modelo de objeto. Desarrollo del Modelo Dinámico. Desarrollo del Modelo Funcional. Diseño de Sistema. Diseño de Objetos. Implementación. UNIDAD 5 METODOLOGIAS AGILES Introducción. Puntos clave. Métodos Ágiles: Programación Extrema XP (Extreme Programming), Open Source Crystal de Cockburn, Desarrollo de Software Adaptable de Highsmith, Scrum, Desarrollo Guiado por Características (o El Desarrollo Manejado por Rasgos (FDD)), DSDM (Método de Desarrollo de Sistema Dinámico), ICONIX. Limitaciones de los Método Ágiles. Las Metodologías Ágiles versus las Tradicionales Investigación, comparación y aplicación de las metodologías ágiles Trabajo en Equipo. Definición. Elementos presentes en una relación de equipo de trabajo. Variables y condiciones internas del trabajo en equipo. Roles. Condiciones o variables externas. Factores que favorecen el trabajo en equipo. Principios en que se basa el trabajo en equipo. Cualidades de la funcionalidad. Variables a considerar para definir objetivos en términos de resultados mensurables. Diferencia entre grupos y equipo. Desarrollo de software: el equipo de trabajo - roles y responsabilidades. Relación entre roles. Comparación de metodologías. UNIDAD 6 METODOLOGIA ICONIX Enfoque ICONIX. Modelo estático y Dinámico. Casos de uso, modelo de caso de usos. Apreciación global del Proceso ICONIX. Fases e Hitos: Fase I - Análisis de requerimientos: Requerimientos, Modelado del dominio, Prototipos, Modelado de Casos de Usos. Trazabilidad de requerimientos. Fase II - Análisis y diseño preliminar: Escenarios. Análisis de robustez. Diagramas de secuencia Fase III - Diseño. Fase IV Implementación: Escribir el código, Pruebas de unidad e integración, Pruebas de sistema y aceptación basadas en casos de uso. Utilización de herramienta CASE. Práctica aplicada en casos reales de organizaciones del medio local. UNIDAD 7 SISTEMAS DE TIEMPO REAL Y SISTEMAS COLABORATIVOS Sistemas de Tiempo Real: Introducción. Definiciones. Sistema Estímulo/Respuesta. Subsistemas. Clasificación de los Sistemas de
Tiempo Real. Características de los Sistemas de tiempo real. Modelado de sistemas de tiempo real. Problemas a resolver en el diseño de STR. Requisitos que debe reunir un metodología de Diseño de STR.Clasificación de los Métodos de Diseño de STR. Metodología de diseño jerárquico orientado a objetos para sistemas críticos de tiempo real (HRT-HOOD). Sistemas Colaborativos: Definiciones. Elementos principales de los Sistemas Colaborativos Ventajas y desventajas de los entornos colaborativos. Características Fundamentales de Los Sistemas Colaborativos. Clasificación de los Sistemas Colaborativos: Según su nivel de integración. Según el tiempo y el espacio. Clasificación según Matriz de Andriessen. Restrictivo o Permisivo. Otras Clasificaciones. Arquitecturas en entornos colaborativos. Metodologías para el Desarrollo de Entornos Colaborativos UNIDAD 8 GESTION DEL CAMBIO REINGENIERIA Gestión del Cambio. Procesos y dinámica de evolución de sistemas. Mantenimiento: Definición. Tipos de Mantenimiento. Costos del Mantenimiento. Costos del Mantenimiento. Actividades del Mantenimiento del Software. Dificultades del Mantenimiento del Software. Soluciones al Problema del Mantenimiento del Software. Soluciones de Gestión (organizativas): Mejora de los recursos dedicados al mantenimiento Gestión de la Calidad Gestión estructurada del proceso o de datos, Organización del equipo humano Documentación de los cambios. Soluciones Técnicas (Herramientas y Metodologías). Reingeniería. Definición. Modelo de proceso. Ingeniería Inversa: para comprender el procesamiento y los datos, de interfaces de usuario. Reestructuración: del código, de los datos. Ingeniería Directa: para arquitecturas cliente/servidor y orientadas a objetos, para interfaces de usuarios. Estimación costo/beneficio de Reingeniería. V RÉGIMEN DE EVALUACIÓN (Regular, Promocional y Libre). Indicar qué régimen admite y las condiciones que debe cumplir para cada uno ellos. Régimen alumnos Regulares: Trabajos Prácticos: los que tendrán un carácter orientador y se realizará durante todo el proceso de aprendizaje, los que deberán ser aprobados en su totalidad (100%) -Exámenes parciales: Es una Evaluación Escrita del tipo semiestructurada de carácter teórico-práctica que permite evaluar la evolución del aprendizaje en bloque de contenidos, posibilitando diagnosticar el nivel de conocimiento, comprensión y aplicación del alumno. Se tomarán dos (2) parciales con las correspondientes recuperaciones reglamentarias, que deberán ser aprobados con puntaje seis (6) puntos sobre un total de diez (10) puntos. -Examen final de la asignatura: Evaluación con tribunal Examinador Deberá presentar un sistema desarrollado en forma individual utilizando las metodologías estudiadas durante el cursado. Dicho examen será de carácter teórico-practico sobre todas
las unidades de la asignatura. Metodología de enseñanza aprendizaje Centrada en la construcción del saber por el alumno, en el cual a partir de concepciones existentes en el alumno se trabaja a fin de perfeccionarlas y construir nuevas, para lo cual es fundamental organizar la comunicación de la clase, proponiendo en el momento adecuado los elementos convencionales del saber (notaciones, terminología) y conceptos. Se imparten clases teóricas con conceptos teóricos necesarios para poder realizar luego la práctica sobre situaciones similares a casos reales. Para el desarrollo de los contenidos se ha determinado los siguientes métodos de enseñanza: a) Clases de carácter teórico-conceptual: Clases a modo orientador, presentando los temas para situar intelectualmente a los alumnos en el eje o tema estructurante. Su desarrollo se basará en el uso de elementos auxiliares para la enseñanza, como pizarra, proyector de multimedia y PC b) Desarrollo de Trabajos Prácticos: Los conceptos introducidos en las clases teóricas, especialmente los relativos a Ingeniería de Software e Ingeniaría de Requerimiento tendrán una componente práctica basada en la propuesta y resolución de problemas, de carácter individual o grupal, así como también la investigación. c) Prácticas de Laboratorio: Se utilizará el Laboratorio de Informática Aplicada (LIA) para la realización de prácticas específicas que permitan aplicar las metodologías de desarrollo de software y de requerimientos, con apoyo de herramientas CASE. d) Elaboración del proyecto final de la materia: El proyecto es de carácter individual, consistente en el análisis y diseño de un sistema de la realidad local. Régimen alumnos Libres: Los alumnos libres deberán seguir el trámite administrativo formalizar una solicitud ante el Dpto. de Informática y Sección Alumnos, dirigirse a los docentes de la cátedra para solicitar temas de investigación sobre la temática de la asignatura. Ademán deberá desarrollar el trabajo práctico sobre el análisis y diseño de un sistema a elección del alumno utilizado las metodologías OMT y Metodologías Ágiles ( ICONIX, XP, SCRUM Y OTRAS). Una vez desarrollada el trabajo deberá ser corregido por el profesor responsable de la asignatura y aprobado quince (15) días hábiles antes de la mesa de examen. Cumpliendo este requisito en la fecha de examen rendirá una evaluación del tipo teóricos-práctica. Régimen promocional: No posee este régimen la presente asignatura
VI - BIBLIOGRAFÍA PRINCIPAL 1- Ingeniería de Software PRESMAN, Roger Editorial Mac-Graw-Hill- 5ra Edición 2005 ISBN: 84-481-3214-9 2- Ingeniería de Software: Un enfoque practico PRESMAN, Roger Editorial MCGRAW-HILL, Edición 2006 3- Ingeniería del Software I. SOMMERVILLE 6ª ed. Addison-Wesley 2006 4- Ingeniería del Software, Ian Sommerville (Prentice Hall) Ian Sommerville ISBN: 8478290745 7ma Edición 2007 20021 Modelado y Diseño Orientado a Objetos RUMBAUGH ET M. B. Prentice Hall. 2000 5-5 - Object-Oriented Modeling and Design". RUMBAUGH ET al., 1996 J. Rumbaugh, M. Blaha, W. Premerlani, F. Eddy, W. Lornsen. Prentice-Hall International Editions. ISBN 0-13-630054-5. 1996. (Libro en el que se detalla por su propio autor la metodología OMT). 6- Sistemas de Información para la Administración SENN, JAMES Editorial Mc Graw Hill 3ra edición 2008 7- Material didáctico preparado por el equipo de cátedra de la signatura: Mirta Navarro, Gustavo Sevilla y Lorena Parra. Año 2011
VII - BIBLIOGRAFÍA COMPLEMENTARIA 8- Software Engineering, Bruegge, Bernd, Allen Dutoit, Prentice Hall, 2000 9- Ingeniería de software Braude Eric, Una perspectiva orientada a objetos, Alfa omega grupo editor S. A., 2003. 10- INGENIERIA DEL SOFTWARE, Sommerville Ian. Editorial Addison-Wesley ISBN: 9788478290741 Edición 2005 11- Ingeniería de Software, Un enfoque práctico PRESSMAN, Roger S.. Ed. McGraw-Hill. Sexta Edición. 2007 12- Enlaces de interés Enlace generales y organizaciones Introducción a la Ingeniería del Software y estándares Glosario de términos de ingeniería del software "http://dxsting.cern.ch/sting/glossary.html Estándares de la Agencia Europea del Espacio http://www.estec.esa.nl/ecss/ Herramientas y entornos de desarrollo Indice de herramientas CASE http://www.qucis.queensu.ca/software-engineering/tools.html