Temario




Ingeniería de Software

Clave CC08
Semestre V
Créditos 10
Área Ciencias de la Computación
Requisitos Análisis de Algoritmos I



Horas por clase, semana y semestre

  Téoricas Téorico-prácticas
Horas por clase 1 2
Horas por semana 4 1
Horas por semestre 64 32



Objetivos Generales

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 orientado a 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 interfases de software vistas desde el punto de vista de ingeniería de software. Este curso requiere de la participación de los estudiantes en proyectos por equipos.



Temario

1.
Introducción Introducción a modelos y conceptos preocupados con el desarrollo de software de alta calidad. Uso de herramientas y ambientes que facilitan el diseño e implementación de grandes sistemas de programación. El papel y uso de estándares.

1.1
Objetivos del diseño de software
1.2
Documentación
1.3
Control y administración de la configuración
1.4
Aspectos de la confiabilidad del software: seguridad, responsabilidad, estimación del riesgo
1.5
Mantenimiento
1.6
Herramientas de especificación y diseño, herramientas de implementación

2.
La naturaleza y cualidades del software (6 horas)

Se discuten los distintos aspectos relativos a la ingeniería de software y la manera en que cada uno de ellos influye en la calidad del software.

2.1
Clasificación de las distintas cualidades relativas al software.
2.2
Cualidades representativas.
2.3
Cualidades necesarias en distintas áreas de aplicación.
2.4
Medición de la calidad.

3.
Principios de la Ingeniería de Software (4 horas)

Se presentan principios generales que son centrales al éxito de un desarrollo de software. Estos principios tienen que ver tanto con el proceso del desarrollo del software como con el producto final.

3.1
Rigor y formalismo.
3.2
Separación de problemas (concerns).
3.3
Modularidad.
3.4
Abstracción.
3.5
Previsión para el cambio.
3.6
Generalidad.
3.7
Incrementabilidad.

4.
Diseño de Software (12 horas)

En este tema se tocan las distintas metodologías que existen para el diseño de software, evaluando sus ventajas y desventajas.

4.1
La actividad de diseño y sus objetivos.
4.2
Técnicas para la modularización.
4.3
Diseño funcional/orientado al proceso
4.4
Diseño desde abajo; apoyo para la reutilización
4.5
Estrategias de implementación (desde arriba, desde abajo, desarrollos en equipo)
4.6
Tópicos de implementación; mejoría en el desempeño, depuración, prevención de problemas
4.7
Diseño orientado a objetos.
4.8
Manejo de anomalías.
4.9
Software concurrente.

5.
Especificación de requisitos de software (12 horas)

Introducción al desarrollo de especificaciones formales e informales dirigidas a definir las necesidades y requisitos del software.

5.1
El uso de las especificaciones.
5.2
Cualidades de las especificaciones.
5.3
Clasificación de estilos de especificaciones.
5.4
Especificaciones y verificación.
5.5
Especificaciones operativas.
5.6
Especificaciones Descriptivas.
5.7
Construcción y uso de especificaciones en la práctica.

6.
Verificación y validación (14 horas)

Introducción a los métodos y técnicas para verificación y validación de sistemas de software

6.1
Metas y requisitos para la verificación.
6.2
Enfoques para la verificación.
6.3
Pruebas (generación de un plan de pruebas, aceptación de las pruebas, pruebas por unidad, pruebas de integración, pruebas de regresión)
6.4
Análisis. Técnicas informales vs. pruebas de correctez.
6.5
Ejecución simbólica.
6.6
Depuración.
6.7
Otros aspectos: Desempeño, robustez, métricas del software.

7.
Herramientas y ambientes para la Ingeniería de Software (8 horas)

Se presentan el tipo de herramientas o ambientes de producción que coadyuvan a la aplicación correcta de los principios de esta rama.

7.1
Desarrollo histórico de herramientas y ambientes.
7.2
Clasificación de herramientas y ambientes de software.
7.3
Herramientas más representativas: Editores, ligadores, intérpretes, generadores de código, depuradores, herramientas para pruebas, analizadores estáticos, herramientas para el manejo de interfaces, configuración y administración; infraestructura para la ingeniería de software.
7.4
El papel del lenguaje de programación en el ambiente.
7.5
Algunos ejemplos de herramientas.
7.6
Perspectiva.


Referencias



Bibliografía básica



Bibliografía complementaria




Fecha de última actualización: Jueves 28 de septiembre del 2000
Comentarios y sugerencias: webmaster@fciencias.unam.mx