Unidad 2
Unidad 2
Unidad 2
2
CURSO DE UML Y PATRONES DE DISEÑO DE SOFTWARE
1. Introducción
Dentro de los ciclos de vida de desarrollo de software suele haber etapas o instancias
(normalmente al inicio del proyecto, si se sigue un modelo en cascada, o al inicio de
cada ciclo nuevo, si se sigue un modelo iterativo) donde se desarrollan actividades que
sirve de base para el desarrollo propiamente dicho y las etapas posteriores de pruebas,
despliegue y mantenimiento.
Son referimos a las actividades que podemos sintetizar en análisis de distintos tipos
(económico-financieros, funcionales, técnicos, etc.). Cada una de estas instancias, desde
el comienzo hasta el producto de análisis final va incrementando su nivel de detalle,
desde un bosquejo hasta un documento concreto que es tomado e interpretado por un
programador.
Aquí es donde entra en juego UML, justamente como herramienta para concretizar
estos Modelos. Para conocer sobre estos modelos y su implementación con UML, se
desarrollan a continuación ambos tópicos.
1
Web: www.redtecnologica.org
E-mail: info@redtecnologica.org
2. El Modelo de Análisis
Este Modelo se utiliza para lograr una mejor compresión de los requerimientos expresados
en casos de uso (y que fueran definidos durante el análisis funcional) y para refinarlos
enunciándolos como colaboraciones entre objetos conceptuales que describen características
estructurales y de comportamiento del sistema. Resulta de utilidad como una primera
acercamiento al diseño del sistema.
En esta etapa se toma cada caso de uso y se efectúa la realización del mismo. Esta realización
contiene las descripciones de las interacciones entre los objetos que se llevan a cabo durante
la ejecución de ese objeto a la vez que se mantiene una trazabilidad con el propio caso de
uso.
El tipo, representado por la clase a que la pertenecen los objetos que posee estas
interacciones, se analiza a través de tres representaciones diferentes del sistema que está
siendo analizado:
• La interfaz entre el sistema y sus actores
Estas representaciones se definen a través de una serie de estereotipos que se les dan a las
clases de análisis:
• Clases de Interfaz (“boundary”, en inglés )
2
Web: www.redtecnologica.org
E-mail: info@redtecnologica.org
3
Web: www.redtecnologica.org
E-mail: info@redtecnologica.org
• Permite la utilización de UML, a la vez que se razona sobre los aspectos internos del
funcionamiento del sistema que está siendo analizado.
• Brinda una visión incremental del problema analizado, desde un nivel de detalle alto
hasta el nivel de detalle buscado.
Estos factores hacen que el Modelo de Análisis actúe como un puente que permite una
transición suave entre los requerimientos (Modelo de Casos de Uso) y el diseño (Modelo de
Diseño) del sistema.
4
Web: www.redtecnologica.org
E-mail: info@redtecnologica.org
• Descripción de Arquitectura
Los Paquetes de Análisis son un artefacto utilizado para agrupar Clases de Análisis y
realizaciones de casos de uso, buscando obtener paquetes con cohesión (fuerte relación a
nivel funcional) y débilmente acoplamiento (mínima dependencia entre paquetes).
El principal objetivo es separar funcionalmente el problema a analizado para poder ser
tratado en forma paralela.
5
Web: www.redtecnologica.org
E-mail: info@redtecnologica.org
ser mantenidos en el Modelo de Diseño o transformados, por ejemplo, en clase concretas del
sistema.
Estas clases pueden tener relaciones, aunque de algún tipo simple como, por ejemplo, de
herencia y suelen estar estereotipadas, como se dijo anteriormente, como:
• Clases de Interfaz: Las clases de interfaz se utilizan para modelar la interacción entre
el sistema y sus actores, representando normalmente ventanas, formularios, API de
comunicación, periféricos, etc. Suele utilizarse para mostrar cómo se verá presentada
la información del sistema, manteniendo un nivel alto de abstracción.
Como regla general, cada clase de interfaz debería estar relacionada con al menos un
Actor del sistema.
6
Web: www.redtecnologica.org
E-mail: info@redtecnologica.org
• Clases de Entidad: Las clases de entidad se utilizan para modelar los datos que se
maneja en el dominio del sistema, los cuales suelen ser persistentes (son almacenados
en distintos medios). Además, es posible que contengan comportamiento, relacionada
7
Web: www.redtecnologica.org
E-mail: info@redtecnologica.org
Los casos de uso realizados suelen nombrarse con el mismo nombre que caso de uso que
realizan, y se representan con el símbolo de caso de uso estándar de UML, siendo posible
estereotiparlas como “realización” (dependiendo de la herramienta de modelado utilizada).
Su principal uso suele estar dado para describir la forma en que un caso de uso en particular
se lleva a cabo en términos de clases de análisis y sus correspondientes objetos. De esta
manera, las realizaciones permiten trazar en forma directa los componentes de análisis con
los casos de uso del modelo de casos de uso.
Pueden estar compuestas por descripciones narrativas del flujo de eventos (similares a las
descripciones de los casos de uso, pero describiendo el comportamiento interno del sistema
en lugar del comportamiento externo), diagramas de clases que muestran la estructura y
relaciones de las clases de análisis, y diagramas de interacción que muestran las
colaboraciones entre objetos de análisis que se dan para llevar a cabo un flujo de eventos o
un escenario particular de un caso de uso.
8
Web: www.redtecnologica.org
E-mail: info@redtecnologica.org
9
Web: www.redtecnologica.org
E-mail: info@redtecnologica.org
3. El Modelo de Diseño
Este Modelo toma la visión abstracta aportada por el Modelo de Análisis, a partir del
cual se obtiene un enfoque concreto de los componentes del sistema, llegando a un
nivel de detalle mayor, en el cual se hace mención a conceptos concretos como lenguaje
de programación, bases de datos, sistemas operativos, software de base, entre otros. Es
posible concebir este Modelo como un paso adelante en cuanto al análisis y su
refinamiento, en el cual se pasa de componentes conceptuales a componentes reales del
sistema en estudio, los cuales, idealmente, deberían convertirse en código fuente, ya sea
manualmente o a través de generadores de código.
10
Web: www.redtecnologica.org
E-mail: info@redtecnologica.org
Una clase de diseño es una descripción de un conjunto de elementos que comparten las
mismas responsabilidades, relaciones, operaciones, atributos y semántica.
11
Web: www.redtecnologica.org
E-mail: info@redtecnologica.org
Tanto las clases, como las operaciones y los atributos de una clase cuentan con un nivel
de visibilidad definido. Dicha visibilidad define desde qué lugar es posible ver o acceder
a cada uno de estos elementos.
Las visibilidades más comunes son:
• Pública: pueden ser vistos o accedidos desde cualquier otra clase.
3.1.2 Relaciones
Las clases del Modelo de Diseño pueden estar relacionadas entre sí de diversas
maneras. A continuación un detalle de los tipos principales y más comúnmente usados
12
Web: www.redtecnologica.org
E-mail: info@redtecnologica.org
3.1.2.1 Asociaciones
Se utilizan para indicar que un objeto que es instancia de una clase conoce a otros
objetos que son instancias de otras clases.
Se utiliza el siguiente símbolo:
Ejemplo: en la figura siguiente, existe una asociación entre los objetos de la clase
Empleado y los de la clase Empresa. Esto significa que una instancia de Empleado
conocerá a una instancia de Empresa.
13
Web: www.redtecnologica.org
E-mail: info@redtecnologica.org
• Multiplicidad: indica cuántos objetos de una clase pueden asociarse con cuántos
objetos de la otra, ya sea por valor (número entero o “*” para indicar
“muchos”) o rango (por ejemplo, “1..*” significa que puede haber entre “1” y
“n” objetos). En caso de omisión se interpreta una relación 1 a 1.
Ejemplo: se muestra que en la asociación una empresa siempre tiene uno o más
empleados.
14
Web: www.redtecnologica.org
E-mail: info@redtecnologica.org
Ejemplo: continuando con el ejemplo, se puede pensar que en cada una de las
empresas en las que trabaja, una persona tiene un contrato por el cual se
especifica el sueldo y el tiempo que va a trabajar.
15
Web: www.redtecnologica.org
E-mail: info@redtecnologica.org
3.1.2.2 Agregaciones
Son un tipo especial de asociación que se utilizan para definir relaciones del tipo
“composición” entre clases, como por ejemplo: Auto está compuesto por una
Carrocería, un Motor, Ruedas, etc.
Se utiliza el siguiente símbolo:
16
Web: www.redtecnologica.org
E-mail: info@redtecnologica.org
3.1.2.3 Composición
Ejemplo: una Factura está formada por Items, que serían los artículos o líneas de la
misma. Un Item no tiene existencia fuera del contexto de una Factura y una Factura
siempre está compuesta por Items, ya que no tiene sentido que exista Factura vacía.
3.1.2.4 Generalizaciones
Define una relación entre una clase más general (clase padre) y una más específica
(clase hija), representando el concepto de Herencia de la programación orientada a
17
Web: www.redtecnologica.org
E-mail: info@redtecnologica.org
UML permite calificar una clase como abstracta, lo que significa que la clase define
atributos y operaciones, pero que no existirán instancias de la misma.
Ejemplo: siguiendo con el caso de los vehículos, en el siguiente ejemplo la clase padre
“Vehiculo” se define como abstracta, con lo cual no se podrá instanciar objetos de la
misma.
18
Web: www.redtecnologica.org
E-mail: info@redtecnologica.org
3.1.2.5 Dependencias
Las dependencias entre clases permiten detallar asociaciones temporales (ya que no
existe una asociación permanente entre estas) y sirven, principalmente, para indicar que
los objetos de una clase tendrán conocimiento sobre los objetos de otra (y por ende
podrán enviarles mensajes) de alguna de las siguientes formas:
• Instanciando el objeto destino dentro de alguna operación del objeto fuente
• El objeto destino tiene alcance global, con lo cual el objeto fuente puede
accederlo en cualquier momento
19