Boletín de problemas - Departamento de Lenguajes y Sistemas

Anuncio
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
contact@tdg-seville.info
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
contact@tdg-seville.info.
Descargar