Itinerario de Ingeniería de Software

31105039 - Arquitecturas para Sistemas Software

 

Presentación y contextualización

 

Un informe publicado en 2009 por el Standish Group[1] revelaba que, en 2004, sólo el 29% de los proyectos software satisfacían los requisitos de los clientes, se entregaban a tiempo y se ajustaban a los presupuestos. El 53% acababan incumpliendo algún requisito, se entregaban fuera de plazo o costaban más de lo presupuestado. El 18% se cancelaban antes de su finalización o jamás llegaban a utilizarse. Sin duda, aún quedaba y queda mucho por hacer en el desarrollo de software.

En los últimos 40 años, se han producido grandes avances en el terreno de la codificación: creación de compiladores e intérpretes eficientes, desarrollo de la algoritmia, aparición de nuevos paradigmas de programación, utilización de los sistemas de tipos para la prevención de errores… Sin embargo, a medida que crece el tamaño de las aplicaciones informáticas, se hace más evidente la necesidad de organizarlas correctamente. Es decir, la importancia de la codificación disminuye frente a la relevancia del diseño de software.

El presente curso pretende transmitir al alumno la enorme importancia del diseño en el desarrollo de software y ofrecerle una panorámica sobre las técnicas de diseño, y de organización arquitectónica, aplicadas tradicionalmente, cuya esencia ha motivado las que se emplean actualmente y, muy posiblemente, las que se utilicen en el futuro. Aparte del planteamiento introductorio sobre la relevancia del diseño y cómo afecta al ciclo de vida y a la propia ejecución del desarrollo de Software, se presentan los conceptos de Estilos Arquitectónicos y Directrices Arquitectónicas, haciendo un recorrido por los estilos más relevantes. El núcleo principal de la asignatura está constituido por el diseño arquitectónico y su repercusión en el diseño detallado. En lo que se refiere al diseño arquitectónico, su estudio se ilustra en el ámbito de las Arquitecturas Dirigidas por Modelos (MDA) por ser una propuesta con una buena proximidad al formalismo y una prometedora proyección. En cuanto al diseño detallado, se utilizan los ‘patrones de diseño’ por su potencial para que el estudiante adquiera la madurez para resolver nuevos problemas de diseño a partir de soluciones eficaces y genéricas -los patrones-. Ésta es, por tanto, una asignatura en la que se maneja el código intensivamente, aunque más desde la perspectiva de su organización que desde la de su implementación.

La asignatura “Arquitecturas para Sistemas Software” se encuentra integrada en el Máster en Ingeniería de Software y Sistemas Informáticos dentro del bloque de “Ingeniería de Software”. Es una asignatura de contenidos, muy práctica, de 9 ECTS y se estima que requiere una dedicación de 225 horas. Concretamente, “Arquitecturas para Sistemas Software” es una de las seis asignaturas que forman la materia “Ingeniería del Desarrollo de Software” y sus contenidos están directamente enfocados a ese desarrollo, aunque se especializa en ningún campo concreto. Las otras cinco asignaturas son “Especificación de los Sistemas Software”, “Desarrollo de Software Seguro”, “Generación Automática de Código”, “Desarrollo de Líneas de Producto Software mediante un Enfoque Generativo” y “Arquitecturas Orientadas a Servicios”.

También es importante resaltar que, en cualquiera de las asignaturas del bloque de “Ingeniería de Sistemas Informáticos”, se ofrecen campos de desarrollo de Software, diferenciados y específicos, para aplicar y ejercitar las conclusiones, enseñanzas y capacidades adquiridas en este módulo.

[1] 2009 CHAOS Summary. https://www.standishgroup.com

 

Conocimientos previos recomendables

 

La formación previa que deberían tener los alumnos para el adecuado seguimiento de esta asignatura son los propios de ingreso al posgrado, haciendo especial recomendación en acceder a ella desde una titulación universitaria de grado, o superior, en informática. Esta recomendación se enfatiza con relación a los conocimientos matemáticos y tecnológicos en materias de:

 

Resultados del aprendizaje

 

Los resultados de aprendizaje que se espera alcanzar con esta asignatura por parte del estudiante son:

 

Contenidos

 

Unidad Didáctica I

  1. Introducción a la arquitectura del software: definición y relevancia.

    Resumen: Cuando aumentan el tamaño y la complejidad del software, cuando las aplicaciones están formadas por multitud de componentes, la organización global del funcionamiento del sistema –la arquitectura del software— pasa a ser el aspecto más relevante.

    Objetivos:

    1. Definición de arquitectura de software.
    2. El problema del diseño en software complejo y de altas prestaciones.
    3. El punto de vista arquitectónico como solución para mejorar la comprensión de sistemas complejos.


    Materiales:

    Lectura David Garlan and Mary Shaw. An Introduction to Software Architecture. 1994[2]. Capítulos 1 y 2.
    También disponible en CMU/SEI-94-TR-21.
  2.  

    [2] https://www-2.cs.cmu.edu/afs/cs/project/able/ftp/intro_softarch/intro_softarch.pdf

     

  3. Principios básicos del diseño arquitectónico.

    Resumen: El arquitecto debe acondicionar el uso de las tecnologías de desarrollo para mejorar las expectativas de los objetivos de negocio.

    Objetivos:

    1. Tendencias en las tecnologías de desarrollo. Software procedimental, orientación a objetos y desarrollo con componentes.
    2. Tecnologías propietarias, abiertas y comerciales. Uso de estándares.


    Materiales:

    Lectura del Capítulo 2 de Raphael C. Malveau, Thomas J. Mowbray. Software Architect Bootcamp: A Programmer's Field Manual. Primera edición 2000. Prentice Hall. ISBN 10: 0130274070 / 0-13-027407-0. ISBN 13: 9780130274076.

    En la segunda edición de este libro, le correspondería la lectura del Capítulo 3. La referencia es: Raphael C. Malveau, Thomas J. Mowbray. Software Architect Bootcamp. Segunda edición 2003. Prentice Hall. ISBN 10: 0-13-141227-2. ISBN-13: 978-0-13-141227-9.
    El texto de ese Capítulo 3 se puede leer (mediante la suscripción de la Biblioteca UNED con Learning O'Reilly —anteriormente Safari Books Online—) en Software Architecture: Basic Training, como libro electrónico.

     

  4. Estilos arquitectónicos.

    Resumen: Una manera de ver una arquitectura es considerarla como un conjunto de componentes y la descripción de sus interacciones -los conectores-. Un estilo es un patrón arquitectónico aplicable a una familia de sistemas.

    Objetivos:

    1. Estilos arquitectónicos comunes.

      Materiales:
      Lectura David Garlan and Mary Shaw. An Introduction to Software Architecture. 1994[2]. Capítulos 3 y 4.
      También en CMU/SEI-94-TR-21.


    2. A partir de aquí, la asignatura se plantea como una propuesta para la profundización, según el interés de cada estudiante, en un conjunto de líneas temáticas.

    3. Arquitecturas de componentes.

      Materiales:
      Lectura Clemens Szyperski; Gruntz, D. y Murer, S. Component Software - Beyond Object-Oriented Programming. Addison-Wesley Professional. Segunda edición, 2002. ISBN 10: 0201745720. ISBN 13: 978-0201745726.


    4. Arquitecturas de agentes.

      Materiales:
      Lectura del Capítulo 6, "Agent-Based Systems", de Rajendra Akerkar; Priti Sajja Knowledge-Based Systems. Ed: Jones & Bartlett Learning, 2010. ISBN-13: 978-1-4496-1294-8.
      Accesible mediante la suscripción con O'Reilly, como estudiante UNED y socio de la Biblioteca UNED, en: https://learning.oreilly.com/library/view/knowledge-based-systems/chapter_6_agentbased_systems

 

Unidad Didáctica II

  1. Directrices arquitectónicas.

    Resumen: ODP es un estándar formal que responde, definitivamente, a la pregunta de qué es la arquitectura de un sistema.

    Objetivos:

    1. El modelo de negocio.
    2. El modelo de la información.
    3. El modelo computacional.
    4. El modelo de ingeniería.
    5. El modelo tecnológico.


    Materiales:

    Lectura del Capítulo 3 de Raphael C. Malveau, Thomas J. Mowbray. Software Architect Bootcamp: A Programmer's Field Manual. Primera edición 2000. Prentice Hall. ISBN 10: 0130274070 / 0-13-027407-0. ISBN 13: 9780130274076.

    En la segunda edición de este libro, le correspondería la lectura de los capítulos 2, 3 y 4. La referencia es: Raphael C. Malveau, Thomas J. Mowbray. Software Architect Bootcamp. Segunda edición 2003. Prentice Hall. ISBN 10: 0-13-141227-2. ISBN-13: 978-0-13-141227-9.

    Con la suscripción a O'Reilly, de la Biblioteca UNED, el acceso es este: Software Architect Bootcamp, Second Edition.
  2.  

  3. Diseño arquitectónico. MDA

    Resumen: El Desarrollo Dirigido por Modelos propugna que los elementos fundamentales en el desarrollo de software sean modelos abstractos de diseño en lugar de fragmentos de código. Su máximo exponente es la MDA[3] (Model Driven Architecture) y persigue la reutilización de modelos traducibles a código.

    Objetivos:

    1. Entender los conflictos entre el comportamiento deseado para una aplicación y para la ejecución de su desarrollo y los aspectos técnicos de su implementación o la plataforma tecnológica utilizada para su desarrollo.
    2. Estudiar la especificación de la arquitectura OMG MDA y comprender cómo independiza la descripción del comportamiento del software respecto a la tecnología utilizada para su implementación.


    Materiales:

    Lectura Stephen J. Mellor, Kendall Scott, Axel Uhl, Dirk Weise. MDA Distilled. Addison-Wesley Professional (March 3, 2004). ISBN 10: 0201788918. ISBN 13: 978-0201788914.

    Con la suscripción a O'Reilly, el acceso es MDA Distilled. Principles of Model-Driven Architecture.

  4. [3] https://www.omg.org/mda/

     

  5. Diseño detallado. Patrones de diseño

    Resumen: Los patrones son soluciones efectivas a problemas de diseño que pueden reutilizarse en nuevos problemas. Su uso se generalizó a partir de la publicación del libro de Erich Gamma et al. Patrones de Diseño.

    Objetivos:

    1. Analizar algunos problemas de diseño generalizados.
    2. Comprender cómo un patrón de diseño resuelve un grupo numeroso de problemas de diseño.
    3. Estudiar algunos problemas de diseño y el patrón solución correspondiente


    Materiales:

    Lectura Bruce Eckel. Thinking in Patterns. https://archive.org/

    El libro electrónico también está en: Documentos\Materiales\TIPatterns-0.9.zip

    El libro de Gamma, Patrones de Diseño, también está en formato electrónico en: Documentos\Materiales\Gamma95.zip

    Otro clásico: Eric Freeman, Elisabeth Robson, Bert Bates, Kathy Sierra. Head First Design Patterns.  ISBN 13: 978-0596007126. Acceso con suscripción O'Reilly: Head First Design Patterns.

 

Metodología

 

La docencia de esta asignatura se impartirá a distancia, siguiendo el modelo educativo propio de la UNED adaptado al EEES. El principal instrumento docente será un curso virtual dentro de las plataformas educativas para la enseñanza a distancia, complementado con la asistencia personalizada del equipo docente y la tutela presencial y telemática.

Dentro del curso virtual el alumnado dispondrá de:

NOTA: En la situación sanitaria actual, la atención individual es telemática. Si se requiere alguna consulta personal, telefónica o presencial, se ruega contactar a través del correo electrónico (softwarch@issi.uned.es o jose.estivariz@issi.uned.es) para concertar una entrevista mediante MS Teams.

 

Recursos de apoyo al estudio

La plataforma de e-Learning aLF, proporcionará el adecuado interfaz de interacción entre el alumno y sus profesores. aLF es una plataforma de e-Learning y colaboración que permite impartir y recibir formación, gestionar y compartir documentos, crear y participar en comunidades temáticas, así como realizar proyectos online.

En relación a los materiales de aprendizaje propuestos, a partir del Tema 3 del programa de contenidos, la asignatura se plantea como una exposición panorámica de diversas líneas de uso y aplicación. Por ello, en ningún caso dichos materiales son vinculantes y se pueden sustituir por otros de mayor vigencia o especialización en el ámbito que le interese al estudiante. Por otro lado, los estudiantes con matrícula activa disponen de acceso a casi la totalidad de la bibliografía que se propone para esta asignatura, como material electrónico, a través de la Biblioteca UNED.

Se ofrecerán las herramientas necesarias para que, tanto el equipo docente como el alumnado, encuentren la manera de compaginar tanto el trabajo individual como el aprendizaje cooperativo.

 

Tutorización y seguimiento

 

La tutorización de los alumnos se llevará a cabo fundamentalmente a través de los instrumentos de comunicación del curso virtual. También se atenderán consultas por teléfono (en el horario lectivo indicado) por parte del equipo docente:

Horario:
Lunes lectivos de 16:00 a 20:00
Profesorado:
José Félix Estívariz López: Telf. 91-398.77.92
e-mail: softwarch@issi.uned.es

NOTA: En la situación sanitaria actual, la atención individual es telemática. Si se requiere alguna consulta personal, telefónica o presencial, se ruega contactar a través del correo electrónico (softwarch@issi.uned.es o jose.estivariz@issi.uned.es) para concertar una entrevista mediante MS Teams.

 

Evaluación de los aprendizajes

 

La calificación final de la asignatura se obtendrá a partir de los siguientes elementos: