I NGENIERÍA DEL S OFTWARE DE G ESTIÓN II ### B OLETÍN DE EJERCICIOS A NTONIO R UIZ -C ORTÉS PABLO T RINIDAD C ARLOS M ÜLLER M ANUEL R ESINAS S EVILLA , 8 DE NOVIEMBRE DE 2006 First published in January 2005 by The Distributed Group ETSI Informática Avda. de la Reina Mercedes s/n Sevilla, 41012. SPAIN c MMV The Distributed Group Copyright http://www.tdg-seville.info [email protected] In keeping with the traditional purpose of furthering science, education and research, it is the policy of the publisher, whenever possible, to permit non-commercial use and redistribution of the information contained in the documents whose copyright they own. You however are not allowed to take money for the distribution or use of these results except for a nominal charge for photocopying, sending copies, or whichever means you use redistribute them. The results in this document have been tested carefully, but they are not guaranteed for any particular purpose. The publisher or the holder of the copyright do not offer any warranties or representations, nor do they accept any liabilities with respect to them. Índice general Prólogo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . V 1 Introducción al diseño software . . . . . . . . . . . . . . . . . . . . . . . 1 1.1 Cuestiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 2 Técnicas de representación . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 2.1 Cuestiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 2.2 Problemas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 3 Patrones generales de software para asignar responsabilidades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 3.1 Cuestiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 3.2 Problemas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 4 Gestión del Cambio y de la Configuración . . . . . . . . . . . . 11 4.1 Cuestiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 4.2 Problemas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 II Índice general Índice de figuras 3.1 Dominio de información sobre gestión ferroviaria . . . . . . . . . . . . . . . . . . 9 3.2 Modelo de clases del sistema de visualización de resultados electorales 9 3.3 diagrama de clases del sistema de gestión de currículum . . . . . . . . . . . . 9 IV Índice de figuras Prólogo El presente documento recopila algunas cuestiones teóricas y problemas relacionadas con la materia de la asignatura Ingeniería del Software II correspondiente al tercer curso de la Ingeniería Técnica en Informática de Gestión. El principal objetivo de esta asignatura es introducir al alumno en la problemática del diseño orientado a objetos. Para lograr dicho objetivo adecuándonos al estado actual de la cuestión, se ha visto conveniente revisar sus contenidos, razón por la que en el curso 2006/07 se ha procedido a reordenar algunos contenidos de años anteriores y a introducir algunos nuevos. Hay dos características que marcan el contenido de este boletín. En primer lugar, se tratan de cuestiones del mismo tipo de las que se pueden y de hecho se han propuesto en exámenes oficiales de la asignatura. Con ellos pretendemos que el alumno pueda autoevaluarse al tiempo que familiarizarse con el mismo tipo de cuestiones con las que será evaluado. En segundo lugar, se trata de un boletín que no incluye todas las soluciones a las cuestiones, lo que sin duda, será motivo de queja para una parte de los alumnos. No obstante, dado que de este modo aumentan las probabilidades de que el alumno intente resolver las cuestiones y problemas planteándoselas desde el principio, estamos convencidos de que también aumentarán sus probabilidades de aprender y aprobar. Por otra parte, se recuerda a los lectores que también son alumnos, que la asignatura cuenta con una lista de correo en la que se puede y recomienda discutir la resolución de estas cuestiones y problemas. En cuanto a la estructura del documento, esté se ha organizado en los mismos capítulos que el temario de la asignatura más un capítulo con las soluciones de algunas cuestiones y problemas. Cada capítulo tiene una sección de preguntas de carácter teórico y otra de carácter más aplicado cuando la materia lo requiere. VI Prólogo Los autores Sevilla, enero de 2.006 Capítulo 1 Introducción al diseño software 1.1. Cuestiones ◮ CUESTIÓN 1.1: ¿Que relación existe entre el cuerpo de conocimiento de la Ingeniería del Software y el reconocimiento de ésta como profesión? ◮ CUESTIÓN 1.2: ¿A qué representa las siglas SWEBOK? ¿Qué asociaciones relacionadas con la informática han auspiciado dicho proyecto? ◮ CUESTIÓN 1.3: ¿En qué aspectos suelen coincidir la mayoría de las definiciones de Ingeniería del Software? ◮ CUESTIÓN 1.4: Discuta sobre si el diseño es o no una actividad compleja. ◮ CUESTIÓN 1.5: Defina los siguientes conceptos y describa mediante un ejemplo la relación que existe entre ellos si es que existe: atributo básico y derivado de calidad, requisito no funcional, requisito de calidad, catálogo de atributos. ◮ CUESTIÓN 1.6: Comente su interpretación sobre la gráfica propuesta por Osmond para ilustrar los posibles caminos durante el proceso de desarrollo software. ◮ CUESTIÓN 1.7: Discuta sobre la madurez de la Ingeniería del Software respecto de las ingenierías clásicas y otras profesiones. 2 Capítulo 1. Introducción al diseño software Capítulo 2 Técnicas de representación 2.1. Cuestiones ◮ CUESTIÓN 2.1: Discuta sobre los criterios que suelen seguirse para decidir entre utilizar agregación o composición. ◮ CUESTIÓN 2.2: ¿De qué otra manera se conocen las agregaciones no compartidas en UML? ¿Por qué? ◮ CUESTIÓN 2.3: ¿Qué diferencia existe entre un diagrama de clases de análisis y un diagrama de clases de diseño? ◮ CUESTIÓN 2.4: ¿Qué sabe sobre los diagramas de interacción de UML? ◮ CUESTIÓN 2.5: Muestre con un ejemplo simple la forma de expresar una iteración en un diagrama de colaboración. 2.2. Problemas Para realizar los siguientes problemas asuma la existencia de una clase Folder que guarda una relación de agregación con la clase File y de una clase Compressor. Considere el contrato sintáctico que estime oportuno con la semán- tica habitual de un sistema de archivos. Si en algún caso se indica de manera explícita otras clases de objetos considere los contratos sintáctico y semántico que estime oportunos. 4 Capítulo 2. Técnicas de representación ◮ PROBLEMA 2.1: Elabore el diagrama de colaboración correspondiente a la acción de comprimir una carpeta. ◮ PROBLEMA 2.2: Elabore el diagrama de colaboración correspondiente a la acción de comprimir una carpeta asumiendo que la clase Compressor dispone de un método para comprimir el contenido completo de una carpeta. ◮ PROBLEMA 2.3: Elabore el diagrama de colaboración correspondiente a la acción de comprimir una carpeta y de enviarla por correo electrónico. ◮ PROBLEMA 2.4: Elabore el diagrama de colaboración correspondiente a la acción de borrar una carpeta. Debe tenerse en cuenta que los archivos superiores a un tamaño predeterminado, p.e. de 10 MB, no van a la papelera de reciclaje. ◮ PROBLEMA 2.5: Elabore el diagrama de secuencias equivalente a los diagramas de colaboración requeridos en los anteriores problemas. Capítulo 3 Patrones generales de software para asignar responsabilidades 3.1. Cuestiones ◮ CUESTIÓN 3.1: ¿Qué contraindicación tiene el GRASP Variaiones Protegidas? ◮ CUESTIÓN 3.2: ¿Qué contraindicación tiene el GRASP Fabriaión Pura? ◮ CUESTIÓN 3.3: ¿Qué contraindicación tiene el GRASP Bajo aoplamiento? ◮ CUESTIÓN 3.4: Comente al menos tres mecanismos propuestos para la protección de alguna variación. ◮ CUESTIÓN 3.5: Discuta sobre los otros nombres que ha recibido el GRASP Variaiones Protegidas. ◮ CUESTIÓN 3.6: Discuta sobre si el acoplamiento es o no una propiedad no deseable. ◮ CUESTIÓN 3.7: ¿Qué sabe sobre la conocida como “Ley de Demeter”? ◮ CUESTIÓN 3.8: ¿Qué entiende Craig Larman por principios evaluativos? Indique al menos dos ejemplos de dichos principios. ◮ CUESTIÓN 3.9: ¿Qué sabe acerca de la medición del grado de cohesión de una clase? ◮ CUESTIÓN 3.10: Justifique razonadamente su opinión sobre si es posible sistematizar la asignación de responsabilidades durante el diseño. 6 Capítulo 3. Patrones generales de software para asignar responsabilidades ◮ CUESTIÓN 3.11: ¿Qué entiende por punto de variación y de evolución? ¿Qué GRASP trata de manera más directa con ambos puntos y qué otros nombres recibe dicho GRASP? ◮ CUESTIÓN 3.12: ¿Qué sabe sobre el conocido como ”principio de sustitución de Liskov”? 3.2. Problemas ◮ PROBLEMA 3.1: En un sistema de gestión ferroviaria debe mantenerse la información relativa a trayectos y trenes que los realizan. La información relacionada está estructurada según el diagrama de clases de la figura 3.1. Dos de las operaciones del sistema son: establecer nuevos trayectos y suprimir trayectos. La definición de dichas funciones son: Compañía::EstableerTrayeto(o,d: Estaión; s,l: Hora; l: Lista[Estaión,Hora℄) donde o y d son referencias a la estación de origen y destino respectivamente, s y l las horas de salida y llegada, y l una lista de referencias a estaciones de tránsito y la hora de dicho tránsito. Esta operación debe buscar un tren que esté disponible e incluir el nuevo trayecto en el sistema según el diagrama de clases propuesto. Compañía::SuprimirTrayeto(o, d: Estaión; s, l:Hora) donde o y d son referencias a la estación de origen y destino respectivamente, y s y l las horas de salida y llegada. Esta operación debe: (1) buscar el trayecto en cuestión, (2) suprimir tanto su origen como su destino, (3) suprimir todos los tránsitos, y (4) liberar al tren que realizaba el trayecto. A) Justifique brevemente en lenguaje natural los GRASP que considera aplicables para asignar las responsabilidades que se derivan de realizar ambas operaciones. B) El diagrama de clases resultante de asignar las responsabilidades que se derivan de realizar ambas operaciones. C) El diagrama de colaboración correspondiente a la operación de establecer un trayecto. 3.2. Problemas 7 D) El diagrama de secuencias correspondiente a la operación de suprimir un trayecto. ◮ PROBLEMA 3.2: Se necesita diseñar un módulo con la finalidad de comprimir archivos teniendo en cuenta los siguientes condicionantes: El método de compresión (ZIP, RAR, etcétera) a emplear dependerá del contenido del archivo a comprimir. Para averiguar el formato de compresión más adecuado en cada caso, se deberá emplear el Singleton DoctorCompression, más concretamente su método string getBestMethod (String nameFile), el cual devuelve en una cadena de texto el método de compresión más adecuado para el fichero indicado. Se deben emplear las clases ZIPCompressor y RARCompressor para comprimir archivos en formato ZIP y RAR respectivamente. Ambas clases implementan la interfaz ICompressor cuya definición en Java es: interface ICompressor void compress(String fileName); El grado de cohesión de las clases del diseño propuesto debe ser tan alto como sea posible. Las clases DoctorCompression, ZIPCompressor y RARCompressor no deben ser modificadas. El módulo ofrecerá a sus clientes la posibilidad de comprimir uno o varios archivos del modo indicado en el siguiente fragmento de código Java. Class Test { publi stati void run() { Compressor = new Compressor(); .ompress ("test1.do"); .ompress ("test2.do"); List l= new ArrayList(); l.add("test1.jpg"); l.add("test2.jpg"); .ompress (l); } } Se pide: A) Justifique brevemente en lenguaje natural los GRASP y patrones de diseño que considera aplicables en el diseño de este módulo. 8 Capítulo 3. Patrones generales de software para asignar responsabilidades B) Elabore el diagrama de secuencias asociado al comportamiento del módulo para la petición de compresión de la línea 9 de la clase Test. No realice ninguna consideración sobre el mejor método para comprimir los archivos. C) Ilustre con diagrama de clases UML el diseño propuesto para el modulo solicitado, haciendo uso de anotaciones para explicar la semántica de los métodos más relevantes. ◮ PROBLEMA 3.3: Se dispone de un sistema que recoge los datos estadísticos de unos resultados electorales. Dicho sistema dispone de una base de datos donde se almacena el número de votos para cada uno de los partidos políticos. Se desea añadir al sistema una ventana que permita mostrar en principio dos gráficas distintas, una de barras y otra circular de dichos datos estadísticos. En la Figura 3.2 se ilustra el primer diseño propuesto. Se pide: A) Evalúe el diseño anterior aplicando los principios GRAS evaluativos. B) Justifique brevemente en lenguaje natural los GRASP y patrones de diseño que considera aplicables en el diseño de este módulo. C) Ilustre con diagrama de clases UML el diseño propuesto para el modulo solicitado, haciendo uso de anotaciones para explicar la semántica de los métodos más relevantes. ◮ PROBLEMA 3.4: Se desea realizar una aplicación web que muestre los CV de los distintos miembros de un grupo de investigación. En cada CV se desea que aparezcan los datos personales del miembro y los datos relativos a sus publicaciones. Ha de tenerse en cuenta que una publicación puede tener más de un autor y que cada autor tiene una dirección de correo asociada. También se desea que esté disponible el archivo que contiene la publicación en un formato que en principio puede ser PDF, PostScript o LaTeX. En la Figura 3.3 se propone un primer diseño. A) Evalúe el diseño anterior aplicando los principios GRAS evaluativos. B) Justifique brevemente en lenguaje natural los GRASP y patrones de diseño que considera aplicables en el diseño de este módulo. C) Ilustre con diagrama de clases UML el diseño propuesto para el modulo solicitado, haciendo uso de anotaciones para explicar la semántica de los métodos más relevantes. 3.2. Problemas 9 ofrece 1 Compañía Ferroviaria 1..* 1 1..* 1 Tren posee * realiza Trayecto * * * Partida Destino Horario Horario 1 Tránsito Horario 1 Estación * Figura 3.1: Dominio de información sobre gestión ferroviaria. Figura 3.2: Modelo de clases del sistema de visualización de resultados electorales. Figura 3.3: diagrama de clases del sistema de gestión de currículum. 10 Capítulo 3. Patrones generales de software para asignar responsabilidades Capítulo 4 Gestión del Cambio y de la Configuración 4.1. Cuestiones ◮ CUESTIÓN 4.1: ¿De qué forma puede evitarse el cambio en el software? ◮ CUESTIÓN 4.2: ¿Qué criterios se pueden seguir para seleccionar los cambios de los que protegernos durante la prevención del cambio? ◮ CUESTIÓN 4.3: Indique de qué manera puede el PD Fábrica facilitar el mantenimiento ampliativo o de mejora ◮ CUESTIÓN 4.4: En una sistema de gestión de una empresa, qué partes de un diseño pueden indicar una mayor necesidad de mantenimiento y por tanto están sujetas a una mayor probabilidad de cambio? ◮ CUESTIÓN 4.5: Señale de qué manera puede ayudar SubVersion a la gestión de versiones de ECS y productos. ◮ CUESTIÓN 4.6: ¿Qué es una línea base? ◮ CUESTIÓN 4.7: Indique las razones por las que la nueva versión de la máquina virtual de Java se denomina 1.5 y 5.0, siendo la anterior versión Java 1.4.2. ◮ CUESTIÓN 4.8: Se tiene la versión 2.4.2 de un determinado software. Se decide aplicarle un proceso de reingeniería para prevenirlo de cambios futuros. Considerando el sistema de versionado visto en clase, indique razonadamente cuál será el número de versión que tendrá el software una vez aplicada la reingeniería. 12 Capítulo 4. Gestión del Cambio y de la Configuración 4.2. Problemas ◮ PROBLEMA 4.1: En un determinado proyecto, se realiza un análisis de los posibles cambios que pueden aparecer en el software, obteniendo los siguientes datos: Cambio C1 C2 C3 C4 Probabilidad Muy Alta Alta Baja Media Prevención 20000e 30000e 15000e 25000e Costes Ejecución Sin prevención 10000e 45000e 5000e 50000e 7500e 75000e 10000e 60000e Defina uno o más criterios de selección y en base a un presupuesto de 55000e, elija los cambios de los que prevenirse. ◮ PROBLEMA 4.2: Rellene la siguiente tabla indicando para cada uno de los patrones de diseño y patrones GRAS estudiados en clase, cómo pueden ayudar a gestionar el cambio en un proyecto software. Patrón ... Patrón GRAS ... Cómo ayuda a gestionar el cambio ... Cómo ayuda a gestionar el cambio ... ◮ PROBLEMA 4.3: Indique las ventajas e inconvenientes que se pueden encontrar a la hora de tomar la decisión de aplicar reingeniería sobre un diseño existente o realizar un desarrollo desde cero ante la aparición de cambios que afecten a la arquitectura del software Ventajas Inconvenientes Reingeniería Desarrollo desde cero ◮ PROBLEMA 4.4: Se tienen las siguientes versiones de ECS de tres compilaciones distintas. Indique si se trata de versiones distintas de un producto o de variantes de una misma versión y por qué. Compilación C1 C2 C3 ECS1 1.0.4 1.0.4 2.0.4 ECS2 1.1.0 2.1.0 2.1.0 ECS3 1.4.3 2.4.3 3.4.3 This document was typeset on // using RC–BOO K α. for LATEX2ǫ. Should you want to use this document class, please send mail to [email protected].