Parcial 1 - Unidad 1
Parcial 1 - Unidad 1
Parcial 1 - Unidad 1
Modelo:
¿Qué es un modelo? Es una representación, una simplificación de la realidad, captando los
aspectos importantes de lo que se está modelando desde un cierto punto de vista y
simplificando u omitiendo el resto. Son necesarios para comprender el sistema que se está
modelando.
UML:
¿Qué es UML? Es un lenguaje de modelado visual de propósito general, que se usa para
especificar, visualizar, construir y documentar los artefactos de un sistema de software
orientados a objetos. Pretende ser acercarse a ser un método de modelado estándar. Esta
constituida de conceptos semánticos, notación y principios generales. Permite mostrar
diferentes aspectos de un mismo sistema.
¿Cuál es su propósito?
-Nos ayudan a visualizar un sistema como es, o como queremos que sea.
-Nos permiten especificar la estructura o el comportamiento de un sistema.
-Nos dan una plantilla que nos guía en la construcción del sistema.
-Nos ayuda a documentar las decisiones que hemos tomado.
-Busca ser un lenguaje universal.
-Busca incorporar buenas prácticas de modelado como encapsulación, separación de temas y
captura de intención del modelado, etc.
-Uno de sus objetivos es ser tan simple como fuera posible pero manteniendo la capacidad de
modelar toda gama de sistemas que se necesita construir.
¿Que no dice UML? ¿Que no es UML? UML no nos dice que modelo hay que construir y en
qué momento eso es tarea del proceso de desarrollo de software.
-No es un lenguaje de programación visual.
-No es la especificación de una herramienta o un repositorio.
-No es una metodología, método o proceso.
- no es un método completo de desarrollo.
Reglas de UML: UML tiene un número de reglas vinculadas a un modelo “bien formado”,
Modelo bien formado: semánticamente auto consistente y en armonía con sus modelos
relacionados.
UML también permite construir modelos que no sean “bien formados”, dado que un software
va evolucionando y pueden ser vistos por diferentes involucrados en momentos diferentes.
Elementos:
Elementos Comportamentales:
Elementos Estructurales: Son las partes estáticas que representan conceptos (elementos
lógicos) o cosas materiales (elementos físicos) de un sistema.
Elementos de notación:
Notas: Un símbolo para desplegar un comentario u otra información textual, tal como el
cuerpo de un método o una restricción. Estas pueden se asociadas a cualquier elemento del
diagrama y sirven para agregar una información adicional.
Contención: es una relación que especifica que una clase esta contenida dentro de
otra.
Realización: es una relación que especifica que una clase esta encargada de
implementar el comportamiento especificado en otra.
Reglas de UML
Un modelo está Bien Formado cuando es semánticamente auto consistente y en armonía con
sus modelos relacionados.
Semánticas:
Los modelos que no sean bien formados son permitidos también por UML, esto porque el
software puede ir evolucionado y puede ser visto por diferentes involucrados.
Mecanismos comunes:
1. Especificaciones: UML es algo más que un lenguaje gráfico, detrás de cada elemento de su
notación grafica hay una especificación que proporciona una explicación textual de la
sintaxis y semántica de ese bloque de construcción.
2. Adornos: la mayoría de los elementos UML tienen una notación grafica única y clara que
proporciona una representación visual de los aspectos más importantes del elemento.
Todos los elementos en la notación UML parten de un símbolo básico, al cual pueden
añadirse una variedad de adornos específicos de ese símbolo. Por ejemplo, a los atributos
y métodos de las suelen ir acompañados de un símbolo que indica si visibilidad, como +
(publico), - (privado) y # (protegido).
3. Divisiones comunes: al modelar sistemas orientados a objetos, a menudo se divide en
varias formas:
3.1. División entre clase y objeto (clasificador e instancia): un objeto es una manifestación
concreta de esa abstracción (clase).
3.2. División entre interfaz e implementación: una interfaz declara un contrato y una
implementación representa la realización de ese contrato.
3.3. División entre tipo y rol: el tipo declara la clase de una entidad, como por ejemplo un
atributo o parámetro, un rol describe el significado de una entidad en un contexto,
como una clase, un componente o una colaboración.
4. Mecanismos de extensibilidad:
En conjunto estos tres mecanismos de extensibilidad permiten configurar y extender UML
para las necesidades de un proyecto, permitiendo a UML adaptarse a nuevas tecnologías
de software:
4.1. Estereotipo: extiende el vocabulario de UML, permitiendo crear nuevos bloques de
construcción que derivan de los existentes pero que son específicos a un problema.
4.2. Valor etiquetado: extiende las propiedades de un estereotipo de UML, permitiendo
añadir nueva información en la especificación de ese estereotipo.
4.3. Restricción: extiende la semántica de un bloque de construcción UML, permitiendo
añadir nuevas reglas o modificar existentes.
Diagramas de estructura
Sirven para visualizar, especificar, construir y documentar los aspectos estáticos de un sistema,
como aquellos que representan el esqueleto del sistema como la existencia y ubicación de
clases, interfaces, colaboraciones componentes y nodos.
Diagrama de despliegue:
Muestra un conjunto de nodos y sus relaciones. Se utilizan para describir la vista de despliegue
estática de un sistema.
Diagrama de Objetos:
Muestran un conjunto de objetos y sus relaciones y son usados para representar el estado de
un sistema en un momento de tiempo. Es similar al diagrama de clases, pero sus valores son
los cargados en ese momento. Contiene objetos con nombre y segundo de un “:” la clase al
que pertenece, y además tiene vínculos entre los objetos.
Diagrama de clases:
Nos presenta una vista estática del sistema. Es el diagrama más común de desarrollo de
software. Nos sirve para representar el diseño lógico físico del mismo. Este diagrama nos
permite conocer las clases, en la cual están comprendidas por un título, sus atributos, métodos
y relaciones entre sí.
Diagrama de paquetes:
Describe distintos paquetes lógicos que forman la aplicación. Un paquete es un conjunto de
elementos de UML, ya sean clases, casos de uso, relaciones, otros paquetes, etc. Cada paquete
tiene un símbolo similar a una carpeta. Los paquetes pueden tener dependencias, es decir que
un paquete origen tiene una dependencia de un paquete destino.
Diagrama de componentes:
Es un diagrama de estructura estático, físico. Se usa para mostrar las definiciones estructura
interna y dependencia de componentes. Contiene componentes, interfaces y relaciones de
asociación, generalización realización y/o dependencia.
Diagramas de comportamiento:
Se emplean para visualizar, especificar, construir y documentar los apsectos dinámicos de un
sistema. Involucra aspectos como el flujo de mensajses a lo largo del tiempo o el movimiento
físico de componentes en una red.
Diagrama de actividad:
Son de comportamiento, dinámico y lógico. Se usan para mostrar una operación, una regla, un
caso de uso, proceso de negocio o de software. Esta muestra el conjunto de actividades y el
flujo de secuencia que desglose de actividad en actividad, y los objetos que actúan y que son
afectados. Contiene nudos, flujos y objetos.
Diagramas de interacción:
Son de comportamiento, dinámico, lógico. Proveen una vista
Máquina de estados:
La máquina de estados es un modelo de comportamiento, el cual está centrado en el
comportamiento de la clase a la cual se está modelando.
Con este modelo de requerimientos terminado se usa para el hacer el modelo de análisis, en
este workflow en adelante se empieza a desarrollar el domino de la solución. En este workflow
nos centramos en los casos de uso funcionales. Los artefactos de salida de este modelo de
análisis son:
Las clases de análisis, tenemos las clases del dominio traídos del modelo anterior, en estas
clases de análisis tenesmo clases de fabricación pura los cuales nos ayudan a poder dar
solución al problema planteado algunos son los boundary y controlador. Estas clases de
análisis las podemos seguir modelando con el diagrama de clases o el diagrama de máquina de
estados.
Las realizaciones de caso de usos de análisis, es un análisis en detalle del caso de uso, para
poder encontrar todos los comportamientos y relaciones entre objetos y clases para cumplir
con estos casos de uso, para esto se usan los diagramas de comunicación y secuencia.
Los paquetes de análisis nos sirven para poder empaquetar ya encerrar los tipos de clases de
análisis fabricados en este workflow.
Máquina de estados:
Es un grafo de estado y transiciones. Esta está vinculada a una clase y describe la respuesta de
una instancia de la clase a los eventos que recibe. La máquina de estados modela todas las
posibles historias de vida de un evento de una clase. Cuando el objeto detecta un evento
responde de una manera dependiendo de su estado actual.
Clases de análisis:
En este caso por el uso de estereotipo, se crearon estos nuevos tipos de clases de análisis, que
están estereotipados. Es decir que estas clases no son parte de UML, pero son usadas para el
dominio de la solución y en esta ocasión son estandarizadas por la comunidad de uso de UML.
Visibilidad:
Para que un objeto pueda comunicarse con otro debe verlo, es decir tener visibilidad sobre el.
Existen dos tipos de visibilidad:
Visibilidad de atributos: es cuando una clase tiene un atributo referencial, es decir que
su atributo es una referencia a un objeto de otra clase. De esto tiene acceso a los datos
del objeto referenciado y se puede interactuar o comunicarse con otro. Esto es una
relación o visibilidad estructural, por asociación, agregación o composición.
Visibilidad de parámetros: es una visibilidad dinámica, la cual solo existe en tiempo de
ejecución, es menos acoplado. En este caso la visibilidad solo se puede hacer cuando el
objeto “B” se manda a si mismo por parámetro a “A” para que este se pueda
comunicar con él, es decir que se podrá dar una relación A->B siempre que exista una
relación B->A, y se pueda mandar a si mismo como referencia por parámetros para
que el otro objeto lo pueda usar.
Diagrama de comunicación:
Un diagrama de comunicación modela los objetos y enlaces involucrados en la implementación
de una interacción e ignora el resto. En este se ven todos los enlaces entre los objetos
involucrados en el contexto.
Los mensajes se muestran mediante flechas etiquetadas, cada mensaje tiene un numero de
secuencia y como opcional una condición. También posee la dirección o flujo del mensaje. Este
mensaje que esta enviado tiene que estar presente en los métodos del objeto receptor.
También los mensajes pueden tener un “*” que los precede, esto es decir que se ejecuta más
de una vez o en todos los objetos.
Siempre hay un actor presente en el sistema, que es el que interactúa o da origen al caso de
uso.
Diagrama de secuencia:
Esta muestra la interacción de objetos en colaboración para un caso de uso. Cada objeto o rol
tiene un título de cabecera y una línea vertical, la cual es discontinua indicando el tiempo de
vida del objeto, cuando el objeto se encuentra en tiempo de ejecución de un procedimiento la
línea será doble. La relación entre los objetos y sus líneas de tiempo de vida, se hace mediante
los mensajes. En el caso particular de esta materia no graficamos los mensajes de respuesta.
Un mensaje es graficado como una flecha desde la línea de vida de un objeto a la línea de vida
de otro. estas flechas se organizan cronológicamente hacia abajo del diagrama. Los mensajes
asíncronos se grafican con una flecha de punta abierta y los síncronos de punta cerrada.
la principal diferencia entre este diagrama y el anterior, es que este se centra solo en los
mensajes, mientras que el anterior se encargaba de los enlaces.
Este diagrama de secuencia muestra las interacciones entre líneas de vida como una secuencia
de eventos ordenada en el tiempo. Y esta más centrada en el envío de mensajes.
Estructuras de control:
Tenemos estructuras de control, para poder hacer más claro o dar funcionalidades al diseño, el
único que compete a esta materia es el Frame de loop. Los Frame encierran un parte del
diseño de secuencia y especifica ciertas características o actividades dentro de ese marco. En
este caso el frame de loop se hace referencia que una parte del diseño se ejecutara en bucle
hasta recorrer todos los objetos o cumplir una condición.
Características:
Dirigido por CU: se utilizan para establecer el comportamiento deseado del sistema,
para verificar y validar la arquitectura del sistema, para las pruebas y para la
comunicación entre las personas involucradas en el proyecto. Los CU guían el proceso
de desarrollo. Los CU se utilizan para capturar los requerimientos para desarrollarlos a
través de los distintos WF en las distintas fases. El CU que mapea un requerimiento, lo
llevamos como hilo conductor a lo largo de todos los WF del proceso, manteniendo
una trazabilidad (responde al cliente sobre cierto requerimiento en qué etapa se
encuentra, en que se transformó, nivel de avance)
Centrado en la arquitectura: se utiliza para conceptualizar, construir, gestionar y hacer
evolucionar el sistema en desarrollo. Nos da una visión general de que puede y no
puede hacer el sistema, que es utilizado como cimiento. Se avanza con vistas
arquitectónicas desde el WF de Requerimientos. Vamos haciendo evolucionar el sw
teniendo en cuenta a la arq desde el 1er momento.
Iterativo: involucra la gestión de un flujo de versiones ejecutables. Repite el proceso de
trabajo
Incremental: se integran las versiones, y cada nuevo ejecutable incorpora mejoras
incrementales sobre los otros. Evolución del producto
Iterativo e incremental, ¿Que es? Es el ciclo de vida que el proceso unificado de desarrollo
(PUD) recomienda. Tiene fases, las cuales identifican los momentos de evolución del proyecto,
se trabaja con iteraciones, que entregan una versión del producto. Tenemos la libertad de
elegir otro ciclo de vida, un proceso se puede trabajar con diferentes ciclos de vida.
Otra característica del PUD, es que cada WF genera como salida un modelo. El WF de diseño
nos entrega 2 modelos, uno que se centra en el software (modelo de diseño) y otro en el
hardware (modelo de despliegue), que hace falta para darle soporte al sw que diseñamos.
Nosotros no diseñamos hw, se encarga de la distribución de componentes de sw en que
elementos de hw lo vamos a alojar.
Fases: intervalo de tiempo entre dos hitos importantes del proceso, muestran/determinan
momentos de evolución del producto en el proyecto.
Iteración: conjunto bien definido de actividades, con un plan y criterios de evaluación bien
establecidos, que acaba en un sistema que puede ejecutarse, probarse y evaluarse.
Modelo de Análisis:
En este modelo se analizan los requisitos que se describieron en la captura de requerimientos,
refinándolos y estructurándolos, para conseguir una compresión mas precisa de los requisitos
y una descripción de los mismos que sea fácil de mantener y nos ayude a estructurar el sistema
entero.
Ósea que lo fundamental del modelo de análisis es resolver los casos de usos analizando los
requisitos con mayor diferencia, y con su principal diferencia es que el enfoque esta dado
desde el lenguaje de los desarrolladores, con mayor formalización.
Este empieza al final de la fase de inicio y es foco principal de la fase de elaboración. En esta
fase la mayor parte de la actividad va sobre crear modelos que capturan el comportamiento.
El workflow de análisis se centra en que hay que hacer, pero deja el cómo al workflow de
diseño. El límite entre estos dos workflow suele ser bastante vago.
El modelo de análisis hace abstracciones y evita resolver algunos problemas y tratar algunos
requerimientos que pensamos que es mejor en posponer al diseño y a la implementación. Por
ello, no siempre se puede conservar la estructura proporcionada por el análisis, ya que el
diseño debe considerar la plataforma de implementación: lenguaje de programación, sistemas
operativos, frameworks, sistemas heredados, etc.
El modelo de análisis, también nos ayuda a estructurar los requerimientos y nos proporciona
una estructura centrada en el mantenimiento, en aspectos tales como la flexibilidad ante los
cambios y la reutilización. Esta estructura también sirve como entrada en las actividades de
diseño e implementación, ya que se trata de preservar dicha estructura mientras le damos
forma al sistema. Por esto, el modelo de análisis puede considerarse una primera
aproximación al modelo de diseño, aunque es un modelo por sí mismo.
1. El proyecto utiliza el modelo de análisis para describir los resultados del análisis y
mantiene la consistencia de este a lo largo de todo el ciclo de vida del software. Esto
puede hacerse de manera continua en cada interacción del proyecto.
2. El proyecto utiliza el modelo de análisis para describir los resultados del análisis, pero
considera a este modelo como una herramienta transitoria e intermedia. Cuando el
diseño e implementación están en marcha, se deja de actualizar el análisis.
3. El proyecto no utiliza el modelo de análisis para describir los resultados del análisis. En
cambio, el proyecto analiza los requisitos como parte integrada en la captura de
requerimientos o diseño.
Artefactos:
Modelo de análisis:
El modelo de análisis es un sistema de análisis que denota el paquete de mas alto nivel del
modelo, es decir, las colaboraciones dentro del modelo del modelo de análisis de todos los
artefactos que este tiene. Es una forma de organizar el modelo de análisis en parte mas
manejables que representan abstracciones de subsistemas y capas completas del diseño.
Clases de análisis:
Es una abstracción de una o varias clases del diseño del sistema, dicha abstracción posee las
siguientes características:
Se puede decir que las clases de análisis capturaran atributos candidatos para las clases de
diseño. Las operaciones también se especifican en alto nivel y estas se convertirán en
operaciones en el diseño.
Nombre
Atributos
Operaciones
Visibilidad (generalmente no se muestra)
Estereotipos
Valores etiquetados
1. Clase de interfaz: se utilizan para modelar la interacción del sistema con sus actores.
Esto es recibir información y peticiones de los usuarios y los sistemas externos.
Este modela la parte del sistema que depende de sus actores, entonces son los límites
del mismo. Este representa abstracciones de ventanas, formularios, paneles, interfaces
de comunicación, impresoras etc.
2. Clase de entidad: se utilizan para modelar información con una vida larga y que suele
ser persistente del sistema. En la mayoría de los casos, las clases de entidad se derivan
directamente de una clase de entidad del negocio (o de una clase del dominio). Una
diferencia fundamental entre clases de entidad y clases de entidad de negocio es que
las primeras consideran objetos manejados por el sistema. En consecuencia, las clases
de entidad reflejan la información de un modo que beneficia a los desarrolladores al
diseñar e implementar el sistema, incluyendo su soporte de persistencia. Modelan
información relevante para el dominio y que dura en el tiempo, siendo candidatas a
ser persistentes mediante bases de datos. Suelen tener comportamiento complejo
relativo a la información que representan, de esta forma aíslan los cambios en la
información.
3. Clases de control: Representan coordinación, secuencia, transacciones y control de
otros objetos y se usan con frecuencia para encapsular el control de un caso de uso
concreto. También suelen ser derivaciones y cálculos concretos.
Los aspectos dinámicos del sistema se modelan con clases de control, debido a que
ellas manejan y coordinan las acciones y los flujos de control principales, y delegan
trabajo a otros objetos. Son el nexo entre las clases de entidad y de interfaz, ya que
éstas no se relacionan directamente
Realización de caso de usos:
Es una colaboración dentro del modelo de análisis que describe como se lleva a cabo y se
ejecuta un caso de uso determinado en termino de las clases de análisis y sus objetos en
interacción. Posee una descripción textual del flujo de sucesos, diagramas de clases que
muestran sus clases de análisis participantes y diagramas de interacción que muestra la
realización de un flujo o escenario particular en termino de interacciones de objetos de
análisis. Es decir que la realización de casos de uso consta de conjuntos de clases que realizan
el comportamiento especificado en un caso de uso. Convirtiendo un caso de uso en una
especificación funcional, en diagramas de clases y diagramas de interacción, que son una
especificación de alto nivel del sistema.
Se centra en los requisitos funcionales, dejando los RNF para el diseño e implementación.
Las líneas de vida representan un solo participante o instancia de una clase en una interacción.
Los mensajes representan un tipo específico de comunicación entre dos líneas de vida. Cuando
una línea de vida recibe una llamada esta es una petición para invocar a una operación que
tiene la misma que recibe el mensaje.
Diagrama de clases: unas clases de análisis y sus objetos normalmente participan en varias
realizaciones de casos de uso. Es importante durante el análisis coordinar todos los requisitos
sobre unas clases y sus objetos que pueden tener diferentes casos de uso, para eso
adjuntamos diagramas de clases a las realizaciones de caso de uso mostrando sus participantes
y relaciones.
Diagramas de interacción: la secuencia de acciones comienza cuando un actor invoca el caso
de uso mediante él envió de algún tipo de mensaje al sistema, el objeto de interfaz recibirá el
mensaje del actor y lo enviara a algún otro objeto y los objetos implicados interactuaran para
llevar a cabo el caso de uso. En estos diagramas de colaboración mostramos las interacciones
entre objetos creando enlaces entre ellos y añadiendo mensajes a estos enlaces. Existen 4
tipos de diagramas de interacción, pero nos centraremos en 2. Los cuales están especificados
más arriba.
Paquete de análisis:
Proporcionan un medio para organizar los artefactos del modelo de análisis en piezas
manejables. Estos tienen que ser cohesivos, y débilmente acoplados. Y tienen las siguientes
características:
Cada paquete debe tener su propio espacio de nombre y debe ser único.
Descripción de la arquitectura:
Este contiene una vista de la arquitectura del modelo de análisis. Que muestra sus artefactos
significativos para la arquitectura. Como los siguientes:
Trabajadores:
Arquitecto:
Es el responsable de la integridad del modelo, garantizando que este sea correcto consistente
y legible como un todo, esto puede requerir mantenimiento tras varias iteraciones en sistemas
grandes, y puede llegar a delegar esta tarea, pero sigue bajo su responsabilidad. El modelo de
análisis es correcto cuando realiza la funcionalidad descripta en el modelo de casos de uso.
La realización de casos de uso debe garantizar las descripciones textuales y diagramas son
legibles y se corresponden con el objetivo del caso de uso.
No es responsable de las clases de análisis ni las relaciones del caso de uso.
Este es entonces el responsable tanto en el análisis como en el diseño de los casos de uso.
Ingeniero de componentes:
Define y mantiene las responsabilidades, atributos, relaciones y requisitos de las clases de
análisis asegurándose que cada clase cumple con los requisitos que se esperan de acuerdo a
las realizaciones de caso de uso en las que participa.
Flujo de trabajo:
Los arquitectos empiezan con la creación del modelo de análisis y los ingenieros de caso de uso
realizan cada caso de uso en termino de clases de análisis exponiendo los requisitos y
comportamientos de cada clase. El ingeniero de componentes especifica estos requerimientos
y crea las responsabilidades, atributos y relaciones de clases de análisis. Y posteriormente se
encargará de los paquetes de análisis.
1. Los arquitectos comienzan con la creación del modelo de análisis, identificando los
paquetes de análisis principales, las clases de entidad evidentes y los requerimientos
comunes.
2. Los ingenieros de caso de uso realizan cada caso de uso en término de las clases de
análisis participantes exponiendo los requerimientos de comportamiento de cada
clase.
3. Los ingenieros de componentes especifican estos requerimientos de comportamiento
y los integran dentro de cada clase creando responsabilidades, atributos y relaciones
consistentes para cada clase.
4. Durante el análisis, los arquitectos identifican de manera continua nuevos paquetes de
análisis, clases y requerimientos comunes a medida que el modelo evoluciona, y los
ingenieros de componentes refinan y mantienen continuamente los paquetes del
análisis.
Análisis de la arquitectura:
Sirve para esbozar el modelo de análisis y la arquitectura mediante los siguientes pasos:
Analizar un paquete:
Patrones GTASP:
Los patrones GRASP constituyen un apoyo para la enseñanza que ayuda a uno a entender el
diseño de objetos esencial y aplica el razonamiento para el diseño de una forma sistemática,
racional y explicable. Este enfoque para la comprensión y utilización de principios de diseño se
basa en los patrones de asignación de responsabilidades.
Experto.
Creador
Alta cohesión
Bajo acoplamiento
Controlador
Experto:
Creador:
Bajo Acoplamiento:
Alta Cohesión:
Controlador: