UNIVERSIDAD AUTÓNOMA DE YUCATÁN FACULTAD DE MATEMÁTICAS MISIÓN Formar profesionales altamente capacitados, desarrollar investigación y realizar actividades de extensión, en Matemáticas y Computación, así como en sus diversas aplicaciones. ARQUITECTURAS DE SOFTWARE Quinto semestre LICENCIATURA EN INGENIERÍA DE SOFTWARE Agosto 2006 Enero 2007
I Generales. Clave del curso: IS-06 Semestre: Quinto Licenciatura: Ingeniería de Software Clases por semana: 3 Número de clases: 48 Duración de la clase: 90 minutos Horas teóricas: 40 Horas prácticas: 32 Créditos: 8 Antecedentes académicos: Ninguno Cuerpo(s) académico responsable(s): Diseño de Aplicaciones-Ingeniería de Software Elaboradores: Juan Francisco Garcilazo Ortiz, Carlos Benito Mojica Ruiz. Fecha de aprobación: Plan de estudio aplicable: 2004. II Descripción y justificación del curso. Con el crecimiento en tamaño y complejidad del software, el diseño y la especificación de toda la estructura toma gran relevancia. Los aspectos estructurales incluyen la organización del sistema como un conjunto de componentes; estructuras de control; protocolos de comunicación, sincronización y acceso a datos; asignación de funcionalidad a cada elemento del diseño; la distribución física de los componentes; desempeño, entre otros muchos factores. De manera abstracta, el diseño de software involucra; la descripción de los elementos mediante los cuales se construye un sistema, interacción entre esos elementos y guías a seguir en la composición e interrelación de los componentes. El curso provee las herramientas para que el alumno se pueda enfrentar al desarrollo de la arquitectura de sistemas a gran escala, lo anterior en base a las diversos estilos arquitectónicos existentes, los cuales debe de evaluar y aplicar de acuerdo a la naturaleza del problema. III Objetivos. General Generar la arquitectura de un software utilizando los estilos arquitectónicos adecuados para cumplir con los atributos de calidad que deben existir en toda arquitectura de software. Específicos 1. Conocer e identificar los atributos de calidad que debe tener la arquitectura de software. 2. Conocer los estilos arquitectónicos existentes. 3. Generar la arquitectura de software utilizando el estilo arquitectónico adecuado. 4. Conocer y aplicar los patrones de diseño arquitectónicos 2
5. Desarrollar la documentación de la arquitectura de un software. 6. Conocer la relación existente entre la arquitectura y el diseño de software. 7. Entender el proceso para crear un diseño de software. 8. Aprender los principios fundamentales del diseño de software independientes de la metodología de diseño utilizada. IV Resultados esperados. Al final del curso el estudiante: a) Entenderá el proceso de arquitectura de software. b) Describirá los atributos de calidad que toda arquitectura de software debiera satisfacer. c) Realizará la arquitectura adecuada para el desarrollo de un software específico. V Contenido. Unidad 1 Fundamentos de la arquitectura de software. (3 sesiones) Al finalizar la unidad, el alumno describirá las bases para el entendimiento de la etapa de diseño de software. i. Orígenes de la arquitectura de Software ii. Qué es la arquitectura de software? iii. Por qué la arquitectura de software es importante? iv. Propiedades funcionales y no funcionales de la arquitectura de software v. Arquitectura de Software dentro del ciclo de vida del proceso de desarrollo. Unidad 2 Estilos arquitectónicos. (2 sesiones) Al finalizar la unidad, el alumno conocerá los estilos arquitectónicos mas importantes. i. Tubos y filtros ii. Abstración de datos y organización orientada a objetos iii. Basado en eventos, Invocación implícita iv. Sistemas en capas v. Repositorios vi. Interpretes vii. Control de procesos viii. Otras arquitecturas ix. Arquitecturas heterogéneas Unidad 3 Estudio de Casos. (6 sesiones) En esta unidad se ejemplificará la importancia y uso de la arquitectura de software mediante el estudio de cinco. i. KWIC. ii. Instrumentación de Software. 3
iii. Robot Mobil. iv. Control de Crucero. v. PROVOX Unidad 4 Patrones Arquitectónicos y Frameworks. (13 sesiones) Al finalizar la unidad, el alumno conocerá algunos tipos de patrones de arquitectura de acuerdo a su naturaleza y los aplicarán para la definición de marcos de trabajo (frameworks). i. Patrones arquitectónicos (3 clases) a. Estructura b. Sistemas distribuidos c. Sistemas interactivos d. Sistemas adaptables ii. Frameworks VII Estrategias de aprendizaje y enseñanza. Conferencia, interrogatorio, tormenta de ideas, trabajo en equipo, investigaciones bibliográficas, presentaciones orales y escritas; análisis y diseño de problemas en clase y de tarea, ejercicios prácticos de diseño en clase y de tarea para poner en práctica las prácticas probadas de la ingeniería de software en el diseño. VIII Criterios de evaluación. Método Porcentaje Descripción Exámenes 40% Se aplicarán 3 exámenes escritos (20% c/u). parciales Proyecto 50% Proyecto práctico de arquitectura de software. Tareas 10% Diversos reportes de investigación para su presentación oral y escrita. Algunas tareas dentro de la parte práctica. La suma de estos porcentajes representan el 80% de la calificación final Examen ordinario 20% de la calificación Para tener derecho al examen ordinario se debe haber cumplido con el proyecto práctico y las tareas. final El examen ordinario puede ser exentado habiendo obtenido una calificación del 85% entre los exámenes parciales, proyecto práctico y tareas. IX Bibliografía. No hay un libro de texto, el material que se va a cubrir se encuentra disperso en la siguiente bibliografía señalada, en muchos casos, los temas están repetidos. 4
No habrá un libro de texto en particular, diversos libros podrán ser consultados. Al igual, se manejarán diversos artículos de interés a los diversos temas tratados. Algunos libros útiles: 1. L. Bass, P. Clements, and R. Kazman (1998), Software Architecture in Practice, Addison Wesley Inc., New York. 2. Shaw, Mary & Garlan, David. Software Architecture: Perspectives on an Emerging Discipline. Prentice Hall; 1 edition (April 2, 1996). ISBN: 0131829572 3. Buschmann, Frank, et. al. Pattern-Oriented Software Architecture, A system of patterns Volume 1, John Wiley & Sons, Inc., New York. ISBN 0471958697 4. M.E. Fayad, D.C. Schmidt, and R.E. Johnson (1999), Building Application Frameworks: Object-Oriented Foundations of Framework Design, John Wiley & Sons, Inc., New York. 5. Sommerville, Ian. Ingeniería de Software (4ª, 5ª o 6ª edición). Addison-Wesley Pub Co. 6. Pressman, Roger. Ingeniería de Software: Un enfoque práctico (5ª edición). McGraw-Hill. 7. Gamma, E. Design Patterns. Addison Wesley. 1995. 8. Meyer, Bertrand. Object Oriented Software Construction. Prentice Hall. 1997 X Recursos computacionales necesarios. Indispensable: Editor de texto que pueda salvar archivos tipo.txt. Conexión a Internet. Computadora conectada a Internet con sistema operativo y un navegador de Internet instalado y configurado. Impresora. Herramienta para realizar presentaciones. Herramientas CASE para el modelado de arquitectura. Recomendable: Herramientas CASE para el desarrollo y administración de requerimientos. Herramientas CASE para la planeación y seguimiento de proyectos de software. Herramientas CASE para la administración de la configuración del software. XI Perfil académico del docente. Ingeniero de Software, Licenciado en Ciencias Computacionales, Ingeniero en Sistemas Computacionales o afín, preferentemente con postgrado, y experiencia docente de investigación o trabajo en el área. Elaboración: M. en C. Juan Francisco Garcilazo Ortiz, M. en C. Carlos Benito Mojica Ruiz. Fecha de elaboración: Julio, 2006. 5