Diseño de Sistemas de Información UML
Diseño de Sistemas de Información UML
UML/PUD
MODELO
MODELO
Un modelo es una simplificación de la realidad
Se construyen para poder comprender mejor el sistema que estamos desarrollando
OBJETIVO DE MODELAR
Ayuda a visualizar un sistema cómo es o cómo queremos que sea
Permiten especificar la estructura y comportamiento de un sistema
Da una plantilla que nos guía en la construcción del sistema
Documentan las decisiones que hemos tomado
UML
Lenguaje aceptado universalmente para planos de diseño de software
Lenguaje de modelado de propósito general, usado para visualización, especificación,
construcción y documentación de sistemas orientados a objetos.
Notación visual estándar para el modelado orientado a objetos
A/DOO
Análisis
Notación
de
UML
requisitos
Temas y
habilidades
Desarrollo
Principios
iterativo
y guías
con PU
Patrones
A/DOO:
Página 1 de 47
Una habilidad clave y fundamental en esta es la asignación cuidadosa de responsabilidades
a los componentes de software
Actividad que debe efectuarse e influye fuertemente sobre la robustez, mantenimiento y
reutilización de los componentes de software
¿CÓMO TRABAJA UML?
A través de:
Métodos y notaciones históricas
Del desarrollo del ciclo de vida del sistema
De dominios de aplicación
De lenguajes y plataformas de implementación
De procesos de desarrollo
De conceptos internos
¿POR QUÉ ES UN LENGUAJE?
Provee un vocabulario y reglas para combinar los elementos del vocabulario con el propósito
de comunicar
En un lenguaje de modelado esos vocabularios y reglas se focalizan en representaciones
conceptuales y físicas de un sistema
REGLAS
UML tiene un numero de reglas vinculadas a un modelo “bien formado”
Modelo bien formado: semánticamente autoconsistente y en armonía con sus modelos
relacionados
UML tiene reglas semánticas para:
o Nombres: cómo llamar a los elementos, relaciones y diagramas
o Alcance: contexto que da un significado especifico al nombre
o Visibilidad: cómo se pueden ver y usar esos elementos por otros
Página 2 de 47
o Integridad: como se relacionan apropiada y consistentemente unos elementos con
otros
o Ejecución: que significa ejecutar o simular un modelo dinámico
UML permite también construir modelos que no sean “bien formados” dado que un
software va evolucionando y pueden ser vistos por diferentes involucrados en momentos
distintos
UML permite también construir modelos:
o Abreviados: ciertos elementos se ocultan para simplificar la vista
o Incompletos: pueden estar ausentes ciertos elementos
o Inconsistentes: no se garantiza la integridad del modelo
ELEMENTOS DE UML
ELEMENTOS ESTRUCTURALES
Clases
Interfaces
Casos de uso
Colaboraciones
Componentes
Nodos
Clases activas
ELEMENTOS COMPORTAMENTALES
Interacciones
Actividades
Máquinas de estado
ELEMENTOS DE NOTACION
Notas
ELEMENTOS DE AGRUPACION
Paquetes
Entornos
Modelos
Subsistemas
ANÁLISIS VS DISEÑO
ANÁLISIS
Pone énfasis en una investigación del problema y los requisitos, en vez de ponerlos en una
solución
“Hacer lo correcto”
Asume tecnología interna perfecta
Página 3 de 47
DISEÑO
Pone énfasis en una solución conceptual que satisface los requisitos en vez de ponerlo en la
implementación
Los diseños pueden ser implementados
“Hacerlo correcto”
Página 4 de 47
Al terminar una iteración, se obtiene un incremento del producto
Incremental porque va sumando versiones anteriores
El ciclo de vida iterativo se basa en la ampliación y refinamiento sucesivos del sistema
mediante múltiples iteraciones, con retroalimentación cíclica y adaptación para converger
hacia un sistema adecuado
El sistema crece iteración tras iteración y por ello este enfoque también se conoce como
desarrollo iterativo e incremental
Resultado de cada iteración:
o Sistema ejecutable pero incompleto, no está preparado para ser puesto en
producción. El sistema podría no estar listo para su puesta en producción hasta
después de muchas iteraciones
o La salida de una iteración NO es un prototipo experimental o desechable, y el
desarrollo iterativo no es prototipado
o La salida es un subconjunto con calidad de producción del sistema final
Aunque generalmente una iteración aborda nuevos requisitos y amplia el sistema
incrementalmente, ocasionalmente puede que en una iteración se vuelva sobre el mismo
software ya existente y mejorarlo
Longitud:
o Se recomienda la longitud de dos a seis semanas
o Iteraciones largas destruyen la motivación principal del desarrollo iterativo e
incrementan el riesgo del proyecto
o Una idea calve es que se fije la duración de las iteraciones. Si parece que será difícil
cumplir el plazo fijado, se recomienda eliminar tareas o requisitos e incluirlos en una
iteración posteriori, más que retrasar la fecha prevista
RETROALIMENTACIÓN Y ADAPTACIÓN
El desarrollo iterativo se basa en la aceptación del cambio y la adaptación como inevitables
y esenciales
Cada iteración conlleva la elección de un pequeño conjunto de requisitos y rápidamente
diseñar, implementar y probar
Rápida retroalimentación de los usuarios, desarrolladores y pruebas
La retroalimentación temprana aporta un conocimiento práctico y crucial, y la oportunidad
de modificar o adaptar la comprensión de los requisitos o el diseño
Además de clarificar los requerimientos, actividades como la prueba de carga probaran el
diseño y la implementación parcial están en el camino correcto o si en la siguiente iteración
se necesita un cambio en la arquitectura básica
El trabajo se desarrolla a lo largo de una serie de ciclos estructurados: construir-
retroalimentar-adaptar
BENEFICIOS DEL DESARROLLO ITERATIVO
Página 5 de 47
Mitigación de riesgos altos
Progreso visible en las primeras etapas
Gestión de la complejidad (el equipo no se ve abrumado)
El conocimiento adquirido en una iteración se puede utilizar metódicamente para mejorar
el propio proceso de desarrollo, iteración a iteración
El proceso unificado es un ejemplo de proceso iterativo para proyectos que utilizan el A/DOO
PROCESO UNIFICADO
¿QUÉ ES?
Es un proceso de desarrollo de software (conjunto de actividades necesarias para
transformar los requisitos de un usuario en un sistema software)
Está basado en componentes
Utiliza UML para preparar todos los esquemas de un sistema software
Lo utilizamos como un estructurador, como una ayuda para ir incorporando los artefactos y
saber en qué momento del desarrollo del producto podemos usar uno u otro diagrama
Es un MARCO de trabajo
Entorno genérico de proceso que se puede especializar (es decir, que podemos adaptarlo a
las necesidades reales de cada proyecto)
El espíritu del PU es indicar, de forma genérica cuál es la salida que va a tener cada workflow
El proceso hace la descripción de lo máximo que se necesita para hacer software, luego
nosotros debemos adaptarlo (necesitamos elegir qué actividades hacemos y cuáles no)
CARACTERÍSTICAS
Combina las practicas comúnmente aceptadas como buenas practicas, tales como ciclo de
vida iterativo y desarrollo dirigido por el riesgo, en una descripción consistente y bien
documentada.
Los aspectos definitorios que hacen único al proceso unificado son:
Dirigido por casos de uso: se basa en la orientación al usuario, la comunicación clara
de requisitos, la orientación al diseño y prueba, la flexibilidad y adaptabilidad, y la
influencia en la arquitectura del sistema. Utilizar casos de uso como guía ayuda a
garantizar que el software desarrollado cumpla con las necesidades del usuario final
y se alinee con los objetivos del negocio
Centrado en la arquitectura: Se basa en reconocer la importancia de una arquitectura
sólida y bien diseñada para el éxito del proyecto de desarrollo de software. Al prestar
atención a la arquitectura desde las etapas iniciales del proyecto, se pueden mitigar
riesgos, mejorar la calidad y facilitar la comunicación y la colaboración entre los
miembros del equipo
Iterativo e incremental
CONCEPTOS Y BUENAS PRACTICAS
Página 6 de 47
La idea fundamental para apreciar y utilizar el UP es el desarrollo iterativo, fijando
iteraciones cortas y adaptables
Se recomienda el uso de las tecnologías de objetos, entre las que se encuentra el A/DOO y
la programación orientada a objetos
Abordar cuestiones de alto riesgo y muy valiosas en las primeras iteraciones
Involucrar continuamente a los usuarios para evaluación, retroalimentación y requisitos
Construir en las primeras iteraciones una arquitectura que constituya un núcleo central
consistente
Verificar continuamente la calidad
Aplicar CU
Modelar software visualmente con UML
Gestionar los requisitos con cuidado
Manejar peticiones de cambio y gestión de configuraciones
FASES
Un proyecto UP organiza el trabajo y las iteraciones en cuatro fases fundamentales:
1. INICIO:
Visión aproximada, análisis del negocio, alcance, estimaciones imprecisas.
No es una fase de requisitos, es una fase de viabilidad donde se lleva a cabo el estudio
suficiente para decidir si continuar o no
2. ELABORACIÓN:
Visión refinada, implementación iterativa del núcleo central de la arquitectura,
resolución de los riesgos altos, identificación de más requisitos y alcance,
estimaciones más realistas.
No es fase de requisitos o diseño, sino una fase donde se implementa de manera
iterativa la arquitectura que constituye el núcleo central y se mitigan las cuestiones
de alto riesgo
3. CONSTRUCCIÓN:
Implementación iterativa del resto de requisitos de menor riesgo y elementos más
fáciles, preparación para el despliegue
4. TRANSICIÓN:
Pruebas beta, despliegue
CICLO DE DESARROLLO
Página 7 de 47
Normalmente un ciclo de desarrollo (que termina con el lanzamiento de un sistema a
producción) se compone de muchas iteraciones
FLUJOS DE TRABAJO
Requisitos
Análisis
Diseño
Implementación
Prueba
Los cinco flujos del trabajo tienen lugar sobre las cuatro fases (inicio, elaboración,
construcción y transición)
Una iteración típica pasa por los cinco flujos del trabajo
ARTEFACTOS OPCIONALES
Página 8 de 47
Algunas prácticas y principios del UP deben seguirse siempre (desarrollo iterativo y dirigido
por el riesgo, verificación continua de la calidad)
Todas las actividades y artefactos son opcionales
En un proyecto UP, un equipo debería seleccionar un pequeño subconjunto de artefactos
que sirvan para tratar sus problemas y necesidades particulares
MARCO DE DESARROLLO
La elección de los artefactos para un proyecto podría recogerse en un documento
denominado marco de desarrollo.
OBJETOS Y CLASES
Unidad básica del POO: Clase
QUÉ ES UN OBJETO
Representa un elemento, unidad o entidad individual e identificable, ya sea real o abstracta,
con un rol bien definido en el dominio del problema
COMPOSICIÓN DE OBJETOS
Un objeto está compuesto por:
Estado: valor de los atributos en un momento de
tiempo (tomo el conjunto de atributos y le asigno
un valor). El cambio de estado les permite un Estado Identidad
WORKFLOWS
Cada workflow tiene asociado un modelo resultante con un nombre genérico, que coincide
con del workflow.
El de diseño tiene dos porque distingue entre software (modelo de diseño) y hardware
(modelo de despliegue)
El workflow de despliegue es el workflow que entrega el producto o la versión producto al
cliente, por lo que ya no hay modelo. Por eso no se incluye en la tabla.
Página 10 de 47
MODELO DE REQUERIMIENTOS
WORKFLOW DE REQUISITOS
El propósito fundamental es guiar el desarrollo hacia el sistema correcto mediante una
descripción de los requisitos del sistema que el sistema debe cumplir
Debe ser una descripción suficientemente buena como para que pueda llegarse a un acuerdo
entre el cliente y los desarrolladores sobre lo que debe y no debe hacer el sistema
El cliente debe ser capaz de leer y comprender el resultado de la captura de requisitos, por
lo que debemos utilizar el lenguaje del cliente para describirlos.
Los resultados del flujo de trabajo de los requisitos también ayudan al jefe de proyecto a
planificar las iteraciones y versiones del cliente
PASOS
Enumerar los requisitos candidatos
Comprender el contexto del sistema
Capturar requisitos funcionales
Capturar requisitos no funcionales
La técnica inmediata para identificar requisitos se basa en los CU. Estos capturan tanto requisitos
funcionales como no funcionales que son específicos de cada CU
Página 11 de 47
PAPEL EN EL CICLO DE VIDA DEL SOFTWARE
El modelo de CU se desarrolla a lo largo de varios incrementos del desarrollo, donde las iteraciones
añadirán nuevos CU o detalle a las descripciones de los CU existentes
Página 12 de 47
Vista de la estructura: diagrama de clase
Vista de comportamiento: diagrama de CU (estática)
Vista de comportamiento: en la máquina de estados (dinámica)
WORKFLOW DE ANÁLISIS
ENTRADA
Workflow de requerimientos
SALIDA
Artefacto genérico denominado modelo de análisis
CARACTERÍSTICAS
Se analizan los requerimientos capturados en el workflow de requerimientos, refinándolos
y estructurándolos
Sirve como aproximación al diseño (esboza como llevar a cabo la funcionalidad dentro del
sistema, incluida la funcionalidad significativa para la arquitectura)
No modela aspectos físicos, ya que es conceptual
Su propósito es resolver los requerimientos analizándolos con mayor profundidad, pero con
la diferencia de que podemos utilizar el lenguaje de los desarrolladores para describir los
resultados (refinar requisitos)
La estructura de los requisitos que proporciona el análisis sirve también como entrada
fundamental para dar forma al sistema en su totalidad (construir el sistema como un todo
mantenible, no solo describir sus requisitos)
OBJETIVO:
Conseguir una comprensión de los requerimientos más precisa y una descripción de los
mismos fácil de mantener y que ayude a estructura el sistema entero (incluyendo su
arquitectura)
MODELO DE ANÁLISIS
Ayuda a refinar y estructurar los requisitos (lo que facilita su compresión, preparación,
modificación y mantenimiento)
Permite razonar sobre aspectos internos del sistema
Ofrece mayor poder expresivo y formalización (gracias a que se hace en lenguaje de
desarrollador)
Proporciona una estructura centrada en el mantenimiento, en aspectos tales como la
flexibilidad ante cambios y la reutilización
Se usa como entrada a las actividades de diseño
Se debería obtener un sistema mantenible como un todo, flexible ante cambios en los
requisitos e incluir elementos que podrán ser reutilizados al construir sistemas parecidos
Hace abstracciones y evita algunos problemas que es mejor posponer para el diseño
Página 13 de 47
Para empezar a diseñar deberíamos contar con una comprensión precisa y detallada de los
requisitos, lo cual conseguimos mediante el análisis
PAPEL DEL ANÁLISIS EN EL CICLO DE VIDA DEL SOFTWARE
Las iteraciones iniciales de la elaboración se centran en el análisis
Al término de la fase de elaboración y durante la construcción, cuando la arquitectura es
estable y se comprenden los requisitos, el énfasis pasa al diseño y la implementación
3. PAQUETES DE ANÁLISIS
Ayudan a la organización
Son agrupamientos de subsistemas porque a lo mejor el sistema nos quedó muy
grande
No modelamos, organizamos
Un paquete puede contener clases de análisis, de realizaciones de CU y de otros
paquetes del análisis.
En algunas vistas el paquete puede ser una caja negra y en otras no, depende de lo
que necesitemos
Para determinar que colocamos dentro de un paquete tenemos que considerar la
cohesión y el acoplamiento (lo que esté dentro del paquete debe estar altamente
vinculado y el vínculo o dependencia entre paquetes debe ser lo más bajo posible)
No podría poner dentro de un mismo paquete clases y CU. Si tengo que dividir clases
en paquetes, veo cuáles se relacionan más.
4. VISTA ARQUITECTÓNICA DEL ANÁLISIS
Todos los modelos tienen sus vistas arquitectónicas
Una vista es una proyección del sistema desde una perspectiva en particular, se usa
para manejar la complejidad en UML, ya que oculta ciertos aspectos
Página 15 de 47
Muestra artefactos significativos para la arquitectura
Puedo crear vistas con cada diagrama (vistas de CU, vistas de clases, etc.)
Eligen mostrar aspectos significativos para la arquitectura
Es una abstracción de lo anterior, elijo lo más relevante y lo muestro
Son pequeñas, solo destacan lo que condiciona la arquitectura (ej. Tomo clases que
son significativas y las coloco en la vista, tomo las realizaciones más significativas y
las coloco en una vista).
Es una porción de lo que más importa
DIAGRAMAS DE UML QUE SE USAN EN EL ANÁLISIS
Para obtener los artefactos anteriores necesito de:
1. Diagrama de secuencia
2. Diagrama de comunicación
3. Diagrama de timming
4. Diagrama de descripción de interacción
5. Diagrama de máquina de estados
6. Diagrama de clases
7. Diagrama de paquetes
8. Diagrama de objetos
9. Diagrama de actividad
Página 16 de 47
MODELO DE REQUERIMIENTOS VS DE ANÁLISIS
DIAGRAMAS
DIAGRAMAS EN UML 2.0
Los diagramas son herramientas que usamos para construir modelos
En UML 2.0 hay un total de 13 diagramas
CLASIFICACIÓN DE DIAGRAMAS
Primer gran clasificación es según la estructura (modelan comportamiento o estructura)
Página 17 de 47
Segunda clasificación refiere al ámbito de modelado (clases u objetos)
1. MODELAN ESTRUCTURA (6, son todos estáticos)
Modelan clases
De clases
Para modelar dominio
Para crear vistas de análisis
Para crear vistas en el diseño
De paquetes
Se usa para organizar, no para modelar
De estructura compuesta
De componentes
Para armar vistas arquitectónicas
De despliegue
Para armar vistas arquitectónicas
Modelan objetos
De objetos
Página 18 de 47
DESCRIPCIÓN DE DIAGRAMAS
GRANDES CLASIFICACIONES:
DIAGRAMAS DE COMPORTAMIENTO
Muestra aspectos de comportamiento de un sistema
DIAGRAMAS DE INTERACCIÓN
Subtipo de los de comportamiento que enfatiza la interacción entre objetos
Tipo especial de diagrama de comportamiento, son todos a nivel de objeto, dinámicos y
lógicos.
DIAGRAMAS DE ESTRUCTURA
Muestra elementos de especificación, independientes del tiempo
CLASIFICACIONES MÁS PEQUEÑAS:
DIAGRAMA DE CLASES
Clasificación: de estructura, lógico y estático
Muestra un conjunto de clases, interfaces y colaboraciones y sus relaciones
Usos:
o Explicar conceptos del dominio
o Analizar requerimientos
o Mostrar el diseño detallado de software orientado a objetos.
Contiene: clases, interfaces, relaciones
Modela:
o Clases
o Atributos
o Métodos
o Relaciones
DIAGRAMA DE COMPONENTES
Clasificación: de estructura, estático, físico
Uso: mostrar la definición, estructura interna y dependencia de tipos de componentes
Muestra un conjunto de componentes y sus relaciones
Contiene: componentes, relaciones, interfaces
representa la encapsulación de una clase, junto con sus interfaces, puertos y estructura interna, la
cual está formada por otros componentes anidados y conectores. Cubren la vista de
implementación estática del diseño de un sistema.
DIAGRAMA DE DESPLIGUE
Página 19 de 47
Clasificación: de estructura, estático, físico
Uso:
o Examinar dependencias que tiene el sistema con otros del ambiente de producción
o Examinar aspectos involucrados en la instalación del sistema en producción
o Describir la configuración principal de una aplicación
o Diseñar la configuración de hardware y software en un sistema embebido
o Describir la infraestructura de hardware y redes
Muestra un conjunto de nodos y sus relaciones
Contiene: nodos, relaciones de asociación y/o dependencia
Página 20 de 47
Clasificación: de comportamiento, estático y lógico
Uso:
o Comunicar el alcance
o Proveer descripción de todo o una parte de los requerimientos de un sistema u
organización.
o Muestra un conjunto de CU, actores y sus relaciones
Contiene: CU, actores, relaciones (extensión, inclusión, generalización, dependencia),
paquetes
DIAGRAMA DE ACTIVIDAD
Clasificación: de comportamiento, dinámico, lógico
Uso: mostrar una operación compleja, una regla de negocio compleja, un CU, algunos CU,
un proceso de negocio, procesos de software
Muestra el conjunto de actividades y el flujo de secuencia o desglose de actividad en
actividad y los objetos que actúan y que son afectados
Contiene: nodos, flujos, objetos
DIAGRAMA DE MAQUINA DE ESTADOS (LINK PARA AMPLIAR)
//de interacción (modelan objetos)
DIAGRAMA DE COMUNICACIÓN:
Clasificación: de comportamiento, dinámico, lógico
Uso:
o Proveer una vista de la colaboración de objetos en un ambiente de tiempo real
o Distribuir funcionalidad en las clases, explorando los aspectos comportamentales de
un sistema
o Modelar la implementación lógica de una operación compleja, particularmente la
que interactúa con muchos objetos.
Contiene: objetos, links, mensajes
DIAGRAMA DE SECUENCIA (LINK PARA AMPLIAR)
Clasificación: de comportamiento, dinámico, lógico
Uso: validar y describir la lógica de un escenario, explorar el diseño controlando la invocación
de las operaciones definidas en las clases, detectar cuellos de botella en un diseño orientado
a objetos, analizar qué clases son complejas en el sistema
Enfatiza el orden de los mensajes en función del tiempo.
Muestra un conjunto de objetos y los mensajes enviados y recibidos por estos objetos
Contiene: objetos, links, mensaje.
DIAGRAMA DE DESCRIPCIÓN DE INTERACCIÓN
Clasificación: de comportamiento, lógico, dinámico
Uso:
Página 21 de 47
o variación del diagrama de actividad con descripción de flujos de control,
o conectar una colección de diagramas detallados para unirlos
o Describe el flujo de control de un sistema o proceso de negocio. Cada nodo/actividad
en el diagrama puede representar otro diagrama de interacción
Contiene:
o elementos del diagrama de actividad,
o ocurrencias de interacción,
o elementos de interacción
“engancha” escenarios
DIAGRAMA DE TIMING
Clasificación: de comportamiento, dinámico, lógico
Uso: forma alternativa de mostrar un diagrama de secuencia que muestra explícitamente
cambios de estado en una línea de vida y métricas de tiempo
Útil para aplicaciones en tiempo real
Muestra cambios de estado o condiciones de uno o más elementos a través del tiempo
Muestra la interacción entre eventos dependientes del tiempo y las restricciones de tiempo
y duración que los gobiernan
Contiene: objetos (línea de vida), estados, cambios de estado, unidades de tiempo
Permite ver que provoca en otras clases el cambio de estado de una (en el diagrama de
máquina de estados no podemos ver esto)
DIAGRAMAS ESTÁTICOS VS DINÁMICOS
Estático:
o No se muestra el paso del tiempo en el diagrama.
o NO es que el modelo no vaya a cambiar, solo no lo refleja.
o No reflejan la evolución del paso del tiempo.
Dinámico:
o Si reflejan el paso del tiempo
o El cambio del tiempo puede mostrarse como paso de mensajes, cambio de estados,
con como impactan cambios de estados en objetos de otra clase (depende del
modelo)
Página 23 de 47
tienen asociada la clase estado. Un ejemplo que pueden necesitarla serían los
alumnos
o Las transacciones generalmente la necesitan
o Puede haber objetos que tengan atributos propios, como por ejemplo las fechas, que
de acuerdo al valor que tomen las fechas definen el estado del objeto y no hace falta
un atributo estado.
o El atributo estado se agrega en la estructura de la clase cuando no hay atributos
propios suficientes para reflejar todos los estados que quiero reflejar
CONSIDERACIONES A LA HORA DE MODELAR MAQUINAS DE ESTADO
En esta máquina modelamos reglas de negocio (condicionante de una determinada manera
en la que tiene que funcionar el negocio, es una restricción a requerimientos funcionales).
Regla de negocio= funcionamiento
Algunas reglas de negocio nos van a servir para modelar y otras no.
Si no respeto las reglas, mi software no le va a servir al cliente
Respetar siempre los nombres de los estados ya escritos
Cuando el objeto llega a su estado final NO se mueve más
El diagrama de máquina de estados modela a nivel de clase porque tengo que graficar todos
los estados posibles y transiciones permitidas para todos los objetos de la clase, lo que no
significa que cada objeto de la clase va a pasar por todos los estados. Representa la lógica
permitida para todos los objetos de la clase, luego cada objeto particular asume su ciclo de
vida correspondiente
HISTORIA/MEMORIA
El estado suspendido se tiene que acordar del estado anterior, de donde vino,
cual fue la transición que hizo que llegara ese objeto al estado suspendido
para que cuando lo restaure sepamos a donde lo vamos a reponer
Cuando esto sucede utilizamos el Pseudoestado de historia
Página 24 de 47
ESTADOS COMPUESTOS
Queremos saber más de la caja negra que es el estado
Estado que tiene estados internos (tiene una máquina de
estados dentro)
Se indica con el símbolo de infinito
Las transiciones a los Pseudoestado no tienen nada, solo indican
Si los estados internos son suspendibles
(tienen memoria) el estado va a tener una
transición hacia la h
Entramos por la transición que permite
cambiar al estado compuesto y salimos por
la misma que sale del estado compuesto
EXITPOINT
Si algún estado interno no cumple con cierta regla (por ejemplo, uno de ellos no es
cancelable) podemos usar un exit-point
Pseudoestado que permite realizar una salida anticipada del estado
compuesto
Su transición debe ir hacia el estado en que vamos a salir
Página 25 de 47
El exitpoint va hacia cancelada
porque indica a qué estado
vamos a salir
En este caso se indica con el
exitpoint todos los estados que
pueden cancelarse (todos
menos el despliegue)
DIAGRAMAS DE INTERACCIÓN
El lenguaje utilizado para ilustrar los diseños, es principalmente, los diagramas de interacción
Se debería dedicar tiempo y esfuerzo no trivial a la creación de diagramas de interacción. El
diseño que se represente en los diagramas será imperfecto y especulativo, y se modificará
durante la programación, pero proporcionara un punto de partida serio, consistente y
común, que sirve de inspiración durante la programación
DIAGRAMAS DE SECUENCIA
CLASIFICACIÓN
Modela comportamiento, de interacción (modela objetos) DINÁMICO
Página 26 de 47
Muestran claramente la secuencia de mensajes.
¿QUÉ ES?
Es un artefacto creado de manera rápida que muestra los eventos de entrada y salida
relacionados con el sistema que se está estudiando
UML incluye la notación de los diagramas de secuencia para representar los eventos que
parten de los actores externos hacia el sistema
Es un dibujo que muestra, para un escenario especifico de un CU, los eventos que generan
los actores externos, el orden y los eventos entre los sistemas
Todos los sistemas se tratan como cajas negras, los diagramas destacan los eventos que
cruzan los límites del sistema desde los actores a los sistemas
Debería hacerse un DSS para el escenario principal de éxito del CU y los escenarios
alternativos complejos o frecuentes
También pueden utilizarse para ilustrar colaboraciones entre sistemas
Simula la ejecución de un sistema
Entra en juego a variable tiempo
COMPORTAMIENTO DEL SISTEMA
El comportamiento del sistema es una descripción de qué hace el sistema, sin explicar cómo
lo hace
Una parte de esta descripción es un diagrama de secuencia del sistema (otras partes
comprenden los CU y los contratos del sistema)
DIAGRAMAS DE SECUENCIA DEL SISTEMA
Los CU describen cómo interactúan los actores externos con el sistema software que
estamos interesados en crear. Durante esta interacción, un actor genera eventos sobre un
sistema, normalmente solicitando alguna operación como respuesta
Es deseable aislar e ilustrar las operaciones que un actor externo solicita a un sistema,
porque constituyen una parte importante de la comprensión del comportamiento del
sistema
UML incluye los diagramas de secuencia como notación que puede representar las
interacciones de los actores y las operaciones que inician
MENSAJES
Los mensajes son invocaciones a métodos de la clase que pertenecen a la clase en la que se
encuentra el objeto
Página 27 de 47
Nosotros vamos a modelar invocaciones de mensajes, no respuestas
Hay dos tipos:
o Sincrónicos: el objeto se queda esperando la respuesta
o Asincrónicos
EJEMPLO
Un DSS muestra, para un curso de eventos especifico en un CU, los actores EXTERNOS que
interaccionan DIRECTAMENTE con el sistema el sistema (como una caja negra) y los eventos
del sistema que genera el actor
El tiempo avanza hacia abajo, y la ordenación de los eventos debería seguir su orden en el
CU
Forma gráfica de
representar objetos
Página 28 de 47
EVENTOS DEL SISTEMA Y LIMITES DEL SISTEMA
Para identificar los eventos del sistema, es necesario tener claro los límites del sistema
El límite del sistema normalmente se elige para que sea el propio sistema software, en este
contexto, un evento del sistema es un evento externo que lanza un estímulo directamente
al software
Página 30 de 47
Página 31 de 47
RESPONSABILIDADES Y MÉTODOS
INTRODUCCIÓN
Después de la identificación de requisitos y la creación de un modelo del dominio, hay que
añadir métodos a las clases del software, y definir el paso de mensajes entre objetos para
satisfacer los requisitos
Existen profundos principios y cuestiones involucrados en estas etapas. La decisión de qué
métodos, dónde colocarlos y cómo deberían interactuar los objetos es muy importante.
RESPONSABILIDADES Y MÉTODOS
Responsabilidad ≠Método
o Los métodos se implementan para llevar a cabo las responsabilidades
o Las responsabilidades se implementan utilizando métodos que o actúan solos o
colaboran con otros métodos u objetos (ej. La clase venta podría definir uno o más
métodos para conocer su total, digamos un método getTotal. Para realizar la
responsabilidad la venta podría colaborar con otros objetos, por ejemplo, enviando
el mensaje getSubtotal a cada objeto de LineaDeVenta solicitando su subtotal)
Otro ej. De colaboración: Si tenemos un sistema de gestión de venta de pasajes de
colectivo, podríamos tener 4 clases:
Reserva
Colectivo
Asiento
Cliente
Si un cliente decide adquirir boletos, creará una instancia de una reserva. La clase
reserva deberá interactuar con la clase colectivo que a su vez interactuará con asiento
para verificar la disponibilidad y el estado de los mismos y poder mostrar información
al cliente, permitiéndole seleccionar uno o varios asientos.
RESPONSABILIDAD
UML la define como “contrato u obligación de un clasificador”
Lo más importante que tiene una clase
Las responsabilidades se asignan a las clases de los objetos durante el diseño de objetos (ej.
Una venta es responsable de la creación de una LineaDeVenta o una venta es responsable
de conocer su total)
Las responsabilidades están relacionadas con las obligaciones de un objeto en cuanto a su
comportamiento. Básicamente, estas responsabilidades son de los siguientes tipos:
o CONOCER (a menudo pueden inferirse a partir del modelo del dominio, debido a los
atributos y asociaciones que describe, relacionado al estado del objeto)
conocer los datos privados encapsulados
conocer los objetos relacionados (a través de punteros, que permite tener
visibilidad a otra clase)
conocer las cosas que puede derivar o calcular
Página 32 de 47
EJEMPLO: Imaginemos una clase llamada 'Entrenamiento' que tiene dos
atributos: 'horaInicio' y 'horaFin'. La responsabilidad de la clase
'Entrenamiento' es conocer ambas horas (los recupera mediante un get()) y,
por lo tanto, calcular la duración total del entrenamiento realizando la
diferencia entre 'horaFin' y 'horaInicio'. De esta manera, el 'Entrenamiento'
es responsable de proporcionar la duración exacta del entrenamiento.
Además, el 'Entrenamiento' está relacionado con la clase 'TipoActividad' a
través de un puntero, lo que le permite conocer en todo momento el tipo de
actividad al que pertenece. Esto proporciona visibilidad al 'Entrenamiento' sobre la
información relevante del 'TipoActividad' al que está asociado."
o HACER
hacer algo él mismo, como crear un objeto o hacer un cálculo (un método
puede invocarse a sí mismo, por ejemplo, setEstado)
iniciar una acción en otros objetos (para que un objeto haga algo otro se lo
tiene que pedir. Las responsabilidades en los objetos aparecen de a pares. El
objeto emisor tiene un método que invoca un método en otra clase)
controlar y coordinar actividades en otros objetos (los gestores
fundamentalmente tienen esta responsabilidad)
o
RESPONSABILIDADES Y MÉTODOS EN LOS DIAGRAMAS DE INTERACCIÓN
La decisión acerca de la asignación de responsabilidades a menudo tiene lugar durante la
creación de diagramas de interacción y con seguridad durante la programación.
La asignación habilidosa de responsabilidades es muy importante en el diseño de objetos
Los diagramas de interacción muestran elecciones en la asignación de responsabilidades a
los objetos
Página 33 de 47
Los patrones GRASP describen los principios fundamentales para guiar las elecciones sobre
donde asignar responsabilidades. Estas elecciones se reflejan en los diagramas de
interacción
Página 35 de 47
o Cuando una realización no requiere ningún objeto de control.
PATRONES
PATRÓN
¿QUÉ ES?
Es un par problema/solución con nombre que se puede aplicar en nuevos contextos, con
consejos acerca de cómo aplicarlo en nuevas situaciones y discusiones sobre sus
compromisos
Solución probada a un problema
Es una descripción de un problema y su solución, a la que se da un nombre y que se puede
aplicar a nuevos contextos
Proporciona consejos sobre el modo de aplicarlo en varias circunstancias y considera los
puntos fuertes y compromisos
Tiene la intención de sugerir algo repetitivo
Lo importante de los patrones no es expresar nuevas ideas de diseño, si no que pretenden
codificar conocimiento y principios ya existentes y que se han probado que son válidos
(cuanto más trillados y extendidos mejor)
COMPONENTES:
Nombre: debe ser sugerente, aporta ventajas tales como: apoyar la identificación e
incorporación de ese concepto en nuestro conocimiento y memoria, facilitar la
comunicación
Descripción del problema a resolver
Descripción de la solución propuesta
Se recomienda un alias
Consecuencias de usarlo (no siempre son positivas)
Ejemplos de uso (para que sea un patrón al menos debe poder aplicarse en 3 casos distintos)
PATRONES GRASP
¿QUÉ SON?
Describen los principios fundamentales del diseño de objetos y la asignación de
responsabilidades, expresados como patrones
Proporcionan guías sobre el modo en el que deberían asignarse las responsabilidades a los
objetos, dada una categoría especifica del problema
Ayudan a entender el diseño de objetos esencial y aplica el razonamiento para el diseño de
una forma sistemática, racional y explicable
Es importante entender y ser capaces de aplicar estos principios durante la creación de los
diagramas de interacción porque constituyen la base de cómo se diseñará el sistema
Página 36 de 47
GRASP: Acrónimo de General Responsability Assigment Software Patterns (patrones
generales de software para asignar responsabilidades)
¿CUÁLES SON?
Experto en información
Creador
Alta Cohesión
Bajo acoplamiento
Controlador
EXPERTO EN INFORMACIÓN/EXPERTO
SOLUCIÓN:
Asignar una responsabilidad al experto en información (la clase que contiene la información
necesaria para realizar la responsabilidad)
PROBLEMA:
¿Cuál es un principio para asignar responsabilidades a los objetos?
Especificar donde asignar un determinado conocimiento
CARACTERÍSTICAS:
Se utiliza frecuentemente en la asignación de responsabilidades
Es un principio de guía básico que se utiliza continuamente en el diseño de objetos
Expresa la “intuición” común de que los objetos hacen las cosas relacionadas con la
información que tienen
El cumplimiento de la responsabilidad a menudo requiere información que se encuentra
dispersa por diferentes clases de objetos. Esto implica que hay muchos expertos en
información “parcial” que colaboraran en la tarea (puede que la información se encuentre
esparcida por objetos diferentes, por lo que necesitaran interactuar mediante el paso de
mensajes para compartir el trabajo)
Recomienda ubicar el comportamiento lo más cerca posible de la información
“lo hace quien conoce”
CONTRAINDICACIONES:
En algunos casos, la solución que sugiere el experto no es deseable, normalmente debido a
problemas de acoplamiento y cohesión
BENEFICIOS:
Se mantiene el encapsulamiento de la información, puesto que los objetos utilizan su propia
información para llevar a cabo las tareas. Normalmente esto conlleva un bajo acoplamiento
lo que da lugar a sistemas más robustos y más fáciles de mantener
Página 37 de 47
Se distribuye el comportamiento entre las clases que contienen la información requerida,
por tanto, se estimula las definiciones de clases más cohesivas y ligeras que son más fáciles
de entender y mantener
Se soporta normalmente una alta cohesión y un bajo acoplamiento
EJEMPLO
Si tenemos un sistema de entrenamientos en el cual la clase entrenamiento es quien posee su
hora y fecha de inicio y fin y queremos saber su duración, el responsable de calcularla será el
Entrenamiento ya que es quien posee los datos para realizar el cálculo. Sería erróneo, por
ejemplo, asignarle la responsabilidad al gestor.
CREADOR
SOLUCIÓN:
Asignar a la clase B la responsabilidad de crear una instancia de clase A si se cumple uno o
más de los casos siguientes:
o B agrega objetos de A
o B contiene objetos de A
o B registra instancias de objetos de A
o B utiliza más estrechamente objetos de A
o B tiene los datos de inicialización que se pasarán de un objeto de A cuando sea creado
(por tanto, B es un experto con respecto a la creación de A)
PROBLEMA:
¿Quién debería ser responsable de la creación de una nueva instancia de alguna clase?
CARACTERÍSTICAS:
Guía la asignación de responsabilidades relacionadas con la creación de objetos.
Tipo especial de patrón experto
No nos referimos al constructor (crear objetos de otra clase). Cada clase concreta tiene su
new, lo que discute el patrón es quien lo invoca
Si no creamos objetos, no lo usamos
Su intención básica es encontrar un creador que necesite conectarse al objeto creado en
alguna situación
Favorece el bajo acoplamiento
Sugiere que la clase contenedor o registro es una buena candidata para asignarle la
responsabilidad de crear lo que contiene o registra
BENEFICIOS:
Se soporta bajo acoplamiento lo que implica menos dependencias de mantenimiento y
mayores oportunidades para reutilizar.
Página 38 de 47
Probablemente no se incrementa el acoplamiento porque la clase creada es presumible que
ya sea visible a la clase creadora, debido a las asociaciones existentes que motivaron su
elección como creador.
BAJO ACOPLAMIENTO
ACOPLAMIENTO
El acoplamiento es una medida de la fuerza con que un elemento está conectado a, tiene
conocimiento de, confía en, otros elementos.
Grado de interrelación entre clases
Medida de relacionamiento eterna
Un elemento con bajo o débil acoplamiento no depende de demasiados otros elementos
(mejor localización de defectos, los cambios afectan a la menor cantidad de clases posibles)
Una clase con alto o fuerte acoplamiento confía en muchas otras clases. Esto podría no ser
deseable:
o Los cambios en las clases relacionadas fueran cambios locales
o Son difíciles de entender de manera aislada
o Son difíciles de reutilizar puesto que su uso requiere la presencia adicional de las
clases de las que depende
No existe una medida absoluta de cuando el acoplamiento es demasiado alto
En general, las clases que son inherentemente muy genéricas y con alta probabilidad de
reutilización, debería tener un acoplamiento especialmente bajo
El caso extremo de bajo acoplamiento es cuando no existe acoplamiento. No es deseable
porque producirá un diseño pobre que dará lugar a unos pocos objetos inconexos, saturados
y con actividad compleja que hacen todo el trabajo, con muchos objetos muy pasivos, sin
acoplamiento que actúan como simples repositorios de datos
El alto acoplamiento en sí no es un problema, si lo es el alto acoplamiento entre elementos
que no son estables en alguna dimensión. Si nos esforzamos en disminuir el acoplamiento
en algunos puntos donde de hecho no hay motivos realistas, el tiempo se está
desperdiciando
SOLUCIÓN:
Asignar una responsabilidad de manera que el acoplamiento permanezca bajo
PROBLEMA:
¿Cómo soportar bajas dependencias, bajo impacto del cambio e incremento de la reutilización?
BENEFICIOS:
Disminuir el acoplamiento permite:
o No afectar los cambios en otros componentes
o Entender fácilmente de manera aislada
Página 39 de 47
o Reutilizar
ALTA COHESIÓN
COHESIÓN:
Cohesión es una medida de la fuerza con la que se relacionan y del grado de focalización de
las responsabilidades de un elemento.
Que cada clase haga lo que tiene que hacer
Medida de relacionamiento interna
Cada clase tiene que modelar UN concepto (una clase compra y venta estaría mal, ya que
son dos conceptos diferentes)
Los métodos y atributos deben relacionarse con la clase, no puedo colocar métodos y
responsabilidades de una compra dentro de la clase venta
Un elemento con alta cohesión/cohesión funcional tiene responsabilidades altamente
relacionadas y no hace una gran cantidad de trabajo
Una clase con baja cohesión hace muchas cosas no relacionadas, o hace demasiado trabajo.
Tales clases no son convenientes porque:
o Son difíciles de entender
o Difíciles de reutilizar
o Difíciles de mantener
o Delicadas, constantemente afectadas por los cambios
Grados de cohesión funcional:
o Muy baja cohesión:
Una única clase es responsable de muchas cosas en áreas funcionales muy
diferentes
o Baja cohesión:
Una única clase tiene la responsabilidad de una tarea compleja en un área
funcional
o Moderada cohesión:
Una clase tiene responsabilidades ligeras y únicas en unas pocas áreas
diferentes que están lógicamente relacionadas con el concepto de la clase,
pero no entre ellas.
o Alta cohesión:
Una clase tiene una responsabilidad moderada en un área funcional y
colabora con otras clases para llevar a cabo las tareas.
Tiene un número relativamente pequeño de métodos, con funcionalidad
altamente relacionada y no realiza mucho trabajo.
Colabora con otros objetos para compartir el esfuerzo si la tarea es extensa.
Ventajosa porque es fácil de mantener, entender y reutilizar. Simplifica el
mantenimiento y las mejoras. Aumenta el potencial de reutilización.
(analogía: si una persona tiene muchas responsabilidades no relacionadas, no
es efectiva)
Página 40 de 47
SOLUCIÓN:
Asignar una responsabilidad de manera que la cohesión permanezca alta
PROBLEMA:
¿Cómo mantener la complejidad manejable? (las clases con baja cohesión a menudo
representan un grado de abstracción alto o han asumido responsabilidades que deberían
haber delegado a otros objetos)
DISCUSIÓN:
Booch establece que existe alta cohesión funcional cuando los elementos de un
componente (como una clase) “trabajan todos juntos para proporcionar algún
comportamiento bien delimitado”
Una clase de alta cohesión tiene un número relativamente pequeño de operaciones
con funcionalidad relacionada y poco trabajo por hacer
Colabora con otros objetos para compartir esfuerzo si la tarea es grande
BENEFICIOS
Mejoran la claridad y facilidad de comprensión
Simplifican la evolución
A menudo se genera bajo acoplamiento
Soporta una mayor capacidad de reutilización, porque una clase cohesiva puede
destinarse a un propósito muy especifico
RELACIÓN CON EL DISEÑO MODULAR
Fomentamos el diseño modular creando métodos y clases con alta cohesión. Al nivel básico
de objetos, la modularidad se alcanza diseñando cada método con un único y claro objetivo,
y agrupando un conjunto de aspectos relacionados en una clase
RELACIÓN ENTRE COHESIÓN Y ACOPLAMIENTO:
Una mala cohesión normalmente causa un mal acoplamiento y viceversa
Existen pocos casos en que se justifique la aceptación de baja cohesión
Cohesión+ acoplamiento= independencia de componentes
CONTROLADOR
CONTROLADOR
Un controlador es un objeto que no pertenece a la interfaz de usuario, responsable de recibir
o manejar un evento del sistema.
Define el método para la operación del sistema.
Normalmente el controlador no hace el trabajo, sino que lo delega a otros objetos (coordina
o controla la actividad)
Página 41 de 47
El controlador es una especie de fachada sobre la capa del dominio para la capa de interfaz
Durante el diseño se asignan una o más clases controlador las operaciones del sistema que
se identificaron durante el análisis del comportamiento del sistema
Podrían utilizarse diferentes controladores para CU distintos.
Un error típico del diseño de los controladores es otorgarles demasiada responsabilidad
SOLUCIÓN
Asignar la responsabilidad del manejo de un mensaje de los eventos de un sistema a una
clase controladora de esos eventos
PROBLEMA:
¿Quién debe ser el responsable de gestionar un evento de entrada al sistema?
(Un evento del sistema de entrada es un evento generado por un actor externo. Se asocian con
operaciones del sistema, tal como se relacionan los mensajes y los métodos.)
DISCUSIÓN:
Los sistemas reciben eventos de entrada externos, normalmente a través de una GUI
manejada por una persona
En todos los casos, si se utiliza un diseño de objetos, se debe escoger algún manejador para
estos eventos. El patrón controlador proporciona guías acerca de las opciones
generalmente aceptadas y adecuadas.
A menudo, es conveniente utilizar la misma clase controlador para todos los eventos del
sistema de un CU de manera que es posible mantener la información acerca del estado del
CU en el controlador.
Establece que separemos, aislamos la lógica de negocio de la capa de presentación (los
objetos interfaz y la capa de presentación no deberían ser responsables de llevar a cabo los
eventos del sistema. En otras palabras, las operaciones del sistema se deberían manejar en
la lógica de la aplicación o capas del dominio en lugar de en la capa de interfaz del sistema)
Es buena alternativa cuando hay muchos eventos del sistema entre varios procesos: asigna
su manejo a clases individuales controlables.
BENEFICIOS:
Aumenta el potencial para reutilizar y las interfaces conectables.
Asegura que la lógica de la aplicación o procesos del dominio sean manejados por la capa
del dominio y no en la capa de interfaz.
Un diseño de una interfaz como controlador reduce la oportunidad de reutilizar la lógica en
futuras aplicaciones, puesto que está ligada a una interfaz particular que es raramente
aplicable en otras aplicaciones. Delegando la responsabilidad de una operación del sistema
a un controlador ayuda a la reutilización de la lógica en aplicaciones futuras. Y puesto que la
lógica no está ligada a la capa de interfaz, puede sustituirse por una interfaz nueva
Razonamiento sobre el estado de los CU: A veces es necesario asegurar que las operaciones
del sistema tienen lugar en una secuencia valida, o ser capaces de razonar sobre el estado
Página 42 de 47
actual de la actividad y operaciones del CU que está en marcha. Si es así, es necesario
capturar en algún sitio esta información de estado, el controlador es una opción razonable,
especialmente si el mismo controlador se utiliza en todo el CU
CUESTIONES Y SOLUCIONES:
Controlador saturado
Una clase controlador pobremente diseñada tendrá baja cohesión (no centrada en algo
concreto y que gestiona demasiadas áreas de responsabilidad). Esto se denomina como
controlador saturado. Signos de que existe un controlador saturado
o Existe una única clase controlador que recibe TODOS los eventos del sistema en el
sistema, y hay muchos. Esto suele ocurrir si se elige un controlador de fachada
o El propio controlador realiza mucha de las tareas necesarias para llevar a cabo los
eventos del sistema, sin delegar trabajo (violación de los patrones experto y alta
cohesión)
o Un controlador tiene muchos atributos y mantiene información significativa sobre el
sistema o el dominio, que debería haberse distribuido a otros objetos, o duplica
información que se encuentra en otros sitios
Soluciones:
o Añadir más controladores (suele suceder si el CU es muy complejo)
o En lugar de controlador de fachada, elegir un controlador de CU
o Diseñar el controlador de manera que, ante todo, delegue el cumplimiento de cada
responsabilidad de una operación del sistema a otros objetos.
Página 43 de 47
PREGUNTAS DE PARCIALES VIEJOS
1. Las responsabilidades que asignamos a un objeto, que están definidas en las clases a la que
ese objeto pertenece, pertenecen básicamente a dos categorías: el conocer y el hacer.
Desarrolle un caso práctico PROPIO en el que ejemplifique responsabilidades relacionadas
con el hacer aplicando el patrón Controlador
2. Hacer algo en uno mismo.
3. Iniciar una acción en otros objetos.
4. Controlar y coordinar actividades en otros objetos.
5. Realice un mapa cognitivo de aspectos comunes comparando 3 diagramas de UML,
clasificados como diagramas de interacción
6. Explique cómo afecta en el ciclo de vida iterativo e incremental cada una de las opciones
respecto al workflow de Análisis
7. Las responsabilidades que asignamos a un objeto, que están definidas en las clases a la que
ese objeto pertenece, pertenecen básicamente a dos categorías: el conocer y el hacer.
Desarrolle un caso práctico PROPIO en el que ejemplifique responsabilidades relacionadas
con el conocer aplicando el patrón Bajo Acoplamiento
a. Estar enterado de los datos privados encapsulados.
b. Estar enterado de la existencia de objetos conexos.
c. Estar enterado de cosas que se pueden derivar o calcular
8. Explique cómo afecta en el ciclo de vida iterativo e incremental cada una de las opciones
respecto al workflow de análisis
Página 44 de 47
9. Describir la relación existente entre diagramas y modelos y describa el propósito de cada
uno de los diagramas que integran la categoría de diagramas de comportamiento y
mencione en qué workflows del proceso unificado se los puede usar
10. Explique los tres tipos de clases que se utilizan para modelar en el análisis y ejemplifique
11. ¿Cuál es la utilidad de los patrones GRASP? Explique su propósito y desarrolle un ejemplo
propio en el que use el patrón alta cohesión y uno en el que no
12. Elija un tema contenido en la unidad nro. 1 que no se haya tratado de las preguntas
anteriores y desarrolle
13. ¿Por qué es importante mantener la consistencia entre todas las vistas en la construcción
del modelo de análisis? Dado el contexto de plantear un modelo de análisis elabore un
ejemplo propio y mencione concretamente dónde se evidencia esa consistencia entre la
viste de máquina de estados, la vista de comportamiento dinámico y la vista de estructura
de clases utilizando el o los modelos de UML que considere adecuados.
14. ¿Cuáles de los diagramas de UML 2.0 pueden utilizarse para construir artefactos del modelo
de análisis? Explique para qué los utilizaría
15. ¿Qué significan los conceptos dominio del problema y dominio de la solución? Relaciónelos
con las diferencias entre los modelos resultantes del análisis y los requerimientos.
16. Las responsabilidades que asignamos a un objeto, que están definidas en las clases a las que
ese objeto pertenece, pertenecen básicamente a dos categorías: hacer y conocer. Desarrolle
Página 45 de 47
un caso propio en el que ejemplifique para una clase las responsabilidades relacionadas con
el hacer.
a. Hacer algo en uno mismo
b. Iniciar una acción en otros objetos
c. Controlar y coordinar actividades entre objetos
17. Explicar la siguiente afirmación: el modelo de análisis se genera en el espacio de la solución
y tiene por objetivo esbozar una solución genérica centrada en los requisitos funcionales del
cliente (requerimientos funcionales)
18. ¿Cuáles son los diagramas que UML 2?0 propone para crear modelos durante el workflow
de análisis? Explique qué modela cada uno y cuál es la trazabilidad entre ellos (controles de
consistencia a considerar)
19. Explique cómo se expresa la característica del PU “conducido por casos de uso” en el
workflow de análisis.
20. Explique cómo se aplica el principio de bajo acoplamiento al aplicar el patrón controlador.
Presentar ejemplo propio.
21. Realice un cuadro comparativo con los patrones alta cohesión, bajo acoplamiento,
controlador analizando al menos cuatro aspectos.
22. ¿Cuáles de los diagramas de UML 2.0 no se utilizan para construir artefactos del modelo de
análisis. Justifique el motivo.
23. Dadas las características del PUD: iterativo e incremental y centrado en la arquitectura.
Explique cómo se aplican en el workflow de análisis.
24. Relacionar patrón creador con las responsabilidades del hacer
25. Análisis del ciclo de vida en el proceso iterativo e incremental
26. Qué es dominio de la solución y qué es dominio del problema. Establecer una relación entre
ambos haciendo una comparativa entre el modelo de requerimientos y de análisis.
27. Explicar patrón experto y bajo acoplamiento, dar un ejemplo propio donde se apliquen
ambos.
28. Diferencia entre modelo, vista y diagrama
29. Desarrollar ejemplo de aplicación de creador y bajo acoplamiento
30. Desarrollar ejemplo propio que use patrón bajo acoplamiento y otro que no lo use.
Página 46 de 47