MATERIA:Ingeniería de Software

CLAVE:COMP-520

SEMESTRE DE UBICACION:Quinto

AREA:Ciencias de la Computación


OBJETIVOS: Este curso presenta un estudio profundo de muchos de los temas de ingeniería de software, incluyendo paradigmas de ingeniería de software, especificación de requisitos, diseño funcional y orientación de objetos, verificación y mantenimiento de software. Se discuten ambientes y herramientas de software y se introduce a los estudiantes a su uso. Se consideran también implicaciones sociales tales como el costo de las fallas y las responsabilidades profesionales. El curso también comprende una introducción a la interacción computadora - humano y una discusión de algunas interfaces vistas desde la perspectiva del software. Este curso requiere de la participación de los estudiantes en proyectos por equipos.

TEMARIO:

  1. Introducción: Conceptos a tratar

    • Objetivos del diseño de software

    • Documentación

    • Control y administración de la configuración

    • Aspectos de la confiabilidad del software: seguridad, responsabilidad, estimación del riesgo

    • Mantenimiento

    • Herramientas de especificación y diseño, herramientas de implementación

  2. La naturaleza y cualidades del software

    • Clasificación de las distintas cualidades relativas al software

    • Cualidades representativas

    • Cualidades necesarias en distintas áreas de aplicación

    • Medición de la calidad

  3. Principios de la Ingeniería de Software

    • Rigor y formalismo

    • Separación de problemas (concerns)

    • Modularidad

    • Abstracción

    • Previsión para el cambio

    • Generalidad

    • Incrementabilidad

  4. Diseño de software

    • La actividad de diseño y sus objetivos.

    • Técnicas para la modularización

    • Diseño funcional/orientado al proceso

    • Diseño desde abajo; apoyo para la reutilización

    • Estrategias de implementación (desde arriba, desde abajo, desarrollos en equipo)

    • Tópicos de implementación; mejoría en el desempeño, depuración, prevención de problemas

    • Diseño orientado a objetos

    • Manejo de anomalías

    • Software concurrente

  5. Especificación de requisitos de software

    • El uso de las especificaciones

    • Cualidades de las especificaciones

    • Clasificación de estilos de especificaciones

    • Especificaciones y verificación

    • Especificaciones operativas

    • Especificaciones descriptivas

    • Construcción y uso de especificaciones en la práctica

  6. Verificación y Validación

    • Metas y requisitos para la verificación

    • Enfoques para la verificación

    • Pruebas (Generación de un plan de pruebas, aceptación de las pruebas, pruebas por unidad, pruebas de integración, pruebas de regresión)

    • Análisis. Técnicas informales contra pruebas de correctez

    • Ejecución simbólica

    • Depuración

    • Otros aspectos: Desempeño, robustez, métricas del software

  7. Herramientas y ambientes para la ingeniería de software

    • Desarrollo histórico de herramientas y ambientes

    • Clasificación de herramientas y ambientes de software

    • Herramientas más representativas: editores, ligadores, intérpretes, generadores de código, depuradores, herramientas para pruebas, analizadores estáticos, herramientas pasa el manejo de interfaces, configuración y administración; infraestructura para la ingeniería de software.

    • El papel del lenguaje de programación en el ambiente

    • Algunos ejemplos de herramientas

    • Perspectiva

BIBLIOGRAFIA:

  • Ghezzi, C.; Jazayeri, M.; Mandrioli, D., Fundamentals of Software Engineering, Prentice-Hall Inc., 1991.

  • Ledgard, H.; Tauer, J., Professional Software, Software EngineeringConcepts, Vol. 1, Adison-Wesley Publishing company, 1988

BIBLIOGRAFIA COMPLEMENTARIA:

  • Gilb, T., Principles of Software Engineering Management, Addison-Wesley Publishing Company, 1988

  • Glass, R.L., Software Conflict, Essays on the Art and Science of Software Engineering, Yourdon Press Computing Series, 1991

  • Hrietza, J.; Jackson, K., Computer Security Solutions, Blackwell Scientific Publications,1990

  • Naur,P., Computing: A Human Activity, ACM Press, Addison Wesley Publishing Company, 1992

  • Schulmeyer, G. G., Zero Defect Software, MaGraw-Hill, Inc., Software Engineering Series, 1990

  • Thimbleby, H., User Interface Design, ACM Press, Addison-Wesley Publishing Company, 1990

  • Nutt, G.J., Centralized and Distributed Operating Sistems, Prentice-Hall,1991

  • Klerer, M., Design of Very High-Level Computer Languages, A User-Oriented Approach, 2nd. Edition, McGraw-Hill, Inc., 1991

  • Tracz, W.; Editor, Software Reuse-Emerging Technology, IEEE Computer Society Press, 1988