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:
- Experiencia avanzada en programación y, concretamente, en el paradigma de la orientación a objetos.
- Estadística, algoritmia y especificación formal.
- Lectura y comprensión de textos en inglés técnico.
Resultados del aprendizaje
Los resultados de aprendizaje que se espera alcanzar con esta asignatura por parte del estudiante son:
- Conocer los Estilos arquitectónicos, Arquitecturas y Directrices arquitectónicas de desarrollo de Software
- Saber aplicar un estilo arquitectónico a un problema de desarrollo, diseñar con componentes o construir patrones y utilizarlos en el diseño
- Analizar herramientas, entornos y aplicaciones de desarrollo y evaluar cuál es la más adecuada para el problema planteado
- Capacidad para desarrollar Software mejorando su calidad y el rendimiento productivo
- Saber aprovechar Técnicas, Metodologías y Arquitecturas de Desarrollo para disminuir los costes de desarrollo y de mantenimiento
Contenidos
Unidad Didáctica I
- 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:
- Definición de arquitectura de software.
- El problema del diseño en software complejo y de altas prestaciones.
- 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]
https://www-2.cs.cmu.edu/afs/cs/project/able/ftp/intro_softarch/intro_softarch.pdf
- 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:
- Tendencias en las tecnologías de desarrollo. Software procedimental, orientación a objetos y desarrollo con componentes.
- 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.
- 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:
- 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.
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.
- 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.
- 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
- 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:
- El modelo de negocio.
- El modelo de la información.
- El modelo computacional.
- El modelo de ingeniería.
- 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.
- 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:
- 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.
- 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.
[3]
https://www.omg.org/mda/
- 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:
- Analizar algunos problemas de diseño generalizados.
- Comprender cómo un patrón de diseño resuelve un grupo numeroso de problemas de diseño.
- 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:
- Página de bienvenida y 'Plan de trabajo', donde se indica el concepto general de la asignatura y se presenta el desarrollo de sus contenidos.
- Calendario, donde se establece el orden temporal de actividades y sugerencias sobre el reparto temporal de la materia, para que el estudiante los adapte a su disponibilidad y necesidades. Estas actividades formativas consisten en:
- Actividades de contenido teórico: lectura de las orientaciones generales; lectura comprensiva de la bibliografía, material didáctico e información temática; e intercambio de información y consulta de dudas con el equipo docente. (75 horas de dedicación).
- Actividades de contenido práctico: manejo de herramientas informáticas y de ayuda a la presentación de resultados; participación en plataformas virtuales de trabajo colaborativo, intercambio de información con otros compañeros sobre aspectos prácticos y participación, argumentación y aportación constructiva en los debates en foros. (35 horas de dedicación).
- Trabajo autónomo: búsqueda de herramientas e información adicional en biblioteca, Internet, etc.; selección de la información útil; actividades, que el estudiante realiza de manera autónoma, orientadas a resolver problemas o trabajos que se plantean específicamente en la realización de memorias y desarrollos utilizados, también, en la evaluación de la asignatura. (115 horas de dedicación).
- Materiales:
- Información complementaria del curso, donde se establecen los objetivos concretos y los puntos de interés.
- Programa, donde se especifica la división del contenido por capítulos.
- Procedimiento, donde se sugieren al alumno las tareas que debe realizar.
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 relacionadas con el diseño arquitectónico y detallado; proponiendo al estudiante que profundice en aquellas que sean de su interés. 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.
- Comunicación:
- Correo para comunicaciones individuales.
- Foros de Debate donde se intercambian conocimientos (foros temáticos) y se resuelven dudas de tipo académico general.
- Evaluación:
- Programa de actividades de evaluación.
- Enunciado y objetivos de cada actividad de evaluación.
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:
Trabajo de diseño arquitectónico del alumno, que se realizará a lo largo del semestre, con la supervisión y asesoramiento del equipo docente. Consistirá en una prospección, selección, documentación, instalación y análisis de varias herramientas de desarrollo orientado a MDA. Representará un 40 % de la calificación final.
-
Trabajo de diseño con patrones del alumno, que se realizará a lo largo del semestre, con la supervisión y asesoramiento del equipo docente. Consistirá en el análisis y documentación de la aplicación de los patrones de diseño a un desarrollo a su alcance —propio o de su entorno profesional— o bien a librerías estándar de Java del tipo JUnit. Representará un 40 % de la calificación final.
Aunque cualquiera de los dos trabajos se puede entregar en cualquiera de las dos convocatorias del curso (junio o septiembre), para superar la asignatura es imprescindible aprobar los dos (no se hace media ni se compensa uno con otro). Cada trabajo se entrega por separado, aunque el período temporal para hacerlo es único para cada convocatoria. Dichos plazos de entrega son:
- Junio: la entrega se activará a finales de enero y se cerrará a última hora del domingo correspondiente a la semana de los últimos exámenes presenciales de la convocatoria de junio (suele ser la primera semana de ese mes)
- Septiembre: la entrega se activará a mediados de julio y se cerrará a última hora del domingo correspondiente a la semana de los exámenes presenciales de la convocatoria de septiembre (suele ser la primera semana de ese mes)
La entrega de los trabajos previstos para la evaluación de la asignatura se realizará, necesariamente, a través de la sección 'Entrega de trabajos' [subir solución] que se encuentra a la izquierda, en el menú de navegación del Curso Virtual. La entrega está disponible entre el 3 de enero y el final del período de exámenes en la Universidad (9 de junio y 8 de septiembre).
Atención, el depósito se hará en un único archivo. Si su trabajo incluye varios ficheros, comprímalos en 'zip', 'rar', '7z' u otro formato de uso generalizado.
-
Participación en los foros y grupos de discusión del curso virtual en la plataforma aLF. Se evaluará el grado de participación, actitud constructiva y capacidad innovadora de las intervenciones y aportaciones. También se valorará la capacidad de expresión y la habilidad para argumentar ideas propias y aprovechar argumentos ajenos para deducir planteamientos nuevos. Sólo se evaluará esta participación en el período comprendido entre octubre y finales de mayo. Representará un 20 % de la calificación final.