Ingeniería de software


Profa Guadalupe Ibargüengoitia G.
FacultadG. de Ciencias UNAM
correo: gig@fciencias.unam.mx

Profa. Hanna Oktaba
FacultadG. de Ciencias UNAM
correo: ho@fciencias.unam.mx

Objetivo

Enseñar diversas técnicas de Ingeniería de software para preparar a los alumnos para desarrollar productos de software en equipo. El alumno aprenderá a trabajar en equipo a través del desempeño de roles; a planear actividades individuales y de grupo; a seguir un proceso disciplinado de especificación de requerimientos, diseño, implementación; a realizar diversas técnicas de revisión, inspección y pruebas (unitarias y de sistema) para velar por la calidad del producto; a recolectar métricas de tiempo, tamaño y defectos en el trabajo personal y de equipo.

Metodología de enseñanza

Los alumnos se dividen en equipos de alrededor de 5 miembros. Cada equipo desarrollará durante el curso un producto de software siguiendo la metodología propuesta en el libro Introduction to Team Software Process (TSP).

En estos cursos se seguirá una versión modificada, adaptada y ampliada de cursos los anteriores, que estará basada en esas experiencias.


Contenido
  1. Introducción a la Ingeniería de software
    Historia de la Ingeniería de software
    Conceptos básicos
    Principios de la Ingeniería de software


  2. Proceso de software         
    Ciclos de vida y modelos de procesos de software
    Roles Productos


  3. Introducción a TSPi
    Presentación de TSPi, sus objetivos y la forma de trabajo
    Resumen de Personal Software Process (PSP) recolección de mediciones de tiempos, tamaño y defectos a nivel personal


  4. Proceso TSPi
    Lanzamiento del proyecto en equipo
    Objetivos del equipo
    Roles y sus objetivos individuales
    Guión de lanzamiento


  5. Estrategia de desarrollo
    Planeación y definición de una estrategia de desarrollo
    Guión de planeación
    Plan de calidad


  6. Definición de requerimientos
    Especificación de requerimientos con diagramas de casos de uso y escenarios
    Guión de requerimientos


  7. Diseñar en equipo Principios de diseño
    Especificación de la arquitectura
    Especificación del diseño detallado con diagramas de clase y de secuencia
    Revisiones e inspecciones del diseño
    Guión del diseño


  8. Implementación del producto
    Criterios de terminación del diseño
    Estándares de implementación
    Estrategia de implementación
    Revisiones e inspecciones de código
    Guión de la implementación


  9. Pruebas de integración y del sistema
    Principios de pruebas
    Estrategia de prueba
    Estrategia de integración
    Estrategia de prueba del sistema
    Guión de pruebas


  10. Post mortem
    Evaluación post mortem
    Propuesta de mejora
    Guión de post mortem


Método de evaluación

Se tomará en cuenta la asistencia y participación en clase, ayudantía y laboratorio.

El objetivo central del curso es aprender a trabajar en equipo al desarrollar un producto software, por lo esto se evaluará principalmente la cooperación de cada alumno en su equipo, por medio de exámenes en el posmortem de cada ciclo y no sólo la entrega del software y la carpeta correspondiente.

Cada alumno será evaluado en 50% por el desempeño personal en las responsabilidades del  rol que le fue asignado durante el curso y las tareas de las ayudantías. El otro 50% por el desempeño de su equipo con respecto a los compromisos planeados.

Bibliografía

Humprey W., Introduction to Team Software Process, SEI Series in Software Engineering, Addison Wesley, 2000.

Humprey W., Introduction to Personal Software Process, SEI Series in Software Engineering, Addison Wesley, 1997.

Booch G., Rumbaugh J.,  Jacobson I.,  The Unified Modeling Language. User Guide, Addison-Wesley, 1999.

Jacobson I., Booch G., Rumbaugh J. The Unified Software Development Process, Addison Wesley, 1999.

Fowler M. Scott K. UML gota a gota. Pearson 1999.

Sitio de apoyo al curso:
kasia.fciencias.unam.mx/TSPi