Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Nombre I IpapeldeA
papeldeBI
I dela clase Clase A
L-_-----'
Clase B
Nombre de la clase
atributo:1ipo = Valorlnicial Multiplicidades
operadn(lista argumentos):
tipo de devolucin ~ exactamen te
~=o
Generalizacin ~ muchos~
~(ce roomas)
~opcional
~ (cero o uno)
~agregaci6n
~compOSiCin
Restriccin
(descripcin de la condicin) I Clase I{OrdenadOI '" papel ordenado
Estereotipo
<<nombre del estereotipo> Asociacin calificada
Nota
Navegabilidad
nombtedelpa~
Objeto ~
Dependencia
I"m.-Nom'"!' "..1 IClase A ~-_._- mm.?j Clase 8 I
Diagrama de clases: interfaces r-- - --,
~
...............j
Nomb~ de la in terfaz
dependencia
'-------- ----'
Diagrama de clases:
clase parametrizada Diagrama de actividad
clase de plantil1~
, ,t i
E~--r
elemento enlazado
Clase de asociacin
~
UML gota a gota
UML gota a gota
Martin Fowler
con
Kendall Seott
TRADUCCIN,
Jaime Gonzlez V.
Especialista en anlisis y diseo de sistem as
REVISIN TCNICA,
Dr. Gabriel G uerrero
Facultad de Ciencias de la Universidad Nacional
Au tnoma de Mxico
Doctorad o en Matemticas, Pars VI, Francia
Consullor en saXsa
'OWLER.1'IIART,",~
UM L golaagola
Addison Wa fer longman de Mxico. S.A. de C.V.
}'lhico.l999
ISBN: 968-444--364- 1
Maleria:Complllacin
Versin en espaol de la obra titulada UML Distilfed. de Martin Fowler, pubncada originalmente en ingls por Addison Wesley
longman, Inc., Reading, Massachusetts, E.U.A.
Edicin en espaol:
Editor: Pablo Eduardo Roig Vzquez
Supervisor de traduccin: Teresa Sanz
Supervisor de produccin: Selene Corona Vallejo
Diseador de portada: Juan Bernardo Rosado
Edicin en Ingls:
Executive Editor: J. Caner Shanklin
Assisant Editor: Angela Buenning
ProjectManager:SarahWeaver
Copyelfrtor: Mene Riehman
Proofreaoor: Maine Proofreading Serviees
Indel( and Composition: Kendall Scon
Cover Desing: Simone Paymenl
E] prstamo, alquiler o cualquier olra forma de cesin de uso de este ejemplar requerir tambin la autorizacin del editor
de sus representanles.
ISBN 968-444-3641
1234567890 0302010099
Contenido
ndice ........197
Figuras
Reconocimientos
Publicar el presente volumen a la velocidad que se hizo requi ri de
mucha ayuda de parte de personas que fuero n ms aU del esfu erzo
normal que se invierte en estos casos y para poder hacer todo de ma-
nera mucho ms rpida.
Kendall Scott tu vo un papel importante conjuntando el materi al y tra-
bajando sobre el texto y las grficas.
Los tres amigos, Grady Booch, Ivar Jacobson y Jim Rumbaugh, han
proporcionado abundante apoyo y consejos. Hemos gastado muchas
horas en ll amadas transcontinentales, y han mejorado en mucho la
obra (as como mi comprensin del UML).
PREFACIO ....
Marfi" F01l.l/er
Me/rose, Mussac1lllsefts
Mnyo de 1997
mart iIlJow[er @compuserve.colll
Captulo 1
Introduccin
Qu es el UML?
El lenguaje unHicado d e modelado o UML (Unified Modelillg
lIIguage) es el sucesor de la oleada de mtodos de anlisis y diseo
orientados a objetos (OOA&D) que surgi a finales de la d cada de
1980 y principios de la siguiente. El UML unifica, sobre todo, los
mtodos de 800ch, Rumbaugh (OMT) y Jacobson, pero su alcance
llegar a ser mucho ms amplio. En estos momentos el UML est
en pleno proceso de estandarizacin con el OMG (Object Mallagemell'
Group o Grupo de administracin de objetos) y estoy seguro de que se
convertir en el lenguaje de modelado estndar del futuro.
Decimos, pues, que el UML es un lenguaje de modelado, y no un
mtodo. La mayor parte de los mtodos consisten, al menos en prin-
cipio, en un lenguaje y en un proceso para modelar. El lenguaje de
modelado es la notacin (pri ncipalmente grfica) de que se valen los
mtodos para expresar los d.isenos. El proceso es la orientacin que
nos dan sobre los pasos a seguir para hacer el diseo.
Las partes que tratan sobre el proceso en muchos libros de mtodos
son ms bien esquemticas. Ms an, considero que la mayora de las
personas que dicen estar usando un mtodo estn usando en realidad
un lenguaje de modelado, pero rara vez siguen el proceso. As pues,
en gran medida el lenguaje de modelado es la parte ms importante
CAPITULO 1 .. INTRODUCCIN
Los libros de Jim Odell, escritos junto con James Martin, se basan
en su amplia expe riencia en los sistemas de informacin de nego-
cios y de ingeniera de informacin. El resultado fue el libro ms
conceptual de todos. Vase Martin y Odell (1994 y 1996).
Ivar Jacobson escribi con base en la experiencia adquirida en con-
mutadores telefnicos para Ericsson e introdujo en el primero de
sus libros el concepto de casos de uso (use cases). Vase Jacobson
(1994 y 1995).
Cuando me preparaba para viajar a Portland y asistir a la OOPSLA '94-
el panorama relativo a los mtodos se vea muy d ividido y compe-
tido. Cada uno de los autores antes mencionados diriga informal-
mente un grupo de profesionales que estaban de acuerdo con sus
ideas. Todos estos mtodos eran muy similares; sin embargo, tenan
entre s gran cantidad de diferencias menores, con frecuencia incmo-
das. Los mismos conceptos bsicos aparecan con denominaciones
muy diferentes, lo cual confundIa a mis clientes.
v CApTULo 1 l' I NTRODUCCiN
ms serio que los anteriores por resolver los problemas en esa rea
de los mtodos. Como directora del proyecto fue designada Mary
Loomis; ms tarde, Jim Odell se uni como codirector y asumi el
liderazgo del proyecto. Odell dej muy claro que estaba dispuesto a
renunciar a su mtodo por un estndar, pero no quera que Rational
impusiera el suyo.
En enero de 1997, varias organizaciones entregaron sus propuestas de
estandarizacin de mtodos, con el fin de simplificar el intercambio
de modelos. Estas propuestas se enfocan en un metarnodelo y en una
..notacin opcional. Corno su propuesta al OMG, la Rational liber la
versin 1.0 de la documentacin del UML.
Mientras escribo estas lneas, Jim Odell y el grupo OMG han dedicado
mucho tiempo a la elaboracin de la semntica del UML y a la armo-
nizacin de las diversas propuestas. Ahora tenemos una propuesta
nica del UML 1.1, que cuenta con amplio apoyo de la industria.
Notaciones y metamodelos
En su condicin actual, el UML define una notacin y un metamodelo.
La notacin es el material grfico que se ve en los modelos; es la sin-
taxis del lenguaje de modelado. Por ejemplo, la denominacin de un
diagrama de clases define cmo se representan conceptos y temas
como clase, asociacin y multiplicidad.
Por supuesto, esto nos lleva a la pregunta de qu significan exacta-
mente asociacin, multiplicidad e, incluso, clase. Por el uso comn se
infieren algunas definiciones informales, pero es mucha la gente que
exige definiciones m s rigurosas.
En el campo de los mtodos formales prevalece la idea de contar con
lenguajes de especificacin y diseo rigurosos. En tales tcnicas, los
diseos y las especificaciones se representan usando alguna deri-
vacin del clculo de predicados. Tales definiciones son matemtica-
mente rigurosas y no permiten la ambigedad . Sin embargo, el vaJor
de dichas definiciones no es de ninguna manera universal. Inclu so,
cuando se puede probar que un programa satisface una especificacin
CAPITULO 1 y INTRODUCON
Apre ndizaje de 00
Mucho se habla de la rurva de aprendizaje asociada a la 00, el infame
cambio de paradigmas. De algn modo, cambiar a 00 es fcil. En
otros sentidos, hay cierto nmero de obstculos cuando se trabaja con
objetos, particularmente si se quieren usar en la forma ms ventajosa.
No es que sea difcil aprender a programar en un lenguaje OO. El pro-
blema es que es necesario cierto tiempo para aprender a aprovechar
las ventajas que contiene el lenguaje orientado a objetos. Como lo
expresa muy bien Tom Hadfield: los lenguajes de objetos permiten
ventajas pero no las proporcionan. Para aprovechar estas ventajas hay
que realizar el infame cambio de paradigma. (Slo asegrese de estar
sentado al momento de hacerlo!)
flujo de trabajo (workflow processes) son una parte importante del mun-
do de los usuarios. Dado que los diagramas de actividades manejan
procesos paralelos, pueden ayudarle a usted a deshacerse de secuencias
innecesarias. La forma en que estos diagramas dejan de poner nfasis
en los vnculos con las clases, las cuales pueden ser un problema en el
diseo poste rior, es una ventaja durante esta etapa ms conceptual
del proceso de desarrollo.
Un bosquejo del
proceso de desarrollo
Concepcin
La concepcin puede adoptar muchas formas. Para algunos proyectos
ser, quiz, una pltica frente a la cafetera automtica: "Piensa Cmo
podemos poner nuestro catlogo de servicios en la Web." Para proyec-
tos mayores, podra ser un amplio estudio de factibilidad que tardara
meses.
Durante la etapa de concepcin, se definir la siruacin econmica del
proyecto: cunto cos tar aproximadamente y cu nto redituar .
Tambin se necesita r tener una idea del alcance del proyecto. Tal vez
haga falta cierto trabajo de anlisis inicial para tener una idea de la
magnitud del proyecto.
Trato de no darle demasiada importancia a la concepcin. La concep-
cin debe consis tir en trabajar durante algunos dias para determinar
si vale la pena dedicar algunos meses de mayor investigacin durante
la elaboracin (vase ms adelante). En este momento, el patrocinador
del proyecto no se compromete ms que a una seri a mirada al mismo.
Elaboracin
De esta manera, usted ya tiene luz verde para inici ar un proyecto. En
esta etapa, lo normal es que s6lo posea una vaga idea de los requeri-
mientos. Por ejemplo, podr decir lo siguiente:
ELABORACIN
Base arquitectnica
Un importante resultado de la elaboracin es que se cuenta con una
base arquitectnica para el sistema. Esta arquitectura se compone de:
La lista de casos de uso, que le dice cules son los requerimientos.
El modelo del dominio, que contiene lo que usted ha entendido
sobre el negocio y sirve de punto de partida para las clases clave
del dominio.
La plataforma ternolgica, que describe las partes clave de la tec-
nologa de implementacin y la manera como se acoplan.
Esta arqui tectura es el cimiento del desarrollo y funciona como
anteproyecto de las etapas posteriores. Los detalles de la arquitectura
cambiarn inevitablemente, sin que tenga que sufrir, sin embargo,
muchos cambios importantes.
Sin embargo, la importancia de una arquitectura estable vara con la tec-
nologa. En Smalltalk es posible efectuar cambios arquitectnicos signi-
ficativos con mucha ms facilidad, gracias a la rapidez con que suceden
los ciclos edicin-ejecudn y a que no se requiere de una especifica-
cin estricta de los tipos de datos. Esto permite que la arquitectura sea
T C APiTULO 2 '1' U N BOSQUEJO DEL PROCESO DE DESARROLLO
La planificacin
La esencia de un p lan es establecer una serie de iteraciones para la
construccin y asignar los casos de uso a las iteraciones.
El plan se termina cuando todos los casos de uso han sido asignados
a una iteracin y cuando se ha identificado la fecha de inicio de todas
las iteraciones. El plan no entra en mayores detalles.
El primer paso es clasificar los casos de uso por categora.
Los usuarios debern indicar el nivel de prio ridad de cada caso de
uso. Por mi parte, suelo emplear tres niveles.
- "Es indispensable tener esta funci n en cualquier sistema."
-" Puedo vivir sin esta funci n por breve tiempo."
-"Es una funcin importante, pero puedo sobrevivir sin ella durante
un rato. "
Los desarrolladores debern considerar el riesgo arquitectnico
asociado con cada caso de uso, el cual consiste en que, si el caso de
uso se deja de lado hasta muy avanzado el proyecto, el trabajo
anterior se ver muy comprometido, lo que resulta r en una gran
ELABORACIN
Construccin
La construccin confecciona el sistema a lo largo de una serie de itera-
ciones. Cada iteracin es un mini proyecto. Se hace el anlisis, diseo,
codificacin, pruebas e integracin de los casos de uso asignados a cada
iteracin. sta termina con una demostracin al usuario y haciendo
pruebas de) sistema con el fin de confirmar que se han construido
correctamente los casos de uso.
El propsito de este proceso es red ucir el riesgo. Los riesgos surgen
con frecuencia debido a que las cuestiones difciles se posponen para
el final del proyecto. He visto proyectos en los que la prueba y la inte-
gracin se dejan para el fina l. Las pruebas y la integracin son tareas
mayores y generalmente tardan ms de lo que se cree.
Fred Brooks estimaba, aU en la poca del 0 5 / 360, que la mitad del
tiempo de un proyecto se iba en pruebas (con la inevitable depura-
cin). Las pruebas y la in tegracin son ms d ifciles cuando se dejan
para el fina l, y son ms desmoralizadoras.
Todo este esfu erzo va acompaado de un gran riesgo. Con el desarrollo
ite rati vo, se Lleva a cabo todo el proceso para cada iteracin, lo que
produce el hbito de lidiar con todos los aspectos cada vez.
Cuanto ms envejezco, ms agresivo rne vuelvo en 10 que respecta a
las pruebas. Me gusta la regla emp"ica de Kent Beck que afirma que
un desarrollador debera escribir cuando menos la misma cantidad de
cdigo de pruebas que de produccin.. El p roceso de p ruebas debe ser
continuo. No se debe escribir ningn cdigo hasta saber cmo probarlo.
Una vez escrito, haga sus pruebas. Hasta que stas funcionen, no se
podr considerar que se haya terminado de escribir el cdigo.
T CAPfTULO 2 .. U ' BOSQUEJO DEL PROCESO DE DESARROLLO
Reestrllchlracin de factores
Se ha topado alguna vez con el principio de la entropa de soft-
ware? Este principio sugiere que los programas comienzan en un
estado de buen diseo pero, a medida que se aade cdigo para
nuevas funciones, gradualmente van perdiendo su estructura, de-
formndose de tal modo que acaban como una masa de espagueti.
Parte de este hecho se debe a la escala. Se escribe un programa
pequeo que hace bien un trabajo espefico. Luego se pide mejo-
rar el programa, por lo que se vuelve ms complejo. Esto puede
suceder incluso cuando se lJeva el registro del diseo.
Una de las razones por las que surge la entropa en el software es
que, cuando se aade una funcin al programa, se construye encima
del programa existente, con frecuencia de una manera para la que
no estaba diseado. En tal situacin, se puede redisear el progra-
ma existente para que maneje mejor los cambios, o bien adecuar
esos cambios al cdigo que se aada.
Aunque tericamente es mejor redisear el programa, este proce-
dimiento por lo general cuesta ms trabajo, ya que cualquier rees-
critura de su programa generar nuevas fallas y problemas.
Recuerde el viejo adagio de la ingeniera: "si no est descompuesto,
no lo arregle!". Sin embargo, si no redisea su programa, las adi-
ciones sern ms complejas de lo que deberan.
A la postre, esta complejidad extra tendr un alto costo. Por tanto,
existe un intercambio de una cosa por otra: el rediseo provoca
molestias de corto plazo a cambio de una ganancia a largo plazo.
Comprendiendo lo que es la presin sobre Jos calendarios de tra-
bajo, la mayora de las personas prefieren posponer las molestias
para el futuro.
La reestructuracin de factores es un trmino que describe tcni-
cas con las que se reducen las molestias a corto plazo del rediseo.
Cuando se reestructuran los factores, no cambia la funcionalidad
del programa; lo que se hace es cambiar su estructura interna, a
fin de simplificar su lectura y su modificacin.
" CAPTUlO 2 ~ UN BOSQUEJO DEL PROCESO DE DESARROLLO
Cundo reestructurar
La reestructuracin de factores es una tcnica que no se aprovecha
suficientemente. Apenas ha comenzado a ser reconocida, en espe-
cial en la comunidad de SmalltaIk. Creo, sin embargo, que se trata
de una tcnica clave para mejorar el desarrollo del software en
cualquier medio ambiente. Asegrese de que entiende la manera
de llevar a cabo la reestructuracin de manera disciplinada. Una
forma de lograrlo es que su tutor le ensee las tcnicas.
Patrones
Transicin
De lo que se trata en el desarrollo iterati vo es de hacer todo el proceso
de desarrollo consistentemente, de tal modo que el equipo del desa-
rroUo se acostumbre a entregar cdigo terminado. Pero hay varias
cosas que no deben hacerse demasiado pronto. Un ejemplo primor-
dial es la optimizacin.
La optimizacin red uce la claridad y la capacidad de ampliacin del
sistema con el objeto de mejorar el desempeo. fsta es una concesin
necesaria; a fin de cuentas, un sistema debe ser lo suficientemente
rpido para sa tisfacer las necesidades de los usuarios, pero la optimi-
zacin demasiado temprana hace ms complicado el desarrollo. As
que esto es algo que ha de dejarse para el final.
Durante la transicin, no se hacen desarrollos para aadir funciones
nuevas (a menos que sean pequeas y absolutamente indispensables).
Ciertamente, s hay desarrollo para depuracin.
Un buen ejemplo de una fase de transicin es el tiempo entre la libe-
racin beta y ]a liberacin definiti~va del producto.
1 ~
A~
Actores
Empleamos el trmino actor para llamar as al usuario, cuando desem-
pea ese papel con respecto al sistema. Hay cuatro actores en la
figura 3-1: el gerente de comercio, el comerciante, e l agente de ventas
y el sistema de contabilidad.
En la mencionada organizacin, probablemente habr diversos comer-
ciantes. Adems, un usuario puede desempear v arios papeles. Por
ejemplo, un comerciante d e edad madura podra desempear el papel
de gerente de comercio y adems ser un comerciante normal Por otra
parte, un comerciante puede ser tambin agente de ventas. Cuando se
trata con actores, conviene pensar en 105 papeles, no en las personas
ni en los ttulos de sus puestos.
DIAGRAMAS DE CASOS DE USO
Los actores llevan a cabo casos de uso. Un mismo actor puede realizar
muchos casos de uso; a la inversa, un caso de uso puede ser realizado
por varios actores.
En la prctica, considero que los actores son muy tiles cuando se trata
de definir los casos de uso. Al enfrentarse con un sistema grande, puede
ser difcil obtener una lista de casos de uso. Es ms fcil en tales situa-
ciones definir la lista de los actores y despus tratar de determinar los
casos de uso de cada actor.
Obsrvese que no es necesario que los actores sean seres humanos, a
pesar de que los actores estn representados por figuras humanas en
el diagrama del caso de uso. El actor puede ser tambin un sistema ex-
terno que necesite cierta informacin del sistema actual En la figura
3-1 se puede apreciar la necesidad de actualizar las cifras del sistema
de contabilidad.
El tema de las interacciones con sistemas externos produce mucha
confusin y variaciones de estilo entre los usuarios de los diagram as
de casos de uso.
1. Algunos sienten que todas las interacciones con sistemas remotos
deben aparecer en el diagrama. Por ejemplo, si se necesita acceder
a Reuters con el fin de cotizar un contrato, se deber mostrar el
vnculo entre el caso Negocia precio y Reuters.
2. Algwlas personas consideran que slo se deben mostrar los casos
de uso con interaccin externa, cuando quien inicia el contacto es
otro sistema. Segn esta regla, slo se mostrara el caso de uso del
sistema de contabilidad si dicho sistema invocara algtlfl proceso
que le dijera al sistema fuente que lo hiciera.
3. Algunas personas consideran que slo se deben mostrar los actores
del sistema cuando ellos sean los que necesiten el caso de uso. Por
tanto, si el sistema genera cada noche un archivo que despus es
recogido por el sistema de contabilidad, entonces ste es el actor
que corresponde, de~ido a que es quien necesita el archivo generado.
4. Otros ms sienten que constituye un enfoque equivocado conside-
rar que un sistema es un actor. Por el contrario, consideran que un
actor es un usuario que desea algo del sistema (por ejemplo, un ar-
CAPfTULO 3 T L os CASOS DE USO
Uses yextends
Adems de los vnculos entre los actores y los casos de uso, hay otros
dos tipos de vnculos en la figura 3-1. ~stos representan las relaciones
de uses (usa) y extends (extiende) entre los casos de uso. Con frecuen-
cia, ta les relaciones son fu ente de confusin para quienes mezclan los
significados de ambos conceptos, de modo que tmese el tiempo
necesario para comprenderlos.
Se usa la relacin exlends cuando se tiene un caso de uso que es similar
a otro, pero que hace un poco ms.
CAPITuLo 3 .. Los CASOS DE USO
Diagramas de clase:
fundamentos
Pedido
fechaRedb ido Multiplicidad: obligatoria
prepagado ~ Cliente
cantidad: String I ______---~lW;;;;;;;;;;~==---l
precio: Dinero 1- / nombre
direcdn
despachaO
cierraQ Asociacin ca1ificacinCrditoO : String
. :.<
Restncc",n
1 GeneraJiZacin ~~ '-
Clase
~ Isi PedidO.ruenle.calificacinCrdito
es "pobre", entonces Pedido.prepagaclo
debe ser verdaderol
r I
Cliente corporativo
Atributos ----...... nombreContacto
calificacinCrdito
II Cliente
personal
' ta*ta0dito
II
limiteCrdito
recuerdaO lca1ificaci6nCrdito{) =
Nombre
del papel _.--- ~:~~:~= Empleado opcional
Multiplicidad:
artculos ~ variosvalores
delinea
Lnea de pedido
cantidad: Inleger
recio: Dinem
~tisfecho : Soolcan
1~
Perspectivas
Antes de empezar a describir los diagramas de clase, quisiera sealar
una importante sutileza sobre el modo en que se usan. Tal sutileza
generalmente no est documentada, pero tiene sus repercusiones en el
modo en que debe interpretarse un diagrama, ya que se refiere a lo
que se va a describir con un modelo.
Siguiendo la recomendacin de Steve Cook y JOM Daniels (1994),
considero que hay tres perspectivas que se pueden manejar al dibu-
jar diagramas de clase (o, de hecho, cualquier modelo, aunque esta
divisin se advierte de modo especial en relacin con los di agra mas
de clase).
Conceptual. Si se adopta la perspectiva conceptual, se dibuja un
diagrama que represente los conceptos del dominio que se est
estudiando. Estos conceptos se relacionan de manera natural con las
clases que los implementan, pero con frecuencia no hay una corre-
lacin directa. De hecho, los modelos conceptuales se deben dibujar
sin importar to casi) el software con que se implementarn, por lo
cual se pueden considerar como independientes del lenguaje.
(Cook y Daniels llaman perspectiva esencial a esto; por mi parte,
empleo el t rmino "conceptual", pues se ha usado durante mucho
tiempo.)
Asociaciones
La figura 4-1 muestra un modelo de clases simple que no sorprender
a nadie que haya trabajado con un proceso de pedidos. Describir sus
partes y hablar sobre las maneras de interpretarlas, desde las distin-
tas perspectivas.
CAPfTULO 4 T DIAGRAMAS DE CLASE: FUNDAMENTOS
Booell
(1 ' ed.)
ffi-----4]] ~ ffi-----4]] ffi-------iID
Booeh
(2'ed.)'
ffi-----4]] ~ ~ ~
Jaeobsoll .... ~ ~
A B ~
A B ~
A B
Martin/
OdeU ffi---tHID IM-----l@l ~ IAJ----o@
SllIaer/
Mellor ~ ~ ~ ~
Pedido
fechaRecibido
prepagado Cliente
cantidad: String
precio: Dinero nombre
despachaO /
Navegabilidad
direcdn
calicacinCrditoO : String
cierraO
\,\
(si Pedid~.cliente.calicacinCrdito
es "pobre", entonces Pedido.prepagado
debe ser verdadero)
I
Cliente corporativo
I I
nombreContacto
calificadnCrdito
I pmonol
Oiente
1 #tarjetaCrdto 1
ImiteCrdito
recuerdaO !calificacinCrditoO =
facturacinMes(Entero) " pobre")
rep=:n:ban,e
ventas
.0..1
Empleado
artculos
de lnea
lnea de rdenes
cantidad : lnteger
precio: Dinero
atisfecho : Boclean
1~
Atributos
Los atributos son muy parecidos a las asociaciones.
Desde un nivel conceptual, el atributo de nombre de un Cliente indi-
ca que los Clientes tienen nombres. Desde el nivel de especificacin,
este atributo indica que un objeto Cliente puede decir su nombre
y tiene algn modo de establecer un nombre. En el nivel de imple-
mentacin, un Cliente tiene un campo (tambin llamado variable de
instancia o miembro de datos) para su nombre.
Operaciones
Las operaciones son los procesos que una clase sabe llevar a cabo. Evi-
dentemente, corresponden a los mtodos sobre una clase. En el nivel
de especificacin, las operaciones corresponden a los mtodos pblicos
sobre un tipo. En general, no se muestran aquellas operaciones que
simplemente manipulan atribu tos, ya que por lo comn, se pueden
inferir. Sin embargo, tal vez sea necesario indicar si un atributo dado
es de slo lectura o est inmutable congelado (esto es, que su valor
nunca cambia). En el modelo de implementacin, se podran mostrar
tambin las operaciones privadas y protegidas.
La sintaxis del UML completa para las operaciones es
visibilidad nombre (lista -de-parmetros) : expresi611-tipo-de-dato-a-regresar
{cndena-de-propiedades}
donde
visibilidad es + (public), # (protected), 0- (private)
nombre es una cadena de caracteres (string)
lista-dE-parmetros contiene argumentos (opcionales) cuya sintaxis
es la misma que la de 105 atributos
expresi,,-tipo-de-dato-a-regresar es una especificacin opcional de-
pendiente del lenguaje
cadella-de-propiedades indica valores de propiedad que se aplican a
la operacin dada
Un ejemplo de operacin sera: + IltimaCalltidadDe (valorTipoFen6me-
110) : Calltidad
Dentro de los modelos conceptuales, las operaciones no deben tratar
de especificar la interfaz de una clase. En lugar de ello, debern indi-
car las principales responsabilidades de dicha clase, usando tal vez un
par de palabras que sinteticen una responsabilidad de CRC (vase el
recuadro).
CAPITULO 4 DIAGRAMAS DE CLASE: FUNDAMENTOS
Tarjetas de eRe
A fines de la dcada de 1980, uno de los centros ms grandes de
tecnologa de objetos era el laboratorio de investigacin de Tektro-
nix, en Portland, Oregon, Estados Unidos. Este laboratorio tena
algunos de los principales usuarios de Smalltalk y muchas de las
ideas clave de la tecnologa de objetos se desarrollaron allf. Dos de
sus programadores renombrados de SmalltaLk e ran Ward Cun-
ningham y Kent Beck.
Tanto Cunningham como Beck estaban y siguen preocupados por
cmo ensear los profundos conocimientos de Smalltalk que haban
logrado. De esta pregunta sobre cmo ensear objetos surgi la
sencilla tcnica de las tarjetas de Clase-Responsabilidad-Colabora-
cin (CRe).
Respons~ilidad Colaboracin
Generalizacin
Un ejemplo caracterstico de generalizacin comprende al personal y
las corporaciones dientes de una empresa. Unos y otros tienen dife-
rencias, pero tambin muchas similitudes. Las similitudes se pueden
colocar en una clase general Cliente (el supertipo) con los subtipos
siguientes: Cliente personal y Cliente corporativo.
Este fenmeno tambin est sujeto a diversas interpretaciones, segn
el nivel de modelado. Por ejemplo, conceptualmente, podemos decir
que el Cliente corporativo es un subtipo de Cliente, si todas las instan-
cias de Cliente corporativo, tambin son, por definicin, instancias de
CAPITULO 4 ... DIAGRAMAS DE CLASE: FUNDAMENTOS
Reglas de restriccin
Una buena parte de lo que se hace cuando se dibuja un diagrama de
clase es indicar las condiciones limitantes o restricciones.
La figura 4-3 indica que un Pedido nicamente puede ser colocado por
un solo Oiente. El diagrama implica tambin que Artculos de linea se
considera por separado: digamos 40 adminculos de color marrn, 40
adminIculos azules y 40 adminculos rojos, y no 40 artefactos rojos, azu-
les y marrones. El diagrama dice, adems, que los Clientes corporativos
tienen lmites de crdito, pero que los Clientes personales no los tienen.
Los artifici os bsicos de la asociacin, el atributo y la generalizacin,
colaboran de manera significativa con la especificacin de condiciones
importantes, pero no pueden indicarlas todas. Estas restricciones an
necesitan ser captadas; el diagrama de clase es un lugar adecuado
para hacerlo.
El UML no define una sintaxis estricta para describir las restricciones,
aparte de ponerlas entre llaves ({J). Yo prefiero escribir en lenguaje
informal, para simplificar su lectura. Puede usarse tam~in un enun-
ciado ms formal, como un clculo de predicados o alguna derivada.
Otra alternativa es escribir un fragmento de ccligo de programacin.
Idealmente, las reglas se deberan implementar como afirmaciones en
el lenguaje de programacin. stas se corresponden con el concepto
de invariantes del Diseo por contrato (vase el recuadro). En lo
personal, soy partidario de crear un mtodo revisa l nvariallfe e invocar-
lo desde algn cdigo de depuracin que ayude a comprobar los
invariantes.
CAP[TUlO 4 DlAGRAMAS DE CLASE: FUNDAMENTOS
Diagramas de
clase: conceptos
avanzados
Los estereotipos
La idea de los estereotipos fu e acuada por Rebecca Wirfs-Brock
(Wirfs-Brock el al., 1990). El concepto ha sido adoptado con entusiasmo
por los inventores del UML, aunque de un modo que en realidad
no significa lo m ismo. Sin embargo, ambas ideas son valiosas.
La idea original de un estereotipo se refera a una clasificaci n de alto
ni vel de un objeto que d iera alguna indicacin del tipo de objeto que
era. Un ejemplo es la diferencia entre un "controlador" y un "coordi-
nador" .
Con frecue ncia se encuentran diseos 00 en los que una clase parece
hacer todo el trabajo, muchas veces por medio de un gran mtodo
hazlo (dolt), mientras que las dem s clases no hacen otra cosa ms que
encapsular datos. ste es un diseo pobre, pues significa que el con-
trolador es muy com plejo y difcil de manejar.
Para mejorar esta situacin, se traslada el comportamiento del contro-
lador a los objetos de datos relativa mente tontos, de modo que stos
se vuelven ms inteligentes y adquieren responsabilidades de ms alto
ni vel. As, el controlador se convierte en un coordinador. El coordina-
dor es el encargado de disparar tareas en una secuencia particular,
pero otros objetos son los que saben cmo desempei'iarlas.
La esencia del estereotipo consiste en que sugiere ciertas responsabili-
dades generales de una clase. El UML ha adoptado este concepto y lo
ha convertido en un mecani smo general de extensin del lenguaje
mismo.
En su trabajo original (1994), Jacobson cl asifica todas las clases de un
sistema en tres categoras: objetos de interfa z, objetos de control y ob-
jetos de entidad (sus objetos de control, cuando estn bien diseilados,
son parecidos a los coordinadores de Wirfs-Brock). Jacobson sugiri
reglas para la comunicacin entre estos tipos de clases y les dio a cada
una de ellas un icono diferente. Esta distincin no es una parte medu-
lar del UML. Al contrario, este tipo de cl ases constituye en realidad
estereotipos de clases; de hecho, son estereotipos, e n el sentido que
Wirfs-Brock le da al trmino.
CLASIFICACIN MLTlPLE y DINMICA
Agregacin y composicin
U n a de las cosas ms aterradoras del modelado es la agregacin. s-
ta es fcil d e explicar con pocas palabras: la agregacin es la relacin
de componente. Es como d ecir que un a utomvil tiene como compo-
nentes motor y ruedas. Esto s uena muy bien, pero la parte difcil es
determinar cul es la diferencia entre agregacin y asociacin.
Polgono
atado:
Atado de
1 I
grficos
lordenado}
3.:
I Punto I
Figura 5-4: Notacin alterna para la composicin
ASOClACIONFS y ATRiBUTOS DERIVADOS
componentes Cuenta
(jerarqua)
I balance:Dinero
Obsrvese 10 siguiente:
Los objetos de entrada estn conectados a Cuentas detalladas.
El balance de una Cuenta se calcula como la suma de las canti-
dades de Entrada.
Las entradas de una Cuenta resumida son las entradas de sus com-
ponentes, determinados de manera recurrente.
Ventana de
Windows
- alFrenteO
Velltalla alFondoQ
(abstracto)
::}-
Ventana
d.Xli
alFrellteO
alFolldo()
- alFrenteO
alFondoO
Dependencia Ventana
deMac
- alFrenteQ
alFondoO
Refinamiento
Diltalnpul
Dependencia
InputStream
Congelado
Congelado (frozen) es una restriccin que, segn la define el UML, se
aplica a los papeles, pero tambin puede aplicarse a los atribu tos y a
las clases.
Cuando se aplica a una clase, congelado indica que todas las funcio-
nes y atributos asociados con esa clase estn congelados.
Clasificacin y generalizacin
Con frecuencia, oigo a las personas referirse a la subtipificacin como
la relacin d e "es un". Le recomiendo muy encarecidamente tener cui-
dado con esta manera de pensar. El problema es que la frase "es un"
puede significar cu estiones diferentes.
Asociaciones calificadas
Una asociacin calificada es el equivalente en UML de un concepto
de programacin que se conoce de diferentes modos: arreglos asocia-
tivos, mapas y diccionarios.
~ProductO-------------~::~::~~~~~
~ artrcu10delnea
Class Pedido {
priva t.e Dict.ionary ~art.iculosLineai
Clase de asociacin
Las clases de asociacin permiten aadir atributos, operaciones y otras
caractersticas a las asociaciones, como se muestra en la figura 5-U.
patrn
0..1
y Crase de asociacin
El diagrama nos permite apreciar que una Persona puede trabajar para
una sola Compaia. Necesitamos conservar la informacin sobre el
periodo de tiempo que trabaja cada empleado para cada Compaia.
Para lograrlo, aadimos un atributo de "tervaloFeclms a la asociacin.
Podramos agregar este atributo a la clase Persona, pero, en realidad,
es un hecho sobre la relacin entre una Persona y una Compaia, la
cual cambiar si tambin lo hiciera el patrn de la persona.
patrn
patrn
<<historia
0..1
/ 1------1
Clase de planlillas inserta(T)
remueve(11
. . / I------j
Crase de plantillas inserta(T)
rem ueve{T)
Elemento enlazado
../
La visibilidad
Debo confesar que esta seccin me produce cierta perturbacin.
La visibilidad es uno de esos temas que, en principio, es simple, pero
tiene sutilezas complejas. La idea bsica es que cualquier clase tiene
LA VISIBILIDAD
Java tambin permite que las clases sean marcadas como pblicas o
paquetes. Los miembros pblicos de una clase pblica pueden ser
usados por cualquier clase que importe el paquete al que pertenezca
la clase. Una clase de paquete puede ser usada slo por otras clases
del mismo paquete.
C ++ aade el toque fmaL Un mtodo O clase C++ puede ser convertido
en amjgo de una clase. Un amigo (frjend) tiene completo acceso a to-
dos los miembros de una clase. De aqu viene la frase: "en C ++, los
amigos se tocan entre ellos las partes privadas".
Cuando est manejando visib ilidad, emplee las reglas del lenguaje
con que trabaja. Cuando vea un modelo UML que provenga de otra
parte, desconfe del significado de los marcadores de visibilidad y tenga
presente la manera en que pueden cambiar tales significados de un
lenguaje a otro.
En general, encuentro que las visibilidades cambian a medida que se
trabaja en el cdigo, as que no las tome demasiado en cuenta, desde
un principio.
Diagramas
de interaccin
Diagramas de secuencia
En un diagrama de secuencia, un objeto se muestra como caja en la
parte superior de una linea vertical punteada (vase la figura 6-1).
IEn~05II!!n~idQlld;=1
.1 preparaO ' .
Objeto + ~ i.~~:~::~o i
Mensaje ; ;h.YElliI~ci"=~"":O;. CondCn
t Iteracin t IhayExistencial T
. descucotilO necesililReordco'
Regreso
0-
~ ;=necesilaReordenar(}
AutOOetegacin
lnccesitilRoordcnJ
[.1________ 1= I;~I
~![_h'~Y~_'_~_"_ciil~J_""_,,_o+____~iH~
Creacin
Esta lnea vertical se llama lnea de vida del objeto. La lnea de vida
representa la vida del objeto durante la interaccin. Esta forma fue
popularizada inicialmente por jacobson.
Cada mensaje se representa mediante una flecha entre las lneas de vida
de dos objetos. El orden en el que se dan estos mensajes transcurre de
arriba hacia abajo. Cada mensaje es etiquetado por 10 menos con
el nombre del mensaje; pueden incluirse tambin los argumentos y
alguna informacin de conirol. y se puede mostrar la autodelegacin,
que es un mensaje que un objeto se enva a s mismo, regresando la
flecha de mensaje de vuelta a la misma lnea de vida .
Dos partes de la informacin de control son valiosas. Primero, h ay
una condicin, que indica cundo se enva un mensaje (por ejemplo,
[llecesitaReordellJ). El mensaje se enva slo si la condicin es verda-
dera. El segund o marcador de control til es el marcador de iteracin,
que muestra que un mensaje se enva muchas veces a varios objetos
receptores, corno sucedera cuando se itera sobre una coleccin. La
base de la iteracin se puede mostrar entre corchetes (como en *[para
cada lnea de pedido]).
Corno se puede apreciar, la figura 6-1 es muy simple y tiene un atrac-
tivo visual inmediato; en ello radica su gran fuerza .
Una de las cuestiones ms difciles de comprender en un programa
orientado a objetos es el flujo de control general. Un buen diseo tiene
muchsimos pequeos mtodos en diferentes clases, y a veces resulta
muy complicado determinar la secuencia global de comportamiento.
Podr acabar leyendo el cdigo, tratando de encontrar d nde est el
programa. Esto ocurre as, en especial, para tod os aquellos que comien-
zan a trabajar con objetos. Los diagramas de secuencia le ayudan a ver
la secuencia.
Este diagrama induye un regreso, el cual indica el regreso de un
mensaje, no un nuevo mensaje. Los regresos d ifieren de los mensajes
normales en que la lnea es punteada.
Los diagramas POSA (Buschmann el al., 1996), en los que se basa una
gran parte de las anotaciones de la notacin de grficas de secuencia
de UML, emplean ampliamente los regresos. Yo no lo hago as. He
observado que los regresos saturan el diagrama y tienden a oscurecer
CAPITULo 6 T DIAGRAMAS DE INTERACCiN
Diagramas de colaboracin
La segunda forma del diagrama de interaccin es el djagrama de
colaboracin.
En los ctiagramas de colaboracin, los objetos ejemplo se muestran como
iconos. Las nechas indican, corno en los d iagramas de secuencia, los
mensajes enviados dentro del caso de uso dado. Sin embargo, en esta
ocasin la secuencia se indica numerando los mensajes.
El numerar los mensajes dificulta ms ver la secuencia que poner las
lneas verticales en la pgina. Por otra parte, la disposicin espacial
del diagrama permite mostrar otras cosas mejor. Se puede mostrar cmo
se vinculan entre ellos los objetos y emplear la disposicin para sobre-
poner paquetes u otra informacin.
Cuando
secreauna
lransaron...
...creaun
Coordinador
que maneja la
revisin.
El Coordinador crea
una serie de
Revisores, uno por
cada tipo de
revisin. Estos
Revisoresefectuan
sus revisiones como
procesos separados.
Si falla una
revisi6ndada,
el Coordinador
m.alaalos
deIJsrevisores
queestinen
ejecud6n...
... y le dice a la
Transacci6nque
no es vilida
Objeto
Nmero de secuencia
preparaO I
einv
~6 [necesitaReorden] : nuevo
conservar los dos puntos (:), para que quede claro que es el nombre de
la clase y no el del objeto. As, el nombre "Lnea Macallan : Lnea de pe-
didos" indica una instanda de Lnea de pedidos llamada Lnea Macallan
(debo decir que ste es un pedido que yo apredara de modo particular).
Acostumbro a nombrar objetos con el estilo de Smalltalk que emple en
los diagramas de secuenda (este esquema es vlido en UML, pues
"unObjeto" es un nombre perfectamente correcto para un objeto).
Numero de secuencia
1.1.2.1: necesitaReorden: ..
necesita Reordenar{)
. v
I 1.12.2 [necesitaReordenl:
, nuevo
El comportamiento condicional
Cul es el mejor modo de mostrar el comportamiento condicional?
Existen dos escuelas de pensamiento. Una consiste en usar diagramas
separados para cada situacin. La otra consiste en emplear condicio-
nes en los mensajes, a fin de indicar el comportamiento.
Yo prefiero la primera. Los diagramas de interaccin estn en su mejor
forma cuando su comportamiento es simple. Rpidamente pierden su
claridad con un comportamiento ms complejo. Si quiero captar una
cond ucta complicad a en un diagrama simple, prefiero utilizar un dia-
grama de actividades (vase el captulo 9).
Diagramas de
paquetes
Eran los das en que el proceso y los da tos es taban separados. De tal
modo que, adems d e una descomposicin funcional, tambjn h aba
una estructura de datos. Esta ltima ocupaba el segundo lugar, aunque
ciertas trnicas de ingeniera de informacin agrupaban los registros
de datos en reas temticas y p rodudan matrices que mostraban la
interrelacin entre las funciones y los registros de datos.
Es desde este punto de vis ta que podernos apreciar el g ran cambio que
han significado los objetos. H a desaparecido la separacin entre el
CAPTULo 7 T DlAGRAMAS DE PAQUETF5
Paquefe
Dependencia
\
//
P---, ..... /
L:::J . . . . . . . . ~
Figura 7-1: Diagramfl de paquetes
Diagramas
de estados
autotransicin Estado
Diagramas
de actividades
Persona Guardia
Actividad de decisin
(nohayc:af] .... [no hay refresco
de rola]
(encontr
refresco de cola]
Actividad
Ro
Disparador mltiple
lexistenciaasigna.da a
todos los a.rtfculos de
linea y pa.go autorivldo]
Carriles
Los diagramas de actividades dicen qu sucede, pero no lo que hace
cada quin. En la programacin, esto significa que el diagrama no
especifica qu clase es responsable de cada actividad.
En el modelado del dominio esto significa que el diagrama no indica
cules son las personas o departamentos responsables de cada actividad.
Una manera de superar esto es etiquetando cada actividad con la clase
o la persona responsable. Este procedimiento funciona, pero no ofrece
la misma clarid ad que los diagramas de interaccin (vase el captulo
6) en lo que se refiere a mostrar la comunicacin entre los objetos.
Los carriles (swimlanes) son una forma de subsanar esta deficiencia.
Para usar 105 carriles, se deben disponer los diagramas de actividades
en zonas verticales separadas por lneas. Cada zona representa la res-
ponsabilidad de una clase en particular o, como en el caso de la figura
9-5, de un departamento particular.
Los carriles son buenos en el sentido de que combinan la representa-
cin lgica del diagrama de actividades con la representacin de res-
ponsabilidades del diagrama de interaccin. Sin embargo, puede ser
difcil dibujarlos en un diagrama complejo. En ocasiones he dibujado
zonas no lineales, que son mejor que nada (a veces es necesario evitar
el impulso de tratar de decir demasiado en un diagrama).
Algunos se aseguran de asignar actividades a objetos cuando dibujan
un diagrama de actividades. A otros les basta trabajar primero con el
diagrama de actividades, a fin de lograr una idea general del compor-
tamiento, y despus asignar las actividades a 105 objetos. He presen-
ciado casos en los que quienes hacen inmediatamente las asignaciones
reclaman, molestos, a quienes las posponen; les acusan de hacer
diagramas de flujo de datos y de no estar orientados a objetos.
Confieso que en ocasiones dibujo un diagrama de actividades, asig-
nando slo hasta despus el comportamiento a los objetos. Considero
muy til comprender una cosa a la vez. Esto es particularmente
cierto cuando hago modelado de negocios y estoy animando a un
experto del dominio a pensar en nuevas formas de hacer las cosas.
CARRILES
fa.lI
Diagramas de
emplazamiento
TCP / IP
Servidor de unidad de diabetes
Conexin - - - - - .
~~7-~~~~~------------+-~~
Servidor de unid ad de hgado
_.c1I~11
COnfigur~-:~-:-11 ;Cpufigu[f U5!!ari'i 1I
Ter I [p ~
\ Obje~ contenido
....... Interfaz
Nodo
~
""-'""""
Figura 10-1: Diagrama de emplazamiellfo
CuNDO UTILIZAR l OS DIAGRAMAS DE EMPLAZAMIENTO
El UMLy
la programacin
intl.'n'alo:lntervalo
0 ..1
1: :I
Observacin
Observacin
1:
Pacienle
Cantidad Intervalo
cifril:Nmem superior:Magnitud
unidad:Unidad inferior:Magnitud
La figura 11-3 muestra que podemos hacer que una Observacin sirva
como una Medicin y como una Observacin d e categora, al definir
que una Medicin de "90 latidos por minuto" tambin puede ser una
Observacin de categora cuyo Fenmeno asociado es "ritmo cardiaco
acelerado" .
cjfra:Cantidad
0 ..1
Fenmeno Observacin
intervato:lnte rvil to.I-_oo1_ _ __ _ _ _ __ _ ---l
Paciente
cifra:Cantidad
0 ..1
Fenmeno Observacin
inten'alo: lnter va lo - 0 ..1
Cantidad marca de tiempo
Paciente
Existe aqu cierta colaboracin entre los objetos, la cual sugiere que ste
es un buen lugar para un diagrama de secuencia (vase la figura 11-6).
Es necesario dibujar todos estos diagramas?
. No forzosamente. Mucho depender de la forma en que usted visua-
lice lo que sucede y de cmo se sienta trabajando en su lenguaje de
programacin. En Smalltalk es, en general, tan fcil escribir el cdigo
como pensar con diagramas. En C++, son ms tiles los diagramas.
Los diagramas no tienen que ser obras maestras. Yo usualmente hago
bocetos de ellos en una hoja de papel o en un pizarrn pequeo. Los
transfiero a una herramienta de dibujo (o a una herramienta CASE)
slo si considero que vale la pena mantenerlos al da, porque me ayu-
dan a clarificar la conducta de las clases. En este punto del proyecto,
tambin puedo utilizar tarjetas CRC (vase la pgina 74) como com-
plemento en la sustitucin de los diagramas que he descrito en el pre-
sente captulo.
~~":;=:; Ilri:Q:n::!'"!ollribnQ~nn" 1
encuentra
! I
FenmenoO 1
fa lso
: verdadero
ritmo
cardiaco
nonnal
package observations ;
public DomainObject () {} ;
pr i va te Phenomenon --phenomenon;
class PhenomenonType {
public Phe nomenon phenomenonNamed (String name) {
Enumeration e -; phenomena () ;
\...hile (e . hasHoreElements () )
{
Phenomenon each '" ( Phenomenon ) e. nextEl e ment ()
if (each . name () '" '" name)
return each;
) ,
return null ;
pr:ivate Enumeration
observationsOf (PhenomenonType value) (
Vector result '" new Vector () ;
Enumeration e = observations () ;
\... hile (e . hasMoreElements () )
{
Observation each = (Observation) e . nextElement () ;
if ( each.phenomenonType () = = v alue )
result.addElement (each) ;
do
{
Observation each '"
(Observation) observationEnum . nextElement () ;
i f (each _whenObserved ( ) .
after (result.whenObserved () 1 1
result '" each :
return result ;
)
c1ass Observation
public PhenomenonType phenomenonType ()
return .....Phenomenon.phenomenonType () ;
)
_ amount = amount;
--phenomenonType = phenomenonType ;
};
class Observation
protected void initia 1ize (Patient patient ,
Date whenObserved) {
patient. observationsAdd ( this ) ;
_",henObserved '" \'/henObserved ;
cifra:Cantidad
r
0 ..1
0 ..1
Fenmeno
den
intervalo:lnlervalo-
Cantidad
dE' tiempo
Paciente
r eturn nu I l ;
TclIica Propsito
Tc"ica Propsito
Diagrama de Muestra la disposicin fsica de los
emplazamiento componentes en los nodos de hardware.
Diseo por Provee una definicin rigurosa del
contrato propsito de una operacin y del estado de
lici tud de una clase. Codifique stos
den tro de las clases pa ra mejorar
la depuracin.
Diagrama de Muestra cmo colaboran varios objetos en
interaccin un solo caso de uso.
Diagrama de Muestra grupos de clases y las
paquetes dependencias entre ell as.
Patrones Ofrecen buenos fragmentos de trnicas de
anlisis, diseo y codificacin. Son buenos
ejemplos de los que se puede aprender
consti tuyen un punto de partida para los
diseos.
Reestructuracin Ayuda a realizar cambios que mejoren la
de facto res estructura de un programa fun cional.
sese cuando el cdigo se interponga en
el camino hacia un buen diseo.
Diagrama de Muestra cmo un objeto particular
estados se comporta a lo largo de muchos casos
de uso.
Caso de uso Ayuda a los usuarios a plantear sus
requerimientos en bloques significativos.
La planificacin de la construccin se
realiza en torno a la entrega de algunos
casos de uso en cad a iteracin. Es la
base para las pruebas del sistema.
Apndice B
estos das usted trabaja con un lenguaje que maneje clasificacin ml-
tiple o dinmica, en realidad esta restriccin no procedera).
Composicin
En el UML 1.0, la composicin implicaba que el vnrulo era inmutable
(o estaba congelado; vase ms adelante), cuando menos en el caso
de componentes de un solo valor. Esta restriccin ya no es parte de
la definicin. Con toda justeza, an hay un poco de confusin sobre la
interpretacin de esto.
Ap~NDICE B ,. CAMBIOS DEL UML 1.0 AL 1.1
Inmutabilidad
El UML define que la restriccin {congelado} significa la inmutabilidad
de las relaciones de asociacin. Segn la definicin acrual, no parece
aplicarla a atributos ni a clases. En mi trabajo prctico, ahora empleo
el trmino congelado en lugar de inmutabilidad, y me encuentro satis-
fecho aplkando la restriccin a las relaciones de asociacin, clases y
atributos.
Marcadores de iteraciones
Tanto en UML 1.0 como en UML 1. 1 se puede emplear un * para mar-
car los mensajes que suceden muchas veces en un diagrama de
MARCADORFS DE ITERACIONFS
Peter eoad, David orth, and Mark Mayfield: Object Models: Strategies,
Paffems nlld Applicntiolls. Prentice Hall, 1995.
Peter Coad and Edward Yourdon: Object-Oriented Allnfysis. Yourdon,
1991.
Peter eoad and Edward Yourdon: Object-Orien ted Design. Yourdon,
1991.
Steve Cook and John Danie ls: Desigllillg Objecf Syslems: Object-Oricllted
Modc fi/lg with Sylltropy. Prentice Hall, 1994.
BIBLIOGRAFA ...
Sally Sh1aer and Stephen J. Mellor: Objecl Lifecycles: Mode/i1lg the World
i" Sta tes. Yourdon, 1991.
Sally Shlaer and Stephen J. Mellor: Object-Oriellted Systems Allalysis:
Modeling fhe World i" Data. Yourdon, 1989.
A definidn 80
papel en la subclasificadn 81
claseabstTacta asociacin 61
comparada con interfaz 98 como responsabilidad 67
notacin 95 bidireccional 71
restriccin abstracto % definicin 66
accin 138 nombrado 71
activaciones 119 navegabilidad 69
actividad papeles 66
descomposicin 158 unidireccional 71
en diagrama de actividades 147 clase de asociacin
en diagrama de estados 138 definicin 104
diagram as de actividades 10, 22. 38, 40, ejemplo 104
124,125, 144, 185 promocin a clase completa 105
definidn 147 sutilezas 106
ejemplos 148,152,154,155,157,158 mensaje asfncrono 120
cundo utilizar 159 atributo
actor definicin 72
definicin 52 notacin 72
relacin con casos de uso 53
agregacin
definicin 90
ejemplo 92 B
patrones de anc'ilisis restriccin bolsa 100
defmidn 44 base arquitectnica, componentes 29
ejemplo 44 Bcck. Ke nt 3, 33, 37, 46, 48, 74, 76, 193
mapa histrico 107 bidireccional, asociacin 71
correlacin indiz.ada 104 vfnculo, estereotipo 109
observacin 166 Booch. G rady xiii, xv, 1, 3, 4, 12, 48, 65,
fenmeno ron intervalo 166 68,84,135, 137, 145, 193
cantidad 166 Vase tambin Tres amigos
intervalo 110, 166, 169 elemento enlazado 108
modelos de papeles 90 Brandt, Jolm 37
escenario 44 Brooks, Fred 33
riesgo arquitectnico 30 Buschmahn, Frank 46, 11 7,125, 193
aftrmacin
NDICE T
e cundo emplear 83
diagrama de estados concurrentes
ceremonia 17 ejemplo 143
diagramas de clase 9. l O, 11, 22. 26. 38, condicin 11 7
39,40, 133,154, l OO, 181, 185 conexin 161
notaciones de cardinalidad 68 restricciones 79
definicin 61 abstracta 96
ejemplos 43, 44, 62, 70, 88, 90, 93, 94, bolsa 100
96,97, 103, 104, 105, 106, 107, 108, gad 101
109, 167,171, 172, 182 g lobal 11 8
perspectivas 63 jerarqufa 101
tenninologa 65 congelado 101
cundo emplear 83 ordenado 100
clasificacin 102 slo lectura 101
definicin 87 fase de construccin
tipos 87,89 yUML 38
tarjetas de C1ase-Responsabilidad definicin 17
-Colaboracin (CRC) descripcin 33
Vase tarjetas CRC Cook, Steve 63,83,84, 145, 193
Coad, Peter 3,65,68,90,193 Coplien,. James 48, 194
Cockbum, Alistair 59 tarjetas CRC 3,8,34,74, 155,167
ejemplos de cdigo Oava) 67,69, 103, definicin 74
107,108,175,176, 177,178,179, ejemplo 74
180, 181, 182, 183 empleo con casos de uso 75
diagrama de colabo racin cundo usar 75
comparacin con el d iagrama de se- Cunningham, Ward 3,30, 39, 46, 48, 74.
cuencia 123 76, 193, 194
definicin 121
ejemplos 122, 123
calendario de compromisos 28
componente 161 D
patrn Compuesto 93 restriccin Gad 101
composicin Daniels, John 63,83,84, 145, 193
definicin 91 borrado 120
notacin 92 dependencia
perspectiva conceptual definicin 128
actividades 147 sobre diagramas de clase 97
asociaciones 66 sobre d iagramas de
atributos 72 emplazamiento 161
defi nicin 63 diagramas de emplazamiento 27,40,
asociaciones de ri vadas 95 186
atributos derivados 95 defmidn 161
ejemplo 167 ejemplo 162
generalizacin 77 cundo utilizar 163
operaciones 73 asociacin derivada
asociaciones calificadas 103, 104 definicin 93
INDlCE
ejemplo 93
atributo derivado F
definicin 93 patrn Fachada 131
Diseo por contrato 80, 186 mtodos Factory 181
deftnicin 80 campo 72
cundo utilizar 82 Fowler, Martin 4] , 45, 46, 78, 89, 104,
modelo de diseo 22 107, 110, ]66, ] 94
patrones de diseo amigo 113
Compuesto 93 descomposicin funcional 127
definicin 43
ejemplo 43
Fachada 131
Suplente 43 G
discriminador 88 pandilla de los cuatro (saog of four) 41,
modelo de dominio 43,46,64, 78, 93, 131, ] 81, ] 94
diagramas de actividades 156 general izacin 102
construccin 22, 24 definicin 77
definicin 21 utilizacin con paquetes 133
equ.i po 24,25 mtodo de obtencin 76
empleo con casos de uso 23 restriccin Global 133
clasiftcacin dinmica Goldberg, AdCle 48, 194
definicin 89 Graham, Jao 48,59, 194
ejemplo 90 guardia
e n diagrama de actividades 149
en diagrama de estados 139
E
fase de elaboracin
construccin del modelo H
de dominio 21 Hadfield, Tom xvi, 8
defi nicin 17 H arel, David 137,194
descripcin 18 restriccin Jerarqua 101
descubrimiento de casos de patrn Mapa Histrico 107
uso 21, SO, 58 estereotipo Historia 107
lemUnacin 30
categorias de riesgo 19
evento entrada 141
patrn Episodios 30 1
diagramas d e eventos 159, 160 congelado 101
excepcin restriccin inmu table ]01
definicin 81 perspectiva de implementacin
evento salida 141 actividades 147
relacin extends asociaciones 69
definicin 55 atributos 72
ejemplo 52 definicin 64
cundo usar 57 asociaciones derivadas 93, 95
INDlCE ,.
atributos derivados 93
generalizacin 77 K
operaciones 73 patrn Correlacin lndizada 104
asociaciones calificadas 103, 104 Koenig. Andrew 110
refmamiento 97
subdasificadn 97
cundo usar 84
fase de concepcin L
definicin 17 lnea de vida 117
descripcin 18 notacin de paletas 98
Ingeniera de informacin 127 Loom is, Mary 4
d iagramas de mteraccin 8, 11,23,26,
39,41,75, 144, 156, 160, 186
definicin liS
ejemplos 116,122, 123,174 M
tipos 116 Martin. James 3,10,68,78,84, 160,194
cundo usar 124 Martin, Robert 135, 194
interfaz Mellor,Steve 2,65,68, 195
comparada con clase abstracta 98 tutora 28
defmicin 95 metamodelo
estereotipo Interfaz 97 definicin 6
invariante 80 extracto de ID<fi..l.0 6
definidn 81 mtodo 76, 77
similitud con afirmacin 80 Meyer, Bertrand SO,83, 195
SE &3 lenguaje de modelado 1
iteracin modHicador 76
asignacin de casos de uso 32 clasificacin mltiple
determinacin de longitud 31 definicin 87
determinacin de cantidad 32 ejemplo 88
elementos 17 d isparador mltiple 151 .
naturaleza incremental 34 multiplicidad
naturaleza iterativa 34 definicin 66
marcador de iteracin 117 en los diagramas de actividades 151
desarrollo iterativo 9 relaciones de valor mltiple 100
definicin 17
cundo usar 47
N
navegabilidad
J defi nicin 69
Jacobson. var xiv, xv, 1,3,4, 12,48.49, ejemplos 70
51,59,65,68,86,87,117,194 tipos 71
Vase tambin Tres amigos Ne.rson, Jcan-Macc 83, 195
Johnson. Ralph 37,194 nodo 161
Vase tambin Pandilla de los cuatro notacin 5
NDICE
o definicin 20
poscondidn 80
diagrama de objetos, ejemplos 168,169 prerondicin 80
Object Managemente Group (OMG) visibilidad prh'ada
xvi,I,4,5 en C++ 111
Tcnica de modelado de objetos (OMT) en Smalltalk 112
VaseOMT p~w
p Q
paquete 128 asociacin calificada
d iagramas de paquetes 11, 'lJ,39, 161, definicin 103
186 ejemplo 103
definicin 128 patrn Cantidad 166
ejemplos 130, 132 consulta 76
cundo utilizar 135
visibilidad de paquete 11 2,131
clase con parmetro
definicin 108 R
ejemplo 108 patrn Intervalo 110, 166, 169
patrones 9, 11, 13, 41, 186 Rational Objectory Process 15
definicin 42 Rational Sofhvare 3, 4, 48
Vase tambin patrones de anlisis restriccin Solo Lectura 101
Vase tambin patrones de diseo realizacin 58
cundo uti lizar 45 Diseo Recursivo 2
perspectivas, tipos 63 reestucturacin de factores 35, 179,
redesde Petri 147 186
Fenmeno con patron Intervalo 166 definicin 35
adidn durante el desarrollo principios 36
iterativo 38 cundo reestructurar 37
construccin 30 Refactory 37
riesgo poltico objetos de referencia 98
manejo de 29 refinamiento 88
NDICE ..
definicin 97 asociaciones 65
riesgos de requerimientos atributos 72
manejade 20 definicin 63
defird6n 19 asociaciones derivadas 93
responsabilidad 74 atributos derivados 93
Diseo guiado por responsabilidad 3 ejemplos 171, 172, 182
regreso 117 generalizacin 71
riesgos operaciones 73
categoas 19 asociaciones calificadas 103
manejo de 20, 25, 27, 29 refinamiento 97
Roberts, Don 37 subclasificacin 97
papeles 66 subtipificacin 133
patrn Modelos de papeles 90 cundo emplear 83
Rubin,. Kenneth S. 48, 194 diagramas de estados 23, 40, 125, 160,
Rumbaugh, Jjm xiii, xv, 1,3,4, 12,. 65, 186
68,90,145,195 definicin 137
Vase tambin Tres amigos ejemplos 138, 140, 141, 143
cundo utilizar 144
tabla de estados 137
s clasificacin esttica 89
estereotipo
escenario 57 romo mecanismo de extensin 9
patrn Escenario 44 definicin 86
riesgo de calendari7.i1dn 31 notacin 87
SDL 147 estereotipos
autodelegacin Vlculo 109
consecuencias 120 historia 107
definicin 117 interfaz 97
aulotransidn 142 oparo 131
diagrama de secuencia 183 transparente 131
comparacin con diagrama de tipo 97
colaboracin 123 STL 110
definicin 116 subdasificacin 78,81,95,98
ejemplos 116,119.121, 174 sustituibilidad
mtodo de establecimiento 77 y afmnaciones 82
Shlaer. Sally 2, 65, 68, 195 definicin 78
Siemens 124 subtipo 61
clasificacin simple 87 subtipificacin 78, 110
riesgo de habilidad superestado 140, 141
manejo de 27 carril
definicin 20 definicin 156
origen 66 ejemplos 157
perspectiva de especificacin barra de sincronizacin 149
actividades 147 interacciones del sistema 50
lNmcE
T relaciones de uso
definicin 56
destino 66 ejemplo 52
riesgo tecnolgico cundo usar 57
manejo de 25
definicin 19
plantilla
Vase clase con parmetro v
pruebas 34, 135 visibi~dad
tres amigos xili, xv, 2, 4, 9, 12, 15, 46, definicin 110
48,84,97, 147 dentro de C++ 111
etapa de transicin dentro de Java 11 2
definicin 17 dentro de Smalltalk 112
descripcin 47 Vlissides, John 194,195
relacin transitiva 129 Vase tambin Pandilla de los cuatro
esterrotipo Transparente 131
labia de verdad 159
estereotipo Tipo 97
w
Walden, Kim 83, 195
u Wirfs-Brock. Rebeca 3,76,86, 135, 195
flujo de trabajo n ,22, 147, 160
asociacin unidireccional 71
Mtodo Unificado 4
UML xi, xli, xiii, xiv. xv, 1, 2, 12, 26, 33,
39,51,67,91,183,190,191
y
diagramas de casos de uso Youroon, Ed 3, 193
definicin 51
ejemplo 52
casos de uso 186
y riesgo por requerimientos 20
y riesgo ternol6gico 26
asignacin a iteraciones 32
categorizacin 30
definicin 10, 49
sobre diagramas de actividades 150,
160
sobre diagramas de interaccin 115
niveles de prioridad 30
propiedades 49
divisin 56
usando tarjetas eRe 75
cundo emplear 58 1IIPflBOR.t.1I00000$."-&EC.V_
objetivos del usuario 50 Tl:IM.UvAzauEz1*>-IU
CIlLSA/lP'OROOCf.o.t.o.LCO
C. ' . otmllEXJCO. O. f .
Diagrama d e paquetes
Diagrama d e emplazamiento
~crono
1: mensaje simple O me""'l" e "
d~ombre
-
papel 1.1.:[ mensa'
1.2' .
. le Iterativo OO
. condlcinl mensaje
IN ombre d el superestado I
N ombre d el estado
entra / accin
hace/ actividild
sale/ accin
evento / accin(argumentos)
Estados concurrentes
I Nombre del s upereslildo I
8-------8
------- -- -------- --------------
8-------8