Download Exámenes de febrero de 2007 Enunciados y soluciones
Document related concepts
no text concepts found
Transcript
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