Carrera: Asignatura: Año: Docente: Ingeniería en sistemas de información Herramientas de software tipo CASE Tercero Licenciado Fernando López Gil OBJETIVO DE LA ASIGNATURA: Los objetivos de esta asignatura son por un lado darle al alumno los conocimientos necesarios para el análisis y diseño de sistemas utilizando una metodología estructurada (Yourdon), soportada sobre herramientas de tipo CASE, y por el otro ejercitarlo sobre los conceptos de la ingeniería del software al realizar un proyecto de desarrollo. Para esto se utilizarán en el primer momento como casos de estudio, sistemas ya realizados, de manera de lograr que el alumno ponga su atención sobre la parte de la metodología en la que se quiere hacer hincapié. Los alumnos del curso, apoyados en distintos tipos de herramientas CASE, realizarán ejercitaciones y trabajos prácticos. A partir de la mitad del curso, se organizará un proyecto nuevo, a realizarse en su totalidad, abarcando en este caso todas las etapas del ciclo de vida de un sistema. Para esto deberán basarse en los conceptos de ingeniería del software, para el cálculo de las estimaciones, métricas, Q.A., y métodos de prueba del producto terminado. METODOLOGÍA: Exposición del docente: Se dictarán clases en las que por un lado se explicará la metodología para el modelado de sistemas y las distintas herramientas para lograrlo. Métodos de casos: Utilizando distintos sistemas ya realizados, se les dará a los alumnos partes de estos para poder realizar etapas del desarrollo, y comparar sus resultados con los obtenidos por los diseñadores originales. Trabajos prácticos: se entregarán guías de ejercicios para que los alumnos puedan practicar la aplicación de los conceptos expuestos. Taller: Se preparará un taller de herramientas CASE, donde se instalarán distintas herramientas, y se les dará a los alumnos los conceptos básicos de las mismas. Investigación: Los alumnos investigarán las distintas herramientas CASE, su uso y las distintas aplicaciones que estas tienen para las etapas de un proyecto. Deberán comparar las mismas y seleccionar cuales se aplican mejor para el proyecto que deben realizar. También deberán investigar ciertos temas teóricos para profundizar, según les indique el docente. Proyecto: Se desarrollará en grupos de 3 a 6 alumnos. El mismo se orientará a lograr en los alumnos la ejercitación de los conceptos aprendidos a través de la realización de un proyecto de software que deberán realizar en todas sus etapas desde el relevamiento hasta las carpetas de programación. EVALUACIÓN: Para poder aprobar la materia, los alumnos deberán aprobar un examen parcial y el trabajo práctico grupal. Por otro lado, se evaluará la participación del alumno en clase, en el desarrollo de los trabajos prácticos, la presentación de los casos, la aprobación de las evaluaciones mensuales, y el dominio de las herramientas y conceptos de la materia. PROGRAMA ANALÍTICO: Nota: Es importante aclarar a fines de poder comprender cual es el programa de la materia, que la misma se basa en tres áreas distintas, las cuales se relacionan y sustentan mutuamente. Estas áreas, están dadas, por un lado por la ingeniería del software, la cual se encarga de dar las bases teóricas para la gestión de un proyecto de desarrollo de software soportado por herramientas de tipo CASE. Por otro lado las herramientas propiamente dichas, las cuales deben ayudar al alumno a aplicar los conocimientos de análisis y diseño de sistemas para la realización del proyecto, y por último los conocimientos que los alumnos deben tener sobre análisis y diseño de sistemas. Estas tres áreas de conocimiento, confluirán en un proyecto final el cual deberán desarrollar los alumnos para la aprobación de la materia. Consecuencia de lo expuesto en el párrafo anterior, los contenidos de la materia, no se desarrollan en forma de unidades secuenciales, ya que muchos de los mismos de estudian en forma paralela. Introducción al curso. Técnicas de modelado. Las bases del desarrollo de sistemas. Etapas. Distintos modelos de desarrollo. Reconocimiento del problema. Ingeniería del software. Su evolución. Ciclo de vida del software. Modelo clásico. Modelos prototipados. Ciclo de vida en espiral. Ciclo de cuarta generación. Gestión del proyecto. Definición de la calidad del sistema. Métricas para verificar la calidad. Métricas de productividad. Utilización de diferentes métricas. Puntos funcionales. Numero ciclomático de Mc Cabe. Otras. Métricas y estimaciones. Mediciones del software. Análisis de riesgo. Estimaciones. Técnicas de descomposición. Modelos empíricos. Herramientas para estimación. Planificación temporal. Introducción al concepto de modelado. Herramientas para el modelado. Porqué múltiples modelos. La esencia y la implementación. La estructura de los modelos. El modelo esencial. El concepto de evento. Como identificarlos. Descripción de las reacciones. Criticidad del modelo ambiental. El modelo de comportamiento. Desarrollo del modelo de datos. Normalización de datos. El concepto de datos esenciales. Como identificar las entidades. Como generar el DER. Descripción de las relaciones. Desarrollo del modelo de procesos. Relación con el modelo de datos. Como generar los DFD. Especificar las funciones primitivas. Reutilización de funciones primitivas. Verificación del modelo esencial. Verificación de las especificaciones y del comportamiento. Severidad de las mismas. Cuantificación del modelo esencial. Como establecer la Obsolescencia. Relación de obsolescencia con depuraciones Modelo de implementación. Sus etapas. Modularidad. Acoplamiento. Cohesión. Modelo de procesadores, modelo de tareas, modelo de programas. Modularización. Herramientas. Uso de los diagramas de estructuras. Optimización de los módulos. Aplicación de los criterios de cohesión y acoplamiento. Modelo de procesadores. Uso del DFD de nivel cero. Definición de los procesadores humanos y tecnológicos. Modelo de tareas. Definición de la base de datos física. Uso de diagramas de transición de estados. Definición de las propiedades del sistema. Definición de las pantallas del usuario. Definición de los listados. Modelo de programas. definición de las especificaciones para el programador. Técnicas de prueba de software. Fundamentos de las pruebas de software. Pruebas de caja blanca. Pruebas de camino básico. Prueba de caja negra. Prueba de la estructura de control. Estrategia de prueba del software. Prueba de unidad. Pruebas de integración. Tipos de integración. Prueba del sistema. Pruebas de aceptación. BIBLIOGRAFÍA: Obligatoria: - Modern structured analysis - E. Yourdon - Prentice Hall - Ingeniería del Software - R. Pressman - The practical guide to structured sistems design - Page-Jones - Prentice Hall Complementaria: - CASE, la automatización del software - C. McClure - RA-MA - Ingeniería del Software - I. Sommerville - Addison Wesley - Software Engineering - S. Schach - Aksen Associates - El arte de resolver problemas - R. Ackoff - Análisis estructurado de sistemas - Gane-Sarson - El Ateneo - Ingeniería del Software - J. Boria - Kapelutz