Escolar Documentos
Profissional Documentos
Cultura Documentos
UN ENFOQUE PRÁCTICO
Es importante observar que no existe un acuerdo universal sobre los «conceptos» que sirven de base para el AOO,
pero un limitado número de ideas clave se repten a menudo, y son éstas las que consideraremos en este capítulo.
El objetivo del análisis orientado a objetos es desarro- El método de Booch. El método de Booch [B0094]
llar una serie de modelos que describan el software de abarca un amicroproceso de desarrollo» y un «macro-
computadora al trabajar para satisfacer un conjunto de proceso de desarrollo». El nivel micro define un conjunto
requisitos definidos por el cliente. El AOO, como los de tareas de análisis que se reaplican en cada etapa en el
métodos de análisis convencional descritos en el Capí- macro proceso. Por esto se mantienen un enfoque evo-
tulo 12, forman un modelo de análisis multiparte para lutivo. El micro proceso de desarrollo identifica clases y
satisfacer este objetivo. El modelo de análisis ilustra objetos y la semántica de dichas clases y objetos, define
información, funcionamiento y comportamiento dentro las relaciones entre clases y objetosy realiza una serie de
del contexto de los elementos del modelo de objetos refinamientos para elaborar el modelo del análisis.
descrito en el Capítulo 20.
362
CAPfTULO 2 1 ANALISIS ORIENTADO A OBJETOS
Booch, Rumbaugh y Jacobson han publicado una trilogía funda- ' Si aún no lo ha hecho, lea por favor la discusión sobre los casos de
mental de libros sobre UML.El lector interesado puede consultar uso de la Sección 1 1.2.4.
[B0099l, [RUM99l y UAC99l.
363
INGENIERfA DEL SOFTWARE. UN ENFOQUE PRACTICO
Vista del comportamiento: esta parte del modelo del Vista de implementación: los aspectos estructurales
análisis representa los aspectos dinámicos o de com- y de comportamiento se representan aquí tal y como van
portamiento del sistema. También muestra las interac- a ser implementados.
ciones o colaboraciones entre los diversos elementos Vista del entorno: aspectos estructurales y de com-
estructurales descritos en las vistas anteriores. portamiento en el que el sistema a implementar se repre-
senta.
El análisis en sistemas orientados a objetos puede ocu- la necesidad de 100 clases. Se le asigna a dos equipos
rrir a muchos niveles diferentes de abstracción. A nivel la tarea de construir la aplicación. Cada uno debe dise-
de negocios o empresas, las técnicas asociadas con el ñar y construir un producto final y, a su vez, está com-
A 0 0 pueden acoplarse con un enfoque de ingeniería puesto de personas con el mismo nivel de habilidad y
de la información (Capítulo 10) en un esfuerzo por defi- experiencia.
nir clases, objetos, relaciones y comportamientos que
modelen el negocio por completo. A nivel de áreas de
negocios, puede definirse un modelo de objetos que des-
criba el trabajo de un área específica de negocios (o una
categoría de productos o sistemas). A nivel de las apli- Otros beneficios derivodos de /u reutilizucián son
caciones, el modelo de objetos se centra en los requisi- lo consistencio y la fumiliuridod. los putrones dentro
tos específicos del cliente, pues éstos afectan a la del suhure serán más consistentes, tendiendo
o fucilitur el montenimiento del producto. Asegúrese de
aplicación que se va a construir.
estoblecer un conjunto de regla de reutilizocián
CUVE
El equipo A no tiene acceso a una biblioteca de cla-
El objetivo del unálisis del dominio es definir el conjunto ses, por lo que debe desarrollar las 100 clases desde
de cluses (objetosl que se encuentron en el dominio de
el principio. El equipo B usa una biblioteca de clases
lo oplicucián. Dichus doses podrán reutilizorse muchos veces.
robusta y encuentra que ya existen 55 clases. Seguro
que:
El AOO, en su nivel de abstracción más alto (el nivel
de empresa), está más allá del alcance de este libro. Los 1. El equipo B finalizará el proyecto mucho antes que
lectores interesados deberían ver a [EEL98], [CAR98], el A.
[FIN96], [MAT94], [SUL94] y [TAY95], los cuales 2. El coste del producto del equipo B será significati-
hacen un análisis más detallado. A nivel de abstracción vamente más bajo que el coste del producto del
más bajo, el A 0 0 cae dentro del alcance general de la equipo A.
ingeniería del software orientado a objetos y es el cen- 3. La versión que se distribuya del producto producido
tro de atención del resto de las secciones de este capí- por el equipo B tendrá menos defectos que la del pro-
tulo. En esta sección nos centraremos en el A 0 0 que ducto del equipo A.
se realiza a un nivel medio de abstracción. Esta activi-
Aunque el margen por el cual el trabajo del equipo
dad, llamada análisis del dominio, tiene lugar cuando
B excederá al del A está abierto a debate, pocos argu-
una organización desea crear una biblioteca de clases
mentarán que la reusabilidad aporta una ventaja subs-
reutilizables (componentes) ampliamente aplicables a
tancial al equipo B.
una categoría completa de aplicaciones.
¿Pero de dónde vino la «biblioteca de clases robus-
ta»? ¿Y cómo se determinó que las entradas de la biblio-
21.2.1. Análisis de reutilización y del dominio teca eran apropiadas para su uso en nuevas aplicaciones?
Las tecnologías de objetos están influenciadas por la Para responder estas preguntas, la organización que creó
reutilización. Considere un ejemplo simple. El análi- y mantuvo dicha biblioteca tuvo que aplicar el análisis
sis de los requisitos para nuevas aplicaciones indican del dominio.
364
CAPfTULO 2 1 ANALISIS ORIENTADO A OBJETOS
Taxonomía de clases
Aplicaciones existentes w
Fuentes Estándar de reusabilidad Modelo
de Recursos del cliente w del
domimio Modelos funcionales
Consejo de experto análisis
del
-
Lenguajes del dominio del
:onocimiento
Requisitos actuales/futuros * dominio
_.
FIGURA 21.1. Entrada y salida para análisis del dominio.
365
INCENIERfA DEL SOFTWARE. UN ENFOQUE PRACTICO
El proceso de análisis orientado a objetos se adapta a componentes de representación genéricos que apare-
conceptos y principios básicos de análisis discutidos en cen en todos los modelos de análisis O 0 5 .Los compo-
el Capítulo 11. Aunque la terminología, notación y acti- nentes estáticos son estructurales por naturaleza, e
vidades difieren respecto de los usados en métodos con- indican características que se mantienen durante toda
vencionales, el A 0 0 (en su núcleo) resuelve los mismos la vida operativa de una aplicación. Los componentes
objetivos subyacentes. Rumbaugh [RUM9 11 examina dinámicos se centran en el control, y son sensibles al
esto cuando asegura que: tiempo y al tratamiento de sucesos. Estos últimos defi-
El análisis... se ocupa de proyectar un modelo preciso, con-
nen cómo interactúa un objeto con otros a lo largo del
ciso, comprensible y correcto del mundo real. ...El propósito tiempo. Pueden identificarse los siguientes componen-
de análisis Orientado a objetos es modelar el mundo real de for- tes [MON92]:
ma tal que sea comprensible. Para esto se deben examinar los
requisitos, analizar las implicaciones que se deriven de ellos y Vista estática de clases semánticas. Una taxonomía de
reafirmarlos de manera rigurosa. Se deben abstraer primero las clases típicas se mostró en el Capítulo 20. Se imponen los
características del mundo real y dejar los pequeños detalles requisitos y se extraen (y representan) las clases como
para más tarde. parte del modelo de análisis. Estas clases persisten a tra-
Para desarrollar un «modelo preciso, conciso, com- vés de todo el período de vida de la aplicación y se deri-
prensible y correcto del mundo real», un ingeniero del van basándose en la semántica de los requisitos del cliente.
software debe seleccionar una notación que se sopor-
te a un conjunto de componentes genéricos de AOO. ¿Cuáles son los componentes
Monarchi y Puhr [MON92] definen un conjunto de clave de un modelo de AOO?
366
CAPITULO 2 1 ANALISIS ORIENTADO A OBJETOS
- <
. .., . . .:. . ..
21.4 PRbC-O i . ,
I .
El proceso de A 0 0 no comienza con una preocupación proporcionar una base para la validación de las
por los objetos. Más bien comienza con una compren- pruebas.
sión de la manera en la que se usará el sistema: por las
Durante el A 0 0 los casos de uso sirven como base
personas, si el sistema es de interacción con el hombre;
para los primeros elementos del modelo de análisis.
por otras máquinas, si el sistema está envuelto en un
Utilizando UML se puede crear una representación
control de procesos; o por otros programas; si el siste-
visual de los casos de uso llamada diagrama de casos
ma coordina y controla otras aplicaciones. Una vez que
de uso. Como otros elementos del análisis, los casos de
se ha definido el escenario, comienza el modelado del
uso pueden representarse a diferentes niveles de abs-
software.
tracción. Los diagramas de casos de uso contienen casos
Las secciones que siguen definen una serie de técni-
de uso y actores, siendo estos últimos las entidades que
cas que pueden usarse para recopilar requisitos básicos
interactúan con el sistema. Pueden ser humanos u otras
del usuario y después definen un modelo de análisis para
máquinas o sistemas que tengan definidas interfaces con
un sistema orientado a objetos.
nuestro sistema.
3
21.4.1. Casos de uso
Como examinamos en el Capítulo 11, los casos de uso
modelan el sistema desde el punto de vista del usuario. Referencia Web
Creados durante la obtención de requisitos, los casos de En www.univ-paris 1.fr/CRINFO/dmrg/MEE/misopO14
uso deben cumplir los siguientes objetivos: existe un tutorial que aborda en profundidad los casos de uso.
definir los requisitos funcionales y operativos del sis-
tema (producto), diseñando un escenario de uso acor- El sistema de seguridad HogarSeguro, discutido en
dado por el usuario final, y el equipo de desarrollo; capítulos anteriores, puede usarse para ilustrar cómo pue-
proporcionar una descripción clara y sin ambigüe- den desarrollarse casos de uso. Recordando los requisi-
dades de cómo el usuario final interactúa con el sis- tos básicos de HogarSeguro, podemos definir tres
tema y viceversa, y actores: el propietario (el usuario), los sensores (dis-
positivos adjuntos al sistema) y el subsistema de moni-
torización y respuesta (la estación central que
monitoriza HogarSeguro). Para los propósitos de este
los casos de usa son una excdmte herramienta de
licitotión de requisitos, indepenrbentemente del método de
ejemplo, consideraremos solamente el actor propietario.
onálisis utilizado. Véme el capítulo 11 para más detalle. La Figura 2 1.2.a muestra un diagrama de casos de
uso de alto nivel para el propietario. En dicha figura
367
INGENIERfA DEL SOFTWARE. UN ENFOQUE PRACTICO
se identifican dos casos de uso y se representan con elip- facer estas seis características para poder ser conside-
ses. Cada caso de uso de alto nivel puede detallarse rado como posible miembro del modelo:
mediante diagramas de casos de uso de nivel inferior.
Por ejemplo, la Figura 21.2.b representa un diagrama 1. retener información: el objeto potencial será útil
de casos de uso para la función interactúa. Se crea un durante el análisis si la información sobre el mismo
conjunto completo de diagramas de casos de uso para debe guardarse para que el sistema funcione
todos los actores. Pero para una detallada discusión sobre 2. Servicios necesarios: el potencial objeto debe tener
los casos de uso usando UML es mejor consultar la un conjunto de operaciones identificables que per-
bibliografía sobre el tema (P.e. [ERI97] o [ALH98J). mitan cambiar los valores de sus atributos.
3. Múltiples atributos: durante el análisis de requisitos
21.4.2. Modelado de clases-responsabilidades- nos centramos más en la información más impor-
colaboraciones tante. Un objeto con un solo atributo puede, en efecto,
ser Útil durante el diseño, pero probablemente será
Una vez que se han desarrollado los escenarios de uso un atributo de otro objeto durante el análisis de acti-
básicos para el sistema, es el momento de identificar las vidades.
clases candidatas e indicar sus responsabilidades y cola-
boraciones. El modelado de clases-responsabilidades- 4 . Atributos comunes: el conjunto de atributos definido
colaboraciones (CRC) [WIR90] aporta un medio sencillo para la clase debe ser aplicable a todas las ocurren-
K#g
de identificar y organizar las clases que resulten relevantes cias del objeto.
al sistema o requisitos del producto. Ambler [AMB95] Hogarseguro
describe el modelado CRC de la siguiente manera: I
Un modelo CRC es realmente una colección de tarjetas
índice estándar que representan clases. Las tarjetas están divi-
didas en tres secciones. A lo largo de la cabecera de la tarjeta
usted escribe el nombre de la clase. En el cuerpo se listan las
responsabilidades de la clase a la izquierda y a la derecha los
colaboradores.
Propietario
K
sarias para proveer a una clase con la información nece-
saria para completar una responsabilidad. En general,
una colaboración implica una solicitud de información
o una solicitud de alguna acción.
Clases Propietario
368
CAPfTULO 21 ANALISIS ORIENTADO A OBJETOS
Responsabilidades
¿Cómo determinar si merece la
pena incluir un objeto potencial Las pautas básicas para identificar responsabilidades
en una tarjeta índice CRC? (atributos y operaciones) también fueron presentadas
en el Capítulo 20. Para resumir, los atributos represen-
5. Operaciones comunes: el objeto potencial debe defi- tan características estables de una clase, esto es, infor-
nir un conjunto de operaciones aplicables, al igual mación sobre la clase que debe retenerse para llevar a
que antes, a todos los objetos de la clase. cabo los objetivos del software especificados por el
6. Requisitos esenciales: las entidades externas que apa- cliente. Los atributos pueden a menudo extraerse del
recen en el espacio del problema y producen infor- planteamiento de alcance o discernirse a partir de la
mación esencial para la operación de una solución comprensión de la naturaleza de la clase. Las opera-
para el sistema casi siempre se definen como obje- ciones pueden extraerse desarrollando un análisis gra-
tos en el modelo de requisitos. matical sobre la narrativa de procesamiento del sistema.
Una clase potencial debe satisfacer las seis caracte- Los verbos se transforman en candidatos a operaciones.
rísticas de selección anteriores si va a ser incluida en el Cada operación elegida para una clase exhibe un com-
modelo CRC. portamiento de la clase.
Firesmith [FiR93] extiende las características de cla-
sificación sugiriendo, además de las existentes, las
siguientes:
%
CLAVE
Clases dispositivo. Modelan entidades externas tales las responsabilidades de una clase incluyen tanto a los
como sensores, motores y teclados. atributos como a las operaciones.
Clases propiedad. Representan alguna propiedad
importante del entorno del problema (por ejemplo: esta-
Wirfs-Brock y sus colegas [WIR90] sugieren cinco
blecimiento de créditos dentro del contexto de una apli-
pautas para especificarresponsabilidades para las clases:
cación de préstamos hipotecarios).
Clases interacción. Modelan interacciones que ocu- 1. La inteligencia del sistema debe distribuirse de
rren entre otros objetos (por ejemplo: una adquisición o manera igualitaria.Toda aplicación encierra un cierto
una licencia). grado de inteligencia,por ejemplo, lo que sabe el sis-
tema y lo que puede hacer. Esta inteligencia puede
distribuirse ente las clases de varias maneras. Las
, ¿Hay alguna manera de clasificar clases «tontas» (aquellas con pocas responsabilida-
las clases? ¿Qué características
des) pueden modelarse de manera que actúen como
nos ayudan a hacerlo?
sirvientes de unas pocas clases «listas» (aquellas con
Adicionalmente, los objetos y clases pueden clarifi- muchas responsabilidades). Aunque este enfoque
carse por un conjunto de características: hace que el flujo de control dentro de un sistema sea
claro, posee algunas desventajas: (1) Concentra toda
Tungihilidad. ¿Representa la clase algo tangible o la inteligencia en pocas clases, haciendo los cambios
palpable (por ejemplo, un teclado o sensor), o repre- más difíciles; (2) Tiende a necesitar más clases y por
senta información más abstracta (por ejemplo: una salida lo tanto el esfuerzo de desarrollo aumenta.
prevista)?
Inclusividad. ¿Es la clase atómica (es decir, no ¿Cómo asignar responsabilidades
incluye otras clases) o es agregada (incluye al menos a una clase?
un objeto anidado)?
Secuencia. ¿Es la clase concurrente (es decir posee Por esta razón, la inteligencia del sistema debe
su propio hilo de control) o secuencial (es controlada distribuirse de manera igualitaria entre las clases de
por recursos externos)? una aplicación. Como cada objeto conoce y actúa
Persistencia. La clase es temporal (se crea durante sobre algunos pocos elementos (generalmente bien
!a ejecución del programa y es eliminada una vez que definidos y claros), la cohesión del sistema se ve
éste termina), o permanente (es almacenada en una base incrementada. Adicionalmente, los efectos colatera-
de datos)? les provocados por cambios tienden a amortiguarse
Integridad. ¿Es la clase corrompible (es decir, no pro- debido a que la inteligencia del sistema se ha des-
tege sus recursos de influencias externas) o es segura (la compuesto entre muchos objetos.
clase refuerza los controles de accesos a- sus recursos)?
Usando estas categorías de clases, pueden ampliar-
se las «tarjetas índice» creadas como parte del modelo Si una clase tiene una listo excesivamente larga de
CRC para incluir el tipo de la clase y sus característi- respansabilidades, ial vez debetía considerarse su división
cas (Fig. 21.3). en varias clases menores.
369
INGENIERfA DEL SOFTWARE. UN ENFOQUE PRÁCTICO
Para determinar si la inteligencia del sistema está sabilidad no debe compartirse, de manera general,
distribuida equitativamente, las responsabilidades entre varias clases. Si la información está distri-
definidas en cada tarjeta índice del modelo CRC buida, el software se torna más difícil de mantener
deben ser evaluadas para determinar si cada clase y probar.
posee una lista de responsabilidades extraordina- 5. Compartir responsabilidades entre clases relacio-
riamente grande. Esto indica una concentración de nadas cuando sea apropiado. Existen muchos casos
inteligencia. Además, las responsabilidades de cada en los cuales una gran variedad de objetos exhibe el
clase deben mostrar el mismo nivel de abstracción. mismo comportamiento al mismo tiempo. Como un
Por ejemplo, entre la lista de operaciones de una ejemplo, considere un videojuego que debe mostrar
clase agregada llamada Comprobación de cuenta los siguientes objetos: jugador, cuerpo-del-juga-
existen dos responsabilidades: saldo-de-la-cuenta dor, brazos-del-jugador,cabeza-del-jugador. Cada
y verificar-talones-cobrados. La primera operación uno de estos atributos tiene sus propios atributos (P.e.:
(responsabilidad) implica un complejo procedi- posición, orientación, color, velocidad), y todos
miento matemático y lógico. La segunda es una sim- deben actualizarse y visualizarse al mover el usua-
ple actividad para empleados. Debido a que estas rio el joystick. Las responsabilidades actualizar y
dos actividades no están al mismo nivel de abs- visualizar deben, por lo tanto, compartirse por los
tracción, verificar-talones-cobrados debe situarse objetos señalados. El jugador sabe cuándo algo ha
dentro de las responsabilidades de la clase Com- cambiado y se requiere actualizar; colabora con los
probación de entradas, la cual está contenida en otros objetos para alcanzar una nueva posición u
la clase agregada Comprobación de cuenta. orientación, pero cada objeto controla su propia
visualización.
Colaboradores
Las clases cumplen con sus responsabilidades de una
de las dos siguientes maneras: (1) una clase puede
usar sus propias operaciones para manipular sus pro-
pios atributos, cumpliendo por lo tanto con una res-
ponsabilidad particular, o (2) puede colaborar con
otras clases.
Wirfs-Brock [WIR90] y sus colegas definen las cola-
boraciones de la siguiente forma:
Las colaboraciones representan solicitudes de un cliente a
un servidor en el cumplimiento de una responsabilidad del
FIGURA 21.3. Un modelo CRC de tarjeta índice. cliente. Una colaboración es la realización de un contrato entre
el cliente y el servidor... Decimos que un objeto colabora con
otro, si para ejecutar una responsabilidad necesita enviar cual-
2. Cada responsabilidad debe establecerse lo más gene- quier mensaje al otro objeto. Una colaboración simple fluye en
ral posible. Esta directriz implica que las responsa- una dirección, representando una solicitud del cliente al servi-
bilidades generales (tanto los atributos como las dor. Desde el punto de vista del cliente, cada una de sus cola-
boraciones está asociada con una responsabilidad particular
operaciones) deben residir en la parte alta de la jerar- implementada por el servidor.
quía de clases (puesto que son genéricas, se aplica-
rán a todas las subclases). Adicionalmente, debe
usarse el polimorfismo (Capítulo 20) para definir las
operaciones que generalmente se aplica a la super-
clase, pero que se implementan de manera diferente
en cada una de las subclases. Un objeto servidor colabora con un objetos cliente
en un esfuerzo por llevar o cabo una determinada
3 . La información y el comportamiento asociado a ella,
responsabilidad. la colaboración implica el paso de mensajes.
debe encontrarse dentro de la misma clase. Esto
implementa el principio O 0 de encapsulamiento
(Capítulo 20). Los datos y procesos que manipulan Las colaboraciones identifican relaciones entre cla-
estos datos deben empaquetarse como una unidad ses. Cuando todo un conjunto de clases colabora para
cohesionada. satisfacer algún requisito, es posible organizarlas en un
4. La información sobre un elemento debe estar loca- subsistema (un elemento del diseño).
lizada dentro de una clase, no distribuida a través Las colaboraciones se identifican determinando si
de varias clases. Una clase simple debe asumir la una clase puede satisfacer cada responsabilidad. Si no
responsabilidad de almacenamiento y manipulación puede, entonces necesita interactuar con otra clase. De
de un tipo específico de información. Esta respon- aquí surge' lo que hemos llamado una colaboración.
370
CAPfTULO 21 ANALISIS ORIENTADO A OBJETOS
37 1
INGENIERfA DEL SOFTWARE. U N E N F O Q U E PRÁCTICO
tantes que surgen al emerger clases y subclases. Usan- menta uno o más contratos [WIR90] con sus colabo-
do la notación UML podemos crear gran variedad de radores externos. Un contrato es una lista específica
diagramas. Debe crearse una estructura de generuliza- de solicitudes que los colaboradores pueden hacer a
ción-especialización para las clases identificadas. un subsistema'.
u Tl.El
Para ilustrarlo considere el objeto sensor definido
para HogarSeguro y mostrado en la Figura 21.4. Aquí,
la generalización, sensor, se refina en un conjunto de Sensor
especializaciones: sensor de entrada, sensor de humo
y sensor de movimiento. Los atributos y operaciones Atributos Operaciones
identificados en el sensor son heredados por las espe-
cializaciones de la clase. Hemos creado una jerarquía
de clases simple.
En otros casos, un objeto representado según el
modelo inicial puede estar compuesto realmente de un
número de partes las cuales pueden definirse a su vez de entrada de humo
como objetos. Estos objetos agregados pueden repre-
sentarse como una estructura componente-agregado
[ERI97] y se definen usando la notación representada FIGURA 21.4.a Diagrama de clases que ilustra la relación
en la Figura 21.5. El rombo implica una relación de de generalización-especialización.
ensamblaje. Debe notarse que las líneas de conexión
pueden aumentarse con símbolos adicionales (no mos-
trados) para representar cardinalidad, que se adaptan de Panel
la notación del modelo entidad-relación descrito en el de control
Capítulo 12.
Las representaciones estructurales proveen al ana-
lista de los medios para particionar el modelo CRC y
para representar esta partición gráficamente. La expan-
/ T \i
1 11 1
sión de cada clase aporta los detalles necesarios para
revisión y para el subsiguiente diseño.
372
CAPfTULO 2 1 ANALISIS ORIENTADO A O B J E T O S
temas, como se muestra en la figura, pudiera referen- sensor (Figs. 21.5 y 21.6); para el sistema, suceso sen-
ciarse toda la estructura a través de un simple icono sor y alarma audible se crearán también estructuras si
(la carpeta de ficheros). Las referencias de paquetes estos objetos necesitan objetos ensamblados.
se crean generalmente para cualquier estructura que Las flechas discontinuas mostradas en la parte supe-
posea múltiples objetos. rior de la Figura 2 1.7 representan relaciones de depen-
Al nivel más abstracto, el modelo de A 0 0 conten- dencia entre los paquetes que se muestran. Sensor
drá solamente referencias de paquetes tales como las depende del estado del paquete suceso sensor. Las fle-
que se ilustran al inicio de la Figura 21.7. Cada una de chas continuas representan composición. En el ejem-
las referencias se expandirá a una estructura. Se ilus- plo, el paquete sistema está compuesto por los paquetes
tran las estructuras para los objetos panel de control y panel de control, sensor y alarma audible.
Referencia
establecimiento de las relaciones es comprender las res-
ponsabilidades de cada clase. La tarjeta índice del mode- s u bsistema
(paquete)
lo CRC contiene una lista de responsabilidades. El
siguiente paso es definir aquellas clases colaboradoras
que ayudan en la realización de cada responsabilidad.
Esto establece la «conexión» entre las clases.
4R
1
1
Entre dos clases cualesquiera que estén conectadas
existe una relación*. Debido a esto los colaboradores 1 \ \
siempre están relacionados de alguna manera. El tipo de r l a d o defunción Pantalla
relación más común es la binaria (existe una relación
entre dos clases). Cuando se analiza dentro del contexto
de un sistema 00,una relación binaria posee una direc-
ción específica’ que se define a partir de qué clase desem- FIGURA 21.6. Referencia a paquete (subsistema).
peña el papel del cliente y cuál actúa como servidor.
Rumbaugh y sus colegas [RUM91] sugieren que las
relaciones pueden derivarse a partir del examen de los
verbos o frases verbales en el establecimiento del alcan- El modelo objeto-relación (como el modelo entidad-
ce o casos de uso para el sistema. Usando un análisis relación) puede obtenerse en tres pasos o etapas:
gramatical, el analista aísla verbos que indican locali- 1 Usando las tarjetas índice CRC,puede dibujarse una
zaciones físicas o emplazamientos (cerca de, parte de, red de objetos colaboradores. La Figura 21.8 repre-
contenido en), comunicaciones (transmite a, obtenido senta las conexiones de clase para los objetos de
de),propiedad (incorporadopor, se compone de) y cum- Hogarseguro. Primero se dibujan los objetos conec-
plimiento de una condición (dirige, coordina, contro- tados por líneas sin etiquetas (no se muestran en la
la). Estos aportan una indicación de la relación. figura) que indican la existencia de alguna relación
La notación del lenguaje unificado de modelado para entre los objetos conectados. Una alternativa es mos-
el modelo objeto-relación utiliza una simbología adap- trar los nombres de los roles de cada clase en la rela-
tada de las técnicas del modelo entidad-relación exami- ción en lugar del nombre de la relación. Esto se
nadas en el Capítulo 12. En esencia, los objetos se describe en el Capítulo 22.
conectan con otros objetos utilizando relaciones con nom- 2. Revisando el modelo CRC de tarjetas índices, se eva-
bres. Se especifica la cardinalidad de la conexión (ver lúan responsabilidadesy colaboradores y cada línea
capítulo 12) y se establece toda una red de relaciones. de conexión sin etiquetar recibe un nombre. Para evi-
tar ambigüedades, una punta de flecha indica la
«dirección» de la relación (Fig. 21.8).
¿Cómo se obtiene un modelo 3 . Una vez que se han establecido y nombrado las rela-
objeto-relación? ciones, se evalúa cada extremopara determinar la car-
Otros términos para relación son asociación [RUM9 11 y conexión E s importante notar que esta es una salida de la naturaleza bidi-
[COA91]. reccional de las relaciones usadas en el modelado de datos (Capí-
tulo 12).
373
INGENIERfA DEL SOFTWARE. UN ENFOQUE PRÁCTICO
dinalidad (Fig. 21.8). Existen cuatro opciones: O a 1, Un panel de control controla uno o más sensores
1 a 1, O a muchos, ó 1 a muchos. Por ejemplo, el sis- y cada sensor es controlado por un panel de control
tema HogurSeguro contiene un único panel de control
(la cardinalidad 1 lo indica). Al menos un sensor debe
estar presente para que el panel de control lo active.
Sin embargo, varios sensores pueden estar presentes
(la relación 1..* lo indica). Un sensor puede reconocer 1 1 . 1
1 o más sucesos de sensor (P.e.: se detecta humo u ocu-
rre una caída, pues el símbolo 1..* lo indica).
Alarma audible
I
Evento de sensor Un sistema está formado por cero Ó más alarmas audibles
y una alarma audible está asociada con un único sistema
El modelo CRC y el de objeto-relación representan ele- 5. Revisar el modelo objeto-comportamiento para veri-
mentos estáticos del modelo de análisis OO. Ahora es el ficar exactitud y consistencia.
momento para hacer una transición al comportamiento Cada uno de estos pasos se discute en las secciones
dinámico del sistema o producto OO. Para ejecutar este siguientes.
paso debemos representar el comportamiento del siste-
ma como una función de sucesos específicos y tiempo.
21.6.1. Identificación de sucesos con casos de uso
¿Cuáles son los posos Como vimos en la Sección 21.4.1, el caso de uso
o seguir poro construir un representa una secuencia de actividades que incluyen
modelo objetos-tomportomiento? a actores y al sistema. En general, un suceso ocurre
cada vez que un sistema 00 y un actor (recuerde que
El modelo objeto-comportamiento indica cómo res- un actor puede ser una persona, un dispositivo o inclu-
ponderá un sistema 00 a sucesos externos o estímulos. so un sistema externo) intercambian información.
Para crear el modelo, el analista debe ejecutar los Recordando la explicación dada en el Capítulo 12, es
siguientes pasos: importante recordar que un suceso es Booleano. Esto
1. Evaluar todos los casos de uso (Sección 21.4.1) para es, un suceso no es la información que se intercam-
comprender totalmente la secuencia de interacción bia, es el hecho de que la información ha sido inter-
dentro del sistema. cambiada.
2. Identificar sucesos que dirigen la secuencia de inter- Un caso de uso se examina por puntos de intercam-
acción y comprender cómo estos sucesos se relacionan bio de información. Para ilustrarlo, reconsidere el caso
con objetos específicos. de uso descrito en la Sección 1 1.2.4:
3. Crear una traza de sucesos [RUM91] para cada caso 1. El propietario observa el panel de control de Hopariiepuro
(Figura 11.2) para determinar si el sistema está listo para
de uso. recibir datos. Si el sistema no está listo, el propietario debe
4. Construir un diagrama de transición de estados para cerrar físicamente ventanas y puertas de tal manera que el
el sistema. indicador de disponibilidad esté presente. [Un indicador de
374
CAPfTlJl.0 21 ANALISIS ORIENTADO A GBIETOS
no preparado implica que el sensor está abierto, por ejem- agregado jugador (en la aplicación del videojuego exa-
plo, que una puerta o ventana está abierta.] minado anteriormente) incluirá posición y orientación
2. El urouietario usa el teclado para teclear una contraseña de actual del jugador (atributos del objeto) así como otras
cuatro dígitos. La contraseña se compara con la contraseña características de jugador que son relevantes al juego
válida almacenada en el sistema. Si la contraseña es inco- (P.e.: un atributo que indique permanecen deseos magi-
rrecta, el panel de control avisará una vez y se restaurará
por sí mismo para recibir datos adicionales. Si la contrase- cos). El estado activo de un objeto indica el estado actual
ña es correcta, el panel de control espera por las acciones cuando éste entra en una transformación continua o pro-
siguientes. ceso. El objeto jugador poseerá los siguientes estados
3. El urouietario selecciona y teclea uermanecer o continuar activos: en movimiento, en descanso, lesionado, en recu-
para activar el sistema. Permanecer activa solamente los sen- peración, atrapado, perdido entre otros. Para forzar la
sores del uehetro (los sensores internos detectores de movi- transición de un objeto de un estado activo a otro debe
miento están desactivados). Continuar activa todos los ocurrir un suceso (a veces, llamado disparador). Un com-
sensores. ponente de un modelo objeto-comportamiento es una
4. Cuando ocurre la activación, el propietario puede observar representación simple de los estados activos de cada obje-
una luz ro-ia de alarma.
to y los sucesos (disparadores) que producen los cambios
Las partes de texto subrayadas anteriormente indican entre estos estados activos. La Figura 21.9 ilustra una
sucesos. Deberá identificarse un actor para cada suceso: representación simple de los estados activos para el obje-
la información que se intercambia debe anotarse. y debe- to panel de control en el sistema HogarSeguro.
rán indicarse otras condiciones o restricciones.
Como ejemplo de un suceso típico, considere la fra-
se subrayada del caso de uso propietario usa el teclado
para teclear una contraseña de cuatro dígitos. En el con- Cuondo se empiezon o identificar estodos, lo otención
texto del modelo de análisis O 0 el actor propietario se centro en los modos de Comportamiento observobles
transmite un suceso al objeto panel de control. desde el exterior. Más torde, se pueden refinor estos
El suceso puede llamarse contraseña introducida. estados en comportomientos no evidentes cuando
La información transferida son los cuatro dígitos que se observo el sistema desde el exterior.
forman la contraseña, pero ésta no es una parte esencial
del modelo de comportamiento. Es importante notar que Cada flecha en la Figura 21.9 representa una transi-
algunos sucesos tienen un impacto explícito en el flujo ción de un estado activo del objeto a otro. Las etique-
de control del caso de uso, mientras que otros no impac- tas mostradas en cada flecha representan los sucesos
tan directamente en este flujo de control. Por ejemplo. que disparan la transición. Aunque el modelo de esta-
el suceso contraseña introducida no cambia explícita- do activo aporta una visión interna muy útil de la «his-
mente el flujo de control del caso de uso, pero los resul- toria de vida» de un objeto, es posible especificar
tados del suceso comparar contraseña (derivada de la información adicional para aportar más profundidad en
interacción contraseña se compara con la contraseña la comprensión del comportamiento de un objeto. Adi-
válida almacenada en el sistema) tendrá un impacto cionalmente a especificar el suceso que provoca la ocu-
explícito en la información y flujo de control del soft- rrencia de la transición, el análisis puede también
ware HogarSeguro. especificar una guarda y una acción [CHAR93]. Una
Una vez que todos los sucesos han sido identifica- guarda es una condición Booleana, que debe satisfa-
dos, se asocian a los objetos incluidos. Los actores (enti- cerse para posibilitar la ocurrencia de una transición.
dades externas) y objetos pueden responsabilizarse de Por ejemplo, la condición de guarda para la transición
la generación de sucesos (P.e.: propietario genera el desde el estado «en descanso» al de «comparando» en
suceso contraseña introducida) o reconociendo suce- la Figura 20.9 puede determinarse a través del examen
sos que han ocurrido en otra parte (P.e.: el panel de con- del caso de uso:
trol reconoce el resultado binario del suceso comparar if (entrada de contraseña = 4 dígitos)
contraseña). then ejecutar transición al estado comparando;
Comparar contraseña
La Figura 2 1.1O ilustra una traza parcial de sucesos para
[contraseña incorrecta] el sistema Hogarseguro. Cada una de las flechas repre-
senta un suceso (derivado de un caso de uso) e indica cómo
el suceso sintoniza su comportamiento entre los objetos
de HogarSeguro. El primer suceso, sistema listo, se deri-
va del entorno exterior y sintoniza el comportamiento al
propietario. El propietario teclea una contraseña. El suce-
so inicia aviso y aviso sonoro indican cómo se canaliza el
comportamiento si la contraseña no es válida. Una con-
traseña válida provoca un retomo al propietario. Los suce-
FIGURA 21.9. Representación de la transición de estados. sos restantes y sus trazas siguen el comportamiento como
cuando se activa o desactiva el sistema.
El segundo tipo de representación de comportamiento UML utiliza diagramas de estado, de secuencia, de
para el A 0 0 considera una representación de estados colaboración y de actividades para representar el com-
para el producto general o sistema. Esta representación portamiento dinámico de los objetos y las clases iden-
abarca un modelo simple de traza de sucesos [RUM91] tificadas como parte del modelo del análisis.
que indica cómo los sucesos causan las transiciones de
objeto a objeto y un diagrama de transición de estados
que ilustra el comportamiento de cada objeto durante el
procesamiento. Sistema- Introducir
Una vez que han sido identificados los sucesos para
listo -1 contraseña 7
Iniciar sonido
un caso de uso, el analista crea una representación Y
acerca de cómo los sucesos provocan el flujo desde '
un objeto a otro. Esta representación, llamada traza 'Preparado para
1&ivación/desactivación
'
de sucesos o de sucesos, es una versión abreviada del
Activarldesactivar '
caso de uso que representa objetos clave y los suce-
sos que provocan el comportamiento de pasar de obje- sensores 'i
Sensores
to a objeto. ¡- activados/desactivados
' Petición de luz roja 1
Los métodos de A 0 0 permiten a un ingeniero del soft- los requisitos especificados por el cliente tal y como
ware modelar un problema representando las caracte- éstos afectan a la aplicación a construir.
rísticas tanto dinámicas como estáticas de las clases y El proceso de A 0 0 comienza con la definición de
sus relaciones como componentes principales del mode- casos de uso (escenarios que describen cómo se va a
lado. Como los métodos precedentes, el lenguaje unifi- utilizar el sistema). La técnica de modelado de clases-
cado de modelado UML construye un modelo de análisis responsabilidades-colaboraciones (CRC) se aplica para
con las siguientes características: (1) representación de documentar las clases y sus atributos y operaciones.
las clases y jerarquías de clases, (2) creación de mode- También proporciona una vista inicial de las colabora-
los objeto-relación, y ( 3 ) obtención de modelos objeto- ciones que ocurren entre los objetos. El siguiente paso
comportamiento. en el A 0 0 es la clasificación de objetos y la creación
El análisis de sistemas orientados a objetos se reali- de una jerarquía de clases. Los sistemas (paquetes) se
za a muchos niveles diferentes de abstracción. En los pueden utilizar para encapsular objetos relacionados.
niveles de empresa o de negocio las técnicas asociadas El modelo objeto-relación proporciona información
con el análisis se pueden conjugar con el enfoque de sobre las conexiones entre las clases, mientras que el
ingeniería del proceso de negocio. A estas técnicas a modelo objeto-comportamiento representa el compor-
menudo se las llama de análisis del dominio. En el nivel tamiento de los objetos individualmente y el global de
de implementación el modelo de objetos se centra en todo el sistema.
376
CAPfTULO 21 ANALISIS ORIENTADO A O B J E T O S
[ALH98] Alhir, S.S., UML in a Nutshell, O’Reilly & Asso- [FIC92] Fichman, R.G., y Kemerer, C.F., Object-Oriented
ciates, Inc. 1998. and Conventional Analysis and Design Methodologies,
[AMB95] Ambler, S., «Using Use-Cases», Software Deve- Computer, vol. 25, n.O 10, Octubre 1992, pp. 22-39.
lopment, Julio 1995, pp. 53-61 [FIN961Fingar, P., The Blueprint for Business Objects, Cam-
[ARA891Arango, G., y Prieto-Diaz, R., «Domain Analysis: bridge University Press, 1996.
Concepts and Research Directionm, Domain Analysis: [FIR93] Firesmith, D.G., Object Oriented Requeriments
Acquisition of Reusable Information for S o f i a r e Cons- Analysis and Logical Design, Wiley, 1993.
truction (G. Arango y Prieto-Diaz, eds.), IEEE Computer
Society Press, 1989. [JAC92] Jacobson, I., Object-Oriented S o f i a r e Engineering,
Addison-Wesley, 1992.
[BER93] Berard, E.V., Essays on Object-Oriented Software
Engineering, Addison-Wesley, 1993. [JAC99] Jacobson, I., Booch, G., y Rumbaugh, J., Unified
S o f i a r e Development Process, Addison-Wesley, 1999.
[BEN99] Beneth, S., S. McRobb y R. Farmer, Object-Orien-
ted System Analysis and Design Usign UNL, McGraw- [MAT94] Mattison, R., The Object-Oriented Enterprise,
Hill, 1999. McGraw Hill, 1994.
[B0094] Booch, G., Object-Oriented Analysis and Design, [MON92] Monarchi, D.E., y Puhr, G.I., «A Research Typo-
2.a ed., Benjamin Cummings, 1994. logy for Object-Oriented Analysis and Design», CACM,
[B0099] Booch, G., Jacobson, I., y Rumbaugh, J., The Unified vol. 35, n.O 9, Septiembre 1992, pp. 35-47.
Modeling Language User Guide, Addison-Wesley, 1999. [RUM91] Rumbaugh, J., et al., Object Oriented Modelling
[CAR98] Carmichael,A., Developing Business Objects, SIGS and Design, Prentice-Hall, 1991.
Books, 1998. [RUM99] Rumbaugh, J., Jacobson, I., y Booch, G., The Uni-
[CHA93] de Champeaux, D., D. Lea, y P. Faure, Ohject- fied Modelling Language Reference Manual, Addison-
Oriented System Development, Addison-Wesley, 1993. Wesley, 1999.
[COA911 Coad, P., y E. Yourdon, Object-Oriented Analysis, [SUL94] Sullo, G.C., Object Engineering, Wiley, 1994.
2.- ed., PrenticeHall, 1991 [TAY95] Taylor, D.A., Business Engineering with Object
[EEL98] Eeles, P,. y Simms, O., Building Business Objects, Technology, Wiley, 1995.
Wiley, 1998. [WIR90] Wirfs-Brock, R., Wilkerson, B., y Weiner, L., Desig-
[ERI98] Eriksson, H.E., y Penker, M., UML Toolkit,Wiley, 1998. ning Object Oriented Software, Prentice-Hall, 1990.
21.1. Hágase con uno o más libros sobre UML y compárelo 21.5. Escriba un caso de uso para el sistema HogarSeguro. Los
con el análisis estructurado (Capítulo 12) utilizando las dimen- casos de.uso deben tratar el escenario requerido para establecer
siones de modelado propuestas por Fichman y Kemerer una zona de seguridad. Una zona de seguridad lleva asociado un
[FIC92] en la Sección 2 1.1.1. conjunto de sensores que pueden ser accedidos,activados y desac-
tivados no individualmente sino en conjunto. Debe ser posible
21.2. Desarrolle una clase-presentación sobre un diagrama definir hasta diez zonas de seguridad. Sea creativo, pero intente
estático o dinámico de UML. Presente el diagrama en el con- mantenerse dentro de lo definido para el panel de control del sis-
texto de un ejemplo sencillo, pero intente mostrar el suficien- tema tal y como fue definido previamente en este libro.
te nivel de detalle como para demostrar los aspectos más
importantes del tipo de diagrama elegido. 21.6. Desarrolle un conjunto de casos de uso para el sistema
SSRB del Problema 12.13.
21.3. Conduzca un análisis del dominio para una de las siguien-
tes áreas: Tendrá que hacer varias suposiciones sobre la forma de
interacción del usuario con el sistema.
a) Un sistema para almacenar los expedientes de los alumnos
de una universidad. 21.7. Desarrolle un conjunto de casos de uso para alguna de
las siguientes aplicaciones:
b) Una aplicación de comercio electrónico (P.e. ropa, libros,
a) Software para un asistente personal electrónico de propó-
equipos electrónicos, etc.)
sito general.
c ) Un servicio al cliente para un banco. b) Software para un videojuego de su elección.
d) El desarrollo de un videojuego. c) Software para el sistema de climatización de un auto-
e) Un área de aplicación propuesta por su instructor. móvil.
21.4. Describa con sus propias palabras la diferencia entre las d) Software para un sistema de navegación de un automóvil.
vistas estática y dinámica de un sistema. e) Un sistema propuesto por su instructor.
377
INGENIERfA DEL SOFTWARE. UN ENFOQUE PRÁCTICO
Lleve a cabo una pequeña investigación (unas pocas horas) en 21.13. Desarrolle un modelo objeto-comportamiento para el
el dominio de la aplicación y conduzca una reunión TFEA producto o sistema elegido en el problema 21.7. Asegúrese de
(Capítulo 11) con sus compañeros para desarrollar unos requi- listar todos los sucesos, proporcionar la traza de sucesos, desa-
sitos básicos (su instructor le ayudará a coordinarlo). rrollar un diagrama de flujo de sucesos y definir diagramas de
21.8. Desarrolle un conjunto completo de tarjetas CRC del estado para cada clase.
producto o sistema elegido en el problema anterior.
21.14. Describa con sus propias palabras la forma de deter-
21.9. Dirija una revisión de las tarjetas CRC con sus colegas.
¿Cuántas clases, responsabilidades y colaboraciones adicio- minar los colaboradores de una clase.
nales ha añadido a consecuencia de la reunión? 21.15. ¿Qué estrategia propondría para definir subsistemas en
21.10. Desarrolle una jerarquía de clases para el producto o colecciones de clases?
sistema elegido en el Problema 21.7.
21.16. ¿Qué papel desempeña la cardinalidad en el desarrollo
21.11. Desarrolle un conjunto de subsistemas (paquetes) para
de un modelo objeto-relación?
el producto o sistema elegido en el Problema 21.7.
21.12. Desarrolle un modelo objeto-relación para el producto 21.17. ¿Cuál es la diferencia entre los estados pasivo y activo
o sistema elegido en el Problema 21.7. de un objeto?
Los casos de uso forman la base del análisis orientado a obje- Douglas, B., Real-Time UML: Developing Eflcient Objects
tos, sin importar el método de A 0 0 elegido. Los libros de for Embedded Systems, Addison-Wesley, 1999.
Rosemberg y Scott (Use case driven Object modelling with Fowler, M., y Kendall Scott, UML Distilled, 2." ed., Addison-
UML: a practica1 approach, Addison-Wesley, 1999), Schnei- Wesley, 2000.
der, Vinters y Jacobson (Applying Use Cases: A Practica1 Gui-
de, Addison-Wesley, 1999), y Texel y Williams (Use Cases Larman, C., Applying UML and Patterns: un Introduction to
Combined WithBoochlOMTIUML: Process and Products,Pren- Object Oriented Analysis, Prentice-Hall, 1997.
tice-Hall, 1997) proporciona una guía para la creación y uso Odell, J.J., y Fowler, M., Advanced Object Oriented Analy-
de esta importante herramienta de obtención de requisitos y sis and Design Using UML, SIGS Books, 1998.
mecanismo de representación. Ostereich, B., Developing Software with UML: Object Orien-
Casi todos los libros publicados recientemente sobre aná- ted Analysis and Design in Practice, Addison-Wesley, 1999.
lisis y diseño orientado a objetos ponderan UML. Todos los
que están considerando en serio aplicar UML en su trabajo, Page-Jones, M., Fundamentals of Object-Oriented Design in
UML, Addison-Wesley, 1999.
deberían comprar [B0099], [JAC99] y [RUM99]. Además
Stevens, P., y Pooley, R., Software Engineering with
de estos, los siguientes libros también son representativos de
Objects and Components, Addison-Wesley, 1999.
las docenas de ellos escritos sobre la tecnología de UML:
En Intemet hay gran cantidad de fuentes de información sobre
Douglas, B., y Booch, G., Doing Hard Time: Developing Real- análisis orientado a objetos y temas relacionados. Una lista actua-
Time Systems with UML, Objects, Frameworks and Pat- lizada sobre las referencias web relevantes de cara al análisis
terns, Addison-Wesley, 1999. orientado a objetos la encontrará en http://www.pressman5.com
378