Enunciados y soluciones (1 PP y 2 PP) (PDF)

Anuncio
Examen del primer parcial
Las soluciones propuestas son esquemáticas. Por supuesto al puntuar se han
valorado conocimentos adicionales y soluciones alternativas.
1. Defina qué se entiende por requisito. Tipos de requisitos. Defina brevemente
qué es una especificación y enumere cualidades que debe tener una buena
especificación.
Requisito Es una capacidad que el sistema debe tener porque el cliente lo
ha pedido explícita o implícitamente.
Tipos de requisitos
Funcionales: Dicen qué debe hacer el sistema en el sentido de servicios
proporcionados al usuario.
No funcionales: Dicen las características del sistema.
Especificación : Es un documento que contiene todos los requisitos. Tiene
un tipo de formato estándar.
Cualidades de una buena especificación : Completitud, Concisión,
Legibilidad, Consistencia, Factibilidad y Facilidades de prueba, cambio y
seguimiento.
2. Enumere y describa las formas de identificar actores en los diagramas de
casos de uso del lenguaje UML.
Se trata de encontrar esta información:
Identificar usuarios del sistema: Hay que tener en cuenta para quién
se está diseñando o con qué personas va a interactuar de un modo
directo (actores principales) y quién va a tener un papel de supervisión
o mantenimiento del sistema (actores secundarios).
Identificar los roles que juegan esos usuarios desde el punto de vista del
sistema. Hay varios tipos, gestores de alto nivel, gente que introduce
datos, etc.
Identificar otros sistemas con los cuales exista comunicación. Estos
sistemas también se consideran como actores dado que son algo
externo a nuestro sistema.
1
3. En un conocido juego de estrategia hay tres tipos de razas: Terrans, Zergs
y Protos. Cada tipo de raza define a su vez dos tipos de personajes:
Trabajadores (consiguen recursos y construyen edificios) y Soldados (pegan
a personajes de otro bando). Un personaje tiene como características: Si es
aéreo o terrestre, salud (número entero), velocidad, escudo, etc. Un soldado
además define si puede pegar a personajes aéreos o terrestres, daño que hace,
etc. Un trabajador recoge recursos y los lleva a un edificio de recogida. Los
recursos son de dos tipos: Gemas y Gas y se van agotando a medida que
son explotados. Hay diferentes tipos de edificios propios de cada raza y cada
uno proporciona capacidades diferentes a los miembros de su bando, por
ejemplo, el máximo número de personajes de un bando está determinado por
el número de edificios granja multiplicado por 8; el edificio armería mejora
en +1 el daño de los soldados. Un bando está definido por un conjunto de
personajes y edificios de una o más razas. El juego tiene lugar sobre un
tablero definido en una retícula romboidal. En cada punto de la retícula
se define el tipo de terreno y se pueden posicionar personajes, edificios y
recursos. Un bando puede ser dirigido por un jugador o por la inteligencia
artificial del programa. Es posible que varias personas jueguen en red, con
lo que habrá una copia de todo el sistema en cada ordenador y un sistema de
paso de mensajes entre los diferentes ordenadores para actualizar el tablero.
Se pide:
Diagrama de clases que represente el problema.
Discuta brevemente las ventajas e inconvenientes de estas dos opciones
de diseño para el caso de partidas multijugador:
• Cada ordenador tiene una copia de toda la información. Cuando
un jugador da una orden a un personaje se modifica el tablero. La
orden es transmitida a todos los demás ordenadores que actualizan
su copia del tablero.
• Existe un servidor que contiene la información del tablero, los
ordenadores con los que juegan las personas también pero cuando
un jugador da una orden esta se transmite primero al servidor y
luego a los demás ordenadores.
Teniendo en cuenta que nos interesa representar las comunicaciones
entre diferentes ordenadores, ¿ Qué tipo de diagrama de UML utilizaría
para representar las dos arquitecturas anteriores ?
Represente ambas opciones de diseño en el tipo de diagrama que haya
propuesto.
2
Figura 1: Diagrama de clases
En el diagrama de clases los edificios pueden tener una jerarquía mucho mayor
si se añaden los tipos de edificios en función de la raza. Existen varias restricciones
indicadas en lenguaje natural en el diagrama. El tipo void indica que no ha sido
definido en la especificación dada en el examen. El problema real es más complejo;
se ha dado una solución simplificada.
Opciones de diseño. Hay varios aspectos a tener en cuenta1 : Tiempo de
respuesta, Robustez, Coherencia de la información, Eficiencia, Mecanismo para
incorporarse y retirarse del juego.
Primera opción:
1. Tiempo de respuesta: Menor porque el mensaje va directamente de un
ordenador a los demás.
2. Robustez: Es un sistema más robusto, todos los ordenadores son iguales
y si uno se cae el juego puede continuar sin problemas.
3. Coherencia de la información: Es más difícil porque cada ordenador
tiene que actualizar el estado de n-1 ordenadores cada vez que su
usuario haga algo. Si hay un conflicto (por ejemplo: el personaje a del
1 Esta
respuesta no tiene en cuenta todos los condicionantes posibles, sólo los importantes
3
usuario A mata al personaje b del usuario B y antes de que le llegue
ese mensaje el personaje b mata al personaje a) hay que diseñar un
protocolo de arbitraje que resuelva la situación.
4. Eficiencia: Cuantos más ordenadores hay en la misma red más se
exige de cada ordenador (tiene que enviar el mismo mensaje a más
destinatarios, a menos que sea posible mandar mensajes de tipo
broadcast).
5. Mecanismo para incorporarse al juego: Es complicado porque al no
haber un servidor al cual dirigirse. Tiene que existir un medio de que
un ordenador que quiera incorporarse puede averiguar las direcciones
del resto de los ordenadores que están conectados al juego.
Segunda opción:
1. Tiempo de respuesta: Mayor porque el mensaje va primero al servidor
y luego se retransmite a los demás.
2. Robustez: Tiene el problema de que si el servidor se cae, se cae con él
todo el sistema.
3. Coherencia de la información: Es más sencillo porque el servidor es
quien actualiza su estado cuando le llega un mensaje y se lo comunica
a los demás para que actualizen el suyo. Si hay conflictos el servidor
los resuelve y comunica la resolución a los otros ordenadores.
4. Eficiencia: La red en la que esté instalado el servidor podría ser un
cuello de botella, de todas formas, esta solución admite más usuarios
que la otra.
5. Mecanismo para incorporarse al juego: Es fácil, sólo hay que mandar
un mensaje al servidor. La configuración podría ser tan sencilla como
escribir una dirección IP en algún sitio.
4
Representación de las dos alternativas. El tipo de diagrama más adecuado
sería el de distribución por la definición del mismo: Sirve para expresar las
comunicaciones entre nodos.
Figura 2: Opción 1
Figura 3: Opción 2
5
Examen del segundo parcial
Las soluciones propuestas son esquemáticas. Por supuesto al puntuar se han
valorado conocimentos adicionales y soluciones alternativas.
1. Defina los conceptos de validación y verificación. Defina las pruebas que se
realizan al resultado de cada fase del ciclo de vida de un producto software.
(2 puntos)
Verificación Conjunto de actividades que aseguran que el software
implementa correctamente una función específica. Responde a la pregunta:
¿ Estamos construyendo el producto correctamente ?
Validación Conjunto de actividades que asegura que el sofware construido
se ajusta a los requisitos del cliente. Responde a la pregunta: ¿ Estamos
construyendo el producto correcto ?.
Pruebas aplicadas a los resultados obtenidos de las distintas fases:
Codificación: Pruebas de unidad.
Diseño: Pruebas de integración.
Requisitos o Análisis o Especificación2 : Pruebas de validación.
Ingeniería de sistema3 : Prueba del sistema.
2. Razone brevemente la respuesta a la siguiente pregunta: ¿Es suficiente para
asegurar la calidad de una aplicación software verificar y validar las distintas
versiones del producto terminado ? ( 2 puntos)
No. La calidad se incorpora al software durante el proceso de ingeniería
del software usando los métodos y herramientas adecuadas, revisiones
técnicas formales y una gestión y medición correctas. Las pruebas pueden
confirmar la calidad.
3. Objetivos de las pruebas de integración. Enumera y define brevemente las
aproximaciones mas frecuentes para realizar las pruebas de integración.
Objetivo Partiendo de módulos ya probados en las pruebas de unidad,
construir una estructura de programa que esté de acuerdo con el diseño.
2 Se
admite cualquiera de estas tres palabras
no se ha estudiado como una fase del ciclo de vida, se supone que es anterior
3 Esto
6
Aproximaciones
Descendente: Integración incremental que parte de los módulos
superiores y va integrando siguiendo la estructura de control
moviéndose hacia abajo. Hay dos formas: primero en profundidad y
primero en anchura.
Ascendente: Es otro tipo de integración incremental que parte de
los módulos inferiores (atómicos) siguiendo la estructura de control
moviéndose hacia arriba.
Sandwich: Combinación de la descendente y la ascendente.
Big bang: Integración de todos los módulos al tiempo. Es la peor de
todas.
Regresión: Volver a probar un subconjunto de las pruebas cuando se
han hecho cambios para asegurar que no se han introducido nuevos
errores con los cambios.
Humo: Divide el software en “construcciones” que son todos los
recursos necesarios para implementar un conjunto de funciones.
Busca errores “bloqueantes”, que son los que impiden cumplir la
planificación.
4. Suponga un triángulo cuyos lados tienen por longitudes l1, l2 y l3. Un
triángulo es equilatero si todos sus lados son iguales, isósceles si tiene dos
lados iguales y escaleno si son todos distintos. Dadas tres longitudes: l1, l2,
l3 correspondientes a las longitudes de los lados de un triángulo: 1) Escribir
un programa en pseudocódigo que compruebe en cual de los tres casos nos
encontramos. 2) Dibujar el grafo de flujo. 3) ¿ Son aplicables las pruebas
basadas en particiones equivalentes ? Razone la respuesta. Si son aplicables
hágalo. 4) Lo mismo para las pruebas basadas en el análsis de valores límite.
7
Pseudocódigo: Es un programa muy sencillo. Los lados son l1, l2 y l3. Se
supone que el problema de conseguir los lados ya está resuelto. El problema
de que l1, l2 y l3 sean números positivos y que la suma de dos cualesquiera
de los lados sea mayor que el otro no se menciona en el enunciado y por lo
tanto no se tiene en cuenta en el algoritmo.
1
2
3
4
5
6
7
8
9
10
11
12
13
si (l1 == l2) entonces
si (l2 == l3) entonces
Escribir Equilatero
sino
Escribir Isosceles
fin si
sino
si (l2 == l3) entonces
Escribir Isosceles
sino
si (l1 == l3) entonces
Escribir Isosceles
sino
Escribir Escaleno
fin si
fin si
fin si
8
El grafo de flujo que corresponde al algoritmo sería este:
1
l1 == l2
No
Si
2
Si
No
Si
3
Isosceles
No
7
4
Equilatero
l2 == l3
6
l2 == l3
8
Isosceles
No
Si
5
l1 == l3
Fin Si
10
9
Isosceles
Escaleno
11
12
13
Fin Si
Figura 4: Grafo de flujo
9
Fin Si
Fin Si
Pruebas basadas en particiones equivalentes: Es un tipo de prueba de caja
negra que divide las posibles combinaciones de entradas en clases de datos.
Se hace un caso de prueba por cada clase de equivalencia. En este caso las
variables de entrada son tres condiciones booleanas: C1: l1 == l2, C2: l2 ==
l3 y C3: l1 == l3. Hay 8 posibles combinaciones de entrada, de las cuales
por la lógica del dominio sólo son posibles 5 como se ve en la tabla.
Clase de equivalencia
C1 C2 C3
C1 C2 ¬ C3
C1 ¬ C2 C3
C1 ¬ C2 ¬ C3
¬ C1 C2 C3
¬C1 C2 ¬ C3
¬C1 ¬ C2 C3
¬C1 ¬ C2 ¬ C3
Caso de prueba
l1 = 5, l2 = 5, l3 = 5
No aplicable
No aplicable
l1 = 5, l2 = 5, l3 = 6
No aplicable
l1 = 5, l2 = 6, l3 = 6
l1 = 5, l2 = 6, l3 = 5
l1 = 5, l2 = 6, l3 = 7
Salida
Equilátero
Isósceles
Isósceles
Isósceles
Escaleno
Pruebas basadas en el análisis de valores límite: Es un tipo de prueba de
caja negra que complementa la anterior y se basa en el hecho comprobado
empíricamente de que los errores se suelen encontrar en los extremos de los
intervalos. No son aplicables porque en este caso no hay intervalos al ser
las variables booleanas. Además, al tomar un caso de prueba por cada clase
de equivalencia ya se han considerado en las pruebas anteriores todos los
posibles lugares donde encontrar errores.
10
Descargar