La materia tiene por objetivo que l@s estudiantes aprendan a planificar y gestionar proyectos software.
Conozcan cómo realizar estimaciones de tamaño, esfuerzo y costos en proyectos de software y sepan identificar y gestionar riesgos en proyectos software, entre otras cosas

Modos de Cursada: Cuatrimestral Presencial

Horas Semanales: 6 horas

Demanda de tiempo en casa semanal: 6 horas

Sitio web:

  • Aún no disponible

Programa de la materia:

Contenidos Mínimos:

  • Arquitectura de software y arquitectura de sistemas. Definición, objetivos y clasificación
  • Actividades en un proyecto de software relacionadas con la arquitectura. Proceso de definición y evolución de una arquitectura en diferentes metodologías de desarrollo. Arquitectura en metodologías ágiles. Construcción de prototipos como herramienta de verificación y documentación de una arquitectura.
  • Insumos para la definición de arquitectura: requerimientos funcionales y no funcionales, restricciones, influencias, entorno social y técnico, estándares, herramientas disponibles. Objetivos de una arquitectura: no intrusividad, no duplicación, separación de responsabilidades, garantía de atributos de calidad, robustez.
  • Estilos arquitectónicos. Arquitecturas en capas, arquitecturas orientadas a servicios, arquitecturas orientadas a objetos, arquitecturas orientadas a procesos (BPM). Patrones arquitecturales.
  • Limitaciones del paradigma de objetos y las arquitecturas tradicionales. Programación declarativa.
    Arquitectura de dominio. Modelado de la lógica de dominio. Patrones. Diseño guiado por el dominio (DDD). Motores de reglas. Workflows.
  • Integración de los componentes de una arquitectura: lógica de dominio, interfaz de usuario, persistencia, seguridad, etc. Integración basada en aspectos (AOP). Acoplamiento y comunicación entre los componentes de la arquitectura. Transporte de la información. Manejo de transacciones. Tácticas para garantizar robustez y modificabilidad.
  • Patrones arquitecturales para la interfaz de usuario. Integración con el dominio.
    Arquitectura de persistencia. Impacto de la persistencia sobre un diseño orientado a objetos. Bases de datos multidimensionales, datawarehouse, data mining.
  • Integración de aplicaciones. Clasificación de los mecanismos de integración: base de datos, dominio, servicios, interfaz de usuario. Estrategias de integración apropiadas para ambientes compatibles e incompatibles entre sí Integración sincrónica y asincrónica. Colas de mensajes. Callbacks.
  • Arquitecturas orientadas a servicios. Web services. Integración con aplicaciones legacy. Patrones para la integración: punto a punto, middleware, Enterprise Service Bus. Definición de interfaces y conectores. Definición de procesos de negocio. Coreografía y orquestación. Manejo de transacciones y compensaciones. Servicios de directorio (JNDI, UDDI, etc).
  • Configuración. Reemplazo de configuración por convenciones. Inyección de dependencias. Inversión de control. Contenedores y microcontenedores. Arquitecturas extensibles. Arquitecturas basadas en plugins. Lenguajes de scripting.
  • Arquitecturas de seguridad. Integración de métodos de autentificación y autorización en una aplicación. Patrones. Single Sign-on. Acceso basado en roles. Perspectivas de seguridad de una aplicación: seguridad web, sistema operativo, base de datos, middleware.
  • Diseño de APIs y Frameworks. Fluent interfaces.
  • Estrategias de verificación de arquitecturas. Procesos formales de evaluación de la arquitectura y de los requerimientos no funcionales. Aseguramiento de la adecuación de un sistema a la arquitectura definida, automatización de aseguramiento. Herramientas arquitecturales para la automatización de pruebas de dominio.
  • Arquitecturas concurrentes y distribuidas. Objetos distribuidos. Máquinas virtuales distribuidas. Programación orientada a agentes.
  • Herramientas tecnológicas para soportar las decisiones arquitectónicas.
  • Cuestiones organizacionales, humanas y sociales relativas a la arquitectura de software. Relación entre la arquitectura y el grupo de desarrollo. Comunicación de la arquitectura: modelos, vistas y perspectivas. Herramientas y prácticas que complementan una arquitectura para poder llevar adelante un desarrollo grande y/o complejo.