Exámenes de febrero de 2007 Enunciados y soluciones 1

Anuncio
Exámenes de febrero de 2007
Enunciados y soluciones
1
1a Semana Parcial 1o Febrero
1.– Cuestiones de Teoría.
1) (máx. 2.5 puntos)
Describa un método que permita averiguar los casos de uso de un sistema en
funcionamiento partiendo de su comportamiento. ¿Qué objetivos persigue este tipo
de ingeniería? y ¿qué utilidad puede tener?
Respuesta Método para descubrir casos de uso en un sistema existente:
Se identifican los actores que interactúan con el sistema.
Se investiga la forma en la que el actor interactúa con el sistema. Puede
cambiar su estado o el de su entorno o responder a un evento.
Se traza el flujo de eventos de un sistema relativos a cada actor. Primero se
consideran los flujos principales y luego los alternativos.
Se identifican aquellos casos de uso que se puedan fusionar y los que tengan
relaciones de uso o extensión entre ellos.
Se representan los actores y casos de uso identificados en un diagrama.
El objetivo es averiguar los principios de funcionamiento de un sistema para
poder realizar tareas de mantenimiento o desarrollar un producto nuevo aprovechando lo que se pueda del antiguo.
El nombre es Ingeniería inversa.
2) (máx. 2.5 puntos)
¿Qué es un patrón de diseño? ¿Cómo se describe? ¿Qué es un anti-patrón?
¿Qué considera más útil desde un punto de vista práctico: memorizar una colección
de patrones y los casos en los que se pueden aplicar o asimilar los principios en los
que están basados? Razone la respuesta.
Respuesta
Patrón de diseño: es una solución a un problema específico. Dicha solución
ya ha sido ensayada en otros sistemas, lo que significa que es fiable.
Descripción de un patrón: es de sentido común esta información:
• Nombre: es una palabra significativa o frase corta.
• Problema: describe los objetivos dentro de un contexto .
2
• Contexto: son las precondiciones que se han de dar para que el patrón
sea aplicable.
• Fuerzas: son las restricciones que han de cumplirse.
• Solución. Relaciones estáticas y reglas dinámicas que describen como
realizar la función. Es una descripción que puede tener diagramas y
texto que muestra la estructura del patrón, sus participantes y sus colaboraciones. Esta solución no muestra sólo la estructura estática, sino
también el comportamiento dinámico. En la descripción se incluyen
además las posibles trampas que puedan existir y las variantes de la
solución.
• Resultado: es el contexto que queda como consecuencia de la aplicación del patrón.
• Justificación: es una explicación de porque se sigue cada uno de los
pasos y del patrón como un todo.
• Patrones relacionados.
• Utilización: aplicación del patrón en sistemas existentes.
Anti-patrón: es un tipo de error que ocurre con frecuencia.
Evidentemente es mejor haber asimilado los principios en los que están basados los patrones por dos motivos:
1. La primera opción exige un esfuerzo de memoria y los patrones que no
se utilizen se olvidarán.
2. Comprendiendo los fundamentos las soluciones que plantee serán iguales
a los patrones ya existentes, será más fácil identificar en qué situaciones
son aplicables y puede que incluso descubra algún patrón nuevo.
3
1) (máx. 2.5 puntos)
Dado el siguiente texto:
Cuando un médico de cabecera sospecha de la presencia de una determinada enfermedad extrae sangre al paciente. Desde el punto de extracción se envía
la muestra al laboratorio central junto con un volante (hoja grafitada) que indica
las pruebas que se pide realizar. Las secretarias pasan esta información a un ordenador central y se pone un código de barras que identifica el paciente en la muestra
de sangre. Todas las muestras se ponen en un aparato automático de análisis que
realiza a cada muestra sus pruebas correspondientes y le pasa la información al
ordenador central. La información es validada por el médico jefe del laboratorio
cuando el proceso termina y se imprimen los resultados en las impresoras remotas
situadas en los puntos de extracción. A partir de ese momento los médicos de los
puntos de extracción pueden comunicar los resultados a sus pacientes.
Se pide:
Redacte el procedimiento de modo que haga un uso intensivo de las tecnologías de la información y la comunicación.
Para el procedimiento propuesto indique:
Actores.
Casos de uso.
Solución El procedimiento no hace todo el uso posible de las tecnologías de la
información. Las muestras de sangre deben ir físicamente al laboratorio central,
pero la petición de qué analítica hay que realizar debería hacerse vía Internet. Las
secretarias que pasan los datos no serían necesarias. La presentación de resultados quedaría mejor con una página web en lugar de imprimirlos remotamente. Se
debería usar protocolo https para dar confidencialidad.
Actores:
El médico que hace la petición.
El médico que valida los resultados.
El médico que consulta los resultados en la página web.
Los casos de uso son los correspondientes a cada actor:
Petición de análisis.
Validación de resultados.
Consulta de resultados.
4
2) (máx. 2.5 puntos)
Represente en un diagrama de clases del UML el siguiente texto acerca del
UML: En UML un elemento puede ser o bien un comentario o bien un elemento
con nombre. Lógicamente, los comentarios tienen un contenido y los elementos con
nombre un nombre. Un comentario puede hacer referencia a varios elementos con
nombre, a uno o a ninguno. Un elemento puede poseer un número indeterminado
de comentarios. Los elementos con nombre pueden ser o bien elementos tipados o
bien tipos. Evidentemente, todo elemento tipado tiene un tipo.
Solución
Elemento
posee
*
Comentario
referencia a
*
-contenido
ElementoNombrado
-nombre
ElementoTipado
5
*
Tiene
1
Tipo
2a Semana Parcial 1o Febrero
1.– Cuestiones de Teoría.
1) (máx. 2.5 puntos)
Suponga que tenemos una clase que puede tener varios estados. En función
del estado en el que se encuentre la invocación del método hacerAlgo() hará unas
cosas u otras. Una forma de implementar este comportamiento variable es con una
sentencia switch o varias if-then-else, pero queremos evitar esto porque el código se
vuelve difícil de leer y el método hacerAlgo() tiene un tamaño excesivo. Proponga
una solución de diseño al problema
<<interfaz>>
Clase
Estado
+estado: Estado
+hacerAlgo()
+setEstado(estado:Estado)
EstadoA
+hacerAlgo()
EstadoB
+hacerAlgo()
Solución 2) (máx. 2.5 puntos)
¿Qué es la robustez?, ¿cómo se puede conseguir? ¿un método robusto es más o
menos eficiente que otro no robusto?
Solución Un método es robusto si no falla incluso ante parámetros incorrectos.
Las directrices para construir programas robustos son:
Protección contra errores: debe tenerse en cuenta que el usuario puede producir entradas incorrectas. El sistema debería dar un mensaje de error y no
“colgarse”. El sistema operativo, el hardware u otra librería pueden contener
errores también, para lo cual se deben instalar comprobaciones internas. Las
comprobaciones de errores aumentan el tamaño y la lentitud del código. Las
relativas al usuario deberían estar siempre, las demás pueden eliminarse en
la versión final que se entregue.
Optimizar después de que funcione el programa: este es un error común;
la consecuencia es que luego vienen las prisas y se termina haciendo una
chapuza.
6
Evitar los límites predefinidos: se debe utilizar memoria dinámica en vez de
estructuras de datos de tamaño fijo. Esto da más flexibilidad (y algún que
otro error).
Disponer el programa para la depuración y la monitorización del rendimiento: tendremos que añadir sentencias de depuración, que se ejecutan en función de una variable que indique el nivel de depuración. También es posible
añadir código que recoja estadísticas sobre por ejemplo el número de invocaciones a una función. Por supuesto siempre es mejor utilizar herramientas
que realizen estas funciones automáticamente.
7
1) (máx. 5 puntos)
Diagrama de clases del siguiente texto:
El ministerio de sanidad de Chiquitidistán ha encargado al Dr. House que
redacte una descripción de la información que debe contener el historial clínico
de las personas apuntadas al SinSalud. Las conclusiones del Dr. House son que
el historial debe contener obligatoriamente: Nombre, Apellidos, Sexo, Fecha de
nacimiento, NIS (número de identificación sanitaria), Altura y Grupo Sanguíneo.
Si hay motivos para ello puede incluir opcionalmente otros datos como Discapacidades, Fecha de fallecimiento, etc. Debe tener una lista de enfermedades diagnosticadas y para cada una de ellas el médico que hizo el diagnóstico. Opcionalmente,
cada enfermedad puede tener un tratamiento con una duración. Cada tratamiento puede tener uno o más médicos que lo siguen durante uno o varios intervalos temporales, puede tener un número indeterminado de pruebas y un conjunto
de actuaciones. Hay dos tipos de actuaciones: a) realizadas por personal médico
sanitario: operación quirúrgica, inyecciones o rehabilitación y b) realizadas por
el propio paciente: ingesta de un medicamento, dieta o dejar un hábito (fumar, beber, etc). Cada vez que se realiza una prueba (dentro o fuera de un tratamiento)
tendrá un médico solicitante, un médico que realiza la prueba, una fecha y un resultado de dicha prueba. Aunque en principio esto no es necesario de cada médico
guardaremos su nombre, especialidad, centro de salud al que está asociado y NIS.
Respuesta Además de esta solución existen más posibilidades. Los puntos que
se han tenido en cuenta son los siguientes:
La historia clínica es una clase HistorialClinico con los atributos relativos a
temas médicos. Está asociada a una única persona, a todas las pruebas que
se hayan realizado a esa persona y a todas sus enfermedades
Los atributos opcionales de la historia clínica se pueden modelar de muchos
modos. Una forma es tener una clase DatoOpcional que contiene el nombre
del dato y el valor del dato (un objeto genérico). La clase HistorialClinico tendriá una clase contenedora de varios DatosOpcionales. Esta solución
tiene la flexibilidad de poder acoger cualquier tipo de atributo infrecuente
que puedan tener algunas personas.
Un paciente se modela con la clase Persona, que tiene los atributos no relativos a temas médicos como por ejemplo: Nombre, Apellidos, Fecha de
nacimiento y Sexo y está asociado a un objeto HistorialClinico que contiene
el resto de los datos: Altura, NIS y GrupoSanguineo de tipo médico.
El personal médico está formado por Médicos, ATS y otros, por tanto se
ha modelado como una clase aparte: PersonalMedico que hereda de la clase
Persona y que tiene un CSalud en el que trabaja como atributo.
8
Existe también una clase Medico que hereda de PersonalMedico que tiene
una especialidad. La razón de tener esta jerarquía de clases: Persona, PersonalMedico y Medico es que de este modo un médico o un ATS pueden ser
pacientes.
Una Actuacion está asociada a un tratamiento (que puede tener varias actuaciones). Además, tiene asociado un objeto de la clase PersonalMedico
que realiza la actuación. Si la actuación la realiza el propio paciente no es
necesario representarla porque esta asociación está implícita en el diagrama.
Las pruebas se representan por la clase Prueba. Esta clase tiene dos aspectos: las pruebas relativas al diagnóstico de una enfermedad y las relativas al tratamiento. Se puede pensar por tanto en dividir esta clase en dos:
PTratamiento y PDiagnostico. En cualquier caso una prueba estará asociada
al médico que la solicita (para hacer el tratamiento o para diagnosticar algo)
y al médico que la realiza. Si la prueba es de seguimiento de un tratamiento
estará asociada a un objeto de la clase Tratamiento.
El tratamiento de una enfermedad se realiza en uno o varios intervalos temporales. Estos intervalos los vamos a utilizar para crear una asociación calificada entre Tratamiento y Medico. El motivo es que de esta forma podemos
saber quien ha hecho el seguimiento en cada uno de los intervalos. Puede
ocurrir que varios médicos hagan el seguimiento de una enfermedad en el
mismo intervalo temporal. Debido a que es una asociación calificada la cardinalidad del lado del tratamiento es 1.
9
HistorialClinico
+altura
+NIS
+grupoSanguíneo
1
tiene
*
1
1
interesa resaltar
1
Medico
+especialidad
1
*
solicitada por
PTratamiento
*
realizada por
es diagnosticada por
+nombre *
Enfermedad
ha sido diagnosticada
*
*
Prueba
+nombre
+fecha
+resultado
PDiagnostico
1..*
*
DatoOpcional
*
1
lleva a cabo
*
se prescribe
Tratamiento
0..1
*
ActProfesional
+nombre
Actuacion
+duracion
ActPaciente
se interviene
IntervaloTemporal
+nombreDato
+valorDato: Object
sigue
se comprueba
Persona
+nombre
+apellidos
+paciente +sexo
1 +fNacimiento
PersonalMedico
+CSalud
Figura 1: Historial clínico. Asociaciones normales
10
Documentos relacionados
Descargar