Desarrollo de Software a Gran Escala (300CIS001)

Descripción del Curso

El desarrollo de gran escala se refiere al desarrollo de software de gran tamaño que involucra no sólo procesos de desarrollo sino también de gestión, evolución y mantenimiento. En este contexto, durante este curso se presentarán conceptos relacionados con las metodologías de desarrollo de software (SCRUM y RUP), la arquitectura de software y las buenas prácticas para la gestión de proyectos de software (estimación de tamaño y tiempo, asignación de recursos, control de versiones y cambios, administración de riesgos, pruebas de carga y de regresión). Así mismo, se presentaran diferentes frameworks para el desarrollo de software empresarial y algunas herramientas que soportan los conceptos vistos durante el curso.

Información Básica

Objetivos Instruccionales

Al finalizar el curso los participantes podrán:

  • Reconocer un sistema grande de alta calidad en cuyo desarrollo se sigue un proceso definido e identificando los riesgos involucrados en el desarrollo de este tipo de software.
  • Conocer las características claves del desarrollo de software comercial y/o en gran escala.
  • Identificar los métodos de desarrollo de software acordes a la magnitud y complejidad de los proyectos.
  • Recococer las buenas prácticas de gestión de proyectos de software utilizadas en la industria.
  • Describir y aplicar las herramientas necesarias para la especificación, diseño, verificación y validación de sistemas de software a gran escala.
  • Conocer las técnicas y herramientas más utilizadas en la industria para la implantación de sistemas de software grandes

Competencias que se Desarrollan

  • Habilidades específicas: Uso de IDE’s, Subversión, Project Management Tools, UML.
  • Conceptos Fundamentales de Computación: Metodologías ágiles, métodos tradicionales de diseño, diseño por componentes, arquitecturas de software empresariales.
  • Competencias Generales: Trabajo en grupo, escritura de informes, presentación de resultados.

Metodología

El curso es escencialmente práctico donde mediante un proyecto definido al inicio del semestre se van presentando los temas teoricos que fundamentan el uso de las herramientas y la aplicación de las técnicas necesarias para el desarrollo del proyecto. Las herramientas son materia de investigación por parte de los estudiante con retroalimentación al grupo con presentaciones cortas y demostraciones. El proyecto se sigue simulando el desarrollo de un proyecto, con asignación de roles de un equipo de desarrollo de software entre los estudiantes y la observación de un método de desarrollo.

Contenido

Temas Sesión
Presentación del curso e introducción 1
El concepto del tamaño del software, casos de ejemplo de software por tamaño 1
Licenciamiento de software 1
Métodologías de desarrollo de software (RUP, SCRUM, XP) 2, 3, 4
Arquitectura de software: introducción, el rol del arquitecto 5
Arquitectura de software: atributos de calidad 6
Arquitectura de software: escenarios y tácticas de arquitectura 7
Arquitectura de software: patrones arquitectónicos 8, 9
Arquitectura de software: documentación de la arquitectura 10, 11
Gestión de proyectos de software. Planificación de proyectos, gestión de recursos, entregables, roles, estructura organizacional 12
Métricas del producto y del proceso, seguimiento de proyectos 13
Técnicas de estimación 14
Calendarización de proyectos, diagramas Pert/CPM, diagrama de Gant, técnica del valor ganado 15, 16
Gestión del riesgo de proyectos 17
Herramientas para la gestión de proyectos de sofwware 18
 Calidad del software: qué es la calidad de software, por qué es importante, costos de la calidad 19
Calidad del software: enfoques para realizar pruebas (basadas en requerimientos, particiones, estructurales) ,diseño del plan de pruebas, ejecución de las pruebas, reporte de incidencias 20
Calidad del software: herramientas de apoyo para la gestión de las pruebas ( Mantis, Jira, TestLink) 21
Calidad del software: pruebas unitarias, pruebas de integración, pruebas de regresión, de aceptación 22
Calidad del software: pruebas unitarias automatizadas. Frameworks para pruebas de unidad, mocks y stubs, dummies. Herramientas para pruebas funcionales ( Selenium) 23
Calidad del software: pruebas de carga. Herramientas para pruebas de carga 24
Calidad del software: análisis estático de código. Revisiones personales, inspecciones de código, analizadores estáticos de código ( Sonar, Bugzilla) 25
Versionamiento y gestión de la configuración. Herramientas para gestión de la configuración (SVN, GIT) 26, 27
Integración contínua, construcción automática de código 28
Técnicas de integración de aplicaciones 30, 31

Bibliografía

  1. The Unified Modeling Language reference manual. – 2ed. James Rumbaugh, Ivar Jacobson, Grady Booch. Addison-Wesley Professional.
  2. Service-Oriented Architecture : Concepts, Technology, and Design. Thomas Erl. Pearson.
  3. Agile & Iterative Development, a manager’s guide. Craig Larman. Adisson-Wesley.
  4. Business Modeling with UML: Business Patterns at Work. Hans-Erik Eriksson and Magnus Penker. John Wiley and Sons.
  5. The Making of Information Systems: Software engineering and management in a globalized world. Karl E. Kurbel. Springer.
  6. Documenting Software Architectures: Views and Beyond (2nd Edition). Paul Clements,Felix Bachmann, Len Bass, David Garlan, James Ivers, Reed Little, Paulo Merson, Robert Nord, Judith Stafford. 2010.
  7. Software Architecture in Practice. Len Bass, Paul Clements,Rick Kazman.2012.
  8. www.sonarqube.org
  9. Pattern-Oriented Software Architecture For Dummies.Robert Hanmer.2013.
  10. Feature-Oriented Software Product Lines: concepts and implementation.Apel, S., Batory, D., Kästner, C., Saake, G.2013

Material de este semestre