Programa y Bibliografía

Tema: Introducción a la Ingeniería del Software
  • Introducción a la Ingeniería del Software. Historia de la Ingeniería del Software. Contexto de la Ingeniería del Software en la Ingeniería. La crisis del software. Perspectivas a futuro para la Ingeniería del Software. Temas fundacionales en IS. Lecciones aprendidas sobre desastres en la industria del software. Diferencias entre Ingeniería de Software y otras disciplinas (Ciencias de la Computación, Ingeniería en Sistemas).

Tema: Modelos de ciclo de vida / metodologías de desarrollo / Conceptos básicos de Gestión de Proyectos
  • Modelos de ciclo de vida de desarrollo de software. Nociones de ciclo de vida de sistemas. Modelos en cascada y sus variaciones y distintos estilos de métodos iterativos e incrementales. Principales características de cada uno. Metodologías “plan based” vs. Metodologías “ágiles”. Pros y contras de cada modelo. Evolución de los modelos de ciclo de vida a lo largo de la historia de la Ingeniería de Software.
  • Metodologías “plan based”: UP. Introducción al Unified Process. Diferencias entre metodologías y frameworks metodológicos. Las fases del UP. Experiencias en la aplicación de UP. Principales templates disponibles y versiones comerciales. Integración de UML en UP.
  • Metodologías “ágiles”. Introducción a las metodologías ágiles. Ubicación en el contexto de todos los métodos disponibles. El “agile manifesto”. Principios de las metodologías ágiles. Metodologías orientadas a la gestión de proyectos: Scrum.
  • Otras metodologías “ágiles”: Prácticas de Extreme Programming. Test Driven Development.
  • Métodos de Estimación, Planificación, Seguimiento y Control de Proyectos de Software.

Tema: Arquitecturas de Sistemas de Software
  • Introducción al a problemática de arquitecturas. Definición de Arquitectura de Software. Diferencias entre Arquitectura y Diseño. Arquitecturas vs. Estilos arquitectónicos vs. Arquitecturas de referencia. Documentación de Arquitecturas. Viewtypes para arquitecturas: vistas de módulos, de componentes y conectores y de alocación.
  • Especificación de atributos de calidad y evaluación de arquitecturas. Quality Attribute Workshops (QAW) y Architecture Tradeoff Analysis Method (ATAM). Especificación de atributos de calidad con Escenarios. Técnicas de verificación estática de arquitecturas.
  • Tácticas en el nivel de la arquitectura para lograr los atributos de calidad requeridos. Tácticas para Usabilidad, disponibilidad, eficiencia y flexibilidad.
  • Principales estilos arquitectónicos: la taxonomía de Garlan y Shaw para estilos arquitectónicos. Data Flow, Client Server, Call & Return, Repository, Event Driven Systems.
  • Introducción a las DSSA (Domain Specific Software Architectures)

Tema: Diseño de Software

  • El Software como modelo computable de un dominio. Objetivos del uso de modelos en el diseño de software. Representación de conocimiento con Objetos. Definiciones de Objetos revisitadas. 
  • Algunos tips fundamentales para el diseño.
  • Idioms, Patrones, Frameworks y Arquitecturas: relación con el diseño.
  • Ejercicios prácticos de diseño.
  • TDD revisitado: su uso como técnica de diseño.

Otros temas:
  • Entrepreneurship Tecnológico
  • Temas de Investigación en Ingeniería de Sofware
  • Profesionalismo y ética profesional

Bibliografía

Tal como se menciona en la página de Bienvenida, la materia no tiene bibliografía obligatoria. Se presentan a continuación algunos libros y papers que fueron usados para preparar las clases y que en el detalle de teóricas figuran como lecturas recomendadas u opcionales.

Ante cualquier duda sobre la conveniencia de comprar algunos de los libros mencionados, sugerimos contactar a los profesores de la materia.

 [BASS03]Software Architecture in Practice, Second Edition. Len Bass, Paul Clements , Rick Kazman . Addison-Wesley Professional, 2003.
 [Gamma95]Design Patterns – Elements of Reusable Object-Oriented Software. Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides. Addison Wesley, 1995.
 [Shaw96]Software Architecture: Perspectives on an Emerging Discipline. Mary Shaw , David Garlan. Prentice Hall, 1996
 [Taylor09]Software Architecture: Foundations, Theory, and Practice. R. N. Taylor, N. Medvidovic, E. M. Dashofy. Wiley, 2009.
 [West04]Object Thinking. David West. Microsoft Press, 2004.
 [Einstein]   La Física, aventura del Pensamiento, Losada, 2002
 [Norman]The Design of Everyday Things, Basic Books, 2002
 [Naur] Computing: A Human Activity (Anthology) - Chapter: Programming as a Theory Building, Addisson-Wesley, 1991
 [Beck] Test Driven Development By Example - Kent Beck, Addison-Wesley 2002