Professional Documents
Culture Documents
org
Manejo de la complejidad
Enunc i ado
d e l p r ob l e ma
Q
J L
C f e t e n c i n d e
r e q u e r i m i e n t o s (Cap
)
J L
r e q u e r i m i e n t o s
no f u n c i o n a l e s
i
A n l i s i s (Cap
, , )
A
\
\
f D i s e o d e l s i s t e m a
l (Cap. 6 ) J
A
m.Q.de.lCL_dnAiriigg
/
/
A
A
d e s c o mp o s i c i n
de syfrs l .s .tema.s
mpdgio de obj e t ?
de. .d i s .eflo..de.. s i s t e ma s
\
\
model o
f u n c i o n a l
d i a a r a ma de
e e s p do v o
b.l.ti.yo.? de d.i
A
di agr ama de
a r f i c a de e s t a d o
di agrama
de secuencia
^ ( D i s e o d e o b j e t o s (Cap
A
model o de o b i e t o s
de. d. i s e g
cdigo- f . u.e.n.t.e
a .
I n p l a m e n t a c i n
)
C
P r u e b a s (Cap
J
.> )
www.FreeLibros.org
M ango del cambio
www.FreeLibros.org
www.FreeLibros.org
Ingeniera de software orientado a olletas
Bemd Bruegge
Tecfankal Umversity o f Munich
Munich, Gcnnany
Alien H. Dutoit
C a r n e e Mellon Umversity
Pittsfamgi, PA, United States
TRADUCCIN:
Sro Luis Maria Ririz Faidn
Ingeniero Qumico, Facultad de Ciencias Qumicas, Universidad Veracruzana, campus Orizaba
REVISIN TCNICA:
Rafad Gamboa Hirales
Maestro en Ingeniera, Universidad Politcnica de Madrid
Departamento Acadmico de Computacin, Instituto Tecnolgico Autnomo de Mxico
MarthaRosa Cordero Lpez
Maestra en Ciencias, Centro de Investigacin y de Estudios Avanzados, Instituto Politcnico
Nacional
Escuela Superior de Cmputo
Instituto Politcnico Nacional
Marco Antonio Dorantes Gonzlez
Maestro en Ciencias, Centro de Investigacin y de Estudios Avanzados, Instituto Politcnico
Nacional
Escuela Superior de Cmputo
Instituto Politcnico Nacional
Pearson
Educacin
MXICO ARGENTINA BRASIL COLOMBIA COSTA RICA CHILE
ESPAA GUATEMALA PER PUERTO RICO VENEZUELA
www.FreeLibros.org
/ D a to s d e c a t a l o g a c i n b i b l io g r f i ca
BRUEGGE, BERND y DUTOIT, ALLEN H.
Ingeniera de software orientado a objetos
PEARSON EDUCACIN, Mxico, 2002
ISBN: 970-26-0010-3
Area: Universitarios
Formato: 18.5 x 23.5 cm Pginas: 576
Versin en espaol de la obra titulada Object-Oriented Software Engineering, de Bernd Bruegge y Alien H. Dutoit, publicada original
mente en ingls por Prentice Hall Inc., Upper Saddle River, New Jersey, E.U.A.
Esta edicin e s la nica autorizada.
Original English language tille by
frentice Hall Inc.
Copyright 2000
All rights reserved
ISBN 0-13-489725-0
Edkin en espaol:
Editor: Guillermo Trujano Mendoza
Editor de desarrollo: Jorge Alberto Velzquez Arellano
Supervisor de produccin: Jos D. Hernndez Garduo
Edicin en ingls:
Publisher: Alan Apt
Project Manager: Ana Arias Terry
Editorial Assistant: Toni Holm
Editorial/production supervisin: Ann Marie Kalajian and Scott Disanno
Editor-in-Chief: Marcia Horton
Executive Managing Editor: Vince OBrien
Cover Design: Amy Rosen
Art Director: Heather Scott
Assistant to Art Director: John Christiana
Cover Image: Superstock, Tamserky. A Himalayan Peak. Khumbu Nepal
Book Photos: Bernd Bruegge and Blake Ward
Manufacturing Buyer: Pat Brown
PRIMERA EDICIN, 2002
D.R. 2002 por Pearson Educacin de Mxico, S.A. de C.V.
Calle 4 Nm. 25-2do. piso
Fracc. Industrial Alce Blanco
53370 Naucalpan de Jurez, Edo. de Mxico
E-mail: editorial.universidades@pearsoned.com
Cmara Nacional de la Industria Editorial Mexicana Reg. Nm. 1031
frentice Hall e s una marca registrada de Pearson Educacin, S A de C.V.
Reservados todos los derechos. Ni la totalidad ni parte de esta publicacin pueden reproducirse, registrarse o transmitirse, por un sitema de
recuperacin de informacin, en ninguna forma ni por ningn medio, sea electrnico, mecnico, fotoqumico, magntico o electroptico, por
fotocopia, grabacin o cualquier otro, sin permiso previo por escrito del editor.
El prstamo, alquiler o cualquier otra forma de cesin de uso de este ejemplar requerir tambin la autorizacin del editor o de sus representantes.
ISBN 970-26-0010-3
Impreso en Mxico. Printed in Mxico.
1 2 3 4 5 6 7 8 9 0 - 04 03 02
Pearson
Educacin
www.FreeLibros.org
Para Goeg, Tobyy Clara, y mis padres.
-B.B.
Para mi mujercita, con amor
-A.H.D.
www.FreeLibros.org
www.FreeLibros.org
Prefacio
F
^ J 1 K2 se eleva a 8,611 metros en la cordillera Karakorum en el Himalaya occidental. Es el
segundo pico ms grande del mundo y est considerado como el ms difcil de escalar entre los
que miden ms de 8,000 metros. Una expedicin al K2 dura, por lo general, varios meses y se
realiza en el verano, cuando el clima es ms favorable. Aun en verano son frecuentes las tormen
tas de nieve. Una expedicin requiere miles de kilogramos de equipo, incluyendo instrumentos
para escalar, pertrechos de proteccin para clima ms severo, tiendas, comida, equipo de comu
nicacin y paga y zapatos para cientos de porteadores. La planeacin de una expedicin de stas
requiere una cantidad de tiempo significativa en la vida de un escalador y requiere docenas de
participantes en funciones de apoyo. Una vez que estn en el lugar, muchos eventos inesperados,
como avalanchas, huelgas de porteadores o fallas de equipo forzarn a los escaladores a
adaptarse, encontrar nuevas soluciones o retirarse. La tasa de xito de las expediciones al K2 en
la actualidad es menor a 40%.
El Sistema Aeroespacial Nacional (AS, por sus siglas en ingls) de Estados Unidos super
visa y controla el trfico areo en ese pas. El AS incluye ms de 18,300 aeropuertos, 21 cen
tros de control de trfico de rutas areas y ms de 460 torres de control. A esto se aaden ms de
34,000 piezas de equipo que incluyen radares, interruptores de comunicaciones, radios, sistemas
de cmputo y pantallas. La infraestructura actual est envejeciendo con rapidez. Las compu
tadoras que dan apoyo a los 21 centros de control de trfico de rutas areas, por ejemplo, son
mainframes 3083 de IBM que se remontan a principios de los aos ochenta. En 1996, el gobierno
de Estados Unidos inici un programa para modernizar la infraestructura del AS, incluyendo
mejoras como navegacin por satlite, comunicaciones digitales entre controladores y pilotos, y
un grado ms alto de automatizacin para el control de las rutas areas, el orden en que aterrizan
los aviones y el control del trfico terrestre conforme los aviones se aproximan y se alejan de las
pistas. Sin embargo, la modernizacin de tal infraestructura compleja slo puede realizarse en
forma gradual. En consecuencia, mientras se introducen nuevos componentes que proporcionen
nueva funcionalidad, todava hay que dar soporte a los componentes ms antiguos. Por ejemplo,
durante el periodo de transicin, un controlador tendr que ser capaz de usar canales de voz tanto
analgicos como digitales para comunicarse con los pilotos. Por ltimo, la modernizacin del AS
www.FreeLibros.org
viii Prefacio
coincide con un incremento dramtico del trfico areo global, el cual se predice que se dupli
car dentro de los prximos 10 a 15 aos. El esfuerzo de modernizacin anterior del AS, lla
mado Sistema de Automatizacin Avanzado (AAS, por sus siglas en ingls), fue suspendido en
1994 debido a problemas relacionados con software despus de haber fallado por varios aos
en su tiempo de entrega inicial y excederse varios miles de millones de dlares en su presupuesto.
Los ejemplos anteriores tratan sobre sistemas complejos en donde las condiciones exter
nas pueden disparar cambios inesperados. La complejidad pone el problema ms all del control
de un solo individuo. El cambio fuerza a los participantes a apartarse de soluciones bien conoci
das e inventar nuevas. En ambos ejemplos, varios participantes necesitan cooperar y desarrollar
nuevas tcnicas para manejar esos retos. No hacerlo as dar como resultado que no se alcance el
objetivo.
Este libro trata acerca de la conquista de sistemas de software complejos y cambiantes.
El tema
El dominio de aplicacin (planeacin de una expedicin a una montaa, control de trfico
areo, sistemas financieros, procesamiento de textos) incluye, por lo general, muchos conceptos
con los cuales no estn familiarizados los desarrolladores de software. El dominio de solucin
(juegos de herramientas de interfaz de usuario, comunicaciones inalmbricas, middleware, siste
mas de administracin de bases de datos, sistemas de procesamiento de transacciones, compu
tadoras porttiles, etc.) con frecuencia est inmaduro y proporciona a los desarrolladores muchas
tecnologas de implementacin en competencia. En consecuencia, el proyecto del sistema y su
desarrollo son complejos, involucrando muchos componentes, herramientas, mtodos y perso
nas diferentes.
Conforme los desarrolladores aprenden ms acerca del dominio de aplicacin a partir de sus
usuarios, actualizan los requerimientos de sistema. Conforme los desarrolladores aprenden ms
acerca de las tecnologas que surgen, o acerca de las limitaciones de las tecnologas actuales,
adaptan el diseo del sistema y su implementacin. Conforme el control de calidad encuentra
defectos en el sistema y los usuarios solicitan nuevas caractersticas, los desarrolladores modifi
can el sistema y sus productos de trabajo asociados, dando como resultado un cambio continuo.
La complejidad y el cambio representan retos que hacen que sea imposible para una sola
persona controlar el sistema y su evolucin. Si se les controla en forma inadecuada, la complejidad
y el cambio invalidan la solucin antes de que se entregue, aunque el objetivo est a la vista. Dema
siados errores en la interpretacin del dominio de aplicacin hacen que la solucin sea intil para
los usuarios, forzando una retirada de la ruta o del mercado. Tecnologas de implementacin
inmaduras o incompatibles dan como resultado una baja confiabilidad y retrasos. La falla en el
manejo de los cambios introduce nuevos defectos en el sistema y degrada el desempeo ms all
de su utilidad.
Este libro refleja ms de diez aos de construccin de sistemas y de enseanza de cursos de
proyectos de ingeniera de software. Hemos observado que a los estudiantes se les ensean tc
nicas de programacin y de ingeniera de software aisladas, con frecuencia usando como ejem
plos problemas pequeos. En consecuencia, son capaces de resolver con eficiencia problemas
bien definidos, pero son sobrepasados por la complejidad de su primera experiencia de desarro
llo real cuando es necesario usar muchas tcnicas y herramientas diferentes y necesitan colaborar
con personas diferentes. Como reaccin a esta situacin, el plan de estudios tpico de los estu
diantes de licenciatura incluye ahora, a menudo, un curso de proyectos de ingeniera de software
organizado como un solo proyecto de desarrollo.
www.FreeLibros.org
Prefacio ix
Las herramientas: UML, Java y patrones de diseo
Escribimos este libro con un curso de proyectos en mente. Sin embargo, este libro tambin
puede usarse en otras situaciones, como talleres cortos o intensivos, o proyectos de investigacin
y desarrollo de corto plazo. Usamos ejemplos de sistemas reales y examinamos la interaccin entre
las tcnicas ms actuales, como lenguaje de modelado unificado (UML, por sus siglas en ingls),
tecnologas basadas en Java, patrones de diseo, fundamentacin del diseo, administracin de la
configuracin y control de calidad. Adems tratamos temas relacionados con la administracin
de proyectos que estn relacionados con estas tcnicas y su impacto en la complejidad y el cambio.
Los principios
Enseamos ingeniera de software siguiendo cinco principios:
Experiencia prctica Creemos que la educacin de ingeniera de software debe estar vincu
lada con la experiencia prctica. La comprensin de la complejidad slo puede obtenerse traba
jando con un sistema complejo; esto es, un sistema que no puede comprender por completo un
solo estudiante.
Resolucin de problemas. Creemos que la educacin de ingeniera de software debe estar
basada en la resolucin de problemas. En consecuencia, no hay soluciones correctas o equivoca
das, sino slo soluciones que son mejores o peores con relacin a un criterio establecido. Aunque
examinamos las soluciones existentes a problemas reales y recomendamos su reutilizacin, tam
bin recomendamos la crtica y mejora de las soluciones estndar.
R ecm o s limitados. Si tuviramos suficiente tiempo y recursos tal vez podramos construir el
sistema ideal. Hay varios problemas en esta situacin. Primero, no es realista. Segundo, aunque
tuviramos suficientes recursos, si el problema original cambia con rapidez durante el desarrollo
podramos entregar al final un sistema que resuelve el problema equivocado. En consecuencia,
suponemos que nuestro proceso de resolucin de problemas est limitado respecto a los recursos.
Adems, la conciencia de la escasez de recursos motiva un enfoque basado en componentes, reuti
lizacin de software, diseo y cdigo. En otras palabras, apoyamos un enfoque de ingeniera
para el desarrollo de software.
InterdBcxpHnariedad. La ingeniera de software es un campo interdisciplinario. Requiere
contribuciones de reas que abarcan la ingeniera elctrica y de computacin, la ciencia de la
computacin, la administracin de empresas, el diseo grfico, el diseo industrial, la arquitectura,
el teatro y la redaccin. La ingeniera de software es un campo aplicado. Cuando se trata de com
prender y modelar el dominio de aplicacin, los desarrolladores interactan en forma regular con
otros, incluyendo usuarios y clientes, quienes a veces saben muy poco acerca del desarrollo de
software. Esto requiere que se vea y ataque el sistema desde varias perspectivas y terminologas.
Comumcarin. Aunque los desarrolladores construyeran software slo para desarrolladores,
todava tendran que comunicarse entre ellos mismos. Como desarrolladores no podemos damos el
lujo de slo poder comunicarnos con nuestros iguales. Necesitamos comunicar alternativas, articu
lar soluciones, negociar compromisos y revisar y criticar el trabajo de los dems. Una gran can
tidad de M a s en los proyectos de ingeniera de software puede deberse a la comunicacin impre
cisa de la informacin o a la falta de informacin. Debemos aprender a comunicamos con todos los
participantes en el proyecto, incluyendo, en forma muy importante, al cliente y los usuarios finales.
www.FreeLibros.org
X Prefacio
Estos cinco principios son la base de este libro. Motivan y permiten que el lector ataque
problemas complejos y cambiantes con soluciones prcticas y ms actuales.
El libro
Este libro est basado en tcnicas orientadas a objetos aplicadas a la ingeniera de software.
No es un libro de ingeniera de software general que investiga todos los mtodos disponibles ni
un libro de programacin acerca de algoritmos y estructuras de datos. En vez de ello nos enfo
camos en un conjunto limitado de tcnicas y explicamos su aplicacin en un ambiente razona
blemente complejo, como un proyecto de desarrollo de varios equipos que incluya de 20 a 60
participantes. En consecuencia, este libro tambin refleja nuestras predisposiciones, nuestras vir
tudes y nuestros defectos. Sin embargo, esperamos que todos los lectores encuentren algo que
puedan usar. El libro est estructurado en 12 captulos organizados en cuatro partes, que pueden
ensearse en un curso de un semestre.
La parte I, Comenzando, incluye tres captulos. En esta parte nos enfocamos en las herra
mientas bsicas que necesita un desarrollador para funcionar en un contexto de ingeniera de
software.
En el captulo 1, Introduccin a la ingeniera de software, describimos la diferencia entre
la programacin y la ingeniera de software, los retos actuales en nuestra disciplina y
definiciones bsicas de los conceptos que usaremos a lo largo del libro.
En el captulo 2, Modelado con UML, describimos los elementos bsicos de un lenguaje
de modelado, lenguaje de modelado unificado (UML), que se usa en las tcnicas orientadas
a objetos. Presentamos el modelado como una tcnica para manejar la complejidad. Este
captulo le ensea al lector la manera de leer y comprender los diagramas UML. Captulos
subsiguientes le ensean al lector la manera de construir diagramas UML para modelar
diversos aspectos del sistema. Usamos UML a lo largo del libro para modelar diversos
artefactos, desde sistemas de software hasta procesos y productos de trabajo.
En el captulo 3, Comunicacin de proyectos; tratamos la actividad ms crtica que reali
zan los desarrolladores. Los desarrolladores y administradores ocupan ms de la mitad de
su tiempo comunicndose con otros, ya sea en persona o por medio de correo electrnico,
groupware, videoconferencias o documentos escritos. Mientras el modelado trata con la
complejidad, la comunicacin trata con el cambio. Describimos los medios principales de
comunicacin y su aplicacin, y tratamos lo que constituye una comunicacin efectiva.
En la parte II, Manejo de la complejidad\ nos enfocamos en mtodos y tecnologas que permiten
que los desarrolladores especifiquen, diseen e implementen sistemas complejos.
En el captulo 4, Obtencin de requerimientos; y en el captulo 5, Anlisis; describimos la
definicin del sistema desde el punto de vista de los usuarios. Durante la obtencin de
requerimientos, los desarrolladores determinan la funcionalidad que necesitan los usuarios
y una forma til para proporcionarla. Durante el anlisis, los desarrolladores formalizan
este conocimiento y aseguran que est completo y sea consistente. Nos enfocamos en la
manera en que se usa UML para manejar la complejidad del dominio de aplicacin.
www.FreeLibros.org
Prefacio xi
En el captulo 6, Diseo del sistema, describimos las definiciones del sistema desde el punto
de vista del desarrollador. Durante esta fase, los desarrolladores definen la arquitectura del
sistema en funcin de objetivos de diseo y descomposicin en subsistemas. Tratan asun
tos globales como la correspondencia del sistema con el hardware, el almacenamiento de
datos persistentes y el flujo de control global. Nos enfocamos en la manera en que los
desarrolladores pueden usar patrones de diseo, componentes y UML para manejar la
complejidad del dominio de solucin.
En el captulo 7, Diseo de objetos; describimos el modelado detallado y las actividades de
construccin que estn relacionadas con el dominio de solucin. Retinamos los requerimien
tos y el modelo del sistema, especificamos con precisin las clases que constituyen el sistema
y definimos la frontera de la biblioteca de clases existentes y marcos de trabajo. Para la espe
cificacin de las interfaces de clases usamos el lenguaje de restriccin de objetos de UML.
En la parte III, Manejo del cambio, nos enfocamos en mtodos y tecnologas que apoyan el
control, la valoracin e implementacin de los cambios a lo largo del ciclo de vida.
En el captulo 8, Administracin dla fndamentacin, describimos la captura de las deci
siones de diseo y su justificacin. Los modelos que desarrollamos durante la obtencin
de requerimientos, el anlisis y el diseo del sistema nos ayudan a manejar la complejidad,
proporcionndonos diferentes perspectivas sobre qu debe hacer el sistema y cmo debe
hacerlo. Para poder manejar bien el cambio tambin necesitamos conocer por qu el
sistema es de la forma que es. La captura de las decisiones de diseo, las alternativas
evaluadas y su argumentacin nos permiten el acceso a la fundamentacin del sistema.
En el captulo 9, Pruebas; describimos la validacin del comportamiento del sistema con
tra los modelos del sistema. Las pruebas detectan fallas en el sistema, incluyendo aquellas
que se introducen durante los cambios al sistema o a sus requerimientos. Las actividades
de prueba incluyen la prueba unitaria, la prueba de integracin y la prueba del sistema.
Describimos varias tcnicas de prueba, como caja blanca, caja negra, prueba de ruta
basada en estado e inspecciones.
En el captulo 10, Administracin de la configuracin delsofiware, describimos tcnicas y
herramientas para el modelado de la historia del proyecto. La administracin de la confi
guracin complementa la fundamentacin para ayudamos a manejar el cambio. La admi
nistracin de versiones registra la evolucin del sistema. La administracin del lanzamiento
asegura la consistencia y calidad a travs de los componentes de una publicacin. La
administracin del cambio asegura que las modificaciones al sistema sean consistentes
con los objetivos del proyecto.
En el captulo 11, Administracin del proyecto, describimos las tcnicas necesarias para
iniciar un proyecto de desarrollo de software, llevar cuenta de su avance y manejar los
riesgos y eventos no planeados. Nos enfocamos en las actividades de organizacin, pape
les y administracin que permiten que un gran nmero de participantes colaboren y
entreguen un sistema de alta calidad dentro de restricciones planeadas.
En la parte IV, Vuelta a empezar, se revisan los conceptos que describimos en los captulos ante
riores desde una perspectiva del proceso. En el captulo 12, Ciclo de vida del software, se
www.FreeLibros.org
xii Prefacio
describen los ciclos de vida del software, como el modelo espiral de Boehm y el proceso de
desarrollo de software unificado, que proporciona un modelo abstracto de actividades de desa
rrollo. En este captulo tambin describimos el modelo de madurez de capacidades, que se usa
para valorar la madurez de las organizaciones. Concluimos con dos ejemplos de ciclo de vida del
software que pueden aplicarse en un proyecto de clase.
Los temas mencionados anteriormente estn muy interrelacionados. Para enfatizar sus
relaciones seleccionamos un enfoque iterativo. Cada captulo consta de cinco secciones. En
la primera seccin presentamos los asuntos relevantes del tema con un ejemplo ilustrativo. En la
segunda seccin describimos en forma breve las actividades del tema. En la tercera seccin expli
camos los conceptos bsicos del tema con ejemplos simples. En la cuarta seccin detallamos las
actividades tcnicas con ejemplos de sistemas reales. Por ltimo, describimos las actividades
administrativas y tratamos los compromisos tpicos. Al repetir y detallar los mismos conceptos
usando ejemplos cada vez ms complejos, esperamos proporcionar al lector un conocimiento
operacional de la ingeniera de software orientado a objetos.
Los cursos
Escribimos este libro para un curso de proyectos de ingeniera de software de un semestre
para estudiantes de ltimo ao o graduados. Suponemos que los estudiantes ya tienen experien
cia con lenguajes de programacin como C, C++, Ada o Java. Esperamos que los estudiantes
tengan las habilidades de solucin de problemas necesarias para atacar problemas tcnicos, pero
no esperamos que hayan estado expuestos a situaciones complejas o cambiantes tpicas del
desarrollo de sistemas. Sin embargo, este libro tambin puede usarse para otros tipos de cursos,
como cursos profesionales, intensivos y cortos.
Cursos cm un nivel de proyecto y para gyaduarin. Un curso de proyectos debe incluir todos
los captulos del libro casi en el mismo orden. Un instructor puede considerar ensear al prin
cipio del curso los conceptos introductorios de administracin de proyectos del captulo 11,
Administracin del proyecto, para que de esta forma los estudiantes estn familiarizados con la
planeacin y los reportes de estado.
C r o o introductoria Un curso introductorio con tareas en casa debe enfocarse en las tres pri
meras secciones de cada captulo. La cuarta seccin puede usarse como material para trabajar en
casa, y puede simularse la construccin de un sistema pequeo usando papel para los diagramas
UML, documentos y cdigo.
C r o o tcnico corta Este libro tambin puede usarse para un curso corto e intensivo dirigido
hacia profesionales. Un curso tcnico enfocado en UML y mtodos orientados a objetos puede
usar la secuencia de captulos 1, 2, 4, 5, 6, 7, 8 y 9, cubriendo todas las fases de desarrollo desde
la obtencin de requerimientos hasta las pruebas. Un curso avanzado podra incluir tambin el
captulo 10, Administracin de la configuracin del sofiware.
C r o o administrativo corta Este libro tambin puede usarse para un curso intensivo corto
orientado hacia administradores. Un curso de administracin enfocado en aspectos administrati
vos, como la comunicacin, la administracin de riesgos, la fundamentacin, los modelos madu
ros y UML, podra usar la secuencia de captulos 1,2, 11, 3, 4, 8, 10 y 12.
www.FreeLibros.org
Prefacio xiii
Acerca de los autores
El Dr. Bemd Bruegge ha estudiado y enseado ingeniera de software en la Universidad
Carnegie Mellon durante 20 aos, en donde obtuvo su maestra y doctorado. Recibi su diploma
en la Universidad de Hamburgo. Ahora es profesor universitario de ciencias de la computacin
con una ctedra de ingeniera de software aplicada en la Universidad Tcnica de Munich y es
miembro adjunto del cuerpo docente de la Universidad Carnegie Mellon. Durante 10 aos ha
enseado cursos de proyectos de ingeniera de software orientado a objetos con los materiales
del texto y el sitio Web descrito en este libro. Gan el premio a la excelencia en la enseanza
Herbert A. Simmon en la Universidad Carnegie Mellon en 1995. Bruegge tambin es consultor
internacional y ha usado las tcnicas de este libro para disear e implementar muchos sistemas
reales que incluyen: un sistema de retroalimentacin de ingeniera para Daimler-Chrysler, un
sistema de modelado ambiental para el E.P.A. y un sistema para administracin de accidentes
para un departamento de polica municipal, por nombrar unos cuantos.
El Dr. Alien H. Dutoit es un investigador cientfico en la Universidad Tcnica de Munich.
Obtuvo su maestra y doctorado en la Universidad Carnegie Mellon y su diploma de ingeniero
en el Instituto Federal Suizo de Tecnologa en Lausana. Ha enseado cursos de proyectos de inge
niera de software con el profesor Bruegge desde 1993, tanto en la Universidad Carnegie Mellon
como en la Universidad Tcnica de Munich, en donde usaron y refinaron los mtodos descritos
en este libro. La investigacin de Dutoit cubre varias reas de ingeniera de software y sistemas
orientados a objetos, incluyendo administracin del conocimiento, administracin de la funda-
mentacin, soporte de decisiones distribuido y sistemas basados en prototipos. Antes perteneci
al Instituto de Ingeniera de Software y al Instituto de Sistemas de Ingeniera Compleja en la
Universidad Carnegie Mellon.
www.FreeLibros.org
www.FreeLibros.org
Contenido
Prefacio vii
Agradecimientos xix
PARTE I Comenzando 1
Captulo 1 Introduccin a la ingeniera de software 3
1.1 Introduccin: fallas de la ingeniera de software 4
1.2 Qu es la ingeniera de software? 5
1.3 Conceptos de ingeniera de software 10
1.4 Actividades de desarrollo de ingeniera de software 14
1.5 Administracin del desarrollo de software 17
1.6 Ejercicios 20
Referencias 21
Captulo 2 Modelado con UML 23
2.1 Introduccin 24
2.2 Una panormica del UML 24
2.3 Conceptos de modelado 29
2.4 Una vista ms profunda al UML 39
2.5 Ejercicios 60
Referencias 61
X V
www.FreeLibros.org
63
64
65
66
76
87
93
94
95
97
98
99
100
106
120
128
129
131
132
132
134
139
157
164
165
167
168
170
172
190
Comunicacin de proyectos
Introduccin: el ejemplo de un cohete
Una panormica de la comunicacin de proyectos
Modos de comunicacin
Mecanismos de comunicacin
Actividades de comunicacin del proyecto
Ejercicios
Referencias
Manejo de la complejidad
Obtencin de requerimientos
Introduccin: ejemplos de utilidad
Una panormica de la obtencin de requerimientos
Conceptos de la obtencin de requerimientos
Actividades para la obtencin de requerimientos
Administracin de la obtencin de requerimientos
Ejercicios
Referencias
Anlisis
Introduccin: una ilusin ptica
Un panorama del anlisis
Conceptos de anlisis
Actividades de anlisis: desde los casos de uso
hasta los objetos
Administracin del anlisis
Ejercicios
Referencias
Diseo del sistema
Introduccin: un ejemplo del plano de un piso
Un panorama del diseo de sistemas
Conceptos del diseo de sistemas
Actividades del diseo de sistemas: desde los objetos
hasta los subsistemas
Administracin del diseo del sistema
Ejercicios
Referencias
www.FreeLibros.org
xvli
231
232
233
235
241
273
280
281
283
285
286
287
290
300
317
324
325
327
328
330
336
344
363
368
369
371
372
374
375
384
401
403
404
Diseo de objetos
Introduccin: ejemplos de pelculas
Un panorama del diseo de objetos
Conceptos del diseo de objetos
Actividades del diseo de objetos
Administracin del diseo de objetos
Ejercicios
Referencias
Manejo del cambio
Administracin de la fundamentacin
Introduccin: un ejemplo del jamn
Un panorama de la fundamentacin
Conceptos de la fundamentacin
Actividades de la fundamentacin: de los problemas
a las decisiones
Administracin de la fundamentacin
Ejercicios
Referencias
Pruebas
Introduccin
Un panorama de las pruebas
Concepto de las pruebas
Actividades de las pruebas
Administracin de las pruebas
Ejercicios
Referencias
Administracin de la configuracin del software
Introduccin: un ejemplo de aeronave
Un panorama de la administracin de la configuracin
Conceptos de la administracin de la configuracin
Actividades de la administracin de la configuracin
Gestin de la administracin de la configuracin
Ejercicios
Referencias
www.FreeLibros.org
xviii C ontenido
Captulo 11 Administracin del proyecto 407
11.1 Introduccin: la decisin del lanzamiento del STS-51L 408
11.2 Un panorama de la administracin de proyectos 409
11.3 Conceptos de administracin 413
11.4 Actividad de la administracin de proyectos 427
11.5 Administracin de los modelos y actividades
de la administracin del proyecto 449
11.6 Ejercicios 453
Referencias 454
PARTE I V Vuelta a empezar 455
Captulo 12 Ciclo de vida del software 457
12.1 Introduccin 458
12.2 IEEE 1074: el estndar para el desarrollo de procesos
del ciclo de vida 460
12.3 Caracterizacin de la madurez de los modelos del ciclo
de vida del software 468
12.4 Modelos del ciclo de vida 471
12.5 Administracin de las actividades y productos 486
12.6 Ejercicios 492
Referencias 493
PARTE V Apndices 495
Apndice A Patrones de diseo 497
Apndice B Glosario 509
Apndice C Bibliografa 533
ndice 543
www.FreeLibros.org
Agradecimientos
j s t e libro ha atestiguado mucha complejidad y cambio durante su desarrollo. En 1989, el
primer autor comenz a ensear ingeniera de software con un formato de un curso de un solo
proyecto. El objetivo era exponer a los estudiantes los asuntos importantes de la ingeniera de
software resolviendo problemas reales, descritos por clientes reales, con herramientas reales, bajo
restricciones reales. El primer curso, listado como 15-413 en el catlogo de cursos de Camegie
Mellon, tuvo 19 estudiantes, us SA/SD como metodologa de desarrollo y produjo 4,000 lneas
de cdigo. Desde entonces hemos probado en forma satisfactoria muchos mtodos, herramientas
y notaciones (por ejemplo, OMT, OOSE, UML). En la actualidad estamos enseando una versin
distribuida del curso que involucra hasta 80 estudiantes de Carnegie Mellon y la Universidad
Tcnica de Munich, teniendo como resultado sistemas con hasta 500 pginas de documentacin
y 50,000 lneas de cdigo.
La desventaja de los cursos de proyectos es que los instructores no escapan a la comple
jidad ni al cambio que experimentan sus estudiantes. Los instructores se convierten con rapidez
en participantes del desarrollo, actuando a menudo como gerentes de proyecto. Esperamos que
este libro ayude tanto a los instructores como a los estudiantes a conquistar este nivel de comple
jidad y cambio.
De alguna forma, a pesar del gran gasto de energa en el curso, hemos encontrado tiempo
para escribir y terminar este libro de texto gracias a la ayuda y paciencia de muchos estudiantes,
clientes, asistentes de enseanza, personal de soporte, colegas instructores, revisores, personal
de Prentice Hall y, sobre todo, de nuestras familias. Algunos han contribuido para mejorar el
curso, otros han proporcionado retroalimentacin constructiva en borradores sucesivos y otros
ms simplemente estuvieron all cuando las cosas se pusieron difciles. A lo largo de los ltimos
10 aos, hemos quedado en deuda con muchas personas a las cuales damos aqu nuestro agra
decimiento.
x l x
www.FreeLibros.org
X X Agradeci mientos
A los participantes de Workstation Fax (1989) Mark Sherman (cliente). Keys Botzum, Keith
Chapman, Curt Equi, Chris Fulmer, Dave Fulmer, James Gilbert, Matt Jacobus, John Kalucki,
David Kosmal, Jay Libove, Chris Maloney, Stephen Mahoney, Bryan Schmersal, Rich Segal,
JefF Shufelt, Stephen Smith, Marco Urbanic, Chris Warner y Tammy White.
A los participantes de Interactive Maps (1991) David Garlan (cliente). JefF Alexander, Philip
Bronner, Tony Brusseau, Seraq Eldin, Peter French, Doug Ghormley, David Gillen, Mike Ginsberg,
Mario Goertzel, Tim Gottschalk, Susan Knight, Bin Luo, Mike Mantarro, Troy Roysedorph y
Stephen Sadowsky.
A los participantes de Interactive Pittsburgh (1991) Charles Baclawski, Ed Wells y David
Wild (clientes). Jason Barshay, Jon Bennett, Jim Blythe, Brian Bresnahan, John Butare, Jon Carn,
Michael Cham, Ross Comer, Eric Ewanco, Karen Fabrizius, Kevin Gallo, Ekard Ginting, Stephen
GifFord, Kevin Goldsmith, JefF Jackson, Gray Jones, Chris Kirby, Brian Kircher, Susan Knight,
Jonathan Levy, Nathan Loofbourrow, Matthew Lucas, Benjamn McCurtain, Adam NemitofF,
Lisa Nush, Sean OBrien, Chris Pars, David Patrick, Victoria Pickard, Jeon Rezvani, Erik Riedel,
Rob Ryan, Andy Segal y David VanRyzin.
A los participantes de FRIEND (1992,1993, 1994) JeFe Michael Bookser (cliente). Soma
Agarwal, Eric Anderson, Matt Bamberger, Joe Beck, Scott Berkun, Ashish Bisarya, Henry
Borysewicz, Kevin Boyd, Douglas Brashear, Andrew Breen, James Brown, Kevin Chen, Li-Kang
Chen, Daniel Cohn, Karl Crary, Dan Dalal, Laurie Damianos, Mark Delsesto, Court Demas,
Cari Dockham, Ezra Dreisbach, JefF Duprey, Tom Evans, Anja Feldman, Daniel Ferrel, Steve
Fink, Matt Flatt, Pepe Galmes, Zafrir Gan, Steven Gemma, Dave Gillespe, Jon Gillaspie, Shali
Goradia, RudolFHalac, John Henderson, Brian Hixon, Mike Holling, Zach Hraber, Thomas Hui,
Asad Iqbal, Sergey Iskotz, Isam Ismail, Seth Kadesh, Parlin Kang, George Kao, Paul Karlin,
Shuntaro Kawakami, Dexter Kobayashi, Todd Kulick, Stephen Lacy, Jay LaeFer, Anna Lederman,
Bryan Lewis, Wendy Liau, Ray Lieu, Josephene Lim, Edward Liu, Kenneth Magnes, Patrick
Magruder, Stephanie Masumura, JefFMishler, Manish Modh, Thomas Mon, Bill Nagy, Timothy
Nali, Erikas Napjus, Cuong Nguyen, Kevin OToole, Jared Oberhaus, Han Ming Ong, David
Pascua, David Pierce, AsaF Ronen, David Rothenberger, Sven Schiller, Jessica Schmidt, Hollis
Schuller, SteFan Sherwood, Eric Snider, Paul Sonier, Naris Siamwalla, Art Sierzputowski,
Patrick Soo Hoo, David Stager, Wilson Swee, Phil Syme, Chris Taylor, James Uzmack, Kathryn
van Stone, Rahul Verma, Minh Vo, John Wiedey, Betty Wu, Bobby Yee, Amit Zavery y Jim
Zelenka.
A los participantes de JEWEL, GEMS (1991, 1994,1995) Greg McRay, Joan Novak, Ted
Russel y James Wilkinson (clientes). William Adelman, Robert Agustin, Ed Allard, Syon Bhatta-
charya, Dan Bothell, Kin Chan, HuiFen Chan, Yuzong Chang, Zack Charmoy, Kevin Chea, Kuo
Chiang Chiang, Peter Chow, Lily Chow, Joe Concelman, Gustavo Corral, Christopher Ekberg,
David Fogel, Bill Frank, Matthew Goldberg, Michael Halperin, Samuel Helwig, Ben Holz, Jona
than Homer, Sang Hong, Andrew Houghton, Dave Irvin, James Ivers, Christopher Jones, Harry
Karatassos, Kevin Keck, Drew Kompanek, Jen Kirstein, JefF Kurtz, Heidi Lee, Jos Madriz, Juan
Mata, Paul McEwan, Sergio Mendiola, David Mickelson, Paul Mitchell, Jonathan Moore, Sintha
Nainggolan, Donald Nelson, Philip Nemec, Bill Ommert, Joe Pekny, Adrin Perrig, Mark Pollard,
Erik Riedel, Wasinee Rungsarityotin, Michael Samowski, Rick Shehady, Hendrick Sin, Brian
www.FreeLibros.org
Agradeci mientos xxi
Solganick, Anish Srivastava, Jordn Tsvetkoff, Gabriel Underwood, Kip Walker, Alex Wetmore,
Peter Wieland, Marullus Williams, Yau Sheng, Mark Wemer y David Yu.
A los participantes de DIAMOND (1995, 1996) Bob DiSilvestro y Dieter Hege (clientes).
Tito Benitez, Bartos Blacha, John Chen, Seth Covitz, Chana Damarla, Dmitry Dakhnovsky,
Sunanda Dasai, Xiao Gao, Murali Haran, Srinivas Inguva, Joyce Johnstone, Chang Kim, Emile
Litvak, Kris McQueen, Michael Peck, Allon Rauer, Stephan Schoenig, Ian Schreiber, Erik Sie-
gel, Ryan Thomas, Hong Tong, Todd Turco, A. J. Whitney y Hiyung Yu.
A los participantes de OWL (1996,1997) Volker Hartkopf (cliente). Paige Angstadt, Ali Aydar,
David Babbitt, Neeraj Bansal, Jim Buck, Austin Bye, Seongju Chang, Adam Chase, Roberto
DeFeo, Ravi Desai, Kelly DeYoe, John Dorsey, Christopher Esko, Benedict Femandes, Truman
Fenton, Ross Fubini, Brian Gallew, Samuel Gerstein, John Gillies, Asli Gulcur, Brian Hutsell,
Craig Johnson, Tim Kniveton, John Kuhns, Danny Kwong, DeWitt Latimer, Daniel List, Brian
Long, Gregory Mattes, Ceri Morgan, JefF Mueller, Michael Nonemacher, Chris O'Rourke, Iroro
Orife, Vctor Ortega, Philipp Oser, Hunter Payne, Justus Pendleton, Ricardo Pravia, Robert
Raposa, Tony Rippy, Misha Rutman, Trevor Schadt, Aseem Sharma, Mark Shieh, Caleb Sidel,
Mark Silverman, Eric Stein, Eric Stuckey, Syahrul Syahabuddin, Robert Trace, Nick Vallidis,
Randon Warner, Andrew Willis, Laurence Wong y Jack Wu.
A ios participantes de JAMES (1997,1998) Brigitte Pihulak (cliente). Maleolm Bauer,
Klaus Bergner, Reinhold Biedermann, Brian Cavalier, Gordon Cheng, Li-Lun Cheng, Christo
pher Chiappa, Arjun Cholkar, Uhyon Chung, Oliver Creighton, Aveek Datta, John Doe, Phillip
Ezolt, Eric Famg, William Ferry, Maximilian Fischer, Luca Girado, Thomas Gozolits, Alfonso
Guerrero-Galan, Sang Won Ham, Kevin Hamlen, Martin Hans, Pradip Hari, Russel Heywood,
Max Hoefher, Michael Karas, Yenni Kwek, Thomas Letsch, Tze Bin Loh, Alexander Lozupone,
Christopher Lumb, Vincent Mak, Darren Mauro, Adam Miklaszewicz, Hoda Moustapha, Gerhard
Mueller, Venkatesh Natarajan, Dick Orgass, Sam Perman, Stan Pavlik, Ralf Pfleghar, Marek Pol-
rolniczak, Michael Poole, Wolfgang Popp, Bob Poydence, Kalyana Prattipati, Luis Rico-Gutie-
rrez, Andreas Rausch, Thomas Reicher, Michael Samuel, Michael Scheinholtz, Marc Sihling,
Joel Slovacek, Ann Sluzhevsky, Marc Snyder, Steve Sprang, Paul Stadler, Herbert Stiel, Martin
Stumpf, Patrick Toole, Isabel Torres-Yebra, Christoph Vilsmeier, Idan Waisman, Aaron Wald,
Andrew Wang, Zhongtao Wang, Ricarda Weber, Pawel Wiktorza, Nathaniel Woods, Jaewoo You
y Bin Zhou.
A ios participantes de PAID (1998,1999) Helmut Ritzer y Richard Russ (clientes). Ralf Acker,
Luis Alonso, Keith Amer, Bekim Bajraktari, Elizabeth Bigelow, G6tz Bock, Henning Burdack,
Orly Canias, Igor Chemyavskiy, Jrg Dolak, Osman Durrani, John Feist, Burkhard Fischer, David
Garmire, Johannes Gramsch, Swati Gupta, Sameer Hafez, Tom Hawley, Klaas Hermanns, Thomas
Hertz, Jonathan Hsieh, Elaine Hyder, Florian Klaschka, Jrgen Knauth, Guido Kraus, Stefan
Krause, James Lampe, Robin Loh, Dietmar Matzke, Florian Michahelles, Jack Moffett, Yun-Ching
Lee, Wing Ling Leung, Andreas Ldhr, Fabian Loschek, Michael Luber, Kent Ma, Asa Mac-
Williams, Georgios Markakis, Richard Markwart, Dan McCarriar, Istvan Nagy, Reynald Ong,
Stefan Oprea, Adam Phelps, Amaldo Piccinelli, Euijung Ra, Quiang Rao, Stefan Riss, William
Ross, Pooja Saksena, Christian Sandor, Johannes Schmid, Ingo Schneider, Oliver Schnier, Flo
rian Schdnherr, Gregor Schraegle, Rudy Setiawan, Timothy Shirley, Michael Smith, Eric Stein,
www.FreeLibros.org
xxii Agradeci mientos
Daniel Stodden, Antn Tichatschek, Markus Tnnis, Ender Tortop, Barrett Trask, Ivan Tumanov,
Martin Uhl, Bert van Heukelkom, Anthony Watkins, Tobas Weishupl, Marko Werner, Jonathan
Wildstrom, Michael Winter, Brian Woo, Bemhard Zaun, Alexander Zeilner, Stephane Zermatten
y Andrew Zimdars.
A las personas que apoyaron los proyectos por su compromiso, su amabilidad y por resol
vernos los problemas cuando lo necesitamos: Catherine Copetas, Oliver Creighton, Ava Cruse,
Barry Eisel, Dieter Hege, Joyce Johnstone, Luca Girardo, Monika Markl, Pat Miller, Ralf
Pfleghar, Barbara Sandling, Ralph Schiessl, Amo Schmackpfeffer y Stephan Schoenig.
A los colegas, compaeros instructores y amigos que influyeron en nosotros con ideas e
innumerables horas de apoyo: Mario Barbacci, Len Bass, Ben Bennington, Elizabeth Bigelow,
Roberto Bisiani, Harry Q Bovik, Sharon Burks, Marvin Carr, Mike Collins, Robert Coyne, Douglas
Cunningham, Michael Ehrenberger, Kim Faught, Peter Feiler, Alien Fisher, Laura Forsyth, Eric
Gardner, Helen Granger, Thomas Gross, Volker Hartkopf, Bmce Hom, David KaufFer, Kalyka
Konda, Suresh Konda, Rich Korf, Birgitte Krogh, Sean Levy, K. C. Marshall, Dick Martin (Tang
Soo), Horst Mauersberg, Roy Maxion, Russ Milliken, Ira Monarch, Rhonda Moyer, Robert
Patrick, Mark Pollard, Martin Purvis, Raj Reddy, Yoram Reich, James Rumbaugh, Johann Schlich-
ter,Mary Shaw, Jane Siegel, Daniel Siewiorek, Asim Smailagic, Mark Stehlik, Eswaran Sub-
rahmanian, Stephanie Szakal, Tara Taylor, Michael Terk, Gnter Teubner, Marc Thomas, Jim
Tomayko, Blake Ward, Alex Waibel, Art Westerberg y Jeannette Wing.
A los revisores que nos dieron retroalimentacin constructiva y que nos ayudaron a corregir
muchos detalles: Martin Barret, Thomas Eichhom, Henry Etlinger, Ray Ford, Gerhard Mueller,
Barbara Paech, Joan Peckham, Ingo Schneider y Eswaran Subrahmanian. Todos los errores res
tantes son nuestros.
A todo el personal de Prentice Hall que nos ayud para que este libro fuera una realidad, en
particular Alan Apt, nuestro editor, por no haber perdido nunca la fe; Sondra Scott y Ana Terry,
nuestros gerentes de proyecto, por llevar cuenta del milln de problemas asociados con este
proyecto y facilitar su solucin; Eileen Clark, nuestra gerente de produccin, Ann Marie Kala-
jian y Scott Disanno, nuestros editores de produccin, y Heather Scott, nuestro director artstico,
por disear una portada de libro e inicios de captulo elegantes y atractivos, y por hacer que
muchas cosas maravillosas e imposibles sucedieran a tiempo; Joel Berman, Toni Holm, Eric
Weisser y muchos otros que trabajaron mucho para la terminacin de este libro pero que no tuvi
mos la oportunidad y el placer de conocer en persona.
Y por ltimo a nuestras familias, a quienes les dedicamos este libro y sin cuyo infinito amor y
paciencia la empresa nunca habra sido posible.
www.FreeLibros.org
PARTE I
Comenzando
www.FreeLibros.org
1.1 Introduccin: fallas de la ingeniera de software 4 4
1.2 Qu es la ingeniera de software? 5
1.2.1 Modelado 6
1.2.2 Solucin de problemas 7
1.2.3 Adquisicin de conocimiento 8
1.2.4 Administracin de la fundamentacin 9
1.3 Conceptos de ingeniera de software 10
1.3.1 Participantes y papeles 11
1.3.2 Sistemas y modelos 12
1.3.3 Productos de trabajo 12
1.3.4 Actividades, tareas y recursos 12
1.3.5 Objetivos, requerimientos y restricciones 12
1.3.6 Notaciones, mtodos y metodologas 13
1.4 Actividades de desarrollo de ingeniera de software 14
1.4.1 Obtencin de requerimientos 14
1.4.2 Anlisis 15
1.4.3 Diseo del sistema 16
1.4.4 Diseo de objetos 16
1.4.5 Implementacin 16
1.5 Administracin del desarrollo de software 17
1.5.1 Comunicacin 17
1.5.2 Administracin de la fundamentacin 18
1.5.3 Pruebas 18
1.5.4 Administracin de la configuracin del software 19
1.5.5 Administracin del proyecto 19
1.5.6 Ciclo de vida del software 19
1.6 Ejercicios 20
Referencias 21
2
www.FreeLibros.org
1
Introduccin a la
ingeniera de software
El ingeniero de software aficionado siempre est a la
bsqueda de algo mgico, algn mtodo o herramienta
sensacional que prometa convertir el desarrollo de
software en algo trivial. Est en el ingeniero de software
profesional saber que no existe tal panacea.
Grady Booch, en Object-Oriented Analysis and Design
I j l trmino ingeniera de software fue acuado en 1968 como una respuesta al nivel de pro
greso desolador del objetivo de desarrollar software de calidad a tiempo y dentro del presupuesto.
Los desarrolladores de software no fueron capaces de definir objetivos concretos, predecir los
recursos necesarios para lograr esos objetivos y manejar las expectativas de los clientes. Con
mucha frecuencia se prometa la luna y la construccin de un vehculo lunar, y se entregaba un
par de ruedas cuadradas.
El nfasis de la ingeniera de software est en las dos palabras: ingeniera y software. Un
ingeniero es capaz de construir un producto de alta calidad usando componentes ya elaborados e
integrndolos bajo restricciones de tiempo y presupuesto. El ingeniero se enfrenta a menudo con
problemas mal definidos y con soluciones parciales, y tiene que apoyarse en mtodos empricos
para evaluar soluciones. Los ingenieros que trabajan en campos de aplicacin como el diseo de
aeronaves de pasajeros y la construccin de puentes han resuelto en forma satisfactoria retos simi
lares. Los ingenieros de software no han tenido tanto xito.
Se ha investigado de manera activa el problema de construir y entregar a tiempo sistemas de
software complejos. Se ha culpado a todo, desde el cliente (qu quiere decir usted con que no
puedo obtener la luna por $50?) hasta lo blando en software (si pudiera aadir una ltima
caracterstica...) y la juventud de esta disciplina. Cul es el problema?
Complejidad y cambio.
Los sistemas de software tiles son complejos. Para seguir siendo tiles necesitan evolucio
nar con las necesidades de los usuarios finales y el ambiente de destino. En este libro describimos
tcnicas orientadas a objetos para conquistar sistemas de software complejos y cambiantes. En este
captulo proporcionamos una motivacin para las tcnicas orientadas a objetos y definimos los
conceptos bsicos que se usan a lo largo de este libro.
3
www.FreeLibros.org
4 C apitulo 1 Introduccin a la ingeniera d e software
1.1 Introduccin: fallas de la ingeniera de software
Considere los siguientes ejemplos [Neumann, 1995]:
El error del ao 1900
En 1992, Mary, de Winona, Minnesota, recibi una invitacin para que asistiera a un jardn de
nios. En ese entonces Mary tena 104 aos.
Error del ao bisiesto
A un supermercado le pusieron una multa de 1,000 dlares por tener carne que haba caducado
por un da, el 29 de febrero de 1988. El programa de computadora que imprimi la fecha de
caducidad en las etiquetas de la carne no tom en cuenta que 1988 era ao bisiesto.
Mal u s o de interfaz
El 10 de abril de 1990, en Londres, un tren subterrneo sali de la estacin sin su conductor. El
conductor haba oprimido el botn que arrancaba el tren confiando e n el sistema que impeda que
el tren se moviera mientras las puertas estuvieran abiertas. El operador del tren haba abandonado
su lugar para cerrar una puerta que estaba atorada. Cuando finalmente la puerta se cerr, el tren
simplemente se fue.
Seguridad
El 2 de noviembre de 1988, un programa que se autopropaga, a l que posteriormente se le llam el
gusano de Internet, fue lanzado en Internet. El programa explot la vulnerabilidad de los servicios de
red, como la del programa de envo de correo de Unix, para replicarse a s mismo de una computadora
a otra. Por desgracia, al llegar el gusano de Internet a una mquina, consuma todos los recursos de
cmputo disponibles y haca que la mquina infectada dejara de funcionar. Se estima que se afect
10% de todos los nodos de Internet. Se necesitaron varios das para erradicar la infeccin.
C on retraso y excedido en el presupuesto
En 1995 los errores en el sistema de manejo de equipaje automatizado del nuevo aeropuerto
internacional de Denver causaron que se daaran las maletas. El aeropuerto abri con 16 meses de
retraso, con un exceso de gasto de 3.2 mil millones de dlares y c on un sistema para el manejo
de equipaje en su mayor parte manual.
Entrega a tiempo
Despus de 18 meses de desarrollo, se entreg un sistema de 200 millones de dlares a una
compaa de seguros de salud en Wisconsin en 1984. Sin embargo, el sistema no funcion en
forma correcta: se expidieron 60 millones de dlares de pagos extras. Se necesitaron tres aos para
componer el sistema.
C omplejidad innecesaria
El avin de carga C-17 de McDonnell Douglas se excedi 500 millones de dlares en el
presupuesto a causa de problemas en su software de electrnica de aviacin. El C-17 inclua 19
computadoras a bordo, 80 microprocesadores y seis lenguajes de programacin diferentes.
Cada una de las fallas descritas antes se debi a un problema relacionado con software. En
algunos casos los desarrolladores no anticiparon situaciones que ocurren rara vez (una persona
que vive ms de cien aos, aos bisiestos que tienen un impacto en las fechas de caducidad). En
otros casos los desarrolladores no anticiparon que el usuario hara mal uso del sistema (la
opresin de un botn, la exploracin de las facilidades de depuracin del envo de correo). En
otros casos las fallas del sistema resultaron por fallas de administracin (entrega tarda y con
presupuesto excedido, entrega a tiempo de un sistema incorrecto, complejidad innecesaria).
www.FreeLibros.org
Q u e s la Ingeniera d e software? 5
Los sistemas de software son creaciones complejas: realizan muchas funciones, estn
construidos para lograr muchos objetivos diferentes y con frecuencia conflictivos, comprenden
muchos componentes, muchos de sus componentes son en s mismos complejos y hechos a la
medida, muchos participantes de disciplinas diferentes intervienen en el desarrollo de estos com
ponentes, el proceso de desarrollo y el ciclo de vida del software a menudo abarcan muchos aos y,
por ltimo, los sistemas complejos son difciles de comprender por completo para una sola per
sona. Muchos sistemas son tan difciles de comprender, incluso durante su fase de desarro
llo, que nunca llegan a ser terminados: a stos se les llama vaporware.
Los proyectos de desarrollo de software estn sujetos a cambios constantes. Debido a que los
requerimientos son complejos, necesitan ser actualizados cuando se descubren errores y cuando
los desarrolladores tienen una mejor comprensin de la aplicacin. Si el proyecto dura muchos
aos, la rotacin de personal es alta y requiere entrenamiento constante. El tiempo entre los cam
bios tecnolgicos con frecuencia es ms corto que la duracin del proyecto. La suposicin amplia
mente difundida entre los gerentes de proyecto de software de que hay que abordar todos los cam
bios y que los requerimientos pueden congelarse, conduce a que se despliegue un sistema
irrelevante.
En la siguiente seccin presentamos una vista de alto nivel de la ingeniera de software.
Describimos la ingeniera de software bajo la perspectiva de la ciencia, la ingeniera y la adqui
sicin y formalizacin de conocimientos. En la seccin 1.3 describimos con mayor detalle los
trminos y conceptos principales que usamos en este libro. En la seccin 1.4 proporcionamos una
panormica de las actividades del desarrollo de la ingeniera de software. En la seccin 1.5 damos
una panormica de las actividades administrativas de la ingeniera de software.
1.2 Q u e s la ingeniera de software?
La ingeniera de software es una actividad de modelado. Los ingenieros de software manejan la
complejidad mediante el modelado, enfocndose siempre slo en los detalles relevantes e igno
rando todo lo dems. En el curso del desarrollo, los ingenieros de software construyen muchos
modelos diferentes del sistema y del dominio de aplicacin.
La ingeniera de software es una actividad para la solucin de problemas. Se usan los
modelos para buscar una solucin aceptable. Esta bsqueda es conducida por la experimentacin.
Los ingenieros de software no tienen recursos infinitos, y estn restringidos por presupuestos y
tiempos de entrega. Dada la falta de una teora fundamental, con frecuencia tienen que apoyarse
en mtodos empricos para evaluar los beneficios de alternativas diferentes.
La ingeniera de software es una actividad para la adquisicin de conocimiento. En el
modelado de los dominios de la aplicacin y la solucin, el ingeniero de software recopila datos,
los organiza en informacin y los formaliza en conocimiento. La adquisicin de conocimiento
no es lineal, ya que un solo dato puede invalidar modelos completos.
La ingeniera de software es una actividad dirigida por una fundamentacin. Cuando se
adquiere conocimiento y se toman decisiones acerca del sistema o sus dominios de aplicacin,
los ingenieros de software tambin necesitan captar el contexto en el que se tomaron las decisiones
y las razones que hay tras las mismas. La informacin de la fundamentacin, representada como
un conjunto de modelos de problemas, permite que los ingenieros de software comprendan las
implicaciones de un cambio propuesto cuando revisan una decisin.
www.FreeLibros.org
6 C apitulo 1 Introduccin a la ingeniera d e software
En esta seccin describimos con mayor detalle la ingeniera de software desde la perspectiva
del modelado, la solucin de problemas, la adquisicin de conocimientos y la fundamentacin.
Para cada una de estas actividades, los ingenieros de software tienen que trabajar bajo restricciones
de personal, tiempo y presupuesto. Adems, suponemos que los cambios pueden suceder en cual
quier momento.
1.2.1 Modelado
H propsito de la ciencia es describir y comprender sistemas complejos, como un sistema de
tomos, una sociedad de seres humanos o un sistema solar. Por tradicin se hace una distincin entre
ciencias naturales y ciencias sociales para distinguir entre tos dos tipos principales de sistemas. El
propsito de las ciencias naturales es comprender la naturaleza y sus subsistemas. Las ciencias natu
rales incluyen, por ejemplo, biologa, qumica, fsica y paleontologa. El propsito de las ciencias
sociales es comprender a tos seres humanos. Las ciencias sociales incluyen psicologa y sociologa.
Hay otro tipo de sistemas a los que llamamos sistemas artificiales. Ejemplos de sistemas arti
ficiales incluyen el transbordador espacial, los sistemas de reservacin de boletos de avin y los
sistemas de comercializacin de acciones. Herbert Simn acu el trmino ciencias de lo artificial
para describir las ciencias que tratan sobre los sistemas artificiales [Simn, 1970]. Mientras que las
ciencias naturales y sociales han existido durante siglos, las ciencias de lo artificial son recientes.
La ciencia de la computacin, por ejemplo, la ciencia que trata de la comprensin de los sistemas
de computadora, es una hija del siglo pasado.
Muchos mtodos que se han aplicado de modo satisfactorio en las ciencias naturales y en las
humanidades tambin pueden aplicarse en las ciencias de lo artificial. Observando las dems cien
cias podemos aprender un poco. Uno de los mtodos bsicos de la ciencia es el modelado. Un
modelo es una representacin abstracta de un sistema que nos permite responder preguntas acerca
del sistema. Los modelos son tiles cuando se manejan sistemas que son demasiado gran
des, demasiado pequeos, demasiado complicados o demasiado caros para tener una experiencia
de primera mano. Los modelos tambin nos permiten visualizar y comprender sistemas que ya no
existen o que slo se supone que existen.
Los bilogos dedicados a los fsiles desentierran unos cuantos huesos y dientes que se han
conservado de algn dinosaurio que nadie ha visto. A partir de los fragmentos de hueso recons
truyen un modelo del animal siguiendo las reglas de la anatoma. Entre ms huesos encuentran ms
clara es su idea de la manera en que se renen las piezas y mayor es la confianza de que su modelo
concuerda con el dinosaurio original. Si encuentran una cantidad suficiente de huesos, dientes y
garras, casi pueden estar seguros de que su modelo refleja la realidad con precisin y pueden hacer
suposiciones sobre las partes faltantes. Las piernas, por ejemplo, por lo general vienen en pares. Si
se encuentra la pierna izquierda, pero falta la derecha, el bilogo de fsiles tiene una idea bastante
buena de cmo debe verse la pierna faltante y en qu parte del modelo encaja. ste es un ejemplo
de un modelo de un sistema que ya no existe.
Los fsicos actuales dedicados a la alta energa estn en una posicin similar a la de los bi
logos de fsiles que han encontrado la mayora de los huesos. Los fsicos estn construyendo un
modelo de la materia y la energa y la manera en que se renen en el nivel subatmico ms bsico.
Su herramienta es el acelerador de partculas de alta energa. Muchos aos de experimentacin con
los aceleradores de partculas han dado a los fsicos de alta energa la suficiente confianza para
pensar que sus modelos reflejan la realidad y que las piezas faltantes que todava no han encon
www.FreeLibros.org
Q u e s la Ingeniera d e software? 7
trado se acomodarn en el modelo llamado estndar. ste es un ejemplo de un modelo para un
sistema que se supone que existe.
Ambos modeladores de sistemas, los bilogos de fsiles y los fsicos de alta energa, mane
jan dos tipos de entidades: el sistema del mundo real observado en funcin de un conjunto de fen
menos, y el modelo del dominio de problema representado como un conjunto de conceptos inter-
dependientes. El sistema en el mundo real es un dinosaurio o partculas subatmicas. El modelo
del dominio de problema es una descripcin de aquellos aspectos del sistema del mundo real que
son relevantes para el problema que se est considerando.
Los ingenieros de software enfrentan retos similares a los de los bilogos de fsiles y fsicos
de alta energa. Primero, los ingenieros de software necesitan comprender el ambiente en el que va a
operar el sistema. Para un sistema de control de trfico de trenes, los ingenieros de software necesi
tan conocer los procedimientos de sealizacin de los trenes. Para un sistema de comercializacin
de acciones, los ingenieros de software necesitan conocer las reglas de comercio. Los ingenieros de
software no necesitan llegar a ser por completo despachadores de trenes certificados o corredores
de bolsa, sino que slo necesitan aprender los conceptos del dominio de problema que son rele
vantes para el sistema. En otras palabras, necesitan construir un modelo del dominio de problema.
Segundo, los ingenieros de software necesitan comprender los sistemas que podran construir
para evaluar diferentes soluciones y compromisos. La mayora de los sistemas son demasiado com
plejos para que sean comprendidos por una sola persona y cuesta mucho construirlos. Para atacar
estos retos, los ingenieros de software describen los aspectos importantes de los sistemas alternativos
que investigan. En otras palabras, necesitan construir un modelo del dominio de solucin.
Los mtodos orientados a objetos combinan las actividades de modelado de tos dominios de
problema y de solucin en uno solo. Primero se modela el dominio de problema como un conjunto
de objetos y relaciones. Luego, el sistema usa este modelo para representar los conceptos del mundo
real que manipula. Un sistema de control de trfico de trenes incluye objetos de trenes que represen
tan a los trenes que supervisa. Un sistema de comercializacin de acciones incluye objetos de transac
cin que representan la compra y venta de acciones. Luego, tambin se modelan como objetos los
conceptos del dominio de solucin. El conjunto de lneas que se usan para representar un tren o una
transaccin son objetos que son parte del dominio de solucin. La idea de los mtodos orientados a
objetos es que el modelo del dominio de solucin es una extensin del modelo del dominio de pro
blema. El desarrollo de software se traduce en las actividades necesarias para identificar y describir
un sistema como un conjunto de modelos que abordan el problema del usuario final. En el captulo 2,
Modelado con UML, describimos con mayor detalle el modelado y el concepto de objetos.
1.2.2 Solucin de problemas
La ingeniera es una actividad para la solucin de problemas. Los ingenieros buscan una
solucin adecuada, a menudo mediante ensayo y error, evaluando alternativas en forma emprica
con recursos limitados y con conocimiento incompleto. En su forma ms simple, el mtodo de la
ingeniera incluye cinco pasos:
1. Formular el problema
2. Analizar el problema
3. Buscar soluciones
www.FreeLibros.org
8 C apitulo 1 Introduccin a la ingeniera d e software
4. Decidir cul es la solucin adecuada
5. Especificar la solucin
La ingeniera de software es una actividad de ingeniera. No es algortmica. Requiere experi
mentacin, la reutilizacin de soluciones patrn y la evolucin creciente del sistema hacia una
solucin que sea aceptable para el cliente.
El desarrollo de software incluye, por lo general, cinco actividades de desarrollo: obtencin
de requerimientos, anlisis, diseo del sistema, diseo de objetos e implementacin. Durante la
obtencin de requerimientos y el anlisis, tos ingenieros de software formulan el problema junto
con el cliente y construyen el modelo del dominio de problema. La obtencin de requerimientos y
el anlisis corresponden a los pasos 1 y 2 del mtodo de ingeniera. Durante el diseo del sistema
los ingenieros de software analizan el problema, lo dividen en partes ms pequeas y seleccionan
estrategias generales para el diseo del sistema. Durante el diseo de objetos seleccionan solu
ciones detalladas para cada parte y deciden la solucin ms adecuada. El diseo del sistema y el
diseo de objetos dan como resultado el modelo del dominio de solucin. Los diseos de sistema y
objetos corresponden a los pasos 3 y 4 del mtodo de ingeniera. Durante la implementacin, los
ingenieros de software realizan el sistema trasladando el modelo del dominio de solucin hacia una
representacin ejecutable. La implementacin corresponde al paso 5 del mtodo de ingeniera. Lo
que hace que la ingeniera de software sea diferente a la solucin de problemas en otras ciencias
es que los cambios suceden mientras se est resolviendo el problema.
El desarrollo de software tambin incluye actividades cuyo propsito es evaluar lo adecuado
de los modelos respectivos. Durante la revisin de anlisis, el modelo del dominio de aplicacin se
compara con la realidad del cliente, la cual, a su vez, puede cambiar como resultado del modelado.
Durante la revisin del diseo se evala el modelo del dominio de solucin contra los objetivos del
proyecto. Durante las pruebas se valida el sistema contra el modelo del dominio de solucin, el
cual puede cambiar a causa de la introduccin de nuevas tecnologas. Durante la administracin
del proyecto, los administradores comparan su modelo del proceso de desarrollo (es decir, la calen-
darizacin y presupuesto del proyecto) contra la realidad (es decir, los productos de trabajo entre
gados y los recursos gastados).
1.2.3 Adquisicin de conocimiento
Un error comn que cometen los ingenieros y gerentes de software es suponer que la adqui
sicin del conocimiento necesario para desarrollar un sistema es lineal. Este error no slo lo come
ten los gerentes de software, sino tambin se le puede encontrar en otras reas. En el siglo x v i i se
public un libro que ofreca ensear todos los poemas alemanes vertindolos con un embudo en la
cabeza del estudiante en seis horas.1La idea de usar un embudo para el aprendizaje est basada en
la suposicin ampliamente difundida de que nuestra mente es una cubeta que al principio est
vaca y que se puede llenar en forma lineal. El material entra a travs de nuestros sentidos, se
acumula y es digerido. Popper llama a este modelo de adquisicin lineal del conocimiento la
teora de la cubeta de la mente. Entre las muchas cosas que estn equivocadas en esta teora
1. G. P. Harsdoerfer (1607-1658) Poetischer Trichter, die teutsche DichI- und Reimkunst, ohn Behuf der lateinischen
Sprache, in 6 Stunden einzugieBen , Nuerenberg, 1630.
www.FreeLibros.org
Q u e s la Ingeniera d e software? 9
(descrita en [Popper, 1992]) est la suposicin de que se concibe el conocimiento como consistente
en cosas que pueden llenar una cubeta, y entre ms llena est la cubeta ms sabemos.
La adquisicin de conocimientos es un proceso no lineal. La adicin de una nueva parte de
informacin puede invalidar todo el conocimiento que hemos adquirido para la comprensin de un
sistema. Aunque ya hubiramos documentado esta comprensin en documentos y cdigo (el
sistema est codificado 90% y lo terminaremos la semana prxima) debemos estar preparados
mentalmente para comenzar a partir de cero. Esto tiene implicaciones importantes en el conjunto
de actividades y sus interacciones que definimos para desarrollar el sistema de software. El equiva
lente de la teora de la cubeta de la mente es el modelo de cascada lineal para el desarrollo de soft
ware, en donde todos los pasos del mtodo de ingeniera se realizan en forma secuencial.
La falta de linealidad del proceso de adquisicin de conocimiento tiene implicaciones seve
ras en el desarrollo del sistema. Hay varios procesos de software que manejan este problema
evitando las dependencias lineales inherentes al modelo de cascada. El desarrollo basado en el
riesgo trata de anticipar sorpresas tardas en un proyecto mediante la identificacin de los compo
nentes de alto riesgo. El desarrollo basado en problemas tambin trata de eliminar la linealidad.
Cualquier actividad de desarrollo, ya sea anlisis, diseo del sistema, diseo de objetos, implemen-
tacin, pruebas o entrega, puede influir en cualquier otra actividad. En el desarrollo basado en
problemas todas estas actividades se ejecutan en paralelo. Sin embargo, el problema con los mode
los de desarrollo que no son lineales es que son difciles de manejar.
1.2.4 Administracin de la funda mentacin
Cuando describimos la adquisicin o evolucin del conocimiento, estamos mucho menos
equipados que cuando describimos el conocimiento de un sistema existente. Cmo deriva un
matemtico una prueba o demostracin? Los libros de texto de matemticas estn llenos de prue
bas, pero rara vez proporcionan pistas acerca de la derivacin de pruebas. Esto se debe a que los
matemticos no creen que sea importante. Una vez que se han establecido los axiomas y las reglas
de deduccin, no tiene caso la prueba. Solo tendr que ser revisada cuando cambien las suposicio
nes bsicas o las reglas de deduccin. En las matemticas esto sucede muy rara vez. La aparicin
de geometras no euclidianas 2000 aos despus de Euclides es un ejemplo. Las geometras no
euclidianas estn basadas en los primeros cuatro axiomas de Euclides, pero suponen un axioma
alterno en vez del quinto axioma de Euclides (dada una lnea 1 y un punto p que no es parte de 1,
hay solamente una lnea l ' paralela a 1 que incluye el punto p). Posteriormente, Einstein us una
geometra no euclidiana en su teora general de la relatividad. En astronoma, el cambio tampoco es
un evento diario. Se necesitaron 1500 aos para pasar del modelo geocntrico del universo de Pto-
lomeo al modelo heliocntrico del universo de Copmico.
Para los ingenieros de software la situacin es diferente. Las suposiciones que hacen los
desarrolladores acerca de un sistema cambian en forma constante. Aunque los modelos del
dominio de aplicacin se estabilizan a la larga una vez que los desarrolladores adquieren una
comprensin adecuada del problema, los modelos del dominio de solucin estn en flujo cons
tante. Las fallas de diseo e implementacin descubiertas durante las pruebas, y los problemas
de utilizacin descubiertos durante la evaluacin del usuario activan cambios a los modelos de
solucin. Los cambios tambin pueden ser causados por nuevas tecnologas. La disponibilidad
de bateras de vida larga y las comunicaciones de gran ancho de banda, por ejemplo, pueden
www.FreeLibros.org
10 C apitulo 1 Introduccin a la ingeniera d e software
provocar que se revisen los conceptos de una terminal porttil. El cambio introducido por nue
vas tecnologas permite, con frecuencia, la formulacin de nuevos requerimientos funcionales o
no funcionales. Una tarea tpica que deben realizar los ingenieros de software es cambiar un
sistema operativo actualmente operacional para que incorpore esta nueva tecnologa que lo per
mite. Para cambiar el sistema no es suficiente comprender sus componentes y comportamientos
actuales. Tambin es necesario capturar y comprender el contexto en el cual se tom cada decisin
de diseo. A este conocimiento adicional se le llama la fundamentacin del sistema.
La captura y el acceso a la fundamentacin de un sistema no es trivial. Primero, para cada
decisin tomada se pueden haber considerado, evaluado y argumentado varias alternativas. En con
secuencia, la fundamentacin representa una cantidad de informacin mucho mayor que la que
tienen los modelos de solucin. Segundo, con frecuencia la informacin sobre la fundamentacin
no es explcita. Los desarrolladores toman muchas decisiones con base en su experiencia e intui
cin, sin evaluar de manera explcita diferentes alternativas. Cuando se pide que expliquen una
decisin, puede ser que los desarrolladores tengan que pasar una buena cantidad de tiempo recupe
rando su fundamentacin. Sin embargo, para manejar los sistemas cambiantes, los ingenieros de
software deben enfrentar el reto de capturar y tener acceso a la fundamentacin.
Hasta ahora hemos presentado una visin de alto nivel de la ingeniera de software desde las
perspectivas del modelado, la solucin de problemas, la adquisicin de conocimiento y la fimda-
mentacin. En la siguiente seccin definimos los principales trminos y conceptos que usamos en
el libro.
1.3 C once ptos de ingeniera de software
En esta seccin describimos los conceptos principales que usamos a lo largo del libro.2 Un P r o
y e c t o , cuyo propsito es desarrollar un sistema de software, est compuesto por varias A c t i v i d a
d e s . Cada A c t i v i d a d est compuesta, a su vez, de varias T a r e a s . Una T a r e a consume R e c u r s o s
y origina un P r o d u c t o d e T r a b a j o . Un P r o d u c t o d e T r a b a j o puede ser un S i s t e m a , un Modelo
o un Documento. Los R e c u r s o s son P a r t i c i p a n t e s , Tiempo o E q u i p o . En la figura 1-1 se mues
tra una representacin grfica de estos conceptos. Esta figura est representada en la notacin del
lenguaje de modelado unificado (UML, por sus siglas en ingls). Usamos UML a lo largo del libro
para representar modelos de software y otros sistemas. Usted deber ser capaz de comprender de
manera intuitiva este diagrama sin tener un conocimiento completo de la semntica del UML. En
forma similar, tambin puede usar diagramas UML cuando interacte con un cliente o usuario,
aunque tal vez l no tenga ningn conocimiento del UML. En el captulo 2, Modelado con UML,
describimos con detalle la semntica de estos diagramas.
2. En lo posible, seguinx las definiciones de las normas de la IEEE sobre la ingeniera de software [IEEE, 1997].
www.FreeLibros.org
C o n ce pt o s d e Ingeniera d e software 11
Figura 1-1 Conceptos de ingeniera de software mostrados como un diagrama de clase UML (OMG, 1998).
1.3.1 Participantes y papeles
El desarrollo de un sistema de software requiere la colaboracin de muchas personas con
diferentes formaciones o intereses. El cliente ordena y paga el sistema. Los desarrolladores cons
truyen el sistema. El gerente del proyecto planea y calcula el presupuesto del proyecto y coordina a
los desarrolladores y al cliente. Los usuarios finales son apoyados por el sistema. Nos referimos
a todas estas personas que estn involucradas en el proyecto como participantes. Nos referimos al
conjunto de responsabilidades en el proyecto o en el sistema como un papel. Un papel est aso
ciado con un conjunto de tareas y se asigna a un participante. El mismo participante puede cum
plir varios papeles.
Considere una mquina que distribuye boletos para un tren. Los viajeros tienen la opcin
de seleccionar un boleto para un solo viaje, para varios viajes o una tarjeta temporal para un da
o una semana. El distribuidor de boletos calcula el precio del boleto solicitado con base en el
rea en donde se realizar el viaje y si el viajero es nio o adulto. En este ejemplo, los viajeros
que compran boletos son usuarios finales. La compaa de trenes que contrata el desarrollo del
distribuidor de boletos es el cliente del proyecto. Los ingenieros que realizan el sistema (y el
software), Juan, Marcos y Zo son desarrolladores. Su jefa, Alicia, que coordina el trabajo y la
comunicacin con el cliente, es la gerente del proyecto. Usuario final, cliente, desarrollador y
gerente de proyecto son papeles. Alicia, Juan, Marcos, Zo, la compaa de trenes y los viajeros
son participantes.
www.FreeLibros.org
12 C apitulo 1 Introduccin a la ingeniera d e software
1.3.2 Sistemas y modelos
Usamos el trmino sistema para referimos a la realidad subyacente, y el trmino modelo
para referirnos a cualquier abstraccin de la realidad. Un distribuidor de boletos para un tren
subterrneo es un sistema. Los planos para el distribuidor de boletos, los esquemas de su alam
brado elctrico y los modelos de objetos de su software son modelos del distribuidor de boletos.
Observe que un proyecto de desarrollo es, en s mismo, un sistema que puede ser modelado. La
calendarizacin del proyecto, su presupuesto y su tiempo de entrega planeado son modelos del
proyecto de desarrollo.
1.3.3 Productos de trabajo
Un producto de trabajo es un artefacto que se produce durante el desarrollo, como un
documento o un fragmento de software para los dems desarrolladores o para el cliente. Nos
referimos a un producto de trabajo para el consumo interno del proyecto como producto de tra
bajo interno. Nos referimos a un producto de trabajo para un cliente como una entrega. Las
entregas se definen, por lo general, antes del inicio del proyecto, y estn especificadas en un con
trato que enlaza a los desarrolladores con el cliente.
En el ejemplo del distribuidor de boletos, los manuales de operacin y mantenimiento que
necesita la compaa de trenes son entregas. Los distribuidores de boletos y su software tambin
son entregas. Los prototipos de demostracin, escenarios de prueba y resultados de prueba pro
ducidos por los desarrolladores para el gerente del proyecto son productos de trabajo internos, a
menos que estn especificados en el contrato como artculos que sern entregados al cliente.
1.3.4 Actividades, tareas y recursos
Una actividad es un conjunto de tareas que se realiza con un propsito especfico. Por
ejemplo, la obtencin de requerimientos es una actividad cuyo propsito es definir con el cliente
lo que har el sistema. La entrega es una actividad cuyo propsito es instalar el sistema en una
ubicacin operacional. La administracin es una actividad cuyo propsito es supervisar y con
trolar el proyecto en forma tal que cumpla sus objetivos (por ejemplo, tiempo de entrega, cali
dad, presupuesto). Las actividades pueden estar compuestas por otras actividades. La actividad
de entrega incluye la actividad de instalacin del software y una actividad de entrenamiento del
operador. A las actividades a veces tambin se les llama fases.
Una tarea representa una unidad atmica de trabajo que puede ser administrada: un gerente
la asigna a un desarrollador, el desarrollador la realiza y el gerente supervisa el avance y termi
nacin de la tarea. Las tareas consumen recursos, dan como resultado productos de trabajo y
dependen de productos de trabajo que son producidos por otras tareas.
Los recursos son bienes que se usan para realizar el trabajo. Los recursos incluyen tiempo,
equipo y mano de obra. Cuando se planea un proyecto, un gerente divide el trabajo en tareas y les
asigna recursos.
1.3.5 Objetivos, requerimientos y restricciones
Un objetivo es un principio de alto nivel que se usa para guiar el proyecto. Los objetivos
definen los atributos del sistema que son importantes. Proyectos diferentes tienen objetivos dife
www.FreeLibros.org
C o n ce pt o s d e Ingeniera d e software 13
rentes. El objetivo principal del desarrollo del software de gua del transbordador espacial es
producir un sistema que sea seguro (es decir, que no ponga en peligro la vida humana). El obje
tivo principal del distribuidor de boletos es producir un sistema que sea altamente confiable (es
decir, que funcione en forma correcta la mayor parte del tiempo).
Los objetivos a menudo entran en conflicto, esto es, es difcil lograrlos en forma simul
tnea. Por ejemplo, la produccin de un sistema seguro, como una aeronave de pasajeros, es
cara. Sin embargo, los fabricantes de aeronaves tambin necesitan poner atencin en el costo de
venta de la aeronave, esto es, producir una aeronave que sea ms barata que las de la competen
cia. La seguridad y el bajo costo son objetivos en conflicto. Una buena parte de la complejidad
en el desarrollo de software viene de objetivos mal definidos o en conflicto.
Los requerimientos son caractersticas que debe tener el sistema. Un requerimiento fun
cional es un rea de funcionalidad que debe soportar el sistema y, en cambio, un requerimiento
no funcional es una restriccin sobre la operacin del sistema.
Por ejemplo, proporcionar al usuario informacin sobre los boletos es un requerimiento
funcional. Proporcionar retroalimentacin en menos de un segundo es un requerimiento no fun
cional. Proporcionar un sistema confiable es un objetivo de diseo. Producir un sistema a bajo
costo es un objetivo gerencial. Otras restricciones incluyen que se requiera una plataforma de
hardware especifica para el sistema o compatibilidad retrospectiva con un sistema heredado que
el cliente no quiere retirar.
1.3.6 Notaciones, mtodos y metodologas
Una notacin es un conjunto de reglas grficas o textuales para representar un modelo. El
alfabeto romano es una notacin para representar palabras. El UML (lenguaje de modelado
unificado [OMG, 1998]), la notacin que usamos a lo largo de este libro, es una notacin orien
tada a objetos para la representacin de modelos. Z [Spivey, 1989] es una notacin para la repre
sentacin de sistemas basada en la teora de conjuntos.
Un mtodo es una tcnica repetible para la resolucin de un problema especfico. Una re
ceta es un mtodo para cocinar un plato especfico. Un algoritmo de ordenamiento es un mtodo
para ordenar elementos de una lista. La administracin de la fundamentacin es un mtodo para
la justificacin de los cambios. La administracin de la configuracin es un mtodo para el
seguimiento de los cambios.
Una metodologa es una coleccin de mtodos para la resolucin de una clase de proble
mas. Un libro de cocina de mariscos es una metodologa para la preparacin de mariscos. El pro
ceso de desarrollo de software unificado [Jacobson et al., 1999], la tcnica de modelado de
objetos (OMT, por sus siglas en ingls [Rumbaugh et al., 1991]), la metodologa Booch [Booch,
1994] y Catalysis [D'Souza y Wills, 1999] son metodologas orientadas a objetos para el desa
rrollo de software.
Las metodologas de desarrollo de software descomponen el proceso en actividades. La
OMT proporciona mtodos para tres actividades: anlisis, que se enfoca en la formalizacin de
los requerimientos del sistema en un modelo de objeto, diseo del sistema, que se enfoca en deci
siones estratgicas, y diseo del objeto, que transforma el modelo de anlisis en un modelo de
objeto que puede ser puesto en prctica. La metodologa OMT supone que ya se han definido los
requerimientos y no proporciona mtodos para la obtencin de los mismos. El proceso de desa
www.FreeLibros.org
14 C apitulo 1 Introduccin a la ingeniera d e software
rrollo de software unificado tambin incluye una actividad de anlisis y trata al diseo del
sistema y al diseo del objeto como una sola actividad llamada diseo. El proceso unificado, a
diferencia del OMT, incluye una actividad de captura de requerimientos para la obtencin y
modelado de requerimientos. Catalysis, aunque usa la misma notacin del proceso unificado, se
enfoca ms en la reutilizacin del diseo y el cdigo usando patrones y marcos. Todas estas
metodologas se enfocan en el manejo de sistemas complejos.
En este libro presentamos una metodologa para el desarrollo de sistemas complejos y
tambin para los cambiantes. Durante el curso de nuestra enseanza e investigacin ([Bruegge,
1992], [Bruegge y Coyne, 1993], [Bruegge y Coyne, 1994], [Coyne et al., 1995]) hemos adaptado
y refinado mtodos de varias fuentes. Para actividades que modelan el dominio de aplicacin,
como la obtencin de requerimientos y el anlisis, describimos mtodos similares a los de OOSE
[Jacobson et al., 1992]. Para actividades de modelado del dominio de solucin, como el diseo
del sistema y el diseo de objetos, describimos actividades orientadas a objetos similares a las de
OMT. Para actividades relacionadas con el cambio nos enfocamos en la administracin de las
razones que se originaron con la investigacin de las razones de diseo [Moran y Carroll, 1996]
y la administracin de la configuracin que se origin para el mantenimiento de sistemas grandes
[Babich, 1986].
1.4 Actividades de desarrollo de ingeniera de software
En esta seccin damos una panormica de las actividades tcnicas asociadas con la ingeniera de
software. Las actividades de desarrollo manejan la complejidad mediante la construccin de mode
los de los dominios del problema o del sistema. Las actividades de desarrollo incluyen:
Obtencin de requerimientos (seccin 1.4.1)
Anlisis (seccin 1.4.2)
Diseo del sistema (seccin 1.4.3)
Diseo de objetos (seccin 1.4.4)
Implementacin (seccin 1.4.5)
En la seccin 1.5 damos una panormica de las actividades administrativas asociadas con la
ingeniera de software.
1.4.1 Obtencin de requerimientos
Durante la obtencin de requerimientos, el cliente y los desarrolladores definen el propsito
del sistema. El resultado de esta actividad es una descripcin del sistema en trminos de actores
y casos de uso. Los actores representan las entidades extemas que interactan con el sistema.
Los actores incluyen papeles como los usuarios finales, otras computadoras con las que necesite
tratar el sistema (por ejemplo, un banco de computadoras central, una red) y el ambiente (por
ejemplo, un proceso qumico). Los casos de uso son secuencias de eventos generales que des
criben todas las acciones posibles entre un actor y el sistema para un fragmento de funcionalidad
dado. La figura 1-2 muestra un caso de uso para el ejemplo del distribuidor de boletos que trata
mos antes.
www.FreeLibros.org
Actividades d e desarrollo d e ingeniera d e software 15
Nombre del caso de uso C o m p r a B o l e t o S e n c i l l o .
Actor participante Iniciado por Vi a j e r o .
Condicin inicial 1. El Via j e r o se para enfrente del distribuidor de boletos, que puede
estar ubicado en la estacin de origen o en otr a estacin.
Flujo de eventos 2. El Via j e r o selecciona las estaciones de origen y destino.
3. El D i s t r i b u i d o r D e B o l e t o s despliega el precio del boleto.
4. El Via j e r o inserta una cantidad de dinero que, por lo menos, es
igual al precio del boleto.
5. El D i s t r i b u i d o r D e B o l e t o s emite el boleto especificado al
Vi a j e r o y regresa el cambio si es el caso.
Condicin de salida 6. El Via j e r o toma un boleto vlido y el cambio, en su caso.
Requerimientos especiales Si la transaccin no se termina despus de un minuto de inactividad, el
D i s t r i b u i d o r D e B o l e t o s regresa todo el dinero insertado.
Figura 1-2 Un ejemplo de un caso de uso: C o m p r a B o l e t o S e n c i l l o .
Durante la obtencin de requerimientos, el cliente y los desarrolladores tambin se ponen
de acuerdo sobre un conjunto de requerimientos no funcionales. Los siguientes son ejemplos de
requerimientos no funcionales:
El distribuidor de boletos deber estar disponible para los viajeros al menos 95% del
tiempo.
El distribuidor de boletos debe proporcionar retroalimentacin al viajero (por ejemplo,
desplegar el precio del boleto, regresar el cambio) menos de un segundo despus de que se
haya seleccionado la transaccin.
En el captulo 4, Obtencin de requerimientos, describimos con mayor detalle la descripcin de
los requerimientos, incluyendo casos de uso y requerimientos no funcionales.
1.4.2 Anlisis
Durante el anlisis, los desarrolladores tratan de producir un modelo del sistema que
sea correcto, completo, consistente, claro, realista y verificable. Los desarrolladores trans
forman los casos de uso producidos durante la obtencin de requerimientos en un modelo de
objeto que describa por completo al sistema. Durante esta actividad, los desarrolladores
descubren ambigedades e inconsistencias en el modelo de caso de uso y las resuelven con
el cliente. El resultado del anlisis es un modelo de objeto comentado con atributos, opera
ciones y asociaciones. La figura 1-3 muestra un ejemplo de un modelo de objeto para el
D i s t r i b u i d o r D e B o l e t o s .
En el captulo 5, Anlisis, describimos con detalle el anlisis, incluyendo modelos de
objetos. En el captulo 2, Modelado con UML, describimos con detalle la notacin UML para
la representacin de modelos.
www.FreeLibros.org
16 C apitulo 1 Introduccin a la ingeniera d e software
Figura 1-3 Un modelo de objeto para el distribuidor de boletos (diagrama de clase UML). En el caso de
uso C o m p r a B o l e t o S e n c i l l o , un Via j e r o inicia una transaccin que dar como resultado un B o l e t o . Un
B o l e t o es vlido solo para una Zona especificada. Durante la T r a n s a c c i n , el sistema calcula el S a l d o
contando las Monedas y B i l l e t e s insertados.
1.4.3 Diseo del sistema
Durante el diseo del sistema, los desarrolladores definen los objetivos de diseo del
proyecto y descomponen el sistema en subsistemas ms pequeos que pueden realizar los equi
pos individuales. Los desarrolladores tambin seleccionan estrategias para la construccin del
sistema, como la plataforma de hardware y software en la que ejecutar el sistema, la estrategia
de almacenamiento de datos persistentes, el flujo de control global, la poltica de control de
acceso y el manejo de las condiciones de frontera. El resultado de un diseo de sistema es una
descripcin clara de cada una de estas estrategias, una descomposicin en subsistemas y un dia
grama de organizacin que representa el mapeo en hardware y software del sistema. La figura 1-4
muestra un ejemplo de una descomposicin del sistema para el distribuidor de boletos.
En el captulo 6, Diseo del sistema, describimos con detalle el diseo del sistema y sus
conceptos relacionados.
1.4.4 Diseo de objetos
Durante el diseo de objetos, los desarrolladores definen objetos personalizados para cubrir
el hueco entre el modelo de anlisis y la plataforma de hardware y software definida durante el
diseo del sistema. Esto incluye definir con precisin los objetos e interfaces de subsistemas, la
seleccin de componentes hechos, la reestructuracin del modelo de objeto para lograr los objeti
vos de diseo, tales como extensibilidad o comprensin, y la optimizacin del modelo de objetos
para el desempeo. El resultado de la actividad de diseo de objetos es un modelo de objetos deta
llado, comentado con restricciones y descripciones precisas para cada elemento. En el captulo 7,
Diseo de objetos, describimos con detalle el diseo de objetos y sus conceptos relacionados.
1.4.5 Implementacin
Durante la implementacin, los desarrolladores traducen el modelo de objetos en cdigo
fuente. Esto incluye la implementacin de los atributos y mtodos de cada objeto y la inte
gracin de todos los objetos de forma tal que funcionen como un solo sistema. La actividad de
implementacin cubre el hueco entre el modelo de diseo de objetos detallado y el conjunto
completo de archivos de cdigo fuente que pueden ser compilados juntos. En este libro no trata-
www.FreeLibros.org
Administracin del d esar ro llo d e software 17
Figura 1-4 Una descomposicin en subsistemas del D i s t r i b u i d o r D e B o l e t o s (diagrama de clase
UML, las carpetas representan subsistemas y las lneas de guiones representan dependencias). El subsistema
i n t e r f a z d e l v i a j e r o es responsable de la recoleccin de entrada del V i a j e r o y proporciona retroali-
mentacin (por ejemplo, despliega el precio del boleto, regresa el cambio). El subsistema T a r i f a l o c a l
calcula el precio de boletos diferentes de acuerdo con una base de datos local. El subsistema T a r i f a c e n
t r a l , que se encuentra en una computadora central, conserva una copia de referencia de la base de datos de
tarifas. Un subsistema A c t u a l i z a d o r es responsable de la actualizacin de las bases de datos locales en
cada D i s t r i b u i d o r D e B o l e t o s mediante una red cuando cambian los precios de los boletos.
mos ninguna actividad de implementacin, ya que suponemos que el lector ya est familiarizado
con los conceptos de la programacin.
1.5 Administracin del desarrollo de software
En esta seccin describimos en forma breve las actividades relacionadas con la administracin
de un proyecto de ingeniera de software. Las actividades de administracin se enfocan en la pla-
neacin del proyecto, la supervisin de su estado, el seguimiento de los cambios y la coordinacin
de los recursos para que se entregue un producto de alta calidad a tiempo y dentro del presu
puesto. Las actividades de administracin no involucran slo a los gerentes, sino tambin a la
mayora de los dems participantes del proyecto. Las actividades de administracin incluyen:
Comunicacin (seccin 1.5.1)
Administracin de la fundamentacin (seccin 1.5.2)
Pruebas (seccin 1.5.3)
Administracin de la configuracin del software (seccin 1.5.4)
Administracin del proyecto (seccin 1.5.5)
Actividades de modelado del ciclo de vida del software (seccin 1.5.6)
1.5.1 C omunicacin
La comunicacin es la actividad ms crtica y la que consume ms tiempo en la ingeniera
de software. La falta de comprensin y las omisiones con frecuencia conducen a fallas y retrasos
cuya correccin posterior durante el desarrollo es costosa. La comunicacin incluye el intercam
bio de modelos y documentos acerca del sistema y su dominio de aplicacin, reportando el
www.FreeLibros.org
18 C apitulo 1 Introduccin a la ingeniera d e software
estado de los productos de trabajo, proporcionando retroalimentacin sobre la calidad de los
productos de trabajo, proponiendo y negociando asuntos y comunicando decisiones. La comuni
cacin se dificulta por la diversidad de conocimientos de los participantes, por su distribucin
geogrfica y por el volumen, complejidad y evolucin de la informacin que se intercambia.
Los participantes en el proyecto disponen de muchas herramientas para manejar los asun
tos de comunicacin. Las ms efectivas son las convenciones: cuando los participantes se ponen
de acuerdo en la notacin para representar la informacin, en las herramientas para el manejo de
informacin y en los procedimientos para presentar y resolver asuntos, ya han eliminado una
buena cantidad de fuentes de incomprensin. Ejemplos de notacin incluyen diagramas UML,
plantillas para la escritura de documentos y minutas de reuniones y esquemas de identificacin
para la denominacin de componentes de software. Ejemplos de herramientas incluyen herra
mientas de ingeniera de software asistida por computadora (CASE, por sus siglas en ingls)
para el mantenimiento de modelos, procesadores de palabras para la generacin de documentos
y formatos de intercambio para publicar informacin. Ejemplos de procedimientos incluyen proce
dimientos de reuniones para la organizacin, conduccin y captura de una reunin, procedimien
tos de revisin para revisar documentos y proporcionar retroalimentacin y procedimientos de
inspeccin para la deteccin de defectos en los modelos o en el cdigo fuente. Las convenciones
que se seleccionen no necesitan ser las mejores de que se disponga, ya que slo es necesario que
todos las compartan y estn de acuerdo en ellas. En el captulo 3, Comunicacin de proyectos,
describimos con detalle los asuntos de comunicacin.
1.5.2 Administracin de la fundamentacin
La fundamentacin es la justificacin de las decisiones. Para una decisin dada, su fundamen
tacin incluye el problema que resuelve, las alternativas que consideraron los desarrolladores, los
criterios que usaron los desarrolladores para evaluar las alternativas, el debate que sostuvieron
los desarrolladores para lograr el consenso y la decisin. La fundamentacin es la informacin
ms importante que necesitan los desarrolladores cuando hacen cambios al sistema. Si cambia
un criterio, los desarrolladores pueden volver a evaluar todas las decisiones que dependen de
dicho criterio. Si llegan a estar disponibles nuevas alternativas, se les puede comparar con todas las
dems que ya han sido evaluadas. Si se cuestiona una decisin, pueden recuperar su fundamenta
cin para justificarla.
Por desgracia, la fundamentacin tambin es la informacin ms compleja que manejan
los desarrolladores durante el desarrollo y, por lo tanto, la ms difcil de actualizar y mantener.
Para manejar este reto, los desarrolladores capturan la fundamentacin durante las reuniones en
lnea, representan la fundamentacin con modelos de problema y tienen acceso a la fundamen
tacin durante los cambios. En el captulo 8, Administracin de la jundament acin, describimos
con detalle estos asuntos.
1.5.3 Pruebas
Durante las pruebas, los desarrolladores encuentran diferencias entre el sistema y sus mode
los ejecutando el sistema (o partes de l) con conjuntos de datos de prueba. Aunque las pruebas no
se consideran, por lo general, como una actividad administrativa, las describimos aqu debido a que
ayudan a la determinacin de la calidad del sistema y sus modelos relacionados. Durante las pruebas
unitarias, los desarrolladores comparan el modelo del diseo de objetos con cada objeto y sub
www.FreeLibros.org
Administracin del d esar ro llo d e software 19
sistema. Durante las pruebas de integracin se forman combinaciones de subsistemas y se compa
ran con el modelo de diseo del sistema. Durante las pruebas del sistema se ejecutan casos tpicos
y excepcionales en el sistema y se comparan con el modelo de requerimientos. El objetivo de las
pruebas es descubrir la mayor cantidad posible de fallas para que puedan repararse antes de la
entrega del sistema. En el captulo 9, Pruebas, describimos estos asuntos con mayor detalle.
1.5.4 Administracin de la configuracin del software
La administracin de la configuracin del software es el proceso que supervisa y controla
los cambios en los productos de trabajo. El cambio se extiende por el desarrollo del software.
Los requerimientos cambian conforme el cliente solicita nuevas caractersticas y conforme los
desarrolladores mejoran su comprensin del dominio de aplicacin. La plataforma de hardware
y software sobre la que se est construyendo el sistema cambia conforme se dispone de nuevas
tecnologas. El sistema cambia conforme se descubren fallas durante las pruebas y se reparan.
La administracin de la configuracin del software acostumbra estar en el mbito del manteni
miento, cuando se introducen mejoras graduales en el sistema. Sin embargo, en los procesos de
desarrollo modernos los cambios suceden mucho ms pronto que el mantenimiento. Conforme
se hace difusa la distincin entre desarrollo y mantenimiento se pueden manejar los cambios
usando la administracin de la configuracin en todas las etapas.
La administracin de la configuracin permite que los desarrolladores lleven cuenta de los
cambios. El sistema est representado como varios conceptos de configuracin que pueden revi
sarse en forma independiente. Para cada concepto de configuracin se lleva cuenta de su evolucin
como una serie de versiones. El examen y la seleccin de versiones permite que los desarrolladores
den marcha atrs hacia un estado bien definido del sistema cuando falla un cambio.
La administracin de la configuracin tambin permite que los desarrolladores controlen
el cambio. Despus de que se ha definido una lnea bsica, cualquier cambio necesita ser valo
rado y aprobado antes de que se le ponga en prctica. Esto permite que la administracin se ase
gure que el sistema est evolucionando de acuerdo con los objetivos y que se limite la cantidad
de problemas introducidos en el sistema. En el captulo 10.Administracin de la configuracin
del software, describimos estos asuntos con ms detalle.
1.5.5 Administracin del proyecto
La administracin del proyecto no produce ningn artefacto por s misma. En vez de ello,
incluye las actividades de vigilancia que aseguran la entrega de un sistema de alta calidad a
tiempo y dentro del presupuesto. Esto incluye la planeacin y presupuestacin del proyecto
durante las negociaciones con el cliente, la contratacin de desarrolladores y su organizacin en
equipos, la vigilancia del estado del proyecto y las intervenciones cuando suceden desviaciones.
La mayora de las actividades de administracin del proyecto caen ms all del alcance de este
libro. Sin embargo, describimos las actividades de administracin del proyecto que son visibles
ante los desarrolladores y las tcnicas que hacen ms efectiva la comunicacin entre el desa
rrollo y la administracin. En el captulo 11, Administracin del proyecto, describimos estos
asuntos con detalle.
1.5.6 C iclo de vida del software
En la seccin 1.2 describimos la ingeniera de software como una actividad de modelado.
Los desarrolladores construyen modelos de los dominios de la aplicacin y la solucin para
www.FreeLibros.org
20 C apitulo 1 Introduccin a la ingeniera d e software
manejar su complejidad. Al ignorar detalles irrelevantes y enfocarse slo en lo que es relevante
para un problema especfico, los desarrolladores pueden resolver en forma ms efectiva los
problemas y responder preguntas. El proceso de desarrollo de software tambin puede verse
como un sistema complejo con entradas, salidas, actividades y recursos. Por lo tanto, no es sor
prendente que las mismas tcnicas de modelado que se aplican a los artefactos de software
puedan usarse para los procesos de modelado de software. A un modelo general del proceso de
desarrollo de software se le llama ciclo de vida del software. En el captulo de cierre de este
libro, captulo 12, Ciclo de vida del software, describimos los ciclos de vida del software.
1.6 Ejercicios
1. Cul es el propsito del modelado?
2. Un lenguaje de programacin es una notacin para la representacin de algoritmos y
estructuras de datos. Liste dos ventajas y dos desventajas del uso de un lenguaje de progra
macin como notacin nica a lo largo del proceso de desarrollo.
3. Considere una tarea con la que no est familiarizado, como el diseo de un automvil con
cero emisiones de contaminantes. Cmo podra atacar el problema?
4. Qu significa la adquisicin de conocimiento no es lineal? Proporcione un ejemplo
concreto de adquisicin de conocimiento que ilustre esto.
5. Plantee una fundamentacin hipottica para las siguientes decisiones de diseo:
El distribuidor de boletos ser, a lo mucho, de un metro y medio de alto.
El distribuidor de boletos incluir dos sistemas de cmputo redundantes.
El distribuidor de boletos incluir una pantalla sensible al tacto para el desplegado
de instrucciones y entrada de comandos. El nico control adicional ser un botn de
cancelacin para abortar la transaccin.
6. Especifique cules de los siguientes enunciados son requerimientos funcionales y cules
son requerimiento no funcionales:
El distribuidor de boletos debe permitir que un viajero compre pases semanales.
El distribuidor de boletos debe estar escrito en Java.
El distribuidor de boletos debe ser fcil de usar.
7. Especifique cules de las siguientes decisiones se tomaron durante el levantamiento de
requerimientos o durante el diseo del sistema:
El distribuidor de boletos est compuesto por un subsistema de interfaz de usuario,
un subsistema para calcular la tarifa y un subsistema de red para manejar la comuni
cacin con la computadora central.
El distribuidor de boletos usar chips de procesador PowerPC .
El distribuidor de boletos proporciona ayuda en lnea al viajero.
8. Cul es la diferencia entre una tarea y una actividad?
9. Un avin de pasajeros est compuesto por varios millones de partes individuales y
requiere miles de personas para ensamblarlo. Un puente de autopista de cuatro carriles es
otro ejemplo de complejidad. La primera versin de Word para Windows, un procesador
de palabras lanzado por Microsoft en noviembre de 1989, requiri 55 aos hombre, dando
como resultado 249,000 lneas de cdigo fuente y fue entregado con 4 aos de retraso. Los
www.FreeLibros.org
Ejercicios 21
aviones y los puentes de autopista por lo general se entregan a tiempo y por debajo de su
presupuesto, mientras que con el software a menudo no es as. Discuta cules son, en
su opinin, las diferencias entre el desarrollo de un avin, un puente y un procesador de
palabras que pueden causar esta situacin.
Referencias
[Babich, 1986]
[Booch, 1994]
[Bruegge, 1992]
[Bruegge y Coyne, 1993]
[Bruegge y Coyne, 1994]
[Coyne et al., 1995]
[DSouza y Wills, 1999]
[IEEE, 1997]
[Jacobson et al., 1992]
[Jacobson et al., 1999]
[Moran y Carroll, 1996]
[Neumann, 1995]
[OMG, 1998]
[Popper, 1992]
[Rumbaugh e t al^ 1991]
[Simn, 1970]
[Spivey, 1989]
W. A. Babich, Software Configuration Management. Addison-Wesley, Reading, MA,
1986.
G. Booch, Object-Oriented Analysis and Design with Applications, 2a. ed. Benjamn/
Cummings, Redwood City, CA, 1994.
B. Bruegge, Teaching an industry-oriented software engineering course", Software
Engineering Education, SEI Conference, Lecture Notes in Computer Sciences, Springer
Vferlag, vol. 640, octubre de 1992, pgs. 65-87.
B. Bruegge y R. Coyne, Model-based software engineering in larger scale project
courses , FIP Transactions on Computer Science and Technology,; Elsevier Science,
fses Bajos, vol. A-40, 1993, pgs. 273-287.
B. Bruegge y R. Coyne, Teaching iterative object-oriented development: Lessons and
directions", en Jorge L. Diaz-Herrera (ed.), 7th Conference on Software Engineering
Education, Lecture Notes in Computer Science, Springer Verlag, vol. 750, enero de 1994,
pgs. 413-427.
R. Coyne, B. Bruegge, A. Dutoit y D. Rothenberger, Teaching more comprehensive
model-based software engineering: Experience with Objectorys use case approach , en
Linda Ibraham (ed.), 8th Conference on Software Engineering Education, Lecture Notes
in Computer Science, Springer Verlag, abril de 1995, pgs. 339-374.
D. F. DSouza y A. C. Wills, Objects, Components, and Frameworks with UML: The
Catalysis Approach. Addison-Wesley, Reading, MA, 1999.
IEEE Standards Collection Software Engineering. IEEE, Piscataway, NJ, 1997.
I. Jacobson, M. Christerson, P. Jonsson y G. Overgaard, Object-Oriented Sojhvare
EngineeringA Use Case Driven Approach. Addison-Wesley, Reading, MA, 1992.
I Jacobson, G. Booch y J. Rumbaugh, The Unified Software Development Process.
Addison-Wesley, Reading, MA, 1999.
T. P. Moran y J. M. Carroll (eds.), Design Rationale: Concepts, Techniques, and Use.
Lawrence Erlbaum Associates, Mahwah, NJ, 1996.
P. G. Neumann, Computer-Related Risks. Addison-Wesley, Reading, MA, 1995.
Object Management Group, OMG Unified Modeling Language Specijication.
Framingham, MA, 1998. http://www.omg.org.
K. Popper, Objective Knowledge: An Evolutionary Approach. Clarendon, Oxford, 1992.
J. Rumbaugh, M. Blaha, W. Premerlani, F. Eddy y W. Lorensen, Object-Oriented
Modeling and Design. Prentice Hall, Englewood Cliffs, NJ, 1991.
H. A. Simn, The Sciences o f the Artificial. MIT Press, Cambridge, MA, 1970.
J. M. Spivey, The ZNotation, A Reference Manual. Prentice Hall Int., Hertfordshire,
Inglaterra, 1989.
www.FreeLibros.org
2
2.1 Introduccin 24
2.2 Una panormica del UML 24
2.2.1 Diagramas de caso de uso 25
2.2.2 Diagramas de clase 25
2.2.3 Diagramas de secuencia 26
2.2.4 Diagramas de grfica de estado 26
2.2.5 Diagramas de actividad 28
2.3 Conceptos de modelado 29
2.3.1 Sistemas, modelos y vistas 29
2.3.2 Conceptos y fenmenos 31
2.3.3 Tipos de datos, tipos de datos abstractos e instancias 33
2.3.4 Clases, clases abstractas y objetos 33
2.3.5 Clases de evento, eventos y mensajes 35
2.3.6 Modelado orientado a objetos 36
2.3.7 Falsificacin y elaboracin de prototipos 38
2.4 Una vista ms profunda al UML 39
2.4.1 Diagramas de caso de uso 39
2.4.2 Diagramas de clase 45
2.4.3 Diagramas de secuencia 50
2.4.4 Diagramas de grfica de estado 52
2.4.5 Diagramas de actividad 54
2.4.6 Organizacin del diagrama 57
2.4.7 Extensiones al diagrama 59
2.5 Exercicios 60
Referencias 61
2 2
www.FreeLibros.org
2
Modelado con UML
Todos los mecnicos estn familiarizados con el problema
de la parte que no se puede comprar porque no se le puede
encontrar, debido a que el fabricante la considera como
parte de alguna otra cosa
Robert Pirsig, en Zen and the Art o f Motorcycle
Maintenance
I - i as notaciones nos permiten formular ideas complejas en forma resumida y precisa. En los
proyectos que involucran a muchos participantes, a menudo con diferentes conocimientos tc
nicos y culturales, la precisin y claridad son crticas conforme se incrementa rpidamente el
costo de la falta de comunicacin.
Para que una notacin permita la comunicacin precisa debe tener una semntica bien
definida, debe ser muy adecuada para la representacin de un aspecto dado de un sistema y
debe ser bien comprendida por los participantes del proyecto. En esto ltimo se encuentra la
fortaleza de los estndares y las convenciones: cuando una notacin es utilizada por gran
cantidad de participantes, hay poco espacio para las malas interpretaciones y la ambigedad. Por
el contrario, cuando existen muchos dialectos de una notacin, o cuando se usa una notacin
muy especializada, los usuarios de la notacin estn propensos a malas interpretaciones
cada vez que cada usuario impone su propia interpretacin. Seleccionamos el UML (len
guaje de modelado unificado [OMG, 1998]) como notacin principal para este libro debido
a que tiene una semntica bien definida, proporciona un espectro de notaciones para la represen
tacin de diferentes aspectos de un sistema y ha sido aceptado como notacin estndar en la
industria.
En este captulo, primero describimos los conceptos del modelado en general y del
modelado orientado a objetos en particular. Luego describimos cinco notaciones fundamen
tales del UML que usamos a lo largo del libro: diagramas de caso de uso, diagramas de
clase, diagramas de secuencia, diagramas de grfica de estado y diagramas de actividad. Para
cada una de estas notaciones describimos su semntica bsica y proporcionamos ejemplos.
Luego volvemos a ver estas notaciones con ms detalle en captulos posteriores conforme
describimos las actividades que las usan. Las notaciones especializadas que usamos slo en
un captulo se presentan despus, como las grficas PERT en el captulo 11, Administracin
del proyecto, y los componentes UML y diagramas de entrega en el captulo 6, Diseo del
sistema.
23
www.FreeLibros.org
24 C apitulo 2 Modelado c o n UM L
2.1 Introduccin
UML es una notacin que se produjo como resultado de la unificacin de la tcnica de modelado
de objetos (OMT, por sus siglas en ingls [Rumbaugh et al., 1991]), Booch [Booch, 1994] e inge
niera de software orientada a objetos (OOSE, por sus siglas en ingls [Jacobson e t al., 1992]).
El UML tambin ha sido influido por otras notaciones orientadas a objetos, como las presenta
das por Shlaer/Mellor [Mellor y Shlaer, 1998], Coad/Yourdon [Coad et al., 1995], Wirfs-Brock
[Wirfs-Brock et al., 1990] y Martin/Odell [Martin y Odell, 1992]. El UML ha sido diseado para
un amplio rango de aplicaciones. Por lo tanto, proporciona construcciones para un amplio rango
de sistemas y actividades (por ejemplo, sistemas de tiempo real, sistemas distribuidos, anlisis,
diseo del sistema, entregas). El desarrollo de sistemas se enfoca en tres modelos diferentes del
sistema:
El modelo funcional, representado en UML con diagramas de caso de uso, describe la
funcionalidad del sistema desde el punto de vista del usuario.
El modelo de objetos, representado en UML con diagramas de clase, describe la estructura
de un sistema desde el punto de vista de objetos, atributos, asociaciones y operaciones.
El modelo dinmico, representado en UML con diagramas de secuencia, diagramas de
grfica de estado y diagramas de actividad, describe el comportamiento interno del sistema.
Los diagramas de secuencia describen el comportamiento como una secuencia de men
sajes intercambiados entre un conjunto de objetos, mientras que los diagramas de grfica
de estado describen el comportamiento desde el punto de vista de estados de un objeto
individual y las transiciones posibles entre estados.
En este captulo describimos diagramas UML para la representacin de estos modelos. La
presentacin de estas notaciones plantea un reto interesante. Por un lado, la comprensin del
propsito de una notacin requiere alguna familiaridad con las actividades que la usan. Por
otro lado, es necesario comprender la notacin antes de describir las actividades. Para
resolver este problema presentamos el UML en forma iterativa. En la siguiente seccin pri
mero proporcionamos una panormica de las cinco notaciones bsicas de UML. En la sec
cin 2.3 presentamos las ideas fundamentales del modelado. En la seccin 2.4 volvemos a
ver las cinco notaciones bsicas del UML a la luz de los conceptos de modelado. En captu
los subsiguientes examinamos estas notaciones con mayor detalle cuando presentamos las
actividades que las utilizan.
2.2 Una panormica del U M L
En esta seccin presentamos brevemente cinco notaciones UML:
Diagramas de caso de uso (seccin 2.2.1)
Diagramas de clase (seccin 2.2.2)
Diagramas de secuencia (seccin 2.2.3)
Diagramas de grfica de estado (seccin 2.2.4)
Diagramas de actividad (seccin 2.2.5)
www.FreeLibros.org
Una panormica del U M L 25
2.2.1 Diagramas de caso de uso
Los casos de uso se utilizan durante la obtencin de requerimientos y el anlisis para repre
sentar la funcionalidad del sistema. Los casos de uso se enfocan en el comportamiento del
sistema desde un punto de vista extemo. Un diagrama de caso de uso describe una funcin pro
porcionada por el sistema que produce un resultado visible para un actor. Un actor describe cual
quier entidad que interacta con el sistema (por ejemplo, un usuario, otro sistema, el ambiente
fsico del sistema). La identificacin de los actores y los casos de uso da como resultado la defi
nicin de la frontera del sistema, esto es, diferencia entre las tareas realizadas por el sistema y
las realizadas por su ambiente. Los actores estn fuera de la frontera del sistema, mientras que
los casos de uso estn dentro de la frontera del sistema.
Por ejemplo, la figura 2-1 muestra un diagrama de caso de uso para un reloj simple. El
actor U s u a r i o R e l o j puede consultar la hora en su reloj (con el caso de uso L e e r H o r a ) o ajustar
la hora (con el caso de uso A j u s t a r H o r a ) . Sin embargo, slo el actor P e r s o n a R e p a r a -
d o r a R e l o j e s puede cambiar la batera del reloj (con el caso de uso C a m b i a r B a t e r a ) .
Figura 2-1 Un diagrama de caso de uso UML que describe la funcionalidad de un reloj simple. El actor
U s u a r i o R e l o j puede consultar la hora en su reloj (con el caso de uso L ee r Hor a ) o ajustar la hora (con el
caso de uso Aj u s t a r H o r a ) . Sin embargo, slo el actor P e r s o n a R e p a r a d o r a R e l o j e s puede cambiar la ba
tera del reloj (con el caso de uso C a m b i a r B a t e r a ) . Los actores se representan con muequitos (hombres
de paja"), los casos de uso con valos y la frontera del sistema con un cuadro que encierra los casos de uso.
2.2.2 Diagramas de clase
Usamos diagramas de clase para describir la estructura del sistema. Las clases son abstraccio
nes que especifican la estructura y el comportamiento comn de un conjunto de objetos. Los objetos
son instancias de las clases que se crean, modifican y destruyen durante la ejecucin del sistema. Los
objetos tienen estados que incluyen los valores de sus atributos y sus relaciones con otros objetos.
Los diagramas de clase describen el sistema desde el punto de vista de objetos, clases, atribu
tos, operaciones y sus asociaciones. Por ejemplo, la figura 2-2 es un diagrama de clase que describe
tos elementos de todos los relojes de la clase R e l o j S i m p l e . Todos estos objetos de reloj tienen una
asociacin con un objeto de la clase B o t n O p r i m i b l e , un objeto de la clase P a n t a l l a , un objeto
de la clase Ho r a y un objeto de la clase B a t e r a . Los nmeros que estn al final de las asociaciones
www.FreeLibros.org
26 C apitulo 2 Modelado c o n UM L
Figura 2-2 Un diagrama de clase UML que describe los elementos de un reloj simple.
indican la cantidad de vnculos que puede tener cada objeto R e l o j S i m p l e con un objeto de una clase
dada. Por ejemplo, un R e l o j S i m p l e tiene exactamente dos B o t n o p r i m i b l e , una P a n t a l l a ,
dos B a t e r a y una Hora. En forma similar, todos los objetos B s t n O p r i m i b l e , P a n t a l l a , Hor a y
B a t e r a estn asociados exactamente a un objeto R e l o j S i m p l e .
2.2.3 Diagramas de secuencia
Los diagramas de secuencia se usan para formalizar el comportamiento del sistema y para
visualizar la comunicacin entre objetos. Son tiles para la identificacin de objetos adicionales
que participan en los casos de uso. A los objetos involucrados en un caso de uso les llamamos
objetos participantes. Un diagrama de secuencia representa las interacciones que suceden
entre esos objetos. Por ejemplo, la figura 2-3 es un diagrama de secuencia para el caso de uso
A j u s t a r H o r a de nuestro reloj simple. La columna de la extrema izquierda representa al actor
U s u a r o R e l o j que inicia el caso de uso. Las flechas etiquetadas representan los estmulos que
un actor u objeto enva a otros objetos. En este caso, el U s u a r o R e l o j oprime el botn 1 dos
veces y el botn 2 una vez para adelantar el reloj un minuto. El caso de uso A j u s t a r H o r a
termina cuando el U s u a r o R e l o j oprime ambos botones simultneamente.
2.2.4 Diagramas de grfica de estado
Los diagramas de grfica de estado describen el comportamiento de un objeto individual
como varios estados y transiciones entre esos estados. Un estado representa un conjunto par
ticular de valores para un objeto. En un estado dado, una transicin representa un estado futuro
hacia el cual se puede mover el objeto y las condiciones asociadas con el cambio de estado. Por
ejemplo, la figura 2-4 es un diagrama de grfica de estado para el R e l o j S i m p l e . Observe que
este diagrama representa informacin diferente a la del diagrama de secuencia de la figura 2-3.
El diagrama de secuencia se enfoca en los mensajes intercambiados entre los objetos como
resultado de eventos externos creados por actores. El diagrama de grfica de estado se enfoca en
las transiciones entre estados como resultado de eventos externos de un objeto individual.
www.FreeLibros.org
Una panormica del U M L 27
; t j 8 U 8 r i o R e l o j
o p r i m r B o t n l ^
: R e l o j S i m p l e I P a n t a l l a ; H o r a
' p a r p a d e a r H o r a s (1
D nn
g r i n d r B o t n l p a r p a d a arMi u t o a ^ ^
o p r i m i r f l o t 6 n 2 L) |
d e t e n e r P a r p a d e o
I
P
-t
i n c r e m e n t a r M i n u t o ^ y
f r a s c a r ()
p o n a r N u e v a f l o r a
Figura 2-3 Un diagrama de secuencia UML para el R e l o j S i m p l e . La columna de la extrema izquierda re
presenta la b'nea de tiempo del actor U s u a r i o R e l o j , quien inicia el caso de uso. Las dems columnas repre
sentan la lnea de tiempo de los objetos que participan en este caso de uso. Los nombres de objetos estn
subrayados para indicar que son instancias (en vez de clases). Las flechas etiquetadas son estmulos que enva
un actor o un objeto a otros objetos.
botono s l y 2Oprimidos
botonosly20primidos.
! \
?
botn20primido
Parpadear- \----
Horas J^ r
Incrementar
1 Horas
botnlOprimido
Parpadear- V
Minutos A^-
botn2Oprimido S
>
V
Incrementar
Minutos
Detener-
Parpadeo
botonesly20primidos\
< -------
botnlOprimido
botn20primido
Parpadear- |
Segundos p
Incrementar
l Segundos
Figura 2-4 Un diagrama de grfica de estado UML para el caso de uso Aj u s t a r H o r a de R e l o j Simple.
www.FreeLibros.org
28 C apitulo 2 Modelado c o n UM L
2.2.5 Diagramas de actividad
Un diagrama de actividad describe un sistema desde el punto de vista de las actividades.
Las actividades son estados que representan la ejecucin de un conjunto de operaciones. La ter
minacin de estas operaciones dispara una transicin hacia otra actividad. Los diagramas de
actividad se parecen a los diagramas de flujo en que pueden usarse para representar el flujo
de control (es decir, el orden en que suceden las operaciones) y el flujo de datos (es decir, los obje
tos que se intercambian entre operaciones). Por ejemplo, la figura 2-5 es un diagrama de activi
dad que representa las actividades relacionadas con el manejo de un i n c i d e n t e en FRIEND. Los
rectngulos redondeados representan actividades, las flechas representan transiciones entre acti
vidades y las barras gruesas representan la sincronizacin del flujo de control. El diagrama de
actividad de la figura 2-5 muestra que A s i g n a r R e c u r s o s , C o o r d i n a r R e c u r s o s y D o c u m e n t a r -
I n c i d e n t e slo pueden iniciarse despus de que haya terminado la actividad A b r i r i n c i d e n t e .
Del mismo modo, la actividad A r c h i v a n n c i d e n t e slo puede iniciarse despus de la ter
minacin de A s i g n a r R e c u r s o s , C o o r d i n a r R e c u r s o s y D o c u m e n t a r l n c i d e n t e . Sin
embargo, estas tres ltimas actividades pueden suceder en forma concurrente.
Figura 2-5 Un ejemplo de un diagrama de actividad UML. Los diagramas de actividad representan el
comportamiento en trminos de actividades y sus restricciones de precedencia. La terminacin de una acti
vidad dispara una transicin saliente que, a su vez, puede iniciar ot r a actividad.
Esto concluye nuestro primer paseo por las cinco notaciones bsicas del UML. Ahora
entraremos a un mayor detalle: en la seccin 2.3 presentamos los conceptos de modelado
bsicos, incluyendo la definicin de sistemas, modelos, tipos e instancias, abstraccin y fal
sificacin. En las secciones 2.4.1 a 2.4.5 describimos de manera detallada los diagramas de
caso de uso, diagramas de clase, diagramas de secuencia, diagramas de grfica de estado y
diagramas de actividad. Ilustramos su uso con un ejemplo simple. La seccin 2.4.6 describe
construcciones diversas, como los paquetes y las notas, que se usan en todos los tipos de
diagramas. Usamos estas cinco notaciones a lo largo del libro para describir sistemas de soft
ware, productos de trabajo, actividades y organizaciones. Mediante el uso consistente y sistem
tico de un conjunto pequeo de notaciones, esperamos proporcionar al lector un conocimiento
operacional del UML.
www.FreeLibros.org
C o n ce pt o s d e modelado 29
2.3 C once ptos de modelado
En esta seccin describimos los conceptos bsicos del modelado. Primero definimos los trminos
sistema y modelo, y tratamos el propsito del modelado. Luego definimos los trminos concepto
y fenmeno. Explicamos su relacin con los lenguajes de programacin y con trminos como
tipos, clases, instancias y objetos. Por ltimo, describimos la manera en que se enfoca el mode
lado orientado a objetos en la construccin de una abstraccin del ambiente del sistema como base
para el modelo del sistema.
2.3.1 Sistemas, modelos y vistas
Un sistema es un conjunto organizado de partes que se comunican, diseado para un pro
psito especfico. Un automvil, compuesto por cuatro ruedas, un chasis, una carrocera y un motor,
est diseado para transportar personas. Un reloj, compuesto por una batera, un circuito, engranajes
y manecillas, est diseado para medir el tiempo. Un sistema de nmina, compuesto por una gran
computadora, impresoras, discos, software y el personal de nminas, est diseado para expedir
cheques de salario para los empleados de una compaa. Partes de un sistema pueden, a su vez, con
siderarse como sistemas ms simples llamados subsistemas. El motor de un automvil, compuesto
por cilindros, pistones, un mdulo de inyeccin y muchas otras partes, es un subsistema del auto
mvil. En forma similar, el circuito integrado de un reloj y la gran computadora del sistema de
nmina son subsistemas. Esta descomposicin en subsistemas puede aplicarse en forma repetida a
tos subsistemas. Los objetos representan el final de esta repeticin, cuando cada parte es lo sufi
cientemente simple para que podamos comprenderla por completo sin mayor descomposicin.
Muchos sistemas estn compuestos por varios subsistemas interconectados en formas compli
cadas, a menudo tan complejas que ningn desarrollador solo puede manejarlas en forma completa.
El modelado es un medio para manejar esta complejidad. Los sistemas complejos se describen, por
lo general, mediante ms de un modelo, enfocndose cada uno en un aspecto diferente o nivel de
precisin. El modelado significa la construccin de una abstraccin del sistema que se enfoca en
aspectos interesantes e ignora los detalles irrelevantes. Lo que es interesante o irrelevante vara con
la tarea que se est realizando. Por ejemplo, supongamos que queremos construir un aeroplano. Aun
con la ayuda de expertos en el campo, no podemos construir un aeroplano a partir de cero y esperar
que funcione en forma correcta en su primer vuelo. En vez de ello, primero construimos un
modelo a escala del fuselaje para probar sus propiedades aerodinmicas. En este modelo a escala
slo necesitamos representar la superficie exterior del aeroplano. Podemos ignorar detalles como el
tablero de instrumentos o el motor. Para entrenar pilotos para este nuevo aeroplano tambin cons
truimos un simulador de vuelo. El simulador de vuelo necesita representar con precisin la dis
posicin y el comportamiento de tos instrumentos de vuelo. Sin embargo, en este caso se pueden
ignorar los detalles acerca del exterior del aeroplano. Tanto el simulador de vuelo como el modelo a
escala son mucho menos complejos que el aeroplano que representan. El modelado nos permite
manejar la complejidad mediante un enfoque de dividir y conquistar o de dividir y vencer: para cada
tipo de problema que queremos resolver (por ejemplo, la prueba de las propiedades aerodinmicas,
el entrenamiento de pilotos) construimos un modelo que slo se centra en las cuestiones relevantes
del problema. Por lo general, el modelado se enfoca en la construccin de un modelo que sea lo sufi
cientemente simple para que una persona lo comprenda en forma plena. Una regla prctica es que
cada entidad debe contener, cuando mucho, 7 2 partes [Miller, 1956].
Por desgracia, incluso un modelo puede llegar a ser tan complejo que no sea comprensible
con facilidad. Al igual que sucede con los sistemas, aplicamos el mismo enfoque de dividir y con-
www.FreeLibros.org
30 C apitulo 2 Modelado c o n UM L
Figura 2-6 Un modelo es una abstraccin que describe un subconjunto de un sistema. Una vista muestra
aspectos seleccionados de un modelo. Pueden traslaparse las vistas y los modelos de un solo sistema.
quistar para manejar la complejidad de los modelos. Una vista se enfoca en un subconjunto de
un modelo para hacerlo comprensible (figura 2-6). Por ejemplo, todos los planos necesarios para
la construccin de un aeroplano constituyen un modelo. Los extractos necesarios para explicar
el funcionamiento del sistema de combustible constituyen la vista del sistema de combustible.
Las vistas pueden traslaparse: una vista del aeroplano que representa el alambrado elctrico tam
bin incluye el alambrado para el sistema de combustible.
Las notaciones son reglas grficas o textuales para la representacin de vistas. Un dia
grama de clase UML es una vista grfica del modelo del objeto. En los diagramas de alambrado,
cada lnea de conexin representa un alambre o manojo de alambres diferentes. En los diagra
mas de clase UML, un rectngulo con un ttulo representa una clase. Una lnea entre dos rectn
gulos representa una relacin entre las dos clases correspondientes. Observe que se pueden usar
diferentes notaciones para representar la misma vista (figuras 2-7 y 2-8).
UML
1 *
Libro
o ------------------
Capitulo
Booch
( / A v _
N r / ~ ^ A
^ Libro ^
ODmpuGSto por
f c a p i t u l o ^
^ -n ^
Figura 2-7 Un ejemplo de la descripcin de un modelo con dos notaciones diferentes. El modelo incluye
dos clases, L i b r o y C a p i t u l o , con la relacin E l l i b r o e s t c o m p u e s t o p o r c a p i t u l o s . En UML
las clases se muestran con rectngulos y las asociaciones de agregacin con una lnea que termina con un
rombo. En la notacin Booch las clases se muestran con nubes y las asociaciones d e agregacin con una
lnea que termina con un crculo relleno.
www.FreeLibros.org
C o n ce pt o s d e modelado 31
Figura 2-8 Un ejemplo de la descripcin del mismo modelo con dos notaciones diferentes. Este diagrama
UML representa la informacin de la figura 2-6: un s i s t e m a puede describirse mediante muchos mo d el o s
diferentes que pueden mostrarse mediante muchas v i s t a s diferentes.
En el desarrollo de software tambin hay muchas otras notaciones para el modelado de
sistemas. UML describe un sistema desde el punto de vista de clases, eventos, estados, interac
ciones y actividades. Los diagramas de flujo de datos [De Marco, 1978] muestran la manera en
que se recuperan, procesan y almacenan los datos. Cada notacin es adecuada para un problema
diferente.
En las siguientes secciones nos enfocamos con un mayor detalle en el proceso de mode
lado. Examinamos las definiciones de concepto y fenmeno, y su relacin con los conceptos de
programacin de tipo, variable, clase y objeto.
2.3.2 C onceptos y fenmenos
Un fenmeno es un objeto del mundo tal como es percibido. Los siguientes son fenmenos:
Este libro
La tasa actual de inters para los ahorros es 3%
Mi reloj negro
El Club de Pescadores del Valle.
Un concepto es una abstraccin que describe un conjunto de fenmenos. Los siguientes son
conceptos:
Libros de texto sobre ingeniera de software orientado a objetos
Las tasas de inters para los ahorros
Los relojes negros
Los clubes de pescadores
Un concepto describe las propiedades que son comunes para un conjunto de fenmenos. Por
ejemplo, el concepto relojes negros slo est interesado en el color de los relojes y no en su
origen o su calidad. Un concepto est definido como una tercia: su nombre (para distinguirlo
de otros conceptos), su propsito (las propiedades que determinan si un fenmeno es parte del
concepto o no) y sus miembros (el conjunto de fenmenos que son parte del concepto).1 La
figura 2-9 ilustra el concepto de reloj. Reloj es el nombre del concepto. Medicin de tiempo es
el propsito del reloj. Mi reloj de pulsera y el reloj de pared que est arriba de mi escritorio
son miembros del concepto reloj. Un club tiene un nombre (por ejemplo, Club de Pescadores
1. A los tres componentes de un concepto tambin se les llama nombre, intensin y extensin.
www.FreeLibros.org
32 C apitulo 2 Modelado c o n UM L
Nombre Propsito Miembros
F i g u r a 2-9 Los tres componentes del concepto R e l o j : nombre, propsito y miembros.
del Valle), atributos que deben satisfacer los miembros para ser parte del club (por ejemplo,
pescadores que vivan en el valle ) y miembros reales (por ejemplo, Juan Prez, Pedro
Lpez).
La abstraccin es la clasificacin de los fenmenos en conceptos. El modelado es el
desarrollo de abstracciones que pueden usarse para resolver preguntas especficas acerca de un
conjunto de fenmenos. Una abstraccin es ms simple de manejar y examinar que su conjunto
de fenmenos correspondiente debido a que contiene menos informacin: los detalles irrele
vantes se eliminan de la abstraccin. En qumica, la tabla de elementos resume los diferentes
tipos de tomos con base en su peso atmico y nmero de pares de electrones. No estn repre
sentados detalles como la disponibilidad de cada sustancia o su participacin en diferentes
molculas. En biologa se clasifica a las especies en rboles genealgicos con base en caracters
ticas significativas (por ejemplo, especies que tienen sangre caliente, especies que tienen vrte
bras). Un rbol de especies ignora asuntos relacionados con el comportamiento o el hbitat. En
astronoma, las estrellas se clasifican en tipos diferentes con base en su espectro y energa disi
pada. En esta clasificacin se ignoran la ubicacin de las estrellas, su composicin detallada y
sus dimensiones.
En ingeniera puede existir un modelo con anterioridad al fenmeno que representa. Por
ejemplo, un modelo UML puede describir un sistema que todava no ha sido implementado.
En la ciencia, el modelo puede establecer la existencia de sistemas y conducir a experimentos
que muestren dicha existencia. Por ejemplo, la teora que hay tras el quark arriba fue desarro
llada antes que los experimentos en el acelerador del CERN demostraran la existencia del
quark arriba.
Resumiendo, el modelado es la actividad que realizan los ingenieros de software cuando
disean un sistema. El propsito del modelado es construir una abstraccin del sistema que deje
a un lado los detalles irrelevantes. Los ingenieros de software abstraen conceptos del dominio de
aplicacin (es decir, el ambiente en el que est operando el sistema) y del dominio de solucin
(es decir, las tecnologas para construir un sistema). El modelo resultante es ms simple que el
ambiente o el sistema y, por lo tanto, es ms fcil de manejar. Durante el desarrollo del modelo o
su validacin, los ingenieros de software necesitan comunicarse acerca del sistema con otros
ingenieros, clientes o usuarios. Pueden representar el modelo en su imaginacin, en una servi
lleta, con una herramienta CASE o usando diferentes notaciones. Al hacerlo construyen vistas
del modelo para apoyar sus necesidades especficas de comunicacin.
www.FreeLibros.org
C o n ce pt o s d e modelado
2.3.3 Tipos de datos, tipos de datos abstractos e instancias
Un tipo de dato es una abstraccin en el contexto de un lenguaje de programacin. Un tipo de
dalo tiene un nombre nico que lo distingue con respecto a otros tipos de datos, tiene un propsito (es
decir, la estructura y las operaciones vlidas sobre todos tos miembros del tipo de dato) y tiene miem
bros (es decir, los miembros del tipo de dato). Los tipos de datos se usan a i lenguajes con tipo para
asegurarse que slo se apliquen las operaciones vlidas a los datos miembro especficos.
Por ejemplo, el nombre i n t en Java corresponde a todos los enteros con signo entre - 2 32
y 232 - 1. Las operaciones vlidas sobre los miembros de este tipo son todas las operaciones de la
aritmtica entera (por ejemplo, suma, resta, multiplicacin, divisin) y todas las funciones y mto
dos que tienen parmetros de tipo i n t (por ejemplo, mod). El ambiente del tiempo de ejecucin de
Java lanza una excepcin si se aplica una operacin de punto flotante a un miembro del tipo
de dato i n t (por ejemplo, t r u n c o f l o o r ) .
Un tipo de dato abstracto es un tipo de dato especial cuya estructura est oculta con relacin
al resto del sistema. Esto permite que el desarrollador pueda hacer cambios a la estructura interna y
a la implementacin del tipo de dato abstracto sin que haya impactos en el resto del sistema.
Por ejemplo, el tipo de dato abstracto Persona puede definir las operaciones o b t e n e r -
N o m b r e O , 2 o b t e n e r N m e r o S e g u r o S o c i a l () y o b t e n e r D i r e c c i n (). El hecho de que el
nmero de seguro social de la persona est almacenado como nmero o como cadena no es visi
ble ante el resto del sistema. A tales decisiones se les llama decisiones de implementacin.
Una instancia es cualquier miembro de un tipo de dato especfico. Por ejemplo, 1291 es
una instancia del tipo i n t y 3.14 es una instancia del tipo f l o a t . Una instancia de un tipo de
dato puede ser manejada con las operaciones definidas por el tipo de dato.
La relacin entre el tipo de dato y la instancia es similar a la relacin entre concepto y
fenmeno: un tipo de dato es una abstraccin que describe un conjunto de instancias que com
parten caractersticas comunes. Por ejemplo, la operacin de renombrar una instancia de P e r s o n a
slo necesita definirse una vez en el tipo de dato P e r s o n a , pero ser aplicable a todas las instan
cias de P e r s o n a .
2.3.4 C lases, clases abstractas y objetos
Una dase es una abstraccin en los lenguajes de programacin orientados a objetos. Al igual
que los tipos de datos abstractos, una clase encapsula estructura y comportamiento. A diferencia de
tos tipos de datos abstractos, las clases pueden definirse desde el punto de vista de otras clases
usando la generalizacin. Supongamos que tenemos un reloj que tambin puede funcionar como
calculadora. Entonces la clase R e l o j C a l c u l a d o r a puede ser vista como un refinamiento de la clase
R e l o j . A este tipo de relacin entre una clase base y una clase refinada se le llama generalizacin.
A la clase base (por ejemplo. R e l o j ) se le llama superclase y a la clase refinada se le llama subclase
(por ejemplo, R e l o j C a l c u l a d o r a ) . En una relacin de generalizacin, la subclase refina a la super
clase definiendo nuevos atributos y operaciones. En la figura 2-10, R e l o j C a l c u l a d o r a define la
funcionalidad para la realizacin de la aritmtica simple que no tienen los R e l o j normales.
2 Nos referimos a una operacin mediante su nombre seguido por sus argumentos entre parntesis. Si no se especifican
los argumentos ponemos un par de parntesis al final del nombre. En la siguiente seccin describimos las operaciones
con mayor detalle.
www.FreeLibros.org
34 C apitulo 2 Modelado c o n UM L
Reloj
hora
fecha
AsignarFecha(f)
Re lojCa1cu1adora
es tadoCalculadora
BitrarModoCalculadora()
IngresarNmero(n)
Figura 2-10 Un diagrama de clase UML que muestra dos clases: R e l o j y R e l o j C a l c u l a d o r a . R e l o j -
C a l c u l a d o r a e s un refinamiento de R e l o j , proporcionando la funcionalidad de una calculadora que por
lo general no se encuentra en los relojes normales. En un diagrama de clase UML las clases y objetos estn
representados como cuadros con tres compartimientos: el primer compartimiento muestra el nombre de la
clase, el segundo sus atributos y el tercero sus operaciones. Los compartimientos segundo y tercero pueden
omitirse para abreviar. Una relacin de herencia se muestra con una lnea que termina con un tringulo. El
tringulo apunta hacia la superclase y el otro extremo e st e n la subclase.
Cuando una generalizacin sirve slo para el propsito del modelado de atributos y opera
ciones compartidos, esto es, si nunca es instancia, a la generalizacin se le llama clase abstracta.
Las clases abstractas con frecuencia representan conceptos generalizados en el dominio de
aplicacin. Cada vez que clasificamos fenmenos en conceptos, con frecuencia se crean genera
lizaciones para manejar la complejidad de la clasificacin. Por ejemplo, en qumica, al B e n c e n o
puede considerrsele como una clase de molculas que pertenece a la clase abstracta Compues-
toOrgnico (figura 2-11). Observe que CompuestoOrgnico es una generalizacin y no
corresponde a ninguna molcula, esto es, no tiene ninguna instancia. Cuando se modelan sistemas
de software, con frecuencia las clases abstractas no corresponden a un concepto del dominio de
aplicacin existente sino que se introducen para reducir la complejidad en el modelo o para pro
mover la reutilizacin.
Una clase define las operaciones que pueden aplicarse a sus instancias. Las operaciones
de una superclase pueden ser heredadas y aplicadas tambin a los objetos de la subclase. Por
ejemplo, en la figura 2-10 la operacin A s i g n a r F e c h a ( f ) , que asigna la fecha actual de un
R e l o j , tambin es aplicable para los R e l o j C a l c u l a d o r a . Sin embargo, la operacin En tr a r M o -
d o C a l c u l a d o r a (), definida en la clase R e l o j C a l c u l a d o r a , no es aplicable a la clase R e l o j .
Una clase define los atributos que se aplican a todas sus instancias. Un atributo es una
ranura con nombre en la instancia en donde se almacena un valor. Los atributos tienen un
nombre nico dentro de la clase y un tipo. Los R e l o j tienen un atributo h o r a y otro f e c h a . Los
R e l o j C a l c u l a d o r a tienen un atributo e s t a d o C a l c u l a d o r a .
Un objeto es una instancia de una clase. Un objeto tiene una identidad y almacena valores
de atributo. Cada objeto pertenece exactamente a una clase. En UML, una instancia se muestra
con un rectngulo con su nombre subrayado. Esta convencin se usa en UML para distinguir
entre instancias y tipos.3 En la figura 2-12, R e l o j S i i n p l e l 2 9 l es una instancia de R e l o j , y
R e l o j C a l c u l a d o r a l 5 l 5 es una instancia de R e l o j C a l c u l a d o r a . Observe que, aunque las ope-
www.FreeLibros.org
C o n ce pt o s d e modelado 35
Figura 2-11 Un ejemplo de una clase abstracta (diagrama de clase UML). Co m p ue st oOr gnic o nunca
tiene instancias y slo sirve como una generalizacin.
raciones de Reloj son aplicables a Relo j C a l c u l a d o r a l 5 l 5 , Reloj C a l c u l a d o r a 1515 no es una
instancia de la clase R e l o j . A diferencia de los tipos de datos abstractos, en algunos lenguajes de
programacin los atributos de un objeto pueden estar visibles ante otras partes del sistema. Por
ejemplo, Java permite que el implementador especifique con gran detalle cules atributos son
visibles y cules no.
2.3.5 C lases de evento, eventos y mensajes
Las c l a s e s de e v e n t o son abstracciones que representan un tipo de evento para el cual el
sistema tiene una respuesta comn. Un e v en t o , una instancia de la clase de evento, es una ocu
rrencia relevante en el sistema. Por ejemplo, un evento puede ser un estmulo dado por un actor
(por ejemplo, el U s u a r i o R e l o j oprime el botn izquierdo), un transcurso de tiempo (por
ejemplo, despus de 2 minutos) o el envo de un mensaje entre dos objetos. El envo de un
m e n s a j e es el mecanismo por el cual el objeto que lo enva solicita la ejecucin de una opera
cin en el objeto que lo recibe. El mensaje est compuesto por un nombre y varios argumentos.
.9 iSimpl e.l2.9.1 J-Rq l .Q.j
RalojCalculadoral515
l o j.Ca i c v i ador a
I n s t a n c i a D e
I n s t a n c i a D e
Figura 2-12 Un diagrama de c la se UML que muestra instancias de dos clases. R e l o j S i m p l e 12 91 es
una instancia de R e l o j . R e l o j C a l c u l a d o r a l 5 1 5 es una instancia de R e l o j C a l c u l a d o r a . Aunque las
operaciones de R e l o j tambin son aplicables a R e l o j C a l c u l a d o r a l 5 l 5 , e sta ltima no e s una instancia
de la anterior.
3. Las cadenas subrayadas tambin se usan para representar a los localizadores d e recursos uniformes (URL).
Para mejorar la legibilidad no usamos tipos subrayados en el texto, sino que usamos el mismo tipo para indicar
las instancias y las clases. En general, esta ambigedad puede resolverse examinando el contexto. Sin embargo,
en los diagramas UML siempre usamos tipos subrayados para distinguir las instancias de las clases.
www.FreeLibros.org
36 C apitulo 2 Modelado c o n UM L
El objeto receptor hace corresponder el nombre del mensaje con alguna de sus operaciones y le
pasa los argumentos a la operacin. Cualquier resultado se regresa al objeto que lo envi.
Por ejemplo, en la figura 2-13 el objeto R e l o j calcula la hora actual obteniendo la hora de
Greenwich a partir del objeto H o r a , y la diferencia de horas a partir del objeto Z o n a H o r a r i a ,
enviando los mensajes O b t e n e r H o r a 0 y O b t e n e r l n c r e m e n t o H o r a (), respectivamente.
Figura 2-13 Ejemplo de envo de mensajes (diagrama d e secuencia UML). El objeto R e l o j enva el men
saje O b t e n e r H o r a () al objeto Hora para consultar la hora actual de Greenwich. Luego enva el mensaje
O b t e n e r l n c r e m e n t o H o r a () al objeto Z o n a H o r a r i a para consultar la diferencia que hay que aadir a la
hora de Greenwich. Las flechas de guiones representan los resultados que se envan de regreso a quien envi
el mensaje.
Los eventos y los mensajes son instancias: representan ocurrencias concretas en el sistema.
Las clases de evento son abstracciones que describen grupos de eventos para los cuales tiene una
respuesta comn el sistema. En la prctica, el trmino evento puede referirse a instancias o
clases. Esta ambigedad se resuelve examinando el contexto en el que se usa el trmino.
2.3.6 Modelado orientado a objetos
El d o m i n i o de a p l i c a c i n representa todos los aspectos del problema del usuario. Esto
incluye el ambiente fsico, los usuarios y otras personas, sus procesos de trabajo, etc. Es crtico
que los analistas y desarrolladores comprendan el dominio de aplicacin de un sistema para rea
lizar con efectividad la tarea que pretenden. Tome en cuenta que el dominio de aplicacin cambia
a lo largo del tiempo conforme cambian los procesos de trabajo y las personas.
4. El dominio de aplicacin a veces se divide adicionalmente en dominio de usuario y dominio d e cliente. El dominio de
cliente incluye los asuntos relevantes para el cliente, como el costo de operacin del sistema, el impacto del sistema en
el resto d e la organizacin. El dominio de usuario incluye los asuntos relevantes para el usuario final, como funcio
nalidad, facilidad de aprendizaje y de uso.
www.FreeLibros.org
C o n ce pt o s d e modelado 37
El d o m i n i o de s o l u c i n es el espacio de todos los sistemas posibles. El dominio de solu
cin es mucho ms rico y voltil que el dominio de aplicacin. Esto se debe a las tecnologas
emergentes (tambin llamadas facilitadores de tecnologa), a cambios conforme madura la tec
nologa de implementacin o a una mejor comprensin de la tecnologa de implementacin por
parte de los desarrolladores cuando construyen el sistema. El modelado del dominio de solucin
representa las actividades de diseo del sistema y diseo de objetos del proceso de desarrollo.
Observe que la entrega del sistema puede cambiar el dominio de aplicacin conforme los usuarios
desarrollan nuevos procesos de trabajo para acomodar el sistema.
El a n l i s i s o r i e n t a d o a o b j e t o s est interesado en el modelado del dominio de aplicacin.
El d i s e o o r i e n t a d o a o b j e t o s est interesado en el modelado del dominio de solucin. Ambas
actividades de modelado usan las mismas representaciones (es decir, clases y objetos). En el
anlisis y diseo orientados a objetos, el modelo del dominio de aplicacin tambin es parte del
modelo del sistema. Por ejemplo, un sistema de control de trfico areo tiene una clase
C o n t r o l a d o r T r f i c o para representar a los usuarios individuales, sus preferencias e infor
macin de bitcora. El sistema tambin tiene una clase A e r o n a v e para representar la infor
macin asociada con la aeronave a la que se le est dando seguimiento. C o n t r o l a d o r T A e r o n a v e
son conceptos del dominio de aplicacin que estn codificados dentro del sistema (figura 2-14).
Dominio de aplicacin Dominio de solucin
Modelo del dominio de aplicacin Modelo del sistema
Pantalla
DeResumen
Pantalla
DeMapas
BaseDeDatosPlanVuelo
ControlTrfico
Figura 2-14 El modelo del dominio de aplicacin representa entidades del ambiente que son relevantes
para un sistema de control de trfico areo (es decir, aeronaves, controladores de trfico). El modelo del
sistema representa a las entidades que son parte del sistema (por ejemplo, desplegado de mapas, base de da
tos de planes de vuelo). En el anlisis y diseo orientados a objetos el modelo de dominio de aplicacin tam
bin es parte del modelo del sistema. En esta figura, un ejemplo es el paquete C o n t r o l T r f i c o que aparece
en ambos modelos. (Para mayores detalles vea el captulo 5, Anlisis.)
www.FreeLibros.org
38 C apitulo 2 Modelado c o n UM L
El modelado del dominio de aplicacin y del dominio de solucin con una sola notacin
tiene ventajas y desventajas. Por un lado puede ser poderoso: las clases del dominio de solucin
que representan conceptos de la aplicacin pueden ser seguidas hacia el dominio de aplicacin.
Adems, estas clases pueden ser encapsuladas en subsistemas independientes de otros conceptos
de instrumentacin (por ejemplo, la interfaz de usuario y la tecnologa de base de datos) y
empacados en una herramienta reutilizable de clases de dominio. Por otro lado, el uso de una
sola notacin puede provocar confusin, debido a que elimina la distincin entre el mundo real y
su modelo. El dominio de sistema debe ser ms simple y estar orientado hacia la solucin. Para
resolver este asunto usamos una sola notacin y, cuando hay ambigedad, hacemos distinciones
entre los dos dominios. En la mayora de los casos hacemos referencia al modelo (por ejemplo,
una A e r o n a v e est compuesta de M a n i f i e s t o y P l a n V u e l o es una declaracin acerca del
modelo).
2.3.7 Falsificacin y elaboracin de prototipos
Un modelo es una simplificacin de la realidad en el sentido de que se ignoran los detalles
irrelevantes. Sin embargo, es necesario representar los detalles relevantes. La f a l s i f ic a c i n [Pop-
per, 1992] es el proceso de demostrar que se han representado los detalles relevantes en forma
incorrecta o no se han representado, esto es, que el modelo no corresponde a la realidad que se
supone que representa.
El proceso de falsificacin es bien conocido en otras ciencias: los investigadores proponen
diferentes modelos de una realidad, los cuales son aceptados de manera gradual conforme una
cantidad cada vez mayor de datos apoya al modelo, pero que son rechazados cuando se encuen
tra un ejemplo en contra. El modelo geocntrico del universo de Ptolomeo fue falsificado (a la
larga) a favor del modelo heliocntrico copemicano una vez que fueron aceptados los datos de
Galileo. Luego el modelo heliocntrico copemicano fue falsificado cuando se descubrieron otras
galaxias y se aadi el concepto de galaxia al modelo.
Tambin podemos aplicar la falsificacin al desarrollo de sistemas de software. Por ejem
plo, una tcnica para el desarrollo de un sistema es la elaboracin de un prototipo: cuando se
disea la interfaz de usuario, los desarrolladores construyen un prototipo que slo simula la inter
faz de usuario de un sistema. Luego se presenta el prototipo a los usuarios potenciales para que
lo evalen, esto es, que lo falsifiquen, y se modifica con posterioridad. En las primeras iteracio
nes de este proceso es probable que los desarrolladores desechen el prototipo inicial a conse
cuencia de la retroalimentacin de los usuarios. En otros trminos, los usuarios falsifican el pro
totipo inicial, un modelo del sistema futuro, debido a que no representa con precisin los detalles
relevantes.
Observe que slo es posible demostrar que un modelo es incorrecto. Aunque en algunos
casos es posible demostrar matemticamente que dos modelos son equivalentes, no es posible
mostrar que alguno de ellos represente correctamente a la realidad. Por ejemplo, las tcnicas de
verificacin formales pueden permitir que los desarrolladores muestren que una implementacin
de software especfica sea consistente con una especificacin formal. Sin embargo, slo las prue
bas de campo y el uso amplio pueden indicar que un sistema satisface las necesidades del cliente.
En cualquier momento los modelos de sistema pueden ser falsificados debido a cambios en los
requerimientos, en la tecnologa de implementacin o en el ambiente.
www.FreeLibros.org
Una vista ms profunda al UM L 39
2.4 Una vista ms profunda al U M L
Ahora describimos con ms detalle los cinco diagramas UML principales que usamos en este
libro.
Los d i a g r a m a s de c aso de u s o representan la funcionalidad del sistema desde el punto de
vista del usuario. Definen las fronteras del sistema (seccin 2.4.1).
Los d i a g r a m a s de c ias e se usan para representar la estructura de un sistema en trminos
de objetos con sus atributos y relaciones (seccin 2.4.2).
Los d i a g r a m a s de s e c u e n c ia representan el comportamiento del sistema en trminos de
interacciones entre un conjunto de objetos. Se usan para identificar objetos en los dominios
de aplicacin e implementacin (seccin 2.4.3).
Los d i a g r a m a s de g r f ic a de e s t a d o se usan para representar el comportamiento de obje
tos no triviales (seccin 2.4.4).
Los d i a g r a m a s d e a c t iv i d a d son diagramas de flujo que se usan para representar el flujo
de datos o el flujo de control a travs de un sistema (seccin 2.4.5).
2.4.1 Diagramas de caso de uso
Casos de uso y actores
Los a c t o r e s son entidades externas que interactan con el sistema. Ejemplos de actores
incluyen un papel de usuario (por ejemplo, un administrador de sistema, un cliente de banco, un
cajero de banco) u otro sistema (por ejemplo, una base de datos central, una lnea de fabrica
cin). Los actores tienen nombres y descripciones nicos.
Los c a s o s de u s o describen el comportamiento de un sistema tal como es visto desde el
punto de vista de un actor. Al comportamiento descrito por el modelo de caso de uso tambin se
le llama c o m p o r t a m i e n t o e x t er n o . Un caso de uso describe una funcin proporcionada por el
sistema como un conjunto de eventos que producen un resultado visible para los actores. Los
actores inician un caso de uso para acceder a la funcionalidad del sistema. Luego el caso de uso
puede iniciar otros casos de uso y recopilar ms informacin de los actores. Cuando los actores
y casos de uso intercambian informacin, se dice que se c o m uni c a n. Posteriormente veremos que
representamos esos intercambios con relaciones de comunicacin.
Por ejemplo, en un sistema para el manejo de accidentes [FRIEND, 1994], los oficiales de
campo, como el polica o el bombero, tienen acceso a una computadora inalmbrica que les per
mite interactuar con un despachador. El despachador, a su vez, puede visualizar el estado actual
de todos sus recursos, como los automviles o camiones de la polica, en una pantalla de compu
tadora y despachar un recurso dando comandos desde una estacin de trabajo. En este ejemplo,
O f i c i a l C a m p o y D e s p a c h a d o r son actores.
La figura 2-15 muestra al actor O f i c i a l C a m p o que llama al caso de uso R e p o r t e E m e r -
g e n c i a para notificar al actor D e s p a c h a d o r que hay una nueva emergencia. En respuesta, el
D e s p a c h a d o r llama al caso de uso A b r i r i n c i d e n t e para crear un reporte de incidente e iniciar
el manejo del incidente. El D e s p a c h a d o r captura informacin preliminar dada por el O f i c i a l -
Campo en la base de datos de incidentes y con el caso de uso A s i g n a r R e c u r s o s ordena que
vayan a la escena unidades adicionales.
www.FreeLibros.org
40 C apitulo 2 Modelado c o n UM L
Figura 2-15 Un ejemplo de un diagrama de caso de uso UML: Inicio de incidente en un sistema de manejo
de accidentes. Las asociaciones entre actores y casos de uso representan flujo de informacin. En UML estas
asociaciones son bidireccionales: pueden representar al actor iniciando un caso de uso (por ejemplo, Of i -
cia l C a m p o inicia R e p o r t e E m e r g e n c i a ) o un caso de uso que proporcione informacin a un actor (por
ejemplo, R e p o r t e E m e r g e n c i a notifica a D e s p a ch a d o r ) .
Para describir un caso de uso usamos una plantilla compuesta de seis campos (vea tambin
la figura 2-16):
El n o m b r e del caso de uso es nico en todo el sistema para que los desarrolladores (y par
ticipantes en el proyecto) puedan hacer referencia al caso de uso sin ambigedad.
Los a c t o re s p a r t i c i p a n t e s son los actores que interactan con el caso de uso.
Las c o n d i c i o n e s i n i c i a l e s describen las condiciones que necesitan satisfacerse antes de
que se inicie el caso de uso.
El fl uj o de e v e n t o s describe la secuencia de acciones del caso de uso y estarn numeradas
para su referencia. El caso comn (es decir, los casos que suceden con frecuencia) y los
casos excepcionales (es decir, casos que ocurren rara vez, como los errores y condiciones
inusuales) se describen por separado en diferentes casos de uso para efectos de claridad.
Las c o n d i c i o n e s de s a l i d a describen las condiciones que se satisfacen despus de que ter
mina el caso de uso.
Los r e q u e r i m i e n t o s e s p e c i a l e s son aquellos que no estn relacionados con la funcionali
dad del sistema. Incluyen restricciones sobre el desempeo del sistema, su implementacin,
las plataformas de hardware en las que se ejecuta, etc. Los requerimientos especiales se
describen con ms detalle en el captulo 4, Obtencin de requerimientos.
Los casos de uso se escriben en lenguaje natural. Esto permite que los desarrolladores los usen
para comunicarse con los clientes y los usuarios, quienes, por lo general, no tienen un conoci
miento amplio de las notaciones de ingeniera de software. El uso del lenguaje natural tambin
permite que los participantes de otras disciplinas comprendan los requerimientos del sistema.
www.FreeLibros.org
Una vista ms profunda al UM L 41
Nombre de l caso d e uso R e p o r t e E m e r g e n c i a
Actor participante Llamado por Of i c i a l C a m p o
Se comunica con D e s p a c h a d o r
Condicin inicial 1. El Of i c i a l C a m p o activa la funcin ReporteEmergencia de su
terminal. FRIEND responde presentando un formulario al oficial.
Flujo d e eventos 2. El Of i c i a l C a m p o llena e l formulario, seleccionando e l nivel de
emergencia, tipo, ubicacin y una breve descripcin de la s itua
cin. El Of i c i a l C a m p o tambin describe respuestas posibles a
la situacin de emergencia. Una vez que ha llenado el formulario,
e l Of i c i a l C a m p o lo enva y e n e se momento se le notifica al
D e s p a c h a d o r .
3. El D s s p a c h a d o r revisa la informacin enviada y crea un i n c i d e n t e
e n la base de datos llamando al caso de uso A b r i r l n c i d e n t e . El
D e s p a c h a d o r selecciona una respuesta y da un acuse de recibo del
reporte de emergencia.
Condicin de salida 4. El Of i c i a l C a m p o recibe el acuse de recibo y la respuesta selec
cionada.
Requerimientos especiales Se da acuse de recibo del reporte del Of i c i a l C a m p o en menos de 30
segundos. La respuesta seleccionada llega antes de que transcurran
30 segundos a partir de que la enva el D e s p a ch a d o r .
Figura 2-16 Un ejemplo de un caso de uso: el caso de uso R e p o r t e E m e r g e n c i a .
Escenarios
Un caso de uso es una abstraccin que describe todos los escenarios posibles que involucran
la funcionalidad que se describe. Un esc en ari o es una instancia de un caso de uso que describe un
conjunto de acciones concretas. Los escenarios se usan como ejemplos para ilustrar casos comu
nes. Su enfoque es la comprensin. Los casos de uso se utilizan para describir todos los casos posi
bles. Su enfoque es la totalidad. Describimos un escenario usando una plantilla con tres campos:
El n o m b r e del escenario permite que nos refiramos a l sin ambigedad. El nombre de un
escenario est subrayado para indicar que es una instancia.
El campo i nst a n ci a s de ac t or par t icipan t e indica cules instancias de actor estn involucra
das en este escenario. Las instancias de actor tambin tienen nombres subrayados.
El fl uj o de e v e n t o s de un escenario describe la secuencia de eventos paso a paso.
Observe que no hay necesidad de condiciones iniciales o de salida en los escenarios. Las condi
ciones iniciales y de salida son abstracciones que permiten que los desarrolladores describan un
rango de condiciones bajo las cuales se llama a un caso de uso. Dado que un escenario slo
describe un flujo nico de eventos, tales condiciones no son necesarias (figura 2- 17).
Los diagramas de caso de uso pueden incluir cuatro tipos de relaciones: comunicacin,
inclusin, extensin y generalizacin. Luego describiremos estas relaciones con mayor detalle.
www.FreeLibros.org
42 C apitulo 2 Modelado c o n UM L
b odeaaEnLlamas
r o b e r t o . a l i c i a : O f i c i a l C a m p o
i u a n ; D e s p a c h a d o r
1. Roberto, manejando por la calle principal en su patrulla, observa que
sale humo de una bodega. Su compaera, Alicia, activa la funcin
Reporte de emergencia en su laptop FRIEND.
Z Alicia captura la direccin del edificio, una breve descripcin de su
ubicacin (es decir, esquina noroeste) y un nivel de emergencia.
Adems de un carro de bomberos, solicita varias ambulancias, ya
que el rea parece estar algo atareada. Confirma lo capturado y
espera el acuse de recibo.
3. Juan, el D e s p a c h a d o r , es alertado de que hay una emergencia
mediante un sonido de su estacin de trabajo. Revisa la informacin
enviada por Alicia y da el acuse de recibo del reporte. Asigna un
carro de bomberos y dos ambulancias al lugar del i n c i d e n t e y
enva la hora estimada de llegada (ETA, por sus siglas en ingls)
a Alicia.
4. Alicia recibe el acuse de recibo y la ETA.
Figura 2-17 El escenario de bodegaEnLlamas para el caso de uso R e p o r t e E m e r g e n c i a .
Relaciones de comunicacin
Los actores y los casos de uso se c o m u n i c a n cuando intercambian informacin entre
ellos. Las relaciones de comunicacin se muestran con una lnea continua entre los smbolos de
actor y caso de uso. En la figura 2-15, los actores O f i c i a l Campo y D e s p a c h a d o r se comunican
con el caso de uso R e p o r t e E m e r g e n c i a . Slo el actor D e s p a c h a d o r se comunica con los casos
de uso A b r i r i n c i d e n t e y A s i g n a r R e c u r s o s . Las relaciones de comunicacin entre actores y
casos de uso pueden emplearse para indicar acceso a funcionalidad. En el caso de nuestro ejem
plo, al O f i c i a l C a m p o y al D e s p a c h a d o r se les proporcionan diferentes interfaces ante el sistema
y tienen acceso a funcionalidades diferentes.
Relaciones de inclusin
Cuando se describe un sistema complejo, su modelo de casos de uso puede llegar a ser muy
complicado y contener redundancias. La complejidad del modelo se reduce identificando las
cosas comunes que hay en diferentes casos de uso. Por ejemplo, supongamos que el D e s p a c h a d o r
puede oprimir una tecla en cualquier momento para tener acceso a la ayuda. Esto puede mode
larse mediante un caso de uso A y u d a D e s p a c h a d o r que est incluido en los casos de uso A b r i r -
i n c i d e n t e y A s i g n a r R e c u r s o s (y cualesquiera otros casos de uso a los que tenga acceso el
D e s p a c h a d o r ) . El modelo resultante describe solamente una vez la funcionalidad de Ay u d a De s
p a c h a d o r , reduciendo de esta forma la complejidad. Dos casos de uso estn relacionados por
una relacin de inclusin si alguno de ellos incluye al segundo en su flujo de eventos. En UML
las r e l a c i o n e s de i n c l u s i n se muestran mediante una flecha de guiones que se inicia en el caso
de uso que incluye al otro (vea la figura 2-18). Las relaciones de inclusin estn etiquetadas con
el texto i n c l u y e .
Nombre del escenario
Instancias de actores
participantes
Flujo de eventos
www.FreeLibros.org
Una vista ms profunda al UM L 43
i n c l u y o
Abrirlncidente
- AyudaDospachador
i n c l u y o
AsignarRocursos
Figura 2-18 Un ejemplo de una relacin i n c l u y e (diagrama de caso de uso UML).
Representamos las relaciones de inclusin en el caso de uso mismo de dos formas. Si el caso
de uso incluido puede incluirse en cualquier momento del flujo de eventos (por ejemplo, el caso de
uso A y u d a D e s p a c h a d o r ) , indicamos la inclusin en la seccin Requerimientos especiales del caso
de uso. Si el caso de uso se llama explcitamente durante un evento, indicamos la inclusin en el
flujo de eventos.
Relaciones extendidas
Las r e l a c i o n e s e x t e n d i d a s son un medio alterno para reducir la complejidad en el modelo
del caso de uso. Un caso de uso puede extender a otro caso de uso mediante la adicin de eventos.
Una relacin extendida indica que una instancia del caso de uso extendido puede incluir (bajo
determinadas condiciones) el comportamiento especificado por el caso de uso que extiende. Una
aplicacin tpica de las relaciones extendidas es la especificacin de un comportamiento excep
cional. Por ejemplo (figura 2-19), supongamos que la conexin de red entre el D e s p a c h a d o r y el
O f i c i a l C a m p o puede interrumpirse en cualquier momento (por ejemplo, si el O f i c i a l C a m p o
entra a un tnel). El caso de uso C o n e x i n P e r d i d a describe el conjunto de eventos realizados
por el sistema y los actores mientras no se tiene conexin. C o n e x i n P e r d i d a extiende los casos
de uso A b r i r l n c i d e n t e y A s i g n a r R e c u r s o s . La separacin del comportamiento excepcional
con respecto al comportamiento comn nos permite escribir casos de uso ms cortos y ms
enfocados.
En la representacin textual de un caso de uso, representamos las relaciones extendidas
como condiciones iniciales del caso de uso que se extiende. Por ejemplo, las relaciones extendi
das que se muestran en la figura 2-19 estn representadas como condicin inicial en el caso de
uso C o n e x i n P e r d i d a (figura 2-20).
AsignarRocursos
Figura 2-19 U n e j e m p l o d e u n a r e l a c i n e x t i e n d e ( d i a g r a m a d e c a s o d e u s o U M L ) .
www.FreeLibros.org
44 C apitulo 2 Modelado c o n UM L
Nombre del caso de uso
Actor participante
Condicin inicial
C o n e x i n P e r d i d a
Se comunica con el O f i c i a l C a m p o y D e s p a c h a d o r
Este caso de uso extiende los casos de uso A b r i r i n c i d e n t e y A s i g -
n a r R e c u r s o s . Lo inicia el sistema cada vez que se pierde la conexin
d e red entre el O f i c i a l C a m p o y el D e s p a c h a d o r
1. . . . Flujo de eventos
Figura 2-20 Representacin textual de las relaciones extendidas de la figura 2-19.
La diferencia entre las relaciones de inclusin y extendidas es la ubicacin de la depen
dencia. Supongamos que aadimos varios casos de uso nuevos para el actor D e s p a c h a d o r . Si
modelamos la funcin A y u d a D e s p a c h a d o r con relaciones de inclusin, cada nuevo caso de uso
necesitar incluir el caso de uso A y u d a D e s p a c h a d o r . Si en vez de ello usamos relaciones exten
didas, slo necesita modificarse el caso de uso A y u d a D e s p a c h a d o r para extender los casos de
uso adicionales. En general, los casos de excepcin, como la ayuda, errores y otras situaciones
inesperadas, se modelan con relaciones extendidas. Los casos de uso que describen comporta
mientos compartidos por lo comn por un conjunto fijo de casos de uso se modelan con relacio
nes de inclusin.
Relaciones de generalizacin
Las relaciones de generalizacin y especializacin son un tercer mecanismo para reducir
la complejidad de un modelo. Un caso de uso puede especializar a otro ms general aadiendo
ms detalle. Por ejemplo, se requiere que los O f i c i a l C a m p o se autentifiquen antes de que pue
dan usar FRIEND. Durante las primeras etapas de la obtencin de requerimientos, la autentifi-
cacin se modela como un caso de uso A u t e n t i f i c a r de alto nivel. Despus, los desarrolladores
describen el caso de uso A u t e n t i f i c a r con mayor detalle y permiten varias plataformas de
hardware diferentes. Esta actividad de refinamiento da como resultado dos casos de uso adicio
nales, A u t e n t i f i c a r C o n C o n t r a s e a , que permite que los O f i c i a l C a m p o se registren sin ningn
hardware especfico, y A u t e n t i f i c a r o n T a r j e t a , que permite que los O f i c i a l C a m p o se regis
tren usando una tarjeta inteligente. Los dos nuevos casos de uso estn representados como espe-
cializaciones del caso de uso A u t e n t i f i c a r (figura 2-21).
Aplicacin de los diagramas de casos de uso
Los casos de uso y los actores definen las fronteras del sistema. Se desarrollan durante la
obtencin de requerimientos, con frecuencia con el cliente y los usuarios. Durante el anlisis, los
casos de uso se refinan y corrigen cuando son revisados por una audiencia ms amplia que
incluye a los desarrolladores, y se validan contra situaciones reales.
www.FreeLibros.org
Una vista ms profunda al UM L 45
A u t e n t if i c a r
ConContrasea
A u t e n t if i c a r
A u t e n t if i c a r
ConTarjeta
Figura 2-21 Un ejemplo de una relacin de generalizacin (diagrama de caso de uso UML). El caso de
uso A u t e n t i f i c a r e s un caso de uso de alto nivel que describe, en trminos generales, el proceso de au-
tentificacin. A u t e n t i f i c a r C o n C o n t r a s e a y A u t e n t i f i c a r C o n T a r j e t a son dos especializaciones
de A u t e n t i f i c a r .
2.4.2 Diagramas de clase
Clases y objetos
Los diagramas de clase describen la estructura del sistema desde el punto de vista de
clases y objetos. Las c l a s e s son abstracciones que especifican los atributos y comportamientos
de un conjunto de objetos. Los o b j e t o s son entidades que encapsulan estado y comportamiento.
Cada objeto tiene una identidad: se puede hacer referencia a l de manera individual y es distin
guible con respecto a otros objetos.
En UML las clases y objetos se muestran mediante cuadros que incluyen tres compartimien
tos. El compartimiento superior muestra el nombre de la clase u objeto. El compartimiento central
muestra sus atributos y el compartimiento inferior muestra sus operaciones. Los compartimientos
de atributos, y operaciones se pueden omitir por claridad. Los nombres de objetos estn subraya-
para indicar que son instancias. Por convencin, los nombres de clase comienzan con una letra
mayscula. En los diagramas de objetos se les puede dar nombre a los objetos (seguido del nom
bre de la clase) para facilitar su referencia. En ese caso, los nombres comienzan con minscula. En
el ejemplo de FRIEND (figuras 2-22 y 2-23), Roberto y Alicia son oficiales de campo, y estn repre
sentados en el sistema como objetos O f i c i a l C a m p o llamados r o b e r t o : O f i c i a l C a m p o y a l i -
c i a : O f i c i a ICairpo. O f i c i a l C a m p o es una clase que describe a todos los objetos O f i c i a l C a m p o
y, en cambio, Roberto y Alicia estn representados por dos objetos O f i c i a l C a m p o individuales.
En la figura 2-22 la clase O f i c i a l C a m p o tiene dos atributos: un n om br e y un
n m e r o l d e n t i f i c a c i n . Esto indica que todos los objetos O f i c i a l C a m p o tienen esos dos atrib
utos. En la figura 2-23 los objetos r o b e r t o : O f i c i a I C a m p o y a l i c i a : O f i c i a l C a m p o tienen
valores especficos para esos atributos: Roberto D. y Alicia W, respectivamente. En la figura
2-22 el atributo O f i c i a l C a m p o . n o m b r e es de tipo S t r i n g , lo que indica que slo se pueden
asignar instancias de S t r i n g al atributo O f i c i a l C a m p o . n o m b r e . El tipo de un atributo se usa
para especificar el rango vlido de valores que puede tener un atributo. Observe que cuando los
tipos de atributo no son esenciales para la definicin del sistema, las decisiones sobre el tipo de
atributo se pueden dejar para despus hasta el diseo del objeto. Esto permite que los desarrolla
dores se concentren en la funcionalidad del sistema y se minimice la cantidad de cambios trivi
ales cuando se revisa la funcionalidad del sistema.
www.FreeLibros.org
46 C apitulo 2 Modelado c o n UM L
Figura 2-22 Un ejemplo de un diagrama de clase UML: las clases que participan en el caso de uso Re
p o r t e E m e r g e n c i a . Por lo general, la informacin de tipo detallado se omite hasta el diseo del objeto (vea
el captulo 7, Diseo de objetos).
Asociaciones y vnculos
Un v n c u l o representa una conexin entre dos objetos. Las a soc i aci one s son relaciones entre
clases y representan grupos de vnculos. Cada objeto O f i c i a l C a m p o tambin tiene una lista de
R e p o r t e E m e r g e n c i a que ha sido escrita por el O f i c i a l C a m p o . En la figura 2-22 la lnea que hay
entre la clase O f i c i a I C a m p o y la clase R e p o r t e E m e r g e n c i a es una asociacin. En la figura 2-23 la
lnea que hay entre el objeto a l i c i a : O f i c i a l C a m p o y el objeto r e p o r t e _ 1 2 9 l : R e p o r
t e E m e r g e n c i a es un vnculo. Este vnculo representa un estado que se conserva en el sistema para
indicar que a l i c i a : O f i c i a l C a m p o gener el r e p o r t e _ 1 2 9 1 : R e p o r t e E m e r g e n c i a .
Papeles
Cada extremo de una asociacin puede etiquetarse con un texto llamado p a p e l . En la
figura 2-22 los papeles de la asociacin entre las clases R e p o r t e E m e r g e n c i a y O f i c i a l C a m p o
son a u t o r y r e p o r t e s G e n e r a d o s . El etiquetado de los extremos de la asociacin con papeles
nos permite distinguir entre varias asociaciones que se originan en una clase. Adems, los pape
les aclaran el propsito de la asociacin.
Figura 2-23 Un ejemplo de un diagrama de objetos UML: los objetos que participan en el escenario
bodegaEnLlamas.
www.FreeLibros.org
Una vista ms profunda al UM L 47
Multiplicidad
Cada extremo de una asociacin puede ser etiquetado con un conjunto de enteros que
indica la cantidad de vnculos que se pueden originar legtimamente a partir de una instancia de
la clase conectada al extremo de la asociacin. El extremo de la asociacin a u t o r tiene una mul
tiplicidad de 1. Esto significa que todos los R e p o r t e E m e r g e n c i a estn escritos por exactamente
un O f i c i a l C a m p o . En otras palabras, cada objeto R e p o r t e E m e r g e n c i a tiene exactamente un
vnculo hacia un objeto de la clase O f i c i a l C a m p o . La multiplicidad del extremo de la asocia
cin del papel R e p o r t e s G e e r a d o s es muchos, indicado por un asterisco. La multiplicidad
muchos es una abreviatura de 0. . n . Esto significa que cualquier O f i c i a l C a m p o puede ser el
autor de cero o ms R e p o r t e E m e r g e n c i a .
Clase de asociacin
Las asociaciones son similares a las clases en que pueden tener atributos y operaciones
asociados a ellas. A una asociacin de stas se le llama c l a s e d e a s o c i a c i n , se muestra con un
smbolo de clase que contiene los atributos y operaciones y est conectada con el smbolo de
asociacin mediante una lnea de guiones. Por ejemplo, en la figura 2-24 la asignacin de un
O f i c i a l C a m p o con un i n c i d e n t e se modela con una clase de asociacin con los atributos
p a p e l y t i e m p o N o t i f i c a c i n .
Asigna
papel: String
tiempoNotificacin: Time
OficialCampo Incidente
nombro: String
nmoroldontificacin: recursos
1
Integer
1 *
Incidente
Figura 2-24 Un ejemplo de una clase de asociacin (diagrama de clase UML).
Cualquier clase de asociacin puede ser transformada a una clase y asociaciones simples,
como se muestra en la figura 2-25. Aunque ambas representaciones son similares, la represen
tacin de la clase de asociacin es ms clara: no puede existir una asociacin sin las clases que
vincula. En forma similar, el objeto A s i g n a c i n no puede existir sin los objetos O f i c i a l C a m p o
e i n c i d e n t e . Aunque la figura 2-25 tiene la misma informacin, ese diagrama requiere un exa
men cuidadoso de la multiplicidad de la asociacin. En el captulo 5, Anlisis, examinamos estos
compromisos del modelado.
Agregacin
Las asociaciones se usan para representar un amplio rango de conexiones entre un con
junto de objetos. En la prctica sucede a menudo un caso especial de asociacin: la composicin.
Por ejemplo, un E s t a d o contiene muchas R e g i o n e s , las cuales, a su vez, contienen muchos
P u e b l o s . Una E s t a c i n P o l i c i a est compuesta por muchos O f i c i a l P o l i c i a . Otro ejemplo
es un D i r e c t o r i o que contiene varios A r c h i v o . Tales relaciones podran modelarse usando una
www.FreeLibros.org
48 C apitulo 2 Modelado c o n UM L
Figura 2-25 Un modelo alterno para la A s i g n a c i n (diagrama de clase UML).
asociacin de uno a muchos. En vez de ello, UML proporciona el concepto de una a g r e g a c i n
para indicar la composicin. Una agregacin se indica mediante una lnea simple con un rombo
en el extremo del contenedor de la asociacin (vea la figura 2-26). Aunque las asociaciones de
uno a muchos y las agregaciones pueden usarse en forma alterna, se prefieren las agregaciones
debido a que enfatizan los aspectos jerrquicos de la relacin. Por ejemplo, en la figura 2-26 los
Of i c i a l P o l i c i a son parte de la E s t a c i n P o l i c a .
Generalizacin
La g eneralizacin es la relacin entre una clase general y una o ms clases ms especializa
das. La generalizacin nos permite describir todos los atributos y operaciones que son comunes para
un conjunto de clases. Por ejemplo, O f i c i a l C a m p o y D e s p a c h a d o r tienen b s atributos nombre y
n m e r o l d e n t i f i c a c i n . Sin embargo, O f i c i a l C a m p o tiene una asociacin con R e p o r te E m e r -
g e n c i a , mientras que D e s p a c h a d o r tiene una asociacin con i n c i d e n t e . Los atributos comunes de
O f i c i a l C a m p o y D e s p a c h a d o r pueden modelarse introduciendo una clase O f i c i a l P o l i c i a , que
es especializada por las clases O f i c i a l C a m p o y D e s p a c h a d o r (vea la figura 2-27). A O f i c i a l -
P o l i c a , la generalizacin, se le llama s uperclase. A O f i c i a l C a m p o y D e s p a c h a d o r , las especia-
lizaciones, se les llama subclases. Las subclases heredan b s atributos y operaciones de su clase de
origen. Las clases abstractas (definidas en la seccin 2.3.4) se distinguen con respecto a las clases
concretas poniendo en c u rsi v a s el nombre de las clases abstractas. En la figura 2-27 O f i c i a l -
P o l i c a es una clase abstracta. Las clases abstractas se usan en el modelado orientado a objetos
para clasificar conceptos relacionados, reduciendo, por lo tanto, la complejidad general del modelo.
Estado
1 *
o ----------
Regin
1 *
Esta ci nPol ici a
O ----------
O f i c i a l P o l i c i a
1 *
o ----------
Directorio Archivo
Figura 2-26 Ejemplos de agregaciones (diagramas de clase UML). Un E s t a d o contiene muchas Regin,
las cuales, a su vez, contienen muchos P u e b l o . Una E s t a c i n P o l i c i a tiene muchos O f i c i a l P o l i c i a .
Un D i r e c t o r i o de un sistema de archivos contiene muchos A r c h i v o .
www.FreeLibros.org
Una vista ms profunda al UM L 49
Figura 2-27 Un ejemplo de generalizacin (diagrama de clase UML). O f i c i a l P o l i c a es una clase abs
tracta que define los atributos y operaciones comunes de las clases O f i c i a l C a m p o y D e s p a ch a d o r .
El comportamiento de los objetos se especifica mediante o p e r a c i o n e s . Un conjunto de
operaciones representa un s e r v i c i o proporcionado por una clase particular. Un objeto solicita la
ejecucin de una operacin de otro objeto envindole un m e n s a j e . El mensaje concuerda con un
m t o d o definido por la clase a la que pertenece el objeto receptor o por cualquiera de sus super-
clases. Las operaciones de una clase son los servicios pblicos que proporciona la clase. Los
mtodos de su clase son las implementaciones de estas operaciones.
La distincin entre operaciones y mtodos permite una separacin ms clara entre el
mecanismo para solicitar un servicio y la ubicacin en donde se le proporciona. Por ejemplo, la
clase i n c i d e n t e de la figura 2-28 define una operacin llamada a s i g n a r R e c u r s o O , la cual
teniendo a un Of i c i a l C a m p o crea una asociacin entre el i n c i d e n t e recibido y el R e c u r s o espe
cificado. La operacin a s i g n a r R e c u r s o 0 tambin puede tener un efecto lateral, como el envo
de una notificacin al R e c u r s o recin asignado. La operacin C e r r a r () de i n c i d e n t e es res
ponsable del cierre del i n c i d e n t e . Esto incluye ir a todos los recursos que hayan sido asignados
al incidente a lo largo del tiempo y recopilar sus reportes.
Incidente
asignarRecurso(r)
Cerrar ()________
Figura 2-28 Ejemplos de operaciones proporcionadas por la clase i n c i d e n t e (diagrama de clase UML).
www.FreeLibros.org
50 C apitulo 2 Modelado c o n UM L
Aplicacin de los diagramas de clase
Los diagramas de clase se usan para describir la estructura de un sistema. Durante el an
lisis, los ingenieros de software construyen diagramas de clase para formalizar el conocimiento
del dominio de aplicacin. Las clases representan objetos participantes que se encuentran en los
casos de uso y diagramas de secuencia, y describen sus atributos y operaciones. El propsito de
los modelos de anlisis es describir el alcance del sistema y descubrir sus fronteras. Por ejemplo,
usando el diagrama de clase que se muestra en la figura 2-22, un analista puede examinar la mul
tiplicidad de la asociacin entre O f i c i a l C a m p o y R e p o r t e E m e r g e n c i a (es decir, un Of i c i a l -
Campo puede escribir cero o ms R e p o r t e E m e r g e n c i a , pero cada R e p o r t e E m e r g e n c i a es
escrito por exactamente un O f i c i a l C a m p o ) y preguntar al usuario si esto es correcto. Puede
haber ms de un autor en un R e p o r t e E m e r g e n c i a ? Puede haber reportes annimos? Depen
diendo de la respuesta del usuario, el analista podra cambiar el modelo para reflejar el dominio
de aplicacin. El desarrollo del modelo de anlisis se describe en el captulo 5, Anlisis.
Los modelos de anlisis no se enfocan en la implementacin. No estn representados con
ceptos como los detalles de interfaz, la comunicacin en red y el almacenamiento en base de
datos. Los diagramas de clase se refinan durante el diseo del sistema y el diseo de objetos
para incluir clases que representen el dominio de solucin. Por ejemplo, el desarrollador aade
clases que representan bases de datos, ventanas de interfaz de usuario, adaptadores alrededor de
cdigo heredado, optimizaciones, etc. Las clases tambin se agrupan en subsistemas con inter
faces bien definidas. El desarrollo del modelo de diseo se describe en los captulos 6, Diseo
del sistema, y 7, Diseo de objetos.
2.4.3 Diagramas de secuencia
Los d i a g r a m a s de s e c u e n c ia describen patrones de comunicacin entre un conjunto de
objetos interactuantes. Un objeto interacta con otro objeto enviando m e n s a j e s . La recepcin
de un mensaje por parte de un objeto activa la ejecucin de una operacin, la cual, a su vez, puede
enviar mensajes a otros objetos. Se pueden pasar a r g u m e n t o s junto con un mensaje y se asocian
a los parmetros de la operacin que se va a ejecutar en el objeto que los recibe.
Por ejemplo, considere un reloj con dos botones (llamado a partir de aqu Reloj2B). El
ajuste del tiempo en Reloj2B requiere que el actor P r o p i e t a r i o R e l o j 2 B oprima primero ambos
botones en forma simultnea, y despus de eso Reloj2B entra al modo de ajustar el tiempo. En el
modo de ajustar el tiempo, Rek>j2B hace parpadear el nmero que se est cambiando (por ejemplo,
horas, minutos, segundos, da, mes y ao). En un principio, cuando el P r o p i e t a r i o R e l o j 2B ini
cia el modo de ajustar el tiempo, parpadean las horas. Si el actor oprime el primer botn, par
padea el siguiente nmero (por ejemplo, si estn parpadeando las horas y el actor oprime el primer
botn, las horas dejan de parpadear y comienzan a parpadear los minutos). Si el actor oprime el
segundo botn, el nmero que est parpadeando se incrementa en una unidad. Si el nmero que
est parpadeando llega al final de su rango, se le pone al inicio de su rango (por ejemplo, supo
niendo que los minutos estn parpadeando y su valor actual sea 59, el nuevo valor es puesto a 0
si el actor oprime el segundo botn). El actor sale del modo de ajustar tiempo oprimiendo ambos
botones en forma simultnea. La figura 2-29 muestra un diagrama de secuencia para un actor
que ajusta su Reloj2B un minuto hacia delante.
Cada columna representa un objeto que participa en la interaccin. El eje vertical repre
senta el tiempo de arriba hacia abajo. Los mensajes se muestran con flechas. Los rtulos de las
www.FreeLibros.org
Una vista ms profunda al UM L 51
P r o ~ i o R a l o ' 2B E n t r a d a R e l o j 2 B
--------------------r-------------------
I -------------------- 1------------ I
T i e m p o
i
o p r i m i r B o t o n a s 1 Y 2 ( ) |
o p r i m i r B o t n l ( )
o p r i m i r B o t 6 n 2
" T
p a r p a d e a r H o r a s ( )
p a r p a d e a r M i n u t o s
i n c r e m e n t a r M i n u t o s ( ) |
o p r i m i r B o t o n e s l Y 2 ( )
o
i g n a r N u e v a H o r a ( )
d e t e n e r P a r p a d e o (
Figura 2-29 Ejemplo de un diagrama de secuencia: ajuste del tiempo en Reloj2B.
flechas representan nombres de mensajes y pueden contener argumentos. Las activaciones (es
decir, la ejecucin de mtodos) se muestran con rectngulos verticales. Los actores se muestran
en la columna de la extrema izquierda.
Los diagramas de secuencia pueden usarse para describir una secuencia abstracta (es decir,
todas las interacciones posibles) o secuencias concretas (es decir, una interaccin posible, como en
la figura 2-29). Cuando se describen todas las interacciones posibles, los diagramas de secuencia
tambin proporcionan notaciones para condiciones e iteradores. Una condicin en un mensaje se
indica por una expresin entre corchetes antes del nombre del mensaje (vea [i>0] o p l ( ) y
[i<=0] op 2 () en la figura 2-30). Si la expresin es cierta se enva el mensaje. La invocacin
repetitiva de un mensaje se indica con un antes del nombre del mensaje (vea *op 3 en la
figura 2-30).
Figura 2-30 E j e m p l o s d e c o n d i c i o n e s e i t e r a d o r e s e n d i a g r a m a s d e s e c u e n c i a .
www.FreeLibros.org
52 C apitulo 2 Modelado c o n UM L
Aplicacin de los diagramas de secuencia
Los diagramas de secuencia describen interacciones entre varios objetos. Por lo general, usa
mos un diagrama de secuencia para describir el flujo de eventos de un caso de uso, identificando
los objetos que participan en el caso de uso y asignando partes del comportamiento del caso de
uso a los objetos en forma de servicios. Este proceso conduce con frecuencia a refinamientos en
el caso de uso (por ejemplo, correccin de descripciones ambiguas, adicin de comportamientos
faltantes) y, en consecuencia, al descubrimiento de ms objetos y ms servicios. En el captulo 5,
Anlisis, describimos en forma detallada el uso de los diagramas de secuencia.
2.4.4 Diagramas de grfica de estado
Una g r f ic a de e s t a d o U M L es una notacin para la descripcin de la secuencia de esta
dos por los que pasa un objeto en respuesta a eventos externos. Las grficas de estado son exten
siones del modelo de mquina de estado finito. Por un lado, las grficas de estado proporcionan
una notacin para anidar estados y mquinas de estado (es decir, un estado puede ser descrito
por una mquina de estado). Por otro lado, las grficas de estado proporcionan una notacin para
el agrupamiento de transiciones con mensajes enviados y condiciones en los objetos. Las grfi
cas de estado UML estn basadas en las grficas de estado de Harel [Harel, 1987]. Una grfica
de estado UML es equivalente a una mquina de estado de Mealy o Moore.
Un e s t a d o es una condicin que satisface un objeto. Se puede pensar que un estado es una
abstraccin de los valores de atributo de una clase. Por ejemplo, un objeto i n c i d e n t e en FRIEND
puede estar en cuatro estados: A c t i v o , i n a c t i v o , C e r r a d o y A r c h i v a d o (vea la figura 2-31).
Un i n c i d e n t e activo indica una situacin que requiere una respuesta (por ejemplo, un incendio
en curso, un accidente de trnsito). Un i n c i d e n t e inactivo indica una situacin que ya fue aten
dida pero de la que todava falta que se escriban los reportes (por ejemplo, ya se apag el fuego
pero todava no se realizan las estimaciones de daos). Un i n c i d e n t e cerrado indica una situa
cin que ya ha sido atendida y documentada. Un i n c i d e n t e archivado es un i n c i d e n t e cerrado
cuya documentacin ha sido movida a almacenamiento fuera del sitio.
Una t r a n s i c i n representa cambios de estado activados por eventos, condiciones o tiempo.
Por ejemplo, en la figura 2-31 hay tres transiciones: del estado A c t i v o hacia el estado i n a c t i v o ,
del estado i n a c t i v o hacia el estado C e r r a d o y del estado C e r r a d o hacia el estado A r c h i v a d o .
www.FreeLibros.org
Una vista ms profunda al UM L 53
Un estado se muestra mediante un rectngulo redondeado. Una transicin se muestra
mediante flechas que conectan dos estados. Los estados se rotulan con su nombre. Un pequeo
crculo negro relleno indica el estado inicial. Un crculo que rodea a un pequeo crculo negro
relleno indica un estado final.
La figura 2-32 muestra otro ejemplo, una grfica de estado para el Reloj2B (para el que se
construy un diagrama de secuencia en la figura 2-29). En el nivel de abstraccin ms alto Reloj2B
tiene dos estados, M e d i r T i e m p o y A j u s t a r H o r a . Reloj2B cambia estados cuando el usuario
oprime y suelta ambos botones en forma simultnea. Cuando al Retoj2B se le aplica corriente
por primera vez, est en el estado A j u s t a r H o r a . Esto est indicado por el pequeo crculo negro
relleno, el cual representa el estado inicial. Cuando al Reloj2B se le acaba la batera, queda fuera
de servicio de manera permanente. Esto se indica con un estado final. En este ejemplo las transi
ciones pueden ser activadas por un evento (por ejemplo, o p r i m i r B o t o n e s L Y R ) o por el paso del
tiempo (por ejemplo, d e s p u s d e 2 m in. ) . Las acciones pueden estar asociadas con una tran
sicin (por ejemplo, emitir un sonido cuando se activa la transicin entre A j u s t a r H o r a y
M e d i r T i e i r p o en el evento o p r i m i r B o t o n e s L Y R ) .
Figura 2-32 Diagrama de grfica de estado para la funcin Aj u s t a r H o r a de Reloj2B.
El diagrama de grfica de estado de la figura 2-32 no representa los detalles de la medicin
o el ajuste del tiempo. Estos detalles han sido abstrados de la grfica de estado, y se les puede
modelar por separado usando transiciones internas o grficas de estado anidadas. Las transi
ciones internas (figura 2-33) son transiciones que permanecen dentro de un solo estado. Tambin
pueden tener acciones asociadas con ellas. El inicio y la salida se muestran como transiciones
internas, ya que sus acciones no dependen de los estados de origen y destino.
Las grficas de estado anidadas reducen la complejidad. Pueden usarse en vez de las tran
siciones internas. En la figura 2-34 el nmero actual est modelado como un estado anidado,
mientras que las acciones que corresponden a la modificacin del nmero actual estn modeladas
usando transiciones internas. Observe que cada estado podra modelarse como una grfica de
www.FreeLibros.org
54 C apitulo 2 Modelado c o n UM L
/ AjustarHora \
inicio/parpadear horas
oprimirBotnl/parpadear sig uien t e nmero
oprimirBotn2/incrementar nmero ac tu a l >
\ s a l i d a / d e t e n e r parpadeo J
Figura 2-33 Transiciones internas asociadas con el estado Aj ustarHora (diagrama de grfica de estado
UML).
estado anidada (por ejemplo, la grfica de estado de ParpadearHoras podra tener 24 subestados
que correspondieran a las horas del da, y las transiciones entre estos estados corresponderan a
la opresin del segundo botn).
Aplicacin de los diagramas de grfica de estado
Los diagramas de grfica de estado se usan para representar el comportamiento no trivial de un
subsistema o un objeto. A diferencia de los diagramas de secuencia, que se enfocan en los eventos
que tienen un impacto en el comportamiento de un conjunto de objetos, los diagramas de grfica de
estado hacen explcito cul atributo o conjunto de atributos tienen un impacto en el comportamiento
de un objeto individual. Las grficas de estado se usan para identificar atributos de objetos y para refi-
nar la descripcin del comportamiento de un objeto, y los diagramas de secuencia se usan para iden
tificar los objetos participantes y los servicios que proporcionan. Los diagramas de grfica de estado
tambin pueden usarse durante el diseo del sistema, y tos objetos para describir tos objetos del
dominio de solucin que tienen un comportamiento interesante. En los captulos 5, Anlisis, y 6,
Diseo del sistema, describimos con ms detalle el uso de los diagramas de grfica de estado.
2.4.5 Diagramas de actividad
Las transiciones salientes son activadas por la terminacin de una accin que est asociada
con el estado. A esto se le llama estado de accin. Por convencin, el nombre de un estado indica
Figura 2-34 Grfica de estado refinada asociada con el estado Aj ustarHora (diagrama de grfica de es
tado UML).
www.FreeLibros.org
Una vista ms profunda al UM L 55
Figura 2-35 Un diagrama de actividad UML para I n c i d e n t e . Durante el estado de accin Mane j a r l n -
c i d e n t e , e l D e s p a c h a d o r recibe reportes y asigna recursos. Una vez que se cierra el i n c i d e n t e , ste pasa
a la actividad Documentar I n c i d e n t e , durante la cual todos los O f i c ia lC a m p o y D e s p a c h a d o r partici
pantes documentan el I n c i d e n t e . Por ltimo, la actividad A r c h i v a r l n c i d e n t e representa el archivado
de la informacin relacionada con el i n c i d e n t e en algn medio de acceso lento.
una condicin, mientras que el nombre de un estado de accin indica una accin. Los diagra
mas de actividad son diagramas de grfica de estado cuyos estados son estados de accin. La
figura 2-35 es un diagrama de actividad que corresponde al diagrama de estado de la figura 2-31.
Una visin alternativa y equivalente de los diagramas de actividad es interpretar los estados de
accin como flujo de control entre actividades y transiciones, esto es, las flechas se interpretan
como restricciones secuenciales entre actividades.
Las decisiones son ramas en el flujo de control. Indican transiciones alternas basadas en
una condicin del estado de un objeto o de un conjunto de objetos. Las decisiones se muestran
con un rombo con una o ms flechas entrantes y dos o ms flechas salientes. Las flechas salientes
estn rotuladas con las condiciones que seleccionan una rama en el flujo de control. El con
junto de todas las transacciones salientes de una decisin representa el conjunto de todas las sali
das posibles. En la figura 2-36, una decisin despus de la accin A b r i r i n c i d e n t e selecciona
entre tres ramas: si el incidente es de alta prioridad y es un incendio se le notifica al J e f e B o m b e -
r o s . Si el incidente es de alta prioridad y no es un incendio se le notifica al J e f e P o l i c i a . Por
ltimo, si no se satisface ninguna de estas condiciones, esto es, si el i n c i d e n t e es de baja priori
dad, no se notifica a ningn superior y se contina con la asignacin de recursos.
Las transiciones complejas son transiciones con varios estados de origen o varios estados
de destino. Las transiciones complejas indican la sincronizacin de varias actividades (en el caso de
varias fuentes) o la divisin del flujo de control en varios hilos (en el caso de destinos mltiples).
Figura 2-36 Ejemplo de decisiones en el proceso A b r i r i n c i d e n t e . Si el i n c i d e n t e es un incendio y
es de alta prioridad, el D e s p a c h a d o r le notifica al J e f eBomberos. Si el incidente es de alta prioridad y no es
un incendio, se notifica al J e f e P o l i c i a . En todos los casos, el D e s p a c h a d o r asigna recursos para manejar
el I n c i d e n t e .
www.FreeLibros.org
56 C apitulo 2 Modelado c o n UM L
Por ejemplo, en la figura 2-37 los estados de accin A s i g n a r R e c u r s o s , C o o r d i n a r R e c u r s o s y
D o c u m e n t a r i n c i d e n t e pueden suceder en paralelo. Sin embargo, slo pueden iniciarse despus
de A b r i r l n c i d e n t e , y la accin A r c h i v a r i n c i d e n t e slo puede iniciarse despus de que
hayan terminado todas las dems actividades.
Las acciones pueden agruparse en carriles para indicar el objeto o subsistema que instru
menta las acciones. Los carriles se representan como rectngulos que encierran a un grupo de
acciones. Las transiciones pueden cruzar carriles. En la figura 2-38 el carril D e s p a c h a d o r agrupa
todas las actividades que realiza el objeto D e s p a c h a d o r . El carril O f i c i a l C a m p o indica que el
objeto O f i c i a l C a m p o es responsable de la accin D o c u m e n t a r l n c i d e n t e .
Aplicacin de los diagramas de actividad
Los diagramas de actividad proporcionan una vista del comportamiento de un objeto cen
trada en la tarea. Pueden usarse, por ejemplo, para describir restricciones de secuencia entre
casos de uso, actividades secuenciales entre un grupo de objetos o las tareas de un proyecto.
En este libro usamos diagramas de actividad para describir las actividades del desarrollo de
software en el captulo 11, Administracin del proyecto, y en el captulo 12, Ciclo de vida
del software.
Figura 2-38 U n e j e m p l o d e c a r r i l e s e n u n d i a g r a m a d e a c t i v i d a d U M L .
www.FreeLibros.org
Una vista ms profunda al UM L 57
2.4.6 Organizacin del diagrama
Los modelos de sistemas complejos se hacen complejos con rapidez conforme los retinan
los desarrolladores. La complejidad de los modelos puede manejarse agrupando en paquetes los
elementos relacionados. Un paquete es un agrupamiento de elementos del modelo, como casos
de uso, clases o actividades, que definen alcances de la comprensin.
Por ejemplo, la figura 2-39 muestra casos de uso del sistema FRIEND agrupados por actor.
Los paquetes se muestran como rectngulos con una ceja en su esquina superior izquierda. Los
casos de uso que manejan la administracin del incidente (por ejemplo, creacin, asignacin de
recursos, documentacin) estn agrupados en el paquete A d m i n i s t r a c i n i n c i d e n t e . Los casos
de uso que manejan el archivado del incidente (por ejemplo, archivado de un incidente, genera
cin de reportes de incidentes archivados) estn agrupados en el paquete A r c h i v o i n c i d e n t e .
Los casos de uso que manejan la administracin del sistema (por ejemplo, adicin de usuarios,
registro de estaciones finales) estn agrupados en el paquete A d m i n i s t r a c i n S i s t e m a . Esto
permite que el cliente y los desarrolladores organicen los casos de uso en grupos relacionados y
que se enfoquen solamente en un conjunto limitado de casos de uso a la vez.
Figura 2-39 Ejemplo de paquetes: los casos de uso de FRIEND organizados por actor (diagrama de caso
de uso UML).
Las figuras 2-39 y 2-40 son ejemplos de diagramas de clase que usan paquetes. Las clases
del caso de uso R e p o r t e E m e r g e n c i a estn organizadas de acuerdo con el sitio en donde se crean
los objetos. O f i c i a l C a m p o y R e p o r t e E m e r g e n c i a son parte del paquete E s t a c i n C a m p o , y
D e s p a c h a d o r e i n c i d e n t e son parte de E s t a c i n D e s p a c h a d o r a . La figura 2-39 muestra los
www.FreeLibros.org
58 C apitulo 2 Modelado c o n UM L
Despachador
A rchi vi sta
Admini s trador
Sistema
Figura 2-40 Ejemplo de paquetes: esta figura muestra los mismos paquetes que la figura 2-39, a excepcin
de que se suprimen los detalles de cada paquete (diagrama de caso de uso UML).
paquetes con los elementos del modelo que contienen, y la figura 2-40 muestra la misma infor
macin sin el contenido de cada paquete. La figura 2-40 es una imagen de nivel ms alto del
sistema y puede usarse para discutir asuntos en un nivel de sistema, mientras que la figura 2-39
es una vista ms detallada que puede usarse para discutir el contenido de paquetes especficos.
Los paquetes (figura 2-41) se usan para manejar la complejidad, en la misma forma en que
un usuario organiza los archivos y subdirectorios en directorios. Sin embargo, los paquetes no
son necesariamente jerrquicos: la misma clase puede aparecer en ms de un paquete. Para reducir
las inconsistencias, las clases (y en trminos ms generales, los elementos del modelo) son
posedos exactamente por un paquete, mientras que se dice que los dems paquetes se refieren al
elemento modelado. Observe que los paquetes son construcciones de organizacin y no objetos.
No tienen comportamientos asociados y no pueden enviar o recibir mensajes.
Una no t a es un comentario asociado a un diagrama. Los desarrolladores usan las notas
para agregar informacin a los modelos y a los elementos de los modelos. ste es un mecanismo
ideal para el registro de asuntos pendientes relevantes para el modelo, la aclaracin de un punto
complejo, el registro de lo que hay que hacer o recordatorios. Aunque las notas no tienen semn
tica propia, se usan, a veces, para expresar restricciones que no pueden expresarse de otra manera
en UML. La figura 2-42 proporciona un ejemplo de una nota.
Figura 2-41 Ejemplo de paquetes. Las clases O f i c i a l C a m p o y R e p o r t e E m e r g e n c i a se encuentran en
el paquete Es t ac i n C am p o ,y las clases D e s p a c h a d o r e I n c i d e n t e se encuentran en el paquete E s t a c i n -
D e s p a c h a d o r a .
www.FreeLibros.org
Una vista ms profunda al UM L 59
Figura 2-42 Un ejemplo de una nota. Se pueden aadir notas a un elemento especfico de un diagrama.
2.4.7 Extensiones al diagrama
El objetivo de los diseadores del UML fue proporcionar un conjunto de notaciones para
modelar una amplia clase de sistemas de software. Tambin reconocieron que un conjunto fijo
de notaciones no podra lograr este objetivo, debido a que es imposible anticipar las necesidades
que se encuentran en todos los dominios de aplicacin y de solucin. Por esta razn, UML pro
porciona varios mecanismos de extensin que permiten que el modelador extienda el lenguaje. En
esta seccin describimos dos de estos mecanismos, los estereotipos y las restricciones.
Un estereotipo es un texto encerrado entre parntesis angulares (por ejemplo, s u b s i s
t e m a ) que se aade a un elemento UML, como una clase o una asociacin. Esto permite que
los modeladores creen nuevos tipos de bloques de construccin que necesitan en su dominio. Por
ejemplo, durante el anlisis clasificamos los objetos en tres tipos: entidad, frontera y control. El
lenguaje UML bsico slo sabe acerca de objetos. Para introducir estos tres tipos adicionales
usamos tres estereotipos, e n t i d a d , f r o n t e r a y c o n t r o l , para representar el tipo
de objeto (figura 2-43). Otro ejemplo es la relacin entre casos de uso. Como vimos en la sec
cin 2.4.1, las relaciones de inclusin en los diagramas de caso de uso estn indicadas con una
flecha de guiones y el estereotipo i n c l u y e . En este libro definiremos el significado de cada
estereotipo conforme lo presentemos. Los estereotipos e n t i d a d , f r o n t e r a y c o n
t r o l se describen en el captulo 5, Anlisis.
Una restriccin es una regla que se aade a un bloque de construccin UML. Esto nos per
mite representar fenmenos que no se pueden expresar de otra manera con UML. Por ejemplo, en
la figura 2-44 un i n c i d e n t e puede estar asociado con uno o ms R e p o r t e E m e r g e n c i a del campo.
Sin embargo, desde la perspectiva del D e s p a c h a d o r es importante que se puedan ver los reportes
en orden cronolgico. Representamos el ordenamiento cronolgico de R e p o r t e E m e r g e n c i a
e n t i d a d
Ao
c o n t r o l
ControlCambioFecha
f r o n t e r a
Fron t e raBotn
e n t i d a d
Mes
e n t i d a d
Dia
f r o n t e r a
FronteraPanta1 1 aLCD
Figura 2-43 E j e m p l o s d e e s t e r e o t i p o s ( d i a g r a m a d e c l a s e U M L ) .
www.FreeLibros.org
60 C apitulo 2 Modelado c o n UM L
RoportoEmorgoncia
reportes
1. .*
Incidente
{ordenado por tiempo de recepcin}
Figura 2-44 Un ejemplo de una restriccin (diagrama de clase UML).
con los i n c i d e n t e asociados con la restriccin { o r d e n a d o p o r t i e m p o d e r e c e p c i n } . Las
restricciones pueden expresarse como un texto informal o usando un lenguaje formal como el
lenguaje de restricciones de objetos (OCL, por sus siglas en ingls [OMG, 1998]). En el captulo
7, Diseo de objetos, describimos el OCL y el uso de restricciones.
2.5 Ejercicios
1. Trace un diagrama de caso de uso para un distribuidor de boletos de un sistema de trenes.
El sistema incluye dos actores: un viajero que compra diferentes tipos de boletos y un sis
tema de computadora central que mantiene una base de datos de referencia para las tarifas.
Los casos de uso deben incluir: C o m p r a r B o l e t o S e n c i l l o , C o m p r a r T a r j e t a S e m a n a l ,
C o n p r a r T a r j e t a M e n s u a l y A c t u a l i z a r T a r i f a . Tambin hay que incluir los siguientes
casos excepcionales: R e t r a s o (es decir, el viajero tarda demasiado para insertar el importe
correcto), T r a n s a c c i n A b o r t a d a (es decir, el viajero selecciona el botn de cancelar sin
terminar la transaccin), D i s t r i b u i d o r S i n C a m b i o y D i s t r i b u i d o r S i n P a p e l .
2. Trace un diagrama de clase que represente un libro definido por la siguiente declara
cin: un libro est compuesto por varias partes que a su vez estn compuestas de varios
captulos. Los captulos estn compuestos de secciones. Enfquese slo en las clases y
sus relaciones.
3. Trace un diagrama de objeto que represente la primera parte de este libro (es decir, parte I,
Comenzando). Asegrese que el diagrama de objeto que trace sea consistente con el dia
grama de clase del ejercicio 2.
4. Ample el diagrama de clase del ejercicio 2 para que incluya los siguientes atributos:
Un libro incluye a un editor, fecha de publicacin y un ISBN.
Una parte incluye un ttulo y un nmero.
Un captulo incluye un ttulo, un nmero y un resumen.
Una seccin incluye un ttulo y un nmero.
5. Considere el diagrama de clase del ejercicio 4. Observe que las clases P a r t e , C a p i t u l o y
S e c c i n incluyen un atributo de ttulo y otro de nmero. Aada una clase abstracta y una
relacin de generalizacin para factorizar estos dos atributos en la clase abstracta.
6. Trace un diagrama de secuencia para el escenario b o d e g a E n L l a m a s de la figura 2-17.
Incluya los objetos r o b e r t o , a l i c i a , j u a n , f r i e n d e instancias de otras clases que pueda
necesitar. Trace slo los cinco primeros mensajes enviados.
7. Trace un diagrama de secuencia para el caso de uso R e p o r t e E m e r g e n c i a de la figura
2-16. Trace slo los cinco primeros mensajes enviados. Asegrese de que sea consistente
con el diagrama de secuencia del ejercicio 6.
www.FreeLibros.org
Ejercicios 61
8. Considere las actividades de desarrollo de software que describimos en la seccin 1.4 del
captulo 1, Introduccin a la ingeniera de software. Trace un diagrama de actividad que
muestre estas actividades suponiendo que se ejecutan estrictamente en secuencia. Trace un
segundo diagrama de actividad que muestre las mismas actividades sucediendo en forma
incremental (es decir, una parte del sistema se analiza, disea, implementa y prueba por com
pleto antes de que se desarrolle la siguiente parte del sistema). Trace un tercer diagrama de
actividad que muestre las mismas actividades sucediendo en forma concurrente.
Referencias
[Booch, 1994]
[Coadera/., 1995]
[De Marco, 1978]
[FRIEND, 1994]
[Harel, 1987]
[Jacobson et al., 1992]
[Martin y Odell, 1992]
[Mellor y Shlaer, 1998]
[Miller, 1956]
[OMG, 1998]
[Popper, 1992]
[Rumbaugh et al., 1991]
[Wirfs-Brock et al., 1990]
G. Booch, Object-Oriented Analysis and Design with Applications, 2a. ed. Benjamn/
Cummings, Redwood City, CA, 1994.
P. Coad, D. North y M. Mayfield, Object Models: Strategies, Patterns, & Applications.
Prentice Hall, EnglewoodCliffs, NJ, 1995.
T. De Marco, StructuredAnalysis and System Specification. Yourdon, Nueva York, 1978.
FRIEND Project Documentaron. School of Computer Science, Camegie Mellon Univ.,
Pittsburgh, PA, 1994.
D. Harel, Statecharts: A visual formalism for complex systems, Science o f Computer
Programming, 1987, pgs. 231-274.
I. Jacobson, M. Christerson, P. Jonsson y G. Overgaard, Object-Oriented Sojhvare
EngineeringA Use Case Driven Approach. Addison-Wesley, Reading, MA, 1992.
J. Martin y J. J. Odell, Object-Oriented Analysis and Design. Prentice Hall, Englewood
Cliffs, NJ, 1992.
S. Mellor y S. Shlaer, Recursive Design Approach. Prentice Hall, Upper Saddle River, NJ,
1998.
G. A. Miller, The magical number seven, plus or minus two: Some limits on our capacity
for processing information , Psychological Review, vol. 63, 1956, pgs. 81-97.
Object Management Group, OMG Unified Modeling Language Specification.
Framingham, MA, 1998. http://www.omg.org.
K. Popper, Objective Knowledge: An Evolutionary Approach. Clarendon, Oxford, 1992.
J. Rumbaugh, M. Blaha, W. Premerlani, F. Eddy y W. Lorensen, Object-Oriented
Modeling and Design. Prentice Hall, Englewood Cliffs, NJ, 1991.
R. Wirfs-Brock, B. Wilkerson y L. Wiener, Designing Object-Oriented Software Prentice
Hall, EnglewoodCliffs, NJ, 1990.
www.FreeLibros.org
3
3.1 Introduccin: ejemplo de un cohete 64
3.2 Una panormica de la comunicacin de proyectos 65
3.3 Modos de comunicacin 66
3.3.1 Definicin del problema 68
3.3.2 Revisiones del cliente 69
3.3.3 Revisiones del proyecto 70
3.3.4 Inspecciones y pruebas de recorrido 70
3.3.5 Revisiones de estado 71
3.3.6 Lluvia de ideas 71
3.3.7 Lanzamientos 72
3.3.8 Revisin post morten 72
3.3.9 Peticiones de aclaraciones 73
3.3.10 Peticin de cambio 74
3.3.11 Resolucin de problemas 74
3.3.12 Discusin 76
3.4 Mecanismo de comunicacin 76
3.4.1 Conversaciones en los pasillos 78
3.4.2 Cuestionarios y entrevistas estructuradas 78
3.4.3 Reuniones 79
3.4.4 Revisiones 80
3.4.5 Groupware en diferentes lugares y al mismo tiempo 82
3.4.6 Correo electrnico 83
3.4.7 Grupos de noticias 83
3.4.8 World Wide Web 84
3.4.9 Lotus Notes 84
3.4.10 Discusin 86
3.5 Actividades de comunicacin del proyecto 87
3.5.1 Identificacin de las necesidades de comunicacin 87
3.5.2 Instalacin de una infraestructura 88
3.5.3 Organizacin de las revisiones del cliente y del proyecto 89
3.5.4 Organizacin de reuniones de equipo semanales 91
3.5.5 Revisin de los asuntos de transicin 93
3.6 Ejercicios 93
Referencias 94
62
www.FreeLibros.org
3
Comunicacin
de proyectos
Dos tableros elctricos para un cohete, fabricados po r contratistas
diferentes, se conectaban mediante un pa r de alambres. Gracias a
una revisin exhaustiva anterior al vuelo s e descubri que los
alambres estaban invertidos. Despus de que s e estrell e l cohete,
la investigacin revel que los contratistas haban corregido los
alambres invertidos como se les haba instruido.
De hecho, ambos l o hicieron.
I - i a ingeniera de software es una actividad de colaboracin. El desarrollo de software rene a
participantes con diferentes conocimientos, como expertos en dominios, analistas, diseadores,
programadores, administradores, escritores tcnicos, diseadores grficos y usuarios. Ningn partici
pante puede comprender o controlar todos los aspectos del sistema que se est desarrollando y, por
k) tanto, todos los participantes dependen de los dems para realizar su trabajo. Adems, cualquier
cambio al sistema o al dominio de aplicacin requiere que los participantes actualicen su com
prensin del sistema. Estas dependencias hacen que sea crtico compartir informacin en forma
precisa y a tiempo.
La comunicacin puede tomar muchas formas, dependiendo del tipo de actividad que est
apoyando. Los participantes comunican su estado durante reuniones semanales o bimestrales y la
registran en minutas de la reunin. Los participantes comunican el estado del proyecto al cliente
durante las revisiones. La comunicacin de los requerimientos y las alternativas de diseo es apo
yada por los modelos y su documentacin correspondiente. Las crisis y las incomprensiones se
manejan mediante intercambios de informacin espontneos, como llamadas telefnicas, mensajes
de correo electrnico, conversaciones en los pasillos o en reuniones a d h o c .
En este captulo, primero hacemos patente la necesidad e importancia de la comunicacin
en la ingeniera de software. Luego describimos diferentes aspectos de la comunicacin de
proyectos y su relacin con diferentes tareas. Luego investigamos varias herramientas para apo
yar la comunicacin de proyectos. Por ltimo, describimos un ejemplo de la infraestructura de
comunicaciones.
63
www.FreeLibros.org
64 C aptulo 3 C omunicacin d e proyectos
3.1 Introduccin: el ejemplo de un cohete
Cuando se desarrolla un sistema, los desarrolladores se enfocan en la construccin de un sistema
que se comporte de acuerdo con las especificaciones. Cuando los desarrolladores interactan
con otros participantes en el proyecto, se enfocan en comunicar informacin con precisin y en
forma eficiente. Aunque no parezca que la comunicacin sea una actividad creativa o retadora,
contribuye tanto al xito del proyecto como un buen diseo o una implementacin eficiente,
como lo ilustra el siguiente ejemplo [Lions, 1996].
Ariane 501
El 4 de junio de 19%, a los 30 segundos del despegue, explot el Ariane 501, el primer prototipo de la serie
Ariane 5. La computadora de navegacin principal tuvo un desbordamiento aritmtico, se apag y pas el
control a su gemela de reemplazo, como haba sido diseada. La computadora de respaldo, al haber tenido la
misma excepcin unas cuantas centsimas de segundos antes, ya se haba apagado. El cohete, sin un sistema
de navegacin, dio una vuelta cerrada fatal para corregir una desviacin que no haba sucedido.
A un comit de investigacin independiente le llev menos de dos meses documentar la manera en que
un error de software dio como resultado una falla total. El diseo del sistema de navegacin del Ariane 5
fue uno de los pocos componentes del Ariane 4 que se reutiliz. Haba sido probado en vuelo y no haba
fallado en el Ariane 4.
El sistema de navegacin es responsable del clculo de las correcciones de curso de una trayectoria especifi
cada con base en la entrada recibida desde el sistema de referencia inercial. Un sistema de referencia inercial
permite que un vehculo en movimiento (por ejemplo, un cohete) calcule su posicin basado nicamente en
datos de sensores de acelermetros y girscopos, esto es, sin referencia con el mundo extemo. El sistema
inercial debe ser inicializado con las coordenadas iniciales y alinear su eje con la orientacin inicial del
cohete. Los clculos de alineacin los realiza el sistema de navegacin antes del lanzamiento, y es necesario
actualizarlos en forma continua para tomar en cuenta la rotacin de la Tierra. Los clculos de alineacin son
complicados y se necesitan 45 minutos, aproximadamente, para realizarlos. Una vez que se lanza el cohete,
los datos de alineacin se transfieren al sistema de navegacin de vuelo. Por diseo, los clculos de alinea
cin continan durante otros 50 segundos despus de la transferencia de datos al sistema de navegacin. La
decisin permite que se detenga la cuenta regresiva despus que se realiza la transferencia de datos de alinea
cin pero antes que se enciendan los motores sin tener que volver a iniciar los clculos de alineacin (esto es,
sin tener que volver a iniciar un ciclo de clculos de 45 minutos). Si el lanzamiento tiene xito, el modo de
alineacin simplemente genera, durante 40 segundos, datos que no se usan despus del despegue.
El sistema de computadora del Ariane 5 es diferente al del Ariane 4. Se duplic la electrnica: dos siste
mas de referencia inercial para calcular la posicin del cohete, dos computadoras para comparar la tra
yectoria planeada contra la trayectoria actual y dos conjuntos de electrnica de control para hacer girar
al cohete. Si fallara cualquier componente, se encargaran los sistemas de respaldo.
El sistema de alineacin, diseado slo para clculos en tierra, usa palabras de 16 bits para almacenar la
velocidad horizontal (ms que suficiente para los desplazamientos a causa del viento y la rotacin de
la Tierra). Despus de 32 segundos de vuelo, la velocidad horizontal del Ariane 5 caus un desbor
damiento, envi una excepcin que fue manejada apagando la computadora a bordo y pasando el con
trol al sistema de respaldo.
Disc us i n
No hubo una cobertura de pruebas adecuada para el software de alineacin. Haba estado sujeto a miles
de pruebas, pero ninguna de ellas incluy una trayectoria real. El sistema de navegacin fue probado de
manera individual. El equipo del sistema especific pruebas y las ejecutaron los constructores del
sistema de navegacin. El equipo del sistema no se dio cuenta que el mdulo de alineacin podra
causar que el procesador principal se apagara, en especial cuando no estaba en vuelo. Haba sido una
falla de comunicacin entre el equipo del componente y el equipo del sistema.
www.FreeLibros.org
Una panormica d e la comunicacin d e proyectos 65
En este captulo tratamos la comunicacin de proyectos dentro de un proyecto de desarrollo de
software. Este tema no es especfico de la ingeniera de software. Sin embargo, la comunicacin es
omnipresente a lo largo de un proyecto de desarrollo de software. El costo de una falla de comu
nicacin puede tener un impacto alto y a veces fatal sobre el proyecto y la calidad del sistema
entregado.
3.2 Una panormica de la comunicacin de proyectos
Las necesidades y herramientas de comunicacin que la apoyan son varias y diversas. Para facilitar
nuestra discusin, presentamos la siguiente clasificacin y definiciones (figura 3-1):
Un modo de comunicacin se refiere a un tipo de intercambio de informacin que tiene
objetivos y alcances definidos. Una revisin del cliente es un ejemplo de un modo de comu
nicacin durante el cual el cliente revisa el contenido y la calidad de un proyecto disponible.
El reporte de problemas es otro ejemplo del modo de comunicacin durante el cual un
usuario reporta un error a los desarrolladores. Un modo de comunicacin puede ser calen-
darizado, si es un evento planeado, o manejado por eventos, si sucede en forma no deter-
minstica. Las revisiones del cliente son, por lo general, calendarizadas, mientras que los
reportes de problemas son manejados por eventos.
Un mecanismo de comunicacin se refiere a una herramienta o procedimiento que puede
usarse para transmitir y recibir informacin y apoyar un modo de comunicacin. Las sea
les de humo y las mquinas de fax son mecanismos de comunicacin. Los mecanismos de
comunicacin son sncronos si requieren que el emisor y los receptores estn disponibles
al mismo tiempo. Si no es as, se dice que son asincronos. Las seales de humo son sn
cronas, mientras que las mquinas de fax son asincronas.
Figura 3-1 Gasificacin de los modos y mecanismos de comunicacin (diagrama de clase UML).
Los mecanismos de comunicacin sncronos y asincronos pueden usarse para apoyar un modo
de comunicacin calendarizado. Por ejemplo, en la figura 3-2 se pueden usar las seales de humo o
una mquina de fax para una revisin del cliente. Por otro lado, slo se pueden usar los mecanismos
de comunicacin asincronos para apoyar los modos manejados por eventos (el reporte de un pro
blema con seales de humo puede conducir a una prdida de informacin si nadie estaba a cargo de
observar el humo). Observe que un modo de comunicacin puede estar apoyado por muchos meca
nismos de comunicacin diferentes: el documento de anlisis de requerimientos puede ser enviado
por fax al cliente, y el cliente puede enviar sus comentarios de regreso usando seales de humo. En
www.FreeLibros.org
66 C aptulo 3 C omunicacin d e proyectos
Figura 3-2 Ejemplos de modos y mecanismos (diagrama de clase UML). Tanto los modos calendarizados
como los manejados por evento pueden estar apoyados por mecanismos asincronos. Sin embargo, los modos
manejados por eventos slo pueden ser apoyados por mecanismos asincronos.
forma similar, el mismo mecanismo puede apoyar muchos modos de comunicacin: la mquina de
fax puede recibir reportes de problemas o comentarios de una revisin del cliente.
En la seccin 3.3 revisamos los diferentes modos de comunicacin que pueden usarse en un
proyecto. Los modos calendarizados que ah se revisan incluyen revisiones del cliente, reportes
de estado y versiones del sistema. Los modos manejados por eventos incluyen peticiones de cam
bios, aclaraciones y resolucin de problemas. En la seccin 3.4 investigamos varios mecanismos
de comunicacin que estn disponibles para los participantes en el proyecto. En particular, nos
enfocamos en reuniones, revisiones, formularios de reporte, cuestionarios, correo electrnico,
grupos de noticias y groupware. En la seccin 3.5 examinamos una combinacin especfica de
modos y mecanismos de comunicacin en un proyecto de ejemplo.
3.3 M o d o s de comunicacin
La comunicacin calendarizada sucede de acuerdo con un proceso peridico (tabla 3-1). Por
ejemplo, un equipo revisa su estado cada semana, un cliente revisa el estado del proyecto cada
mes. Estos son puntos de comunicacin enfocados, bien organizados y, por lo general, frente a
frente, dirigidos hacia el descubrimiento y resolucin de un amplio rango de asuntos.
La comunicacin manejada por eventos es causada por un evento especfico (tabla 3-2),
como el descubrimiento de una incompatibilidad entre dos subsistemas, la necesidad de una
nueva caracterstica o la necesidad de resolver diferentes interpretaciones antes de una revisin
formal. Estos son puntos de comunicacin espontneos, ad hoc y posiblemente asincronos diri
gidos hacia la resolucin rpida de un solo asunto.
Los proyectos de software requieren el apoyo para comunicacin peridica y manejada
por eventos. No todas las necesidades de comunicacin pueden manejarse mediante eventos calen
darizados y procesos formales, mientras que el intercambio de informacin que se realiza slo
cuando se necesita o se requiere da como resultado crisis adicionales debidas a fallas de comuni
cacin y omisiones. En esta seccin describimos ambos tipos de modos.
www.FreeLibros.org
M o d o s d e comunicacin
Tabla 3-1 M o d o s d e c o m u n i c a c i n c a l e n d a r i z a d o s .
67
Modo Objetivos Alcance
Definicin del
problema (sec
cin 3.3.1)
Extraer del cliente y del usuario el
conocimiento de los requerimientos
Extraer del cliente y del usuario el
conocimiento del dominio
Dominio de aplicacin
Requerimientos funcionales y
no funcionales
Calendario de entregas
Revisiones del
diente (seccin
3.3.2)
Asegurarse que el sistema que se est
construyendo sea el que quiere el
cliente
Revisar la factibilidad de los requeri
mientos no funcionales (por ejemplo,
plataforma, desempeo)
Revisar el calendario de entregas
Requerimientos funcionales y
no funcionales
Calendario de entrega
Revisiones del
proyecto (seccin
3.3.3)
Asegurarse que puedan comunicarse los
subsistemas dependientes
Anticipar la terminacin tarda de
subsistemas crticos
Diseminar el conocimiento operacio-
nal entre equipos
Diseo del sistema
Diseo de objetos
Pruebas
Inspecciones/
pruebas de reco
rrido (seccin
3.3.4)
Asegurar que la implementacin de
los subsistemas sea correcta
Mejorar la calidad de la
implementacin de los subsistemas
Diseminar el conocimiento operacio-
nal entre los participantes
Implementacin
Revisiones del
estado (seccin
3.3.5)
Asegurar el apego al plan de tareas
Asegurar la terminacin a tiempo de
los productos a entregar
Diseminacin de problemas potenciales
Tareas
Conceptos de accin
Asuntos
Lluvia de ideas
(seccin 3.3.6)
Generar y evaluar soluciones Un solo problema
Versiones (sec
cin 3.3.7)
Diseminacin de gran cantidad de
informacin (por ejemplo, documen
tos, cdigo de subsistemas)
Organizacin del proyecto
Plan de tareas
Sistema, documentos y modelos
Revisin post
mortem (seccin
3.3.8)
Captura y organizacin de las lec
ciones aprendidas
Organizacin del proyecto
Plan de tareas
Sistema y modelos
www.FreeLibros.org
68 C aptulo 3 C omunicacin d e proyectos
Tabla 3-2 M o d o s d e c o m u n i c a c i n m a n e j a d o s p o r e v e n t o s .
Modo Objetivos Alcance
Peticiones de
aclaraciones
(seccin 3.3.9)
Aclaraciones
Reporte de una ambigedad en la
documentacin o en el cdigo
Cualquiera
Peticiones de
cambios (seccin
3.3.10)
Reporte de un problema o una
mejora posible
Cualquiera
Resolucin de
problemas (seccin
3.3.11)
Alcanzar el consenso
Formalizar una solucin selec
cionada
Un solo problema
3.3.1 Definicin del problema
El objetivo de la definicin del problema es que el gerente de proyecto y el cliente se
pongan de acuerdo sobre el alcance del sistema que se va a construir. La actividad de definicin
del proyecto produce un documento de definicin del problema que indica el dominio y la funcionali
dad del sistema. Tambin contiene requerimientos no funcionales, como la especificacin de la
plataforma o restricciones de velocidad. Considere el siguiente ejemplo [FRIEND, 1994].
Enunciado del problema F R I E N D
Debilidades del manejo de emergencias actual. La mayora de los sistemas para el manejo de
emergencias de los gobiernos locales estn establecidos para manejar cargas de llamadas normales, y se
sobrecargan de inmediato cuando sucede un evento no usual o varios eventos. Durante una emergencia,
quienes la atienden pueden adquirir informacin til para quienes toman decisiones. Esta informacin
no se transmite por radio, a menos que se solicite, debido al tiempo aire limitado.
Los servicios gubernamentales poseen gran cantidad de informacin que es inestimable durante las emergen
cias. Los departamentos de bomberos, la polica, los servicios mdicos de emergencia, los trabajadores pblicos
y los inspectores de edificios recopilan gran cantidad de informacin basada en papel. Durante una emergencia,
esta informacin basada en papel es en extremo difcil de usar, y rara vez se usa.
La informacin crucial no est siempre disponible de inmediato durante las emergencias. La informacin
sobre el lugar del incidente, como materiales peligrosos, ubicacin de tuberas de gas, etc., no se tiene
disponible o no existe. Hay una necesidad de un sistema que agilice el tiempo de respuesta en las emer
gencias y proporcione informacin para tomar mejores decisiones.
Requerimientos funcionales. El objetivo del proyecto F R I E N D es construir un sistema que maneje varios
incidentes de emergencia a la vez bajo cargas de llamadas no usuales. El sistema debe estar preparado
para un escenario de peor caso o una emergencia. El sistema debe permitir una respuesta rpida y remota
entre oficiales de polica, bomberos, trabajadores de mantenimiento y el despachador del cuartel general.
Se usar un ancho de banda amplio para que las necesidades de acuse de recibo antes de la transmisin
no sean una limitacin.
El sistema proporcionar uso instantneo de informacin como:
Informacin geogrfica, como mapas de la ciudad que incluyan los servicios que hay sobre el terreno
y subterrneos.
Informacin sobre materiales peligrosos (Matpel).
Informacin especfica sobre edificios, como tuberas de gas y agua, ubicacin de hidrantes para
bomberos, planos de los pisos, etctera.
Recursos gubernamentales disponibles, como el plan de operacin para emergencias (EOP, por sus
siglas en ingls).
www.FreeLibros.org
M o d o s d e comunicacin 69
Siguiendo los lincamientos y el plan de operacin para emergencias, el sistema notificara de manera auto
mtica al personal de los departamentos adecuados, crear listas de tareas a realizar y asignar recursos,
as como cualquier otra tarea que podra ahorrar tiempo durante una emergencia.
Cada vehculo de puesto de comando que interacte con el sistema F R I E N D tendr una computadora
mvil que use comunicacin inalmbrica para enviar reportes al despachador del cuartel general. El
objetivo es reemplazar los mecanismos de entrada de los reportes de quienes primero atienden el caso
con una interfaz de usuario de respuesta rpida y fcil captura de datos, ya sea mediante reconocimiento
de voz, pantalla sensible al tacto o un sistema basado en pluma. Todas las transacciones del sistema
debern archivarse para un anlisis futuro.
Requerimientos no funcionales. El sistema FR I E N D ser usado por primera vez por el departamento de
polica de Bellevue como producto aislado. Tambin se usar despus en un grupo de municipios y ten
dr la capacidad para proporcionar informacin local a los niveles superiores de gobierno. El hardware
usado por el personal de servicio en campo estar expuesto a las condiciones climticas y al trabajo
rudo. FR I E N D deber ser transportable hacia el hardware existente que se tiene disponible en los gobier
nos locales. Se espera que el prototipo sea escalable. Por lo tanto, el diseo del sistema deber tomar en
cuenta que pueda expandirse para manejar accidentes a niveles estatal y federal.
Criterios de aceptacin. El cliente considera que esta definicin del problema es muy amplia, y no
espera que se proporcione toda la funcionalidad en la primera versin. Durante la fase de ingeniera de
requerimientos del proyecto, el cliente negociar con los ingenieros de software la entrega de un pro
totipo aceptable. Despus de la fase de negociacin se congelarn los requerimientos especficos para la
prueba de aceptacin del cliente. El cliente espera recibir el producto negociado despus de cuatro a
seis semanas de la presentacin al cliente. Como mnimo, el cliente espera que el prototipo que se
entregue sea expansible en el futuro. Como prueba de aceptacin mnima, el cliente espera que el pro
totipo negociado tenga una demostracin exitosa en el sistema Andrew con un componente inalmbrico.
Como prueba aceptable deseada, el cliente espera que el prototipo se comporte en forma satisfactoria en
una prueba de campo en el departamento de polica de Bellevue.
La definicin del problema no produce una especificacin completa del enunciado. Tan slo es
una actividad de requerimientos preliminar que establece el terreno comn entre el cliente y el pro
yecto. Trataremos las actividades de requerimientos en los captulos 4, Obtencin de requerimientos,
y 5, Anlisis.
3.3.2 Revisiones del cliente
El objetivo de las revisiones del cliente es que el cliente valore el avance del desarrollo y que
los desarrolladores confirmen o cambien tos requerimientos del sistema. La revisin del cliente puede
usarse para manejar las expectativas de ambos lados y para incrementar la comprensin conpartida
entre los participantes. El enfoque de la revisin es sobre lo que hace el sistema y cules restricciones
son relevantes para el cliente (por ejemplo, desempeo, plataforma). En la mayora de tos casos, la revi
sin no debe enfocarse en el diseo o la implementacin del sistema, a menos que tenga un impacto en
el cliente o el usuario. Las excepciones incluyen tos contratos de software que imponen restricciones
sobre el proceso de desarrollo, como tos sistemas de software con requerimientos de seguridad.
Una revisin del cliente se realiza, por lo general, como una presentacin formal durante
la cual los desarrolladores se enfocan en alguna funcionalidad especfica con el cliente. La
revisin est precedida por la entrega de un producto de trabajo, como un documento de especi
ficaciones, una maqueta de interfaz o un prototipo para evaluacin. Al trmino de la revisin
el cliente proporciona retroalimentacin a los desarrolladores. Esta retroalimentacin puede
www.FreeLibros.org
70 C aptulo 3 C omunicacin d e proyectos
Agen d a para la prueba de aceptacin del cliente OWL
Fecha: 12/05/1997.
Hora: 3- 4:30 p.m.
Ubicacin: Forest Hall.
Objetivo: Revisin del sistema por parte del cliente e identificacin de asuntos pendientes.
Panorama:
Definicin del problema.
Objetivos del diseo.
Arquitectura del sistema.
Demostracin 1: Interfaz y control del usuario remoto.
Demostracin 2: Editor en el sitio.
Demostracin 3: Visualizacin 3D e interfaz de usuario de voz.
Preguntas y respuestas.
Conclusiones de la revisin.
F i g u r a 3-3 Un ejemplo de una agenda para una revisin del cliente.
consistir en una aprobacin general o la solicitud de cambios detallados en la funcionalidad o la
calendarizacin.
La figura 3-3 muestra un ejemplo de agenda para una revisin del cliente.
3.3.3 Revisiones del proyecto
El objetivo de una revisin del proyecto es que el gerente del proyecto valore el estado y que
tos equipos revisen las interfaces de tos subsistemas. Las revisiones del proyecto tambin pueden
favorecer el intercambio de conocimiento operacional entre los equipos, como problemas comunes
encontrados en las herramientas o en el sistema. El enfoque de la revisin depende del producto que
se est revisando. Para el diseo del sistema se revisan la descomposicin y las interfaces de subsiste
mas de alto nivel. Para el diseo de objetos se revisan las interfaces de objetos. Para la integracin y
pruebas se revisan las pruebas y sus resultados. El enfoque de las revisiones del proyecto no debe ser
sobre la funcionalidad, a menos que tenga un impacto en la factibilidad o el estado del sistema.
Una revisin del proyecto se realiza, por lo general, como una presentacin formal durante
la cual cada equipo presenta su subsistema ante el gerente o ante los equipos que dependen del
subsistema. La revisin est precedida, por lo general, por la entrega de un documento (por
ejemplo, el documento de diseo del sistema) que describe los aspectos del sistema que se van a
revisar (por ejemplo, las interfaces de los subsistemas). Al trmino de la revisin, los desarrolla
dores pueden negociar cambios en las interfaces y en la calendarizacin.
3.3.4 Inspecciones y pruebas de recorrido
El objetivo de las inspecciones y pruebas de recorrido del cdigo es incrementar la calidad
de un subsistema mediante la revisin entre iguales. En el caso de una prueba de recorrido, un desa-
rrollador presenta ante los dems miembros del equipo el cdigo, lnea por lnea, que ha escrito. Los
dems miembros del equipo cuestionan cualquier cdigo sospechoso y tratan de descubrir la mayor can
tidad posible de errores. El papel del desarrollador es facilitar la presentacin y responder las preguntas
del equipo. En el caso de una inspeccin, los miembros del equipo se enfocan en que el cdigo se
www.FreeLibros.org
M o d o s d e comunicacin 71
apegue a una lista de criterios predefinidos (por ejemplo, implementa el algoritmo especificado? Usa
en forma correcta las interfaces de tos subsistemas dependientes?). En el caso de una inspeccin, el
equipo conduce la discusin y el desarrollador responde preguntas. El punto central de la
inspeccin o las pruebas de recorrido ser el cdigo, y no el programador o el diseo.
La comunicacin entre participantes se basa en el cdigo. El cdigo actual se usa como marco de
referencia comn. Las inspecciones son similares a las revisiones del proyecto a i su objetivo de incre
mentar la calidad y diseminar informacin operacional. Difieren con respecto a las revisiones o su for
malidad, su audiencia limitada y su duracin extendida. Las inspecciones y las pruebas de recorrido se
usan en forma amplia y han sido efectivas para la deteccin temprana de defectos [Fagan,
1976], [Seaman y Basili, 1997]. Describimos las pruebas de recorrido en el captulo 9, Pruebas.
3.3.5 Revisiones de estado
A diferencia de las revisiones del cliente y del proyecto que se enfocan en el sistema, las
revisiones de estado se centran en las tareas. Las revisiones de estado se realizan principal
mente en un equipo (por ejemplo, cada semana) y en ocasiones en un proyecto (por ejemplo,
cada mes). El objetivo de las revisiones de estado es detectar desviaciones con respecto al plan
de ta-reas y corregirlas. Las revisiones de estado tambin motivan a los desarrolladores para la
terminacin de tareas pendientes. La revisin del estado de las tareas motiva la discusin de asun
tos pendientes y problemas no anticipados y, por lo tanto, motiva la comunicacin informal entre
los miembros del equipo. Con frecuencia se pueden compartir con ms efectividad las solucio
nes a asuntos comunes, y el conocimiento operacional se disemina cuando se tratan dentro del
alcance de un equipo (a diferencia de cuando son dentro del alcance del proyecto).
Las revisiones de estado representan una inversin en el poder del personal. El incremento
de la efectividad de las revisiones tiene un impacto global en el desempeo del equipo. Las
reuniones de estado deben tener una agenda disponible con anterioridad a la reunin en la que se
describan las tareas y asuntos a revisar. Esto permite que se preparen los participantes en la
reunin y cambial la agenda si es necesario que se trate un asunto urgente. Un participante designado
para capturar la mayor cantidad de informacin posible (sobre todo de estado y decisiones)
deber levantar las minutas de cada reunin. Las minutas se deben poner a disposicin de los
participantes para que las revisen tan pronto como sea posible despus de la reunin. Esto
motiva a quien levanta la minuta para que la termine, y sirve para que los miembros del equipo
que no pudieron asistir a la reunin se enteren del estado del equipo. Posteriormente se hace refe
rencia a las minutas de la reunin cuando se tratan tareas relacionadas o se necesitan aclaracio
nes. Adems, las minutas de las reuniones representan una parte de la historia del proyecto que
puede analizarse despus de que se termina el proyecto.
3.3.6 Lluvia de ideas
El objetivo de la lluvia de ideas es generar y evaluar una gran cantidad de soluciones para
un problema. La lluvia de ideas se realiza, por lo general, en reuniones frente a frente, pero tam
bin puede realizarse por medio de correo electrnico o groupware. La idea fundamental de la
lluvia de ideas es que las soluciones propuestos por un participante, aunque no sean vlidas, pueden
generar ideas y propuestas adicionales de los dems participantes. En forma similar, la evaluacin de
propuestos dentro de un grupo conduce a un criterio de evaluacin ms explcito y a una evaluacin
www.FreeLibros.org
72 C aptulo 3 C omunicacin d e proyectos
ms consistente. En situaciones en donde no existe una solucin clara, el proceso de lluvia de ideas
puede facilitarse mediante la separacin de la generacin y la evaluacin. La lluvia de ideas tambin
tiene el efecto lateral de lograr el consenso sobre las soluciones escogidas.
3.3.7 Lanzamientos
El objetivo de un lanzamiento es poner un documento o un subsistema a disposicin de
otros participantes del proyecto, reemplazando con frecuencia una versin anterior del artefacto.
Un lanzamiento puede ser tan simple como un mensaje electrnico de dos renglones (vea la figura
3-4) o puede consistir en varios fragmentos de informacin: la nueva versin del artefacto, una
lista de los cambios realizados desde el ltimo lanzamiento del artefacto, una lista de problemas
o asuntos que falta por resolver y un autor.
De: Al
a m p o de n o t i c i a s : c s 4 1 3 . f 9 6 . a r q u i t e c t u r a . d i s c u s i n
Tema: SDD
Fecha: J u e v e s 25 d e n o v i e m b r e 0 3 : 3 9 : 1 2 - 0500
Lineas: 6
ID del mensaje: <3 2 9 9 B 3 0 . 3 5 0 7 @ a n d r e s . c m u . e d u >
VarsinMime: 1 . 0
Tipo de contenido: T e x t o / l l a n o ; c a r a c t e r e s = u s - a s c i i
Codificacin para l a t ransferencia de contenido: 7 b i t
Aqui p u e d e n e n c o n t r a r una v e r s i n a c t u a l i z a d a d e l documento API p a r a e l
s u b s i s t e m a de n o t i f i c a c i n : h t t p : / / d e c a f / ~ a l / F R I E N D / n o t i f a p i . h t m l .
Al
N o t i f i c a c i n a l l i d e r de g r u p o
Figura 3-4 Un ejemplo de un anuncio de un lanzamiento.
Los lanzamientos se usan para poner a disposicin una gran cantidad de informacin en forma
controlada, agrupando en lotes, documentando y revisando muchos cambios al mismo tiempo. Las
revisiones de proyecto del cliente son precedidas, por lo general, por un lanzamiento de uno o ms
productos disponibles.
La administracin de versiones de documentos, modelos y subsistemas se describe en el
captulo 10, Administracin de la configuracin del software.
3.3.8 Revisin post mortem
Las revisiones post mortem se enfocan en la extraccin de lecciones del desarrollo una
vez que se ha entregado el software. Las revisiones post mortem necesitan realizarse poco des
pus de la conclusin del proyecto para que se pierda o distorsione muy poca informacin por
experiencias subsiguientes. El fin del proyecto es, por lo general, un buen momento para valorar
cules tcnicas, mtodos y herramientas han funcionado y han sido crticas para el xito (o fra
caso) del sistema.
Una revisin post mortem puede realizarse como una sesin de lluvia de ideas, un cuestiona
rio estructurado seguido de entrevistas o reportes individuales escritos por los equipos (o los parti-
www.FreeLibros.org
M o d o s d e comunicacin 73
Preguntas acerca de problemas
q ue sucedieron
Preguntas que ayudan a descu
brir soluciones posibles para esos
problemas
Preguntas que descubren otros
aspectos de l proyecto que se per
cibieron como positivos o podran
s e r mejorados
Preguntas abiertas pa ra atra
p a r todo
Qu tipo de problemas de comunicacin y negociacin surgieron en
el desarrollo del sistema?
Especule sobre el tipo de estructura de informacin que se necesita
para un diseo basado en equipo junto con una metodologa de inge
niera de software orientada a objetos basada en modelos.
Cree que los foros que se proporcionaron (de discusin, de problemas, de
documentos, de anuncios, etc.) resolvieron este reto? Identifique proble
mas dentro de la estructura de la informacin y proponga soluciones.
Qu observaciones y comentarios tiene acerca del proyecto con relacin
a lo siguiente?:
Sus expectativas al inicio del proyecto y la manera en que
evolucionaron.
Los objetivos de este proyecto.
La utilizacin de los casos de uso.
El ciclo de vida usado en el proyecto.
La administracin del proyecto (reuniones, comunicacin, etctera).
El proceso de documentacin.
Adems de las preguntas anteriores, sintase libre para tratar cualquier
otro asunto y proponga soluciones que crea que son relevantes.
Figura 3-5 Un ejemplo de preguntas para una revisin post mortem.
cipantes). En todos los casos, las reas cubiertas deben incluir las herramientas, los mtodos, la
organizacin y los procedimientos usados en el proyecto. La figura 3-5 es un ejemplo de las pre
guntas que se pueden formular durante una revisin post mortem.
Aun si los resultados de las revisiones post mortem no se diseminan por toda la organiza
cin mediante canales formales (por ejemplo, reportes tcnicos), todava pueden diseminarse en
forma indirecta mediante los participantes en el proyecto. Los participantes en el proyecto con
frecuencia son reasignados a funciones o proyectos diferentes, y a menudo diseminan las lec
ciones aprendidas en el proyecto anterior a otras partes de la organizacin.
3.3.9 Peticiones de aclaraciones
Las peticiones de aclaraciones representan la mayor parte de la comunicacin entre desa
rrolladores, clientes y usuarios. Las peticiones de aclaraciones son manejadas por eventos. Un
participante puede solicitar aclaracin acerca de cualquier aspecto del sistema que puede ser
ambiguo. Las peticiones de aclaraciones pueden ocurrir durante reuniones informales, o por
medio de llamadas telefnicas, correo electrnico, formularios o en la mayora de los dems
mecanismos de comunicacin disponibles para el proyecto. Las situaciones en las que la mayora
de las necesidades de informacin se manejan de este modo, son sntomas de una infraestructura de
comunicacin defectuosa. Tales proyectos a menudo enfrentan serias fallas en su desarrollo a
causa de malos entendidos e informacin faltante o colocada en lugares errneos. La figura 3-6
muestra un ejemplo de una peticin de aclaracin.
www.FreeLibros.org
74 C aptulo 3 C omunicacin d e proyectos
De: A l i c i a
Grupo de n o t i c i a s : CS41 3 . a r q u i t e c t u r a . d i s c u s i n
Tema: SDD
Fecha: j u e v e s 10 d e o c t u b r e 2 3 : 1 2 : 4 8 - 0400
ID del mensaje: <325DBB30. 4 3 80@a ndr es .c mu. e d u >
VersinMime : 1 . 0
Tipo de contenido: t e x t o / l l a n o ; c a r a c t e r e s = u s - a s c i i
E x a c t a m e n t e cun d o q u i e r e s e l documento d e l d i s e o d e l s i s t e m a ? Hay a l g u n a s
c o n f u s i o n e s s o b r e l a f e c h a de e n t r e g a r e a l : e l c a l e n d a r i o d i c e que e s e l 22 de
o c t u b r e y l a p l a n t i l l a d i c e que s e r h a s t a e l 7 de n o v i e m b r e .
G r a c i a s ,
A l i c i a
Figura 3-6 Un ejemplo de una peticin de aclaracin.
3.3.10 Peticin de cambio
Una peticin de cambio es un modo de comunicacin manejado por evento. Un participante
reporta un problema y, en algunos casos, propone soluciones. El participante reporta un problema con
el sistema mismo, su documentacin, el proceso de desarrollo o la organizacin del proyecto. Las
peticiones de cambio con frecuencia se formalizan cuando la cantidad de participantes y el tamao
del sistema son considerables. Las peticiones de cambio contienen una clasificacin (por ejemplo, de
fecto severo, peticin de caractersticas, comentario), una descripcin del problema, una descripcin
del contexto en donde sucede y cualquier cantidad de material de apoyo. Los formularios de peti
cin de cambio han sido popularizados por el software de seguimiento de defectos. Pueden aplicarse
a otros aspectos del proyecto (por ejemplo, plan de tareas, proceso de desarrollo, procedimien
tos de pruebas). La figura 3-7 muestra un ejemplo de un formulario de peticin de cambio.
3.3.11 Resolucin de problemas
Una vez que se han reportado los problemas y se han propuesto y evaluado soluciones, es
necesario que se seleccione, comunique y ponga en prctica una solucin nica. Una organizacin plana
puede seleccionar una solucin como parte de un proceso de lluvia de ideas. Una organizacin
jerrquica, o una situacin de crisis, puede requerir que un solo individuo seleccione o imponga una
solucin. En todos los casos, la solucin necesita documentarse y comunicarse a los participantes
relevantes. La documentacin de la resolucin permite que los participantes hagan referencia a la
decisin ms adelante en el proyecto, en caso de malos entendidos. La comunicacin efectiva
de la decisin permite que los participantes permanezcan sincronizados.
Uia base de problemas puede servir como mecanismo de comunicacin para apoyar el segui
miento del problema, la lluvia de ideas y la solucin del problema. La base de problemas que se mues
tra en la figura 3-8 despliega una lista de mensajes intercambiados a consecuencia de soluciones de
problemas. Los ttulos de b s mensajes procedidos por I: indican problemas, los que estn precedidos
por P: (de propuestas) sugieren soluciones, A+ y A - indican argumentos en apoyo y en contra de una
sohicia Por ltimo, una vez que se resuelve el problema, se enva un sob mensaje, llamado solucin,
para documentar la decisin que se tom sobre ese asunto. En el captulo 8, Administracin de la
fundamentacin, se describen bases de problemas y modelado de problemas.
www.FreeLibros.org
Modos de comunicacin 75
Informacin de encabezado para Nmero de r e p o r t e : 1291
identificar e l cambio Efecha: 5 / 3
A u t o r : D a vi d
Resumen: e l c l i e n t e FRIEND f a l l a cuan d o s e e n v i a n
f o r m u l a r i o s v a c i o s .
Informacin del contexto para la S u b s i s t e m a : i n t e r f a z de u s u a r i o
localizacin del problema
V e r s i n : 3 . 4 . 1
C l a s i f i c a c i n :
F u n c i o n a l i d a d f a l t a n t e o i n c o r r e c t a
V i o l a c i n de c o n v e n c i o n e s
E r r o r
E r r o r de d o c u m e n t a c i n
Severidad:
S e v e r o
Moderado
M o l e s t o
Descripcin del problema y D e s c r i p c i n :
razones para e l cambio
Razones
Descripcin del cambio deseado
S o l u c i n p r o p u e s t a :
Figura 3-7 Un ejemplo de un formulario para peticin de cambios.
N e t s c a p e : CTC A r c h i t e c t u r e D i s c u s s By T h re a d
discussion
Oy Thicod
By Cateqoiy
By limeari
TTopkc N e vTTs sue N e w Ag e n d a wToptc
T o p i c
(Alies
pro. Dispattters canses ail Tr&kSeeto (Efl tetas 28 06)
. . . . pro: Simplicitv (Ed Jones 28.Q6
A t o V a r te r )8 dlSpatCher K>dlfy aPOthcr dlsPatchers TraekSectiops
28.06.99 ( Q p e n ) I: H o v s h o u l d a c c e s s c o n t r o l b e i n t e gr a t e d v i t h T r a c k S e c t i o p s
a nd Not i fi c aU oDSe r v i c e ? (A l i c e P a r k e r )
29 06 99 (Qpen) I; Consequent Issue; Stould noficaon te usedfgr
n y u e s M ( Ma r y _ A m i )
Figura 3-8 U n e j e m p l o d e u n a b a s e d e p r o b l e m a s ( b a s e d e d a t o s D o m i n o L o t u s N o t e s ) .
www.FreeLibros.org
76 C aptulo 3 C omunicacin d e proyectos
3.3.12 Discusin
En esta seccin presentamos un amplio rango de modos de comunicacin. No todos
los proyectos ponen el mismo nfasis en todos los modos de comunicacin. Puede ser que los
proyectos que producen software para entregarlo tal como es no tengan revisiones del cliente,
pero pueden tener procedimientos de reporte de cambios sofisticados. Otros proyectos ponen
ms nfasis en las pruebas que en las inspecciones de cdigo y pruebas de recorrido.
Los modos de comunicacin que se usan en un proyecto estn dictados, por lo general, por
el dominio de aplicacin del sistema y las actividades del proyecto. Con frecuencia estos modos
se hacen explcitos y se formalizan en procedimientos para atacar rutas de comunicacin crti
cas. Por ejemplo, las revisiones del proyecto facilitan que todos los participantes sincronicen su
estado y aborden los problemas que se refieren a ms de uno o dos subsistemas. Las revisiones
del proyecto llegan a ser crticas en especial cuando el tamao del proyecto se incrementa a tal
punto que pocos participantes tienen una vista global del sistema.
3.4 M e c a n i s m o s de comunicacin
En esta seccin describimos varios mecanismos de comunicacin que apoyan los intercambios
de informacin. Clasificamos a los mecanismos de comunicacin en dos categoras amplias. Los
mecanismos sncronos, como el telfono o la videoconferencia, requieren que el emisor y el
receptor estn disponibles al mismo tiempo, mientras que no sucede as con los mecanismos
asincronos, como el correo electrnico o el fax. Clasificamos adems a los mecanismos sncro
nos como mecanismos en el mismo lugar y en diferentes lugares. Los mecanismos en el mismo
lugar (por ejemplo, conversaciones en los pasillos) requieren que el emisor y el receptor se encuen
tren en el mismo lugar (por ejemplo, el pasillo), mientras que no sucede as con los mecanismos
en lugares diferentes.
Las reuniones personales informales, las entrevistas y las reuniones son mecanismos sn
cronos en el mismo lugar. Estos mecanismos se caracterizan por un bajo contenido de informa
cin tcnica. Sin embargo, los mecanismos en un solo lugar permiten la transferencia de infor
macin no verbal que es crtica durante la generacin de consenso y la negociacin. Adems, los
mecanismos en un solo lugar permiten las aclaraciones y, en trminos ms generales, tienen un
mayor grado de flexibilidad. El costo de los mecanismos sncronos es alto, en especial cuando
estn involucrados muchos participantes. El groupware sncrono en diferentes lugares trata de
reducir los costos de la comunicacin sncrona al no requerir que todos los participantes estn en
una misma ubicacin. Adems, el groupware promete poner a disposicin una variedad de infor
macin (por ejemplo, cdigo ejecutable, documentos editables, estructuras de hipervnculo)
incrementando, por lo tanto, el ancho de banda entre los participantes. Los mecanismos de
comunicacin sncronos se listan en la tabla 3-3 y se describen en las siguientes secciones.
Los cuestionarios, el fax, el correo electrnico, los grupos de noticias y el groupware de
momentos diferentes son mecanismos de comunicacin asincronos. Permiten que se comuni
quen con rapidez gran cantidad de detalles. Adems, permiten que haya una mayor cantidad de
receptores, y esto hace que estos mecanismos sean ideales para el lanzamiento de documentos y
cdigo. La comunicacin asincrona tiene la desventaja de que es inaccesible la informacin no
verbal y, por lo tanto, incrementa el potencial para la falta de comprensin. Los mecanismos de
comunicacin asincronos se describen en la tabla 3-4 y en las secciones 3.4.6 a 3.4.9.
www.FreeLibros.org
Tabla 3-3 Mecanismos de comunicacin sncronos.
M e c a n i sm o s d e comunicacin 77
Mecanismo M o d o s soportados
Conversaciones e n pasillos (seccin 3.4.1) Peticin de aclaraciones
Peticin de cambios
Cuestionarios y entrevistas estructurados (seccin
3.4.2)
Requerimientos de conocimientos sobre el
dominio de aplicacin
Revisin post mortem
Reuniones (frente a frente, telefnicas, en vdeo)
(seccin 3.4.3)
Revisiones de cliente
Revisin del proyecto
Inspeccin
Revisin de estado
Revisin post mortem
Lluvia de ideas
Resolucin d e problemas
Groupware en diferente lugar y al mismo tiempo
(Seccin 3.4.5)
Revisin del cliente
Revisin del proyecto
Inspeccin
Lluvia de ideas
Resolucin d e problemas
Tabla 3-4 Mecanismos de comunicacin asincronos.
Mecanismo M o d o s soportados
Correo electrnico (seccin 3.4.6) Lanzamiento
Peticin de cambio
Lluvia de ideas
Grupos de noticias (seccin 3.4.7) Lanzamiento
Peticin de cambio
Lluvia de ideas
World Wide Web (seccin 3.4.8) Lanzamiento
Inspecciones de cdigo asincronas
Peticin de cambio
Lluvia de ideas
Lotus Notes (seccin 3.4.9) Lanzamiento
Peticin de cambio
Lluvia de ideas
www.FreeLibros.org
78 C aptulo 3 C omunicacin d e proyectos
3.4.1 C onversaciones en los pasillos
Las conversaciones en los pasillos son intercambios de informacin informales manejados
por eventos basados en la oportunidad. Dos participantes se renen por accidente y aprovechan la
situacin para intercambiar informacin.
Ejemplo. Dos participantes en el proyecto, Sally y Bob, se renen junto a la cafetera. Sally, que es miem
bro del equipo de interfaz de usuario, se acuerda que Bob es miembro del equipo de notificacin, e l cual es
responsable de la comunicacin entre los subsistemas cliente y el servidor. Toda la maana Sally ha estado
experimentando fallas aleatorias cuando recibe paquetes del servidor. Ella no est segura si el problema se
debe al servidor, al subsistema de comunicacin o a su cdigo. Bob le responde que no se haba dado
cuenta de que se estaba usando el servidor en ese momento y que ha estado probando una nueva revisin
del sistema de comunicaciones, y eso explica el comportamiento que ha observado Sally. Bob ha dejado a
un lado la poltica de administracin de la configuracin para ahorrar tiempo
Las conversaciones en los pasillos representan una parte sustancial de la comunicacin del
proyecto. Son baratas y efectivas para la resolucin de problemas simples causados por falta de
coordinacin entre miembros del proyecto. Adems, tambin son efectivas para apoyar el inter
cambio de conocimiento operacional, como las frecuentes acerca de herramientas, procedimien
tos o la ubicacin de la informacin del proyecto. Las desventajas de las conversaciones en los
pasillos incluyen su pequea audiencia y la falta de historia: se puede perder informacin impor
tante y pueden producirse malentendidos cuando el contexto de la conversacin se apoya en
otros participantes. Adems, no se puede tener acceso a ningn documento, base de datos o men
saje electrnico cuando se hace referencia a una decisin que se tom y comunic durante una
conversacin en el pasillo.
3.4.2 C uestionarios y entrevistas estructuradas
El objetivo de un cuestionario es obtener informacin de una o ms personas en forma
estructurada. Los cuestionarios se usan, por lo general, para obtener conocimiento del dominio
de los usuarios y expertos, comprender los requerimientos del usuario y las prioridades. Tambin
pueden usarse para extraer lecciones aprendidas durante una revisin post mortem. Los cuestio
narios pueden incluir preguntas de opcin mltiple y preguntas abiertas.
Los cuestionarios tienen la ventaja de obtener informacin confiable con un costo mnimo
por parte del usuario. Los cuestionarios pueden ser respondidos por los usuarios en forma inde
pendiente y luego revisados y analizados por el analista o desarrollador. La aclaracin de respues
tas ambiguas o incompletas puede obtenerse despus durante una entrevista estructurada. La
desventaja de los cuestionarios es que son difciles de disear. Sin embargo, el costo de los errores
de los requerimientos y la falta de comprensin entre el cliente y el desarrollador con frecuencia
justifican su costo. Ms adelante se recopila informacin suficiente acerca del dominio y se
escribe un documento de anlisis de requerimientos para que la mayora de las revisiones del
sistema y temas adicionales se traten en las revisiones de los clientes.
www.FreeLibros.org
M e c a n i sm o s d e comunicacin 79
3.4.3 Reuniones
Las reuniones1frente a frente permiten que varios participantes revisen y negocien asuntos y
soluciones. En la actualidad, las reuniones son el nico mecanismo que permite una resolucin efec
tiva de problemas y la generacin de consenso. La desventaja de las reuniones es su costo en recursos
y la dificultad para administrarlas. Para incrementar la transferencia de informacin y la cantidad de
decisiones tomadas durante una reunin, se asignan papeles a participantes seleccionados:
El moderador principal es responsable de organizar la reunin y guiar su desarrollo. El
moderador lleva una agenda que describe el objetivo y el alcance de la reunin. La agenda
se entrega, por lo general, antes de la reunin para que la revisen los participantes. Esto
permite que los participantes decidan si la reunin es importante para ellos y permite la
preparacin de material de apoyo para las reuniones.
El secretario de actas es responsable de registrar la reunin, y puede tomar notas por
escrito o en una computadora laptop, organizaras al terminar la reunin y repartirlas poco
tiempo despus de la reunin para que las revisen los participantes en ella. Esto permite
que los participantes aprueben el resultado de la reunin. El registro escrito de la reunin
facilita que los participantes compartan informacin con los miembros que no estuvieron
presentes.
El tomador de tiempo es responsable de llevar cuenta del tiempo y notificar al moderador
si una discusin consume ms tiempo que el que le fue asignado en la agenda.
Una agenda de reunin consta, al menos, de tres secciones: un encabezado que identifica la
ubicacin, el tiempo y los participantes de la reunin planeada; una lista de asuntos que
reportarn los participantes y una lista de temas que necesitan ser tratados y resueltos en la
reunin. A cada intercambio de informacin y concepto en discusin tambin se le asigna un
tiempo que permite que el tomador de tiempo se asegure que la reunin termine a tiempo. La fig
ura 3-9 es un ejemplo de una agenda de reunin.
Un conjunto de minutas de reuniones consta de tres secciones que corresponden con las
secciones de la agenda. Adems, las minutas de reunin incluyen una seccin que describe los asun
tos de accin que son resultado de la reunin (es decir, asuntos que describen las acciones a tomar
por parte de los participantes en la reunin a consecuencia de sta). La seccin de encabezado
contiene la ubicacin, el tiempo y los participantes de la reunin actual. La seccin de intercam
bio de informacin de asuntos contiene la informacin que se comparti durante la reunin. La
seccin de decisiones de asuntos contiene un registro de las decisiones que se tomaron (y las que
no se tomaron). La figura 3-10 es un ejemplo de una minuta de reunin.
Aunque las reuniones que se realizan en un solo lugar son las ms eficientes, es posible
realizar reuniones cuando los participantes estn distribuidos geogrficamente usando telecon
ferencias o videoconferencias. Esto reduce el costo a expensas de un ancho de banda menor
y una menor confiabilidad. Una agenda bien estructurada que se tenga disponible antes de la reunin
llega a ser crucial, ya que con una calidad visual y de audio menor el control de la reunin llega
1. Los procedimientos de reunin descritos en esta seccin se derivan de [Kayser, 1990].
www.FreeLibros.org
80 C aptulo 3 C omunicacin d e proyectos
Informacin d e encabezado
que identifica l a reunin y la
audiencia
Resultado deseado de la reunin
Acciones a reportar
Asuntos programados p a r a su
discusin ( y resolucin) durante
la reunin
El periodo d e cierre e s el mismo
para todas las reuniones
Cundo y dnde
Fecha: 30/01
Inicio: 4:30 p.m.
Fin: 5:30 p.m.
Edificio: Wean Hall
Saln: 3420
Papel
Moderador principal: Pedro
Tomador de tiempo: David
Secretario de actas: Eduardo
1. Objetivo
Resolver cualquier requerimiento que nos impida iniciar la elabora
cin del prototipo
2. Estado (Tiempo asignado: 15 minutos]
David: Estado del cdigo de anlisis sintctico de comandos
3. Asuntos a discusin (Tiempo asignado: 35 minutos]
3.1 Cmo manejar los datos de entrada formateados de manera arbi
traria?
3.2 Cmo manejar los datos de salida?
3.3 Cdigo para el anlisis sintctico de comandos (modificabilidad,
compatibilidad retrospectiva)
4. Cierre (Tiempo asignado: 5 minutos]
4.1 Revisin y asignacin de nuevas acciones
4.2 Crtica de la reunin
Figura 3-9 Un ejemplo de una agenda de reunin.
a ser difcil. Adems, el conocimiento de las voces individuales y sus particularidades mejora la
comunicacin entre los participantes.
Cuando se escribe una agenda de reunin, el moderador debe ser lo ms concreto posible sin
aumentar la longitud de la agenda. Por lo general, es tentador elaborar una plantilla de agenda
genrica y reutilizaria de manera sistemtica sin modificaciones. Esto tiene la desventaja de quitar
la sustancia del proceso de reunin convirtindolo en un proceso burocrtico. La figura 3.11 es
un ejemplo de una agenda sin contenido. Con la sola modificacin del encabezado, esta agenda
se podra aplicar a la mayora de las reuniones de subsistemas y, por lo tanto, no tiene ninguna
informacin nueva que no sepan ya los participantes.
3.4.4 Revisiones
Las revisiones son reuniones formales durante las cuales una parte externa evala la calidad de
un artefacto (por ejemplo, documento o cdigo). Por lo general, se realiza como una presentacin for
mal precedida por un lanzamiento y seguida por varias peticiones de cambio. Las revisiones son ms
costosas que las reuniones normales, ya que a menudo requieren viajes del cliente o tos desarro-
lladores. Como sucede con las reuniones normales, se elabora una agenda y se enva a la parte externa
antes de la revisin. Las minutas de la revisin se registran en forma meticulosa e incluyen peticiones
de cambio y comentarios de otros asuntos que pueda tener la parte exterior.
www.FreeLibros.org
M e c a n i sm o s d e comunicacin 81
Informacin de Cundo y dnde Papel
encabezado que Fecha: 30/01 Moderador principal: Pedro
identifica a reunin Inc0: 4:30 p m Xomador de , empo: David
Fin: 6:00 p.m. Secretario de actas: Eduardo
Edificio: Wean Hall Participantes: Eduardo, David, Mara, Pedro, Alicia
Saln: 3420
1. Objetivo
2. Estado
3. Discusin
3.1 El cdigo para la revisin sintctica e s una instruccin i f de 1200-1300 lneas.
Esto hace que sea muy difcil aadir nuevos comandos o modificar los existentes sin
romper la compatibilidad retrospectiva con los clientes existentes.
Propuestas: 1) Reestructurar el cdigo de revisin sintctica asignando un objeto
para cada tipo de comando. 2) Pasar todos los argumentos del comando por nom
bre. Esto ltimo facilitara que se mantuviera la compatibilidad retrospectiva. Por
otro lado, esto incrementara el tamao de los comandos, incrementando por lo
tanto el tamao del archivo de comandos.
Resolucin: Reestructurar el cdigo por ahora. Volver a ver este asunto si la com
patibilidad retrospectiva realmente resulta un problema (de cualquier manera, el
cdigo de llamadas necesitara volverse a escribir). Vea AI[ 1].
Por brevedad se omite la discusin de los dems temas.
Adiciones y modifi- 4. Cierre
caciones al plan de AI[ 1] Para: David.
tareas Volver a ver el cdigo de revisin sintctica de comandos. Poner nfasis en la
modularidad. Coordinarse con Guillermo del grupo de bases de datos (quien podra
asumir la compatibilidad retrospectiva).
S e omiten otras acciones y la critica de l a reunin p or brevedad.
Figura 3-10 Un ejemplo de minuta de reunin.
El alcance de una revisin (por ejemplo, una revisin de cliente) puede requerir que la revisin
se organice mucho antes de su ejecucin. Sin embargo, debe haber flexibilidad en la organizacin,
ya que el objeto de la revisin (por ejemplo, el documento de requerimientos) puede evolucionar
hasta el ltimo momento (por ejemplo, unos cuantos das u horas antes de la revisin). Esta flexi
bilidad puede permitir que los desarrolladores descubran ms asuntos, puntos de aclaracin o
soluciones alternas, y minimicen el tiempo durante el que necesite estar congelado el estado de
lo que se va a entregar.
y l a audiencia
Texto de la agenda
Resumen de la
informacin
intercambiada
Relacin de los
temas tratados y
resoluciones
www.FreeLibros.org
82 C aptulo 3 C omunicacin d e proyectos
Informacin de encabezado que
identifica la reunin y la audiencia
Resultado deseado de la reunin
Acciones a reportar
Asuntos programados para su
discusin ( y resolucin) durante
la reunin
El periodo d e cierre e s el mismo
para todas las reuniones
Papel
Moderador principal: Pedro
Tomador de tiempo: David
Secretario de actas: Eduardo
Cundo y dnde
Fecha: 30/01
Inicio: 4:30 p.m.
Fin: 5:30 p.m.
Edificio: Wean Hall
Saln: 3420
1. Objetivo
Resolver los asuntos pendientes
2. Estado [Tiempo asignado: 15 minutos]
David: Acciones de David
3 . Asuntos a discusin [Tiempo asignado: 35 minutos]
3.1 Asuntos de requerimientos
3.2 Asuntos de diseo
3.3 Asuntos de implementacin
4 . Cierre [Tiempo asignado: 5 minutos]
4.1 Revisin y asignacin de nuevas acciones
4.2 Crtica de la reunin
Figura 3-11 Un ejemplo de una agenda de reunin deficiente.
3.4.5 Groupware en diferentes lugares y al mismo tiempo
El groupware en diferentes lugares y al mismo tiempo es una herramienta que permite que
usuarios que se encuentran distribuidos colaboren en forma sncrona. Aunque durante mucho tiempo
estas herramientas slo estuvieron disponibles en el campo de la investigacin [Grudin, 1988], se han
estado moviendo poco a poco hacia el mundo comercial con la popularidad reciente de los salones de
conversacin y foros basados en Internet. Herramientas como Teamwave [Teamwave, 1997] o
NetMeeting permiten que un grupo de participantes colabore en forma sncrona en un espacio de trabajo
compartido. Proporcionan una metfora de reunin: los usuarios entran a un saln de conversacin
que les permite ver un grfico o un texto a considerar. Todos los usuarios ven el mismo estado. Por lo
general, slo uno puede modificarlo en un momento dado. El control puede ser anrquico (cualquiera
puede tomar el control de la voz) o secuencial (quien tiene la voz se la pasa al siguiente usuario).
Una debilidad del groupware al mismo tiempo es la dificultad para coordinar a los usuarios. El
tecleo se lleva ms tiempo del que los usuarios estn preparados a invertir. Las palabras escritas
necesitan escogerse con ms cuidado, tomando en cuenta que se pierde la informacin no verbal.
Adems, ligeras fallas en la conexin de red pueden representar suficiente interferencia para que
se pierda la coordinacin de usuarios.
Sin embargo, el groupware al mismo tiempo puede llegar a ser un sustituto til para las
videoconferencias cuando se combina con un canal de audio: tos usuarios pueden ver el mismo docu
mento y discutirlo normalmente mientras se desplazan y apuntan a reas especficas del documento.
En todos los casos, la colaboracin en diferentes lugares todava es un ejercicio no trivial que ne
cesita tener un guin y estar planeado por anticipado. El desarrollo cooperativo de procedimientos
www.FreeLibros.org
M e c a n i sm o s d e comunicacin 83
para el apoyo de la colaboracin es una tarea retadora cuando no se dispone de la proximidad ni
de la comunicacin no verbal.
3.4.6 C orreo electrnico
El correo electrnico permite que un emisor transmita un mensaje de texto arbitrario a uno o
ms receptores. La transmisin real del mensaje se lleva desde unos cuantos segundos hasta unas
cuantas horas o das. El mensaje se recibe en un buzn y se mantiene ah hasta que el receptor lo lee y
lo archiva. El correo electrnico en un proyecto de desarrollo con frecuencia se usa en vez de memo
rndum de oficina o llamadas telefnicas. Con este mecanismo los participantes pueden intercambiar
un amplio rango de artefactos, desde noticias informales cortas hasta documentos grandes. Por
ltimo, el correo electrnico est estandarizado por varias peticiones de comentarios (RFCs, por sus
siglas en ingls) de Internet que estn implementadas y se usan en forma amplia. En consecuencia, el
correo electrnico se usa a travs de diferentes organizaciones y plataformas.
Debido a su naturaleza asincrona y latencia corta, el correo electrnico es ideal para el
apoyo de modos de comunicacin manejados por evento, como las peticiones de aclaraciones,
peticiones de cambio y lluvia de ideas. El correo electrnico tambin se usa a menudo para el
anuncio de lanzamientos y el intercambio de versiones intermedias o documentos. A diferencia
del telfono, el correo electrnico permite que los participantes lo reciban cuando no se encuen
tran disponibles sin introducir restricciones en el emisor.
Una desventaja del correo electrnico es que la comunicacin puede percibirse como una tarea
trivial. El tecleo de un mensaje de una lnea y su envo se lleva unos cuantos segundos. Pao el mismo
mensaje de una lnea puede tomarse fuera de contexto y entenderse mal, enviarse a la persona errnea o,
con mayor frecuencia, perderse o no s a ledo. Debido a la naturaleza asincrona del correo electrnico,
es ms alto el potencial de prdida de informacin. Los participantes en el proyecto por lo genaal se
ajustan con rapidez a estas desventajas despus de que han sucedido varios matos entendidos serios.
3.4.7 Grupos de noticias
Los grupos de noticias proporcionan una metfora similar al correo electrnico. Sin
embargo, en vez de enviar un mensaje a varios receptores, el emisor enva un mensaje a un
grupo de noticias (al que tambin se le conoce como foro). Los receptores se subscriben al grupo
de noticias que quieren leer. Se pueden controlar los accesos para envo y lectura a un grupo de
noticias especfico. Los grupos de noticias siguen un conjunto de estndares aceptados en forma
amplia, similares a los del correo electrnico. Hay muchas herramientas comerciales y de dominio
pblico disponibles para administrar un servidor de noticias. Con frecuencia el software para la
lectura y envo de correo electrnico ya est integrado con lectores de grupos de noticias, lo cual
facilita la integracin entre el correo electrnico y los grupos de noticias.
Los grupos de noticias son adecuados para notificar y discutir entre personas que com
parten un inters comn. En un proyecto de software los equipos pueden tener varios grupos de
noticias. Por ejemplo, en la figura 3-12 hay uno para enviar agendas y minutas de reuniones, otro
para aclaraciones y otro ms para otros asuntos. En vez de enumerar las direcciones de los miem
bros del equipo cada vez que se enva un mensaje, el emisor slo tiene que nombrar al grupo de
noticias de destino. Los modos tpicos que pueden soportarse por medio de grupos de noticias
incluyen peticin de aclaraciones, peticin de cambios, lanzamientos y lluvias de ideas.
www.FreeLibros.org
84 C aptulo 3 C omunicacin d e proyectos
Grupo d e noticias para comunicacin c m u . a c a d e m i c . 1 5 - 4 1 3 . c l i e n t e
con e l cliente
Grupos de noticias globales ledos po r
todos los desarrolladores
cmu. a c a d e m i c . 1 5 - 4 1 3 . a n u n c i o
cmu. a c a d e m i c . 1 5 - 4 1 3 . d i s c u s i n
c m u . a c a d e m i c . 1 5 - 4 1 3 . a s u n t o s
cmu. a c a d e m i c . 1 5 - 4 1 3 . e q u i p o
Grupos de noticias d e equipos ledos
principalmente p or los miembros de
un solo equipo (por ejemplo, el equipo
de interfaz d e usuario)
cmu. a c a d e m i c . 1 5 - 4 1 3 . i u . a n u n c i o
cmu. a c a d e m i c . 1 5 - 4 1 3 . i u . d i s c u s i n
c m u . a c a d e m i c . 1 5 - 4 1 3 . i u . m i n u t a s
Grupos de noticias d e propsito espe
cial c m u . a c a d e m i c . 1 5 - 4 1 3 . i n t e g r a c i n - p r u e b a s
Figura 3-12 Un ejemplo de una estructura de un grupo de noticias.
3.4.8 World Wide Web
La World Wide Web (WWW, que tambin es llamada la Web) proporciona al usuario una
metfora de hipertexto. Un navegador WWW despliega ante el usuario un documento que puede
contener hipervnculos hacia otros documentos. Un localizador de recursos universal (URL, por
sus siglas en ingls) est asociado con cada vnculo, y le describe al navegador la ubicacin del
documento de destino y su mtodo de recuperacin. La WWW ha tenido una popularidad cre
ciente conforme se amplan los documentos de hipertexto para que contengan imgenes incrus
tadas, animaciones y scripts ejecutables.
En un proyecto de desarrollo de software, la WWW es ideal para la organizacin y para propor
cionar acceso a informacin lanzada, como versiones preliminares y finales de documentos a entregar,
cdigo, referencias (por ejemplo, pginas iniciales de vendedores) y documentacin sobre herramientas.
Aunque el tipo de documentos y la funcionalidad de los navegadores WWW evolucionan
con rapidez, la Web no soporta de una forma igualmente directa el intercambio de informacin
que cambia en forma rpida, como los mensajes de grupos de noticias. Sin embargo, con la inte
gracin de los grupos de noticias en Netscape y otros navegadores, la WWW puede desempear
una funcin significativa en la infraestructura de comunicaciones de un proyecto.
La figura 3-13 despliega la pgina inicial del proyecto OWL [OWL, 1996]. Contiene referencias
a las partes ms importantes del sitio Web, como la versin ms reciente de los documentos del proyecto
y presentaciones de revisin, grupos de noticias, organigramas del equipo, pginas Web del equipo y
referencias. El sitio Web del proyecto est administrado por un solo webmaster. Las pginas asociadas
con cada equipo estn administradas por tos equipos con lincamientos del webmaster del proyecto.
3.4.9 Lotus Notes
Lotus Notes es una herramienta comercial (a diferencia de un conjunto de estndares,
como en el caso del correo electrnico, los grupos de noticias y la WWW) que proporciona fun
cionalidad comparable a la de la Web. Sin embargo, proporciona una metfora que est ms
cercana a un sistema de administracin de base de datos que a un sistema de correo electrnico. Cada
www.FreeLibros.org
M e c a n i sm o s d e comunicacin 85
Netscape: OWL Home Page
0 i
MijNtJrirt ,
ll#irfnt
Object-Oriented Workplace Labroatory
C a r a e g i e M e l l o n U n l v e i s t y
P i m k v f f k , PA 15213
f o r the In t e l l i gent Workplace
Documentos
Work Pr oducts
^ P r o j e c t D o c n m e n t 3
Reo uireinents Anal v s i s Doc u me n t (RA D )
(ODD)
Cdi P r o t o t ypes
O v e r v i e v o f the OWL P t o i e c t f i n a l Dresentaoon<2.5 MB PDF)
Tableros de n o t i c i a s
lommnnication
P r o j e c t bboards
Announceroents
DlSCUSS
I s s u e s
HelP.
Libreta de direcciones
A d d r e s s b o o k
Photos
EfifiKk
IV'CUi
C t e n t Acce pta nc e T e s t
Am'sat83LiaiLL
v e b m a s t e i
Team BBoards ~
U s e r Inter f ace D i s c u s s I s s u e s
V i s u a l i z a s e n - D i s c u s s I s s u e s
S i m u l a s e n - D13CU33 1S3UC3
F a c i l l t y M an a g e m e n t - D c c u s s I s s u e s
C o n t r o l - D i s c u s s I s s u e s
Database Ma n a g e m e n t - D i s c u s s Issues
Archltecture - D i s c u s s I s s u e s
Pr esent aons
C e nt S t t f c m e n t
L'il'-ll KrVU-
Sy s t e m R e v i e v
O ble c t P e s a n R e v t f v
C l i e n t Ac r e p t ance.
T u t o r l a b
Team I nformat ion
Homepages.
U se In t e i f a c e Team
VisuafeafrinTeam
gimvtefenTwm
P a c i h t y M a n a ge m e n t Te a m
C o n t r o l T e a m
D atabase Manag e m e n t T e a m
A rchitecture Team
\
Organizacin
A flig a..:i&~
Figura 3-13 Un ejemplo de una pgina inicial de un proyecto para el proyecto OWL.
usuario ve el espacio de informacin como un conjunto de bases de datos. Las bases de datos contienen
documentos compuestos por un conjunto de campos. Los documentos se crean y modifican mediante
un conjunto de formularios. Los usuarios colaboran creando, compartiendo y modificando documentos.
Cada base de datos puede tena difaentes plantillas y soportar funcionalidad especfica de la aplicacin.
Por ejemplo, una base de datos puede soportar discusiones (vea la figura 3-8), y en este caso sus
documentos son mensajes y respuestas. Otra base de datos puede soportar un sistema de segui
miento de peticiones de cambio, y en este caso los documentos pueden s a formularios para peticin de
cambios, bitcoras de revisiones o notas de lanzamiento.
www.FreeLibros.org
8 6 C aptulo 3 C omunicacin d e proyectos
Lotus Notes difiere con respecto a la Web atacando bien dos aspectos adicionales de la
administracin de informacin: control de acceso y rplica. El acceso puede controlarse al nivel de
una base de datos (por ejemplo, negando a los desarrolladores el acceso a una base de datos de adminis
tracin), de un documento (por ejemplo, impidiendo que un desarrollador modifique una peticin de
cambio enviada por un usuario) o de un campo (por ejemplo, permitiendo que slo un administrador
modifique el campo de autor de un documento). El control de acceso tambin puede especificarse por
grupos de usuarios. El concepto de grupos permite que el administrador exprese el control de acceso
segn la organizacin del proyecto y no segn sus individuos.
La principal diferencia entre el Lotus Notes y la Web ha sido que Notes es un estndar pro
pio: tanto los programas cliente como servidor necesitan comprarse a IBM. La Web, por otro
lado, es muy ubicua, debido a que se apoya en un conjunto de estndares pblicos. Es posible
construir una aplicacin Web, accesible a usuarios con diferentes navegadores, por completo con
software de dominio pblico (con los costos de confiabilidad, soporte y alguna funcionalidad).
Para protegerse de la competencia de la Web y aprovechar el amplio uso de los navegadores
Web, Lotus Notes introdujo Domino, un producto que permite que los navegadores Web tengan
acceso a las bases de datos Lotus Notes mediante un navegador estndar.
Ejemplo. Cada equipo puede tener una base de datos para anuncios del equipo. Los documentos en la base de
datos de anuncios son anuncios o rplicas. Slo los miembros del equipo pueden colocar anuncios, pero cual
quiera puede leer los anuncios y colocar rplicas. Se elige a un administrador de Lotus Notes para que organice
a los participantes en el proyecto en grupos de acceso. Cada grupo de acceso corresponde a un equipo. Adems,
el administrador especifica el acceso a cada base de datos de anuncios de tal forma que slo los miembros del
equipo a los que pertenece la base de datos puedan colocar anuncios. Supongamos que Sally, un miembro
del equipo de interfaz de usuario, es reasignada al equipo de notificacin. El administrador slo necesita quitar a
Sally del grupo de acceso de interfaz de usuario y aadirla al grupo de acceso de notificacin para reflejar el
cambio en la oiganizacin. Si el administrador no hubiera organizado el acceso por grupos hubiera tenido que
revisar y cambiar el acceso a todas las bases de datos a las que tena acceso Sally.
3.4.10 Discusin
La comunicacin del proyecto es omnipresente. Sucede en muchos niveles y bajo diferentes for
mas, y puede estar soportada con herramientas diferentes. La comunicacin tambin es una herramienta
fundamental para los participantes en el proyecto. Puede ser que no todos los participantes
estn familiarizados con el ltimo desamollo tecnolgico usado en el proyecto, pero todos deben tener
alguna idea de la manera en que se disemina la infamacin por el proyecto. Por ejemplo, los partici
pantes que han estado usando correo electrnico a diario en proyectos anteriores pueden ser reacios a
cambiar hacia una infraestructura alterna, como tos grupos de noticias o Lotus Notes. Por esta razn, la
infraestructura de comunicaciones, incluyendo la coleccin de herramientas que se usa para sopor
tar la cominieacin, necesita estar diseada con meticulosidad y puesta en su lugar antes de iniciar el
proyecto. Para facilitar esto se pueden usar tos siguientes criterios:
Suficiencia. Todos los modos de comunicacin presentes en el proyecto estn soportados
por una o ms herramientas?
Complejidad. Se estn usando demasiadas heiramientas para soportar la comunicacin? Puede
duplicarse o fragmentarse la informacin hasta el punto en que sea difcil de localizar?
www.FreeLibros.org
Actividades d e comunicacin del proyecto 87
Confiabilidad. Es confiable la herramienta de comunicacin principal? Cul es su impacto
en el proyecto en caso de que falle?
Mantenimiento. La infraestructura necesita un administrador de tiempo completo? Se dis
pone de recursos para ese papel? Se tienen las habilidades necesarias para ese papel?
Facilidad de transicin. La metfora presentada por la infraestructura es suficientemente
familiar para los usuarios?
La transicin es un paso crtico en la puesta a punto de la infraestructura de comunicaciones,
mucho ms que con otras herramientas: la infraestructura se usar slo si la mayora de los partici
pantes la usa con efectividad. De no ser as, la comunicacin suceder mediante canales altemos
ad hoc, como las conversaciones en los pasillos, y la diseminacin de informacin ser inconsis
tente y poco confiable. En la siguiente seccin proporcionamos un ejemplo de infraestructura de
comunicaciones de un proyecto y su transicin.
3.5 Actividades de comunicacin del proyecto
En esta seccin examinamos las necesidades de comunicacin de un proyecto de ejemplo, selec
cionamos modos y mecanismos de comunicacin para soportarlo y describimos su integracin y
transicin de la infraestructura en el proyecto.
3.5.1 Identificacin de las necesidades de comunicacin
Este proyecto de ejemplo es un esfuerzo de ingeniera para crear algo que an no existe
(greenfield) con todos los nuevos desarrolladores. Las primeras fases de definicin del problema
y diseo preliminar las maneja en forma directa la administracin en reuniones frente a frente.
Los desarrolladores tienen muy poco o ningn acceso directo al cliente durante estas fases. Tam
poco se espera que los equipos realicen inspecciones o ensayos sino hasta que haya madurado lo
suficiente su nivel de experiencia.
El diseo preliminar permite que la administracin defina la descomposicin especial del
sistema en subsistemas (vea el captulo 11, Administracin del proyecto). Cada subsistema se
asigna a un equipo de desarrolladores. Adems se forman equipos de funcionalidad cruzada (por
ejemplo, equipo de documentacin, equipo de integracin) para apoyar a los equipos de sub
sistemas. Por ltimo, cada equipo tiene coordinacin con los equipos de funcionalidad cruzada
para facilitar la transferencia de informacin entre equipos. La organizacin inicial del proyecto
se muestra en la figura 3-14.
Cuando definen subsistemas, los administradores tratan de identificar grupos de funcio
nalidad que puedan ser desacoplados con facilidad para reducir las dependencias entre equipos
de subsistemas. En consecuencia, se espera que la mayora de las comunicaciones asincronas
sucedan entre los equipos y las coordinaciones, mientras que se espera que la comunicacin en
el mbito del proyecto se realice en eventos calendarizados bien definidos, como revisiones del
proyecto y lanzamientos. A priori, la administracin ve los siguientes modos como crticos para
la comunicacin entre equipos:
Revisin del cliente: trimestral
Revisin del proyecto: mensual
www.FreeLibros.org
88 C aptulo 3 C omunicacin d e proyectos
Figu ra 3-14 Un ejemplo de organizacin del proyecto usada como base para la infraestructura de comunicacin
(diagrama de objeto UML). Las asociaciones representan canales de comunicacin por medio de coordinaciones.
Lanzamientos: semanal
Peticiones de aclaraciones: cuando se necesiten
Peticiones de cambio: cuando se necesiten
Resolucin de problemas del proyecto: cuando se necesiten
En forma similar, la administracin ve los siguientes modos como crticos para la comunicacin
dentro de los equipos:
Revisin del estado: semanal
Lluvia de ideas: semanal
Resolucin de problemas del equipo: cuando se necesite
Peticiones de aclaraciones: cuando se necesiten
Peticiones de cambio: cuando se necesiten
Dada la importancia cada vez mayor de las revisiones en la perspectiva de comunicacin de la
administracin, deciden seleccionar las reuniones formales para realizar las revisiones del cliente y
del proyecto hasta que se adquiera ms experiencia en el uso de las herramientas groupware sn
cronas. El estado del equipo y la lluvia de ideas se manejan en una reunin de equipo semanal. La
administracin selecciona una herramienta groupware basada en foro para dar soporte a los lan
zamientos y a la mayora de las comunicaciones asincronas. Por ltimo, la administracin espera
que las conversaciones informales en pasillos y las coordinaciones manejen la comunicacin
durante las crisis en caso de que no funcionen los canales de comunicacin formales.
3.5.2 Instalacin de una infraestructura
Se crean dos conjuntos de foros para apoyar la comunicacin del proyecto y de equipos,
respectivamente. Los miembros se suscriben a todos los foros del proyecto y a los foros de sus
equipos. Los foros del proyecto incluyen:
www.FreeLibros.org
Actividades d e comunicacin del proyecto 89
Anuncio. Los eventos principales (por ejemplo, agenda de revisin, lanzamientos) son anunciados
por la administracin ponindolos en este foro. Slo la administracin puede poner anuncios en
este foro, y los miembros del proyecto pueden poner rplicas y leer todos los documentos.
Discusin. Las peticiones de aclaraciones y peticiones de cambio del proyecto se colocan
en este foro. Las discusiones acerca de las peticiones (por ejemplo, argumentos y solucio
nes alternas) se ponen como respuesta a los mensajes originales. Todos los miembros del
proyecto pueden enviar a este foro y leer sus documentos.
Problemas. En este foro se ponen problemas abiertos y su estado actual. Todos los miem
bros del proyecto pueden enviar a este foro y leer sus documentos.
Documentos. En este foro se colocan las versiones ms recientes de lo disponible del proyecto
(por ejemplo, el documento de anlisis de requerimientos, el documentos de diseo del sistema) y
otros documentos internos del proyecto (por ejemplo, el plan de administracin del proyecto de
software). Soto el equipo de documentacin puede colocar documentos en este foro. Todos los
miembros del proyecto pueden colocar rplicas (es decir, comentarios a tos documentos) y leer
tos documentos.
Lista de equipo. Este foro contiene descripciones del equipo disponible y su estado (por ejemplo,
disponibilidad, propietario actual). Slo el administrador del equipo puede enviara este foro.
Los foros de equipos son similares a los foros del proyecto, a excepcin de que soportan la comu
nicacin del equipo. Los foros de equipos incluyen:
Discusiones del equipo
Problemas del equipo
Documentos del equipo
Cada miembro del proyecto puede leer el foro de cualquier otro equipo. Los miembros del equipo
slo pueden enviar a los foros de su propio equipo. Observe que los foros pueden crearse tan
pronto como sea relativamente estable la descomposicin en subsistemas. Una vez que los foros
y grupos de acceso estn especificados se pueden crear las cuentas para miembros individuales
conforme se asigna el personal al proyecto.
3.5.3 Organizacin de las revisiones del cliente y del proyecto
Las revisiones del cliente se realizan despus del lanzamiento del documento de anlisis
de requerimientos y despus de la entrega del sistema. Las revisiones del proyecto se realizan
para revisar los documentos de diseo del sistema, el diseo detallado de objetos y las pruebas.
Una revisin del proyecto tambin puede realizarse antes de la entrega como una prueba en seco
para la prueba de aceptacin del cliente.
El administrador del proyecto decide calendarizar todas las revisiones durante la fase de
planeacin (vea la tabla 3-5).
www.FreeLibros.org
90 C aptulo 3 C omunicacin d e proyectos
Tabla 3-5 Un ejemplo de un calendario de revisiones.
Revisin Fecha
Producto disponible (debe estar listo una
semana antes de la revisin)
Revisin del cliente Semana 7 Documento de anlisis de requerimientos
Revisin del diseo del
sistema
Semana 9 Documento de diseo del sistema
Revisin del diseo de objetos Semana 13
(2 sesiones)
Documento de diseo de objetos
Revisin interna Semana 16 Pruebas unitarias y de integracin
Prueba en seco de aceptacin
del cliente
Semana 17 Todo lo disponible del proyecto
Prueba de aceptacin del cliente Semana 17 Todo lo disponible del proyecto
La administracin tambin presenta procedimientos para la organizacin de las revisiones:
1. Los productos disponibles que se estn revisando deben estar listos una semana2 antes de
la revisin.
2. Poco despus del lanzamiento, la administracin publica un borrador de agenda en donde
lista los temas a presentar por cada equipo. El borrador inicial de la agenda se coloca como
un documento Lotus Notes en el foro Anuncios del proyecto.
3. Los candidatos para la presentacin hacen comentarios a las agendas originales y refinan los
temas de la presentacin. La administracin modifica la agenda con base en los comentarios.
4. Los presentadores envan sus diapositivas en respuesta a la agenda e incluyen las diaposi
tivas en la respuesta. La administracin coteja las diapositivas antes de la presentacin y
actualiza la agenda.
La administracin tambin asigna la responsabilidad de secretario de actas, usando el mismo
procedimiento, a un miembro del proyecto, a quien le ensear la manera de levantar la minuta.
Durante la revisin, el secretario de actas usa una laptop y registra con cuidado todas las preguntas
de la audiencia y las respuestas. Por ltimo, al da siguiente de la revisin, el secretario de actas
y la administracin renen sus notas y generan una lista de conceptos de accin a realizarse
como resultado de la revisin y una lista de problemas abiertos que no se pudieron responder
durante la revisin. Despus de procesar las minutas se colocan en el foro Anuncios.
El nfasis en el uso de la infraestructura de comunicacin para la coordinacin de la orga
nizacin de la revisin y el envo de diapositivas permite que se capture ms informacin y, por
lo tanto, se tenga accesible en el espacio de informacin del proyecto.
2. Esto deja un tiempo de holgura para los ltimos documentos. Siendo realistas, algunos de los productos disponibles
con frecuencia se entregan el da anterior a la reunin. Aqu, el asunto crtico es: 1) Se puede poner a disposicin de
todos los participantes en la revisin el material disponible? y 2) Tienen el tiempo suficiente para revisarlo?
www.FreeLibros.org
Actividades d e comunicacin del proyecto 91
3.5.4 Organizacin de reuniones de equipo semanales
La administracin decide establecer una reunin de equipo semanal para todos los equi
pos, a fin de tener revisiones de estado, lluvia de ideas y solucin de problemas. La reunin de
equipo semanal se organiza y captura como se describe en la seccin 3.4.3. Tomando en cuenta
que el proyecto de ejemplo es un desarrollo de primera vez con personal nuevo, pocos miembros
se conocen desde el punto de vista social y tcnico. Adems, pocos de ellos estn familiariza
dos con los papeles y procedimientos de las reuniones formales. La administracin aprovecha
la oportunidad de la primera reunin de equipo semanal para presentar los procedimientos de la
reunin, explicar la importancia de estos procedimientos y motivar a los miembros del equipo
para que los usen. La figura 3-15 muestra la agenda enviada por la administracin para la pri
mera reunin.
El objetivo de la primera reunin es entrenar a tos participantes mediante el ejemplo. Se motiva
la discusin acerca de tos procedimientos. A los participantes se les explica la reunin y tos papeles
del grupo, y se asignan al equipo para el resto del proyecto. Se enfatiza que el papel del moderador
tiene como propsito incrementar la eficiencia de la reunin y no imponer decisiones. Se les ensea a
tos miembros del equipo que cualquier participante en la reunin puede asumir el papel de segundo
moderador; esto es, cualquier participante puede intervenir en la discusin para que la reunin regrese
a lo que indica la agenda. Se les ensean a los participantes frases hechas para situaciones estndar
(por ejemplo, djame asumir el papel de segundo moderador significa el tema de la discusin actual
est fiiera de la agenda. Regresemos al camino. Podemos subir un nivel? significa la discusin se
ha ido a un nivel de detalle que no es necesario para esta audiencia. De hecho, la mayora de nosotros
estamos perdidos). En trminos ms generales, se les ensea a los miembros del equipo que es fcil
perder el tiempo durante una reunin, y que el objetivo principal de cualquier reunin es comunicarse
en forma eficiente y precisa para que puedan regresar a sus tareas respectivas.
La administracin decide que se cambien los papeles con regularidad para que todos los
participantes tengan oportunidad de desempear cada uno de los papeles. Esto tiene la ventaja
de crear habilidades redundantes entre los participantes y compartir mejor la informacin. La
desventaja es que, en el corto plazo, los participantes no tendrn tiempo para madurar en su papel y
llegar as a ser muy eficientes en una tarea dada. El requerimiento de la asignacin temprana
de papeles, de la rotacin de papeles y, en trminos ms generales, que los procedimientos de reu
nin estn establecidos desde el principio puede introducir turbulencia al inicio del proyecto,
pero representa una inversin saludable a largo plazo. La administracin toma la posicin de
que las reuniones diarias y las habilidades de comunicacin deben estar bien establecidas
antes de que aflore la necesidad de la comunicacin manejada por crisis durante las activi
dades de implementacin y codificacin.
Los equipos son responsables de la asignacin de los papeles en la reunin y de ponerlos
en su foro Anuncios del equipo respectivo. Se requiere que el moderador de la reunin ponga el
borrador inicial de la agenda, compuesto por las acciones tomadas de las minutas de la reunin
anterior y los temas tomados del foro Asuntos.
El da anterior a la reunin de estado debe aparecer en el foro Anuncios del equipo: se
requiere que el secretario de actas enve las minutas el da siguiente a la reunin como una
respuesta a la agenda correspondiente. Los dems miembros del equipo pueden hacer comentarios
sobre la agenda y las minutas enviando respuestas. Luego, el moderador o el secretario de actas
puede corregir el documento correspondiente.
www.FreeLibros.org
92 C apitulo 3 C omunicacin d e proyectos
Cundo y dnde Papel
Fecha: 9/01 Moderador principal: Alicia
Inicio: 4:30 p.m. Tomador de tiempo: David
Fin: 5:30 p.m. Secretario de actas: Eduardo
Edificio: Wean Hall
Saln: 3420
1. Objetivo
Familiarizarse con los papeles de administracin del proyecto para un proyecto de mediana escala con
una jerarqua de dos niveles. En particular:
Comprender la diferencia entre un papel y una persona
Asignacin de papeles a personas
Finalizar la reunin
Primer conjunto de acciones para la siguiente reunin
2. Intercambio de informacin sobre el estado del proyecto [tiempo asignado: 40 minutos]
2.1 La manera en que se organiza una reunin
Reglas bsicas de una reunin
Escucha activa
Participacin activa
Puntualidad
No debe haber reuniones de uno a uno o con el que est al lado
Respetar la agenda
Ahorrar tiempo
Disposicin para lograr el consenso
Libertad para revisar el proceso y las reglas bsicas
Papeles de la reunin
Moderador principal
Tomador de tiempo
Secretario de actas
Escribano
2.2 A continuacin se presenta la agenda
S e omite p o r brevedad
3. Temas a discusin [tiempo asignado: 15 minutos]
3.1 Directorio del equipo
3.2 Asignacin de papeles para la reunin
3.3 Asignacin de papeles de grupo
4. Cierre [tiempo asignado: 5 minutos]
4.1 Revisin y asignacin de nuevas acciones
4.2 Crtica de la reunin
Figura 3-15 Agenda para la primera reunin semanal de equipo.
www.FreeLibros.org
Ejercicios 93
Con frecuencia, los papeles y procedimientos de la reunin se perciben como una sobre
carga. La administracin est consciente de esa percepcin e invierte tiempo al inicio del proyecto
para ilustrar los beneficios de los procedimientos de reunin. En la primera semana del proyecto la
administracin revisa de manera sistemtica las agendas y minutas de las primeras reuniones
semanales, les sugiere mejoras para ahorrar tiempo a los moderadores (por ejemplo, mantener
un documento activo que contiene temas abiertos y acciones activas desde donde se pueden cor
tar y pegar para formar la agenda) y a los secretarios de actas (por ejemplo, enfocarse primero en
la captura de las acciones y problemas no resueltos y luego en la discusin).
3.5.5 Revisin de los asuntos de transicin
Puede ser difcil el aprendizaje del uso de una nueva infraestructura de comunicacin en
un proyecto [Orlikowski, 1992]. Como se dijo antes, es crtico que la transicin de la infraestruc
tura de comunicacin suceda al principio del proyecto. Por otro lado, una vez que se obtiene una
masa crtica de informacin y usuarios, los dems usuarios y ms informacin se abrirn paso en
la infraestructura de comunicaciones. Por otro lado, si no se obtiene rpido la masa crtica, se
establecern canales informales altemos y se consolidarn, dificultando despus su correccin.
La administracin puede motivar la transicin poniendo a disposicin un mximo de infor
macin estructurada (por ejemplo, el enunciado del problema, el plan de administracin del soft
ware, plantillas de agenda y documentos), requiriendo que los participantes en el proyecto realicen
tareas simples usando la infraestructura (por ejemplo, colocando sus papeles dentro del equipo
en el foro Anuncios) y proporcionando retroalimentacin utilizando la infraestructura de comu
nicaciones.
3.6 Ejercicios
1. Usted es un miembro del equipo de interfaz de usuario. Es responsable del diseo e imple-
mentacin de formularios para recopilar informacin acerca de los usuarios del sistema (por
ejemplo, nombre, apellido, direccin, direccin de correo electrnico, nivel de experien
cia). La informacin que se recopila se guarda en la base de datos y la usa el subsistema de
reportes. No est seguro de cules campos son informacin requerida y cules son opcionales.
Cmo lo investiga?
2. Usted ha sido reasignado del equipo de interfaz de usuario al equipo de base de datos, debido
a falta de personal y replaneacin. La fase de implementacin ya va algo adelantada.
En cul papel sera ms productivo tomando en cuenta su conocimiento del diseo e
implementacin de la interfaz de usuario?
3. Suponga que el ambiente de desarrollo son estaciones de trabajo Unix y que el equipo de
documentacin usa plataformas Macintosh para la escritura de la documentacin. El cliente
requiere que los documentos se tengan disponibles en plataformas Windows. Los desarro
lladores producen la documentacin de diseo usando FrameMaker. El equipo de documen
tacin usa Microsoft Word para la documentacin en el nivel de usuario. El cliente enva las
correcciones en papel y no necesita modificar los documentos entregados.
www.FreeLibros.org
94 C aptulo 3 C omunicacin d e proyectos
Cmo podra especificarse el flujo de informacin entre los desarrolladores, los
escritores tcnicos y el cliente (por ejemplo, formato, herramientas, etc.) de forma tal que
se minimice la duplicacin de archivos y, al mismo tiempo, se satisfagan las preferencias
de herramientas y requerimientos de plataforma de cada cual?
4. Cules cambios de organizacin e infraestructura de comunicaciones le recomendara a un
sucesor del proyecto Ariane 5 como consecuencia de la falla del Ariane 501 que se describe
al inicio de este captulo?
Referencias
[FRIEND, 1994] FR1END Project Documentalion. School o f Computer Science, Camegie Mellon Univ.,
Pittsburgh, PA, 1994.
[Grudin, 1988] J. Grudin, Why CSCW applications fail: Problems in design and evaluation o f organization
interfaces , Proceedings CSCW '88, Portland, OR, 1988.
[Kayser, 1990] T. A. Kayser, Mining Group Gold. Serif, El Segundo, CA, 1990.
[Lions, 1996] J.-L. Lions, ARIANE 5 Flight 501 Failure: Reporl by the Inquiry Board,
http://wwwjesrin.esa.it/htdocs/tidc/Press/Press96/ariane5rep.html. 1996.
[Orlikowski, 1992] W. J. Orlikowski, Leaming from Notes: Organizational issues in groupware implementation,
Conference on Computer-Supported Cooperative Work Proceedings, Toronto, Canad, 1992.
[OWL, 1996] OWL Project Documentalion, School o f Computer Science, Camegie Mellon Univ., Pittsburgh,
PA, 1996.
[Reeves y Shipman, 1992] B. Reeves y F. Shipman, Supporting communication between designers with artifact-centered
evolving information spaces", Conference on Computer-Supported Cooperative Work
Proceedings, Toronto, Canad 1992.
[Saeki, 1995] M. Saeki, Communication, collaboration, and cooperation in software developmentHow
shouldwe support group work in software development?", in Asia-Pacific Software
Engineering Conference Proceedings, Brisbane, Australia, 1995.
[Seaman y Basili, 1997] C. B. Seaman y V. R. Basili, An empirical study o f communication in code inspections,
Proceedings o f the 19th International Conference on Software Engineering Boston, MA, 1997.
[Subrahmanian et a / , 1997] E. Subrahmanian, Y. Reich, S. L. Konda, A. Dutoit, D. Cunningham, R. Patrick, M. Thomas, y
A. W. Westerberg, The w-dim approach to building design support systems , Proceedings of
ASME Design Theory and Methodology DTM '97, ASME, Nueva York, 1997.
[Teamwave, 1997] Teamwave Inc., http://www.teamwave.com, 1997.
www.FreeLibros.org
PARTE D
Mango de la
complejidad
www.FreeLibros.org
41 Inrodncn: ejm ylos de utilidad 96
4 2 Una panormica de la obtendn de requerimientos 90
4 3 Conceptos de la obtencin de requerimientos 100
4.3.1 Requerimientos funcionales 101
4.3.2 Requerimientos no funcionales y seudorrequerimientos 101
4.3.3 Niveles de descripcin 102
4.3.4 Correccin, suficiencia, consistencia, claridad y realismo 103
4.3.5 Verificabilidad y rastreabilidad
4.3.6 Ingeniera a partir de cero (greenfield), reingeniera
105
e ingeniera de interfaz 105
4 4 Actividad para la obtendn de requoimientos 106
4.4.1 Identificacin de los actores 106
4.4.2 Identificacin de escenarios 108
4.4.3 Identificacin de casos de uso 110
4.4.4 Refinamiento de los casos de uso 112
4.4.5 Identificacin de las relaciones entre actores y casos de uso 113
4.4.6 Identificacin inicial de los objetos de anlisis 117
4.4.7 Identificacin de requerimientos no funcionales 118
4 5 Afhnimstran de la obtencin de requerimientos
4.5.1 Obtencin de informacin de los usuarios:
120
conocimiento del anlisis de tareas
4.5.2 Negociacin de especificaciones con los clientes:
120
diseo conjunto de aplicaciones 121
4.5.3 Validacin de requerimientos: prueba de utilidad 123
4.5.4 Documentacin de la obtencin de requerimientos 126
4 6 Ej erados 128
Referencias 120
9 6
www.FreeLibros.org
4
Obtencin de
requerimientos
Nadie est exento de cometer errores.
Lo importante es aprender de ellos.
Karl Popper, en Objective Knowledge: An Evolutionary
Approach
U n requerimiento es una caracterstica que debe tener el sistema o una restriccin que debe
satisfacer para que sea aceptado por el cliente. La ingeniera de requerimientos pretende definir
los requerimientos del sistema que se est construyendo. La ingeniera de requerimientos incluye
dos actividades principales: la obtencin de los requerimientos, que da como resultado una espe
cificacin del sistema que el cliente comprende, y el anlisis, que da como resultado un modelo
de anlisis que los desarrolladores pueden interpretar sin ambigedad. La obtencin de requeri
mientos es la ms retadora de las dos, debido a que requiere la colaboracin de varios grupos de
participantes con diferentes niveles de conocimientos. Por un lado, el cliente y los usuarios son
expertos en sus dominios y tienen una idea general de lo que debe hacer el sistema. Sin embargo,
a menudo tienen muy poca experiencia en el desarrollo de software. Por otro lado, los desarro
lladores tienen experiencia en la construccin de sistemas, pero con frecuencia tienen muy poco
conocimiento del ambiente diario de los usuarios.
Los escenarios y los casos de uso proporcionan herramientas para llenar este hueco. Un
escenario describe un ejemplo del uso del sistema desde el punto de vista de una serie de inter
acciones entre el usuario y el sistema. Un caso de uso es una abstraccin que describe una clase de
escenarios. Tanto los escenarios como los casos de uso se escriben en lenguaje natural, una forma
que es comprensible para el usuario.
En este captulo nos enfocamos en la obtencin de requerimientos basados en escenarios.
Los desarrolladores obtienen los requerimientos observando a los usuarios y entrevistndolos.
Primero los desarrolladores representan los procesos de trabajo actuales del usuario como escena
rios tal como son, y luego desarrollan escenarios visionarios en donde se describe la funcionalidad
que proporcionar el sistema futuro. El cliente y los usuarios validan la descripcin del sistema
revisando los escenarios y probando prototipos pequeos proporcionados por los desarrolladores.
Conforme madura y se estabiliza la definicin del sistema, los desarrolladores y el cliente se ponen
de acuerdo en una especificacin del sistema en forma de casos de uso.
97
www.FreeLibros.org
98 C apitulo 4 Obtencin d e requerimientos
4.1 Introduccin: ejemplos de utilidad
Considere los siguientes ejemplos:1
M e t r o s o kilmetros?
Durante un experimento se dirigi un rayo lser hacia un espejo que estaba en el transbordador espacial
Discovery. La prueba trataba de que el rayo lser se reflejara hacia la cima de una montaa. El usuario
introdujo la elevacin de la montaa como 3057", suponiendo que las unidades eran metros. La compu
tadora interpret la cifra en kilmetros, y el rayo lser fue reflejado lejos de la Tierra, hacia una montaa
hipottica de 3057 kilmetros de alto.
Punto decimal frente a separador de millares
En Estados Unidos, los puntos decimales se representan con un punto ( .) y los separadores de millares se
representan con una coma En Alemania, el punto decimal se representa con una coma y e l separador
de miles con un punto. Supongamos que un usuario alemn, que est consciente de ambas convenciones,
est viendo un catlogo en lnea con los precios listados en dlares. Cul convencin debera usarse para
evitar confusiones?
Patrones estndares
En el editor de textos Emacs, el comando <Control-x><Control-q> produce la salida del programa.
Si necesita guardar algn archivo, el editor le preguntar al usuario Se guarda el archivo miDocu-
mento.txt? ( s o n)\ Si el usuario responde y el editor guarda el archivo antes de salir. Muchos usuarios
confan en este patrn y en forma sistemtica teclean la secuencia <cont rol-x><control-q>y
cuando salen de un editor. Sin embargo, otros editores al cerrarse hacen la pregunta: Est seguro de
que quiere salir? (s o n)\ Cuando los usuarios cambian de Emacs a uno de estos editores, no guardarn
su trabajo hasta que se las arreglen para romper este patrn.
La obtencin de requerimientos trata sobre la comunicacin entre desarrolladores, clientes y usuarios
para definir un nuevo sistema. Si no hay una comunicacin y comprensin del dominio de cada uno
de ellos se tendr como resultado un sistema difcil de usar o que simplemente no apoya el trabajo del
usuario. Resulta caro corregir tos errores que se introducen durante la obtencin de requerimientos ya
que, por lo general, se les descubre tarde en el proceso, con frecuencia tan tarde como en la entrega.
Tales errores incluyen funcionalidad faltante que el sistema debera haber soportado, funcionalidad
que se especific de manera incorrecta, interfaces de usuario que son confusas o intiles y funcio
nalidad que es obsoleta. Los mtodos para la obtencin de requerimientos pretenden mejorar la
comunicacin entre desarrolladores, clientes y usuarios. Los desarrolladores construyen un modelo
del dominio de aplicacin observando a los usuarios en su ambiente (por ejemplo, anlisis de tareas).
Los desarrolladores seleccionan una representacin que sea comprensible para los clientes y usuarios
(por ejemplo, escenarios y casos de uso). Los desarrolladores validan el modelo del dominio de apli
cacin construyendo prototipos simples de la interfaz de usuario y recopilando retroalimentacin de
tos usuarios potenciales (por ejemplo, elaboracin rpida de prototipo, pruebas de utilidad).
En la siguiente seccin proporcionamos una panormica de la obtencin de requerimientos y
su relacin con las dems actividades de desarrollo de software. En la seccin 4.3 definimos los
conceptos principales usados en este captulo. En la seccin 4.4 tratamos las actividades para la
obtencin de requerimientos. En la seccin 4.5 tratamos las actividades administrativas relaciona
das con la obtencin de requerimientos.
1. Ejemplos lomados y adaptados de [Nielsen, 1993] y del foro R I S K .
www.FreeLibros.org
Una panormica d e la obtencin d e requerimientos 99
4.2 Una panormica de la obtencin de requerimientos
La obtencin de requerimientos se enfoca en la descripcin del propsito del sistema. El cliente,
tos desarrolladores y los usuarios identifican un rea problema y definen un sistema que ataca el
problema. A tal definicin se le llama e s p e c i f i c a c i n d e l s i s t e m a y sirve como contrato entre
el cliente y los desarrolladores. La especificacin del sistema se estructura y formaliza durante el
anlisis (captulo 5, Anlisis) para producir un modelo de anlisis (vea la figura 4-1). Tanto la espe
cificacin del sistema como el modelo de anlisis representan la misma informacin. Difieren slo
en el lenguaje y la notacin que usan. La especificacin del sistema est escrita en lenguaje natural,
mientras que el modelo de anlisis se expresa, por lo general, en una notacin formal o semifor-
mal. La especificacin del sistema soporta la comunicacin con el cliente y los usuarios. El modelo
de anlisis soporta la comunicacin entre desarrolladores. Ambos son modelos del sistema en el
sentido de que tratan de representar con precisin los aspectos extemos del sistema. Tomando en
cuenta que ambos modelos representan los mismos aspectos del sistema, la obtencin de
requerimientos y el anlisis suceden en forma concurrente e iterativa.
Ctotencin de
requerimientos
1\
Especific acin
del., sistema
\
Modelo
Modelo
Modelo
Figura 4-1 Productos de la obtencin de requerimientos y el anlisis (diagrama de actividad UML).
La obtencin de requerimientos y el anlisis se enfocan slo en la visin del sistema que
tiene el usuario. Por ejemplo, la funcionalidad del sistema, la interaccin entre el usuario y el
sistema, los errores que el sistema puede detectar y manejar y las condiciones ambientales en las
que funciona el sistema son parte de los requerimientos. La estructura del sistema, la tecnologa de
implementacin seleccionada para construir el sistema, el diseo del sistema, la metodologa
de desarrollo y otros aspectos que no son visibles en forma directa para el usuario no son
parte de los requerimientos.
La obtencin de requerimientos incluye las siguientes actividades.
I d e n t if i c a c i n de a c t o re s . Durante esta actividad los desarrolladores identifican los dife
rentes tipos de usuario que soportar el sistema futuro.
I d e n t if i c a c i n de e s c e n a r i o s . Durante esta actividad los desarrolladores observan a los
usuarios y desarrollan un conjunto de escenarios detallados para la funcionalidad tpica que
proporcionar el sistema futuro. Los escenarios son ejemplos concretos del uso del sistema
www.FreeLibros.org
100 C apitulo 4 Obtencin d e requerimientos
futuro. Los desarrolladores usan estos escenarios para comunicarse con los usuarios y pro
fundizar su comprensin del dominio de aplicacin.
Id e n t if i c a c i n de c a s o s de uso. Una vez que los desarrolladores y usuarios se ponen de
acuerdo en un conjunto de escenarios, los desarrolladores derivan a partir de los escenarios
un conjunto de casos de uso que representa por completo al sistema futuro. Mientras que
los escenarios son ejemplos concretos que ilustran un solo caso, los casos de uso son
abstracciones que describen todos los casos posibles. Cuando se describen los casos de
uso los desarrolladores determinan el alcance del sistema.
R e f i n a m i e n t o de i o s c a so s d e uso. Durante esta actividad los desarrolladores se aseguran
que la especificacin del sistema est completa detallando cada caso de uso y describiendo
el comportamiento del sistema en presencia de errores y condiciones excepcionales.
I d e n t if i c a c i n d e l as r e l a c i o n e s ent r e c a s o s de uso. Durante esta actividad los desarrolla
dores consolidan el modelo de caso de uso eliminando redundancias. Esto asegura que la
especificacin del sistema sea consistente.
Identificacin de requerimientos no funcionales. Durante esta actividad b s desarrolladores,
usuarios y clientes se ponen de acuerdo en aspectos que son visibles ante el usuario pero
que no estn relacionados en forma directa con la funcionalidad. Esto incluye restricciones
en el desempeo del sistema, su documentacin, los recursos que consume, su seguridad y
su calidad.
Durante la obtencin de requerimientos los desarrolladores consultan muchas fuentes de infor
macin diferentes, incluyendo documentos proporcionados por el cliente acerca del dominio de
aplicacin, manuales y documentacin tcnica de sistemas heredados que sern reemplazados por
el sistema futuro y, lo ms importante, a los clientes y usuarios mismos. La mayor interaccin de
los desarrolladores con los usuarios y los clientes se da durante la obtencin de requerimientos.
Nos enfocamos en tres mtodos para la obtencin de informacin y la toma de decisiones con los
usuarios y clientes:
El diseo conjunto de aplicaciones (JAD) se enfoca en la obtencin de consenso entre desarro
lladores, usuarios y clientes mediante el desarrollo conjunto de la especificacin del sistema.
E l c o n o c i m i e n t o d e l a n l i s i s d e t a r e a s (KAT) se enfoca en la obtencin de informacin
de los usuarios mediante la observacin.
Las p r u e b a s de u t i l i d a d se enfocan en la validacin del modelo de obtencin de reque
rimientos con el usuario mediante mtodos diversos.
4.3 C once ptos de la obtencin de requerimientos
En esta seccin describimos los principales conceptos de la obtencin de requerimientos que
usamos en este captulo. En particular describimos:
Requerimientos funcionales (seccin 4.3.1)
Requerimientos no funcionales y seudorrequerimientos (seccin 4.3.2)
Niveles de descripcin (seccin 4.3.3)
Correccin, suficiencia, consistencia, claridad y realismo (seccin 4.3.4)
www.FreeLibros.org
C o n ce pt o s d e la obtencin d e requerimientos 101
Verificabilidad y rastreabilidad (seccin 4.3.5)
Ingeniera a partir de cero (greenfield), reingeniera e ingeniera de interfaz (seccin 4.3.6)
Describimos las actividades para la obtencin de requerimientos en la seccin 4.4.
4.3.1 Requerimientos funcionales
Los requerimientos f un ci onal e s describen las interacciones entre el sistema y su ambiente, en
forma independiente a su implementacin. El ambiente incluye al usuario y cualquier otro sistema
externo con el cual interacte el sistema. Por ejemplo, el siguiente es un ejemplo de requerimientos
funcionales del RelojSat, un reloj que se reajusta a s mismo sin intervencin del usuario:
Requerimientos funcionales del RelojSat
El RelojSat es un reloj de pulsera que muestra el tiempo basado en su ubicacin actual. El RelojSat usa los
satlites GPS (sistema de posicionamiento global) para determinar su ubicacin y estructuras de datos
internos para convertir esta ubicacin en una zona horaria. La informacin que est guardada en el reloj y
su precisin en la medicin del tiempo (una incertidumbre de un centsimo de segundo a lo largo de cinco
aos) son tales que el propietario del reloj nunca necesita volver a ajustar la hora. El RelojSat ajusta la hora
y la fecha mostradas conforme el propietario del reloj cruza zonas horarias y fronteras polticas (por ejemplo,
el tiempo estndar contra el tiempo de ahorro de luz de da). Por esta razn, el RelojSat no tiene botones ni
controles para el usuario.
El RelojSat tiene una pantalla de dos renglones y muestra en el rengln superior la hora (hora, minuto,
segundo y zona horaria) y en la h'nea inferior la fecha (da de la semana, da, mes, ao). La tecnologa
usada en la pantalla es tal que el propietario del reloj puede ver la fecha y la hora aun bajo condiciones de
poca iluminacin.
Cuando un nuevo pas o estado instituye reglas diferentes para el tiempo de ahorro de luz de da, el propie
tario del reloj puede mejorar el software del reloj usando el dispositivo serial WebificarReloj (que se pro
porciona cuando se compra el reloj) y una computadora personal conectada a Internet. El RelojSat se
apega a las interfaces fsica, elctrica y de software definidas por la API 2.0 de WebificarReloj.
Los requerimientos funcionales anteriores se enfocan slo en las interacciones posibles entre
el RelojSat y su mundo externo (es decir, el propietario del reloj, los GPS y WebificarReloj). La
descripcin anterior no se enfoca en ninguno de los detalles de implementacin (por ejemplo,
procesador, lenguaje, tecnologa de pantalla).
4.3.2 Requerimientos no funcionales y seudorrequerimientos
Los r e q u e r i m i e n t o s n o f u n c i o n a l e s describen aspectos del sistema visibles por el usuario
que no se relacionan en forma directa con el comportamiento funcional del sistema. Los reque
rimientos no funcionales incluyen restricciones cuantitativas, como el tiempo de respuesta (es
decir, qu tan rpido reacciona el sistema ante los comandos del usuario) o precisin (es decir,
qu tan precisas son las respuestas numricas del sistema). Los siguientes son los requerimientos
no funcionales del RelojSat:
www.FreeLibros.org
102 C apitulo 4 Obtencin d e requerimientos
Requerimientos n o funcionales del RelojSat
El RelojSat determina su ubicacin usando satlites GPS y, por lo tanto, sufre las mismas limitaciones
que todos los dems dispositivos GPS (por ejemplo, precisin de cien pies, incapacidad para determinar
la ubicacin en determinados momentos del da en regiones montaosas). Durante los periodos sin seal
el RelojSat supone que no cruza una zona horaria o una frontera poltica. El RelojSat corrige su zona
horaria tan pronto como recupera la seal.
La vida de la batera del RelojSat est limitada a cinco aos, que es e l ciclo de vida estimado de la caja del
RelojSat. La caja del RelojSat no est diseada para que se abra despus de haberlo fabricado, impidiendo
el reemplazo de la batera y las reparaciones. En vez de ello, el RelojSat tiene un precio tal que se espera
que el propietario del reloj compre uno nuevo para reemplazar a uno antiguo o defectuoso.
Los s e ud orr e que r imi en t os son requerimientos impuestos por el cliente que restringen la imple-
mentacin del sistema. Los seudorrequerimientos tpicos son el lenguaje de implementacin y la
plataforma en que se implementar el sistema. Para desarrollos que son crticos para la vida, los
seudorrequerimientos incluyen, con frecuencia, requerimientos de procesos y documentacin (por
ejemplo, el uso de un mtodo de especificacin formal, la versin completa terminada de todos los
productos de trabajo). Los seudorrequerimientos no tienen, por lo general, un efecto directo en la
opinin del usuario acerca del sistema. Los siguientes son los seudorrequerimientos del RelojSat:
Seudorrequerimientos del RelojSat
Todo el software relacionado asociado con el RelojSat, incluyendo el software a bordo, se escribir
usando Java para apegarse a la poltica actual de la compaa.
El anlisis es una actividad de modelado. El desarrollador construye un modelo que describe la
realidad tal como se ve desde el punto de vista del usuario. El modelado consiste en la identifica
cin y clasificacin de fenmenos del mundo real (por ejemplo, aspectos del sistema en cons
truccin) hacia conceptos. La figura 4-2 es un diagrama de clase UML que representa las rela
ciones entre los modelos y la realidad. En este diagrama se dice que un modelo es correcto si cada
concepto del modelo corresponde a un fenmeno relevante. El modelo est completo si todos los
fenmenos relevantes estn representados por, al menos, un concepto. El modelo es consistente si
todos los conceptos representan fenmenos de la misma realidad (es decir, si un modelo es incon
sistente debe representar aspectos de dos realidades diferentes).
4.3.3 Niveles de descripcin
Los requerimientos describen un sistema y su interaccin con el ambiente que lo rodea, como
tos usuarios, sus procesos de trabajo y otros sistemas. La mayora de los mtodos de anlisis de
requerimientos se han enfocado en la descripcin del sistema. Sin embargo, cuando se usan casos
de uso y escenarios se hace evidente que tambin es necesario describir el ambiente en que ope
rar el sistema. Primero, los desarrolladores, por lo general, no conocen ni comprenden al principio
el ambiente operativo y necesitan revisar su comprensin con los usuarios. Segundo, es probable
que el ambiente cambie y, por lo tanto, los desarrolladores debern capturar todas las suposicio
nes que hacen acerca del ambiente. En general, hay cuatro niveles de descripcin, que pueden expli
carse de manera uniforme con casos de uso [Paech, 1998]. A continuacin los listamos desde el ms
general hasta el ms especfico:
www.FreeLibros.org
C o n ce pt o s d e la obtencin d e requerimientos 103
Figura 4-2 Un Sistema es una coleccin de Efenmenos del mundo real. Un modelo e s una coleccin de
conceptos que representan a los fenmenos del sistema. Muchos modelos pueden representar diferentes
aspectos del sistema. Un modelo no ambiguo corresponde slo a un sistema.
Divisin de l trabajo. Este conjunto de casos de uso describe tos procesos de trabajo de tos usua
rios que son relevantes para el sistema. Tambin se describe la parte del proceso soportada
por el sistema, pero el meollo est en la definicin de las fronteras entre tos usuarios y el sistema.
F u n c i o n e s de l s i s t e m a e spe c f i ca s d e l a a p l i c a c i n . Este conjunto de casos de uso des
cribe las funciones proporcionadas por el sistema que estn relacionadas con el dominio de
aplicacin.
F u n c i o n e s d e l s i s t e m a e s p e c f i c a s d e l t r a b a j o . Este conjunto de casos de uso describe las
funciones de apoyo del sistema que no estn relacionadas con el dominio de aplicacin.
stas incluyen funciones para administracin de archivos, funciones de agolpamiento,
funciones para deshacer, etc. Estos casos de uso se extendern durante el diseo del sistema
cuando estemos discutiendo condiciones de frontera conocidas, como la inicializacin del
sistema, el apagado y las polticas para el manejo de excepciones.
D i l o g o . Este conjunto de casos de uso describe las interacciones entre los usuarios y la
interfaz de usuario del sistema. El enfoque est en el diseo de la resolucin del flujo de
control y asuntos de disposicin.
4.3.4 C orreccin, suficiencia, consistencia, claridad y realismo
Los requerimientos se validan en forma continua con el cliente y el usuario. La validacin es
un paso crtico en el proceso de desarrollo, tomando en cuenta que tanto el cliente como el desa
rrollador dependen de la especificacin del sistema. La validacin de requerimientos involucra la
revisin para ver si la especificacin es correcta, completa, consistente, realista y no es ambigua.
Una especificacin es c o rr ec t a si representa la visin del cliente del sistema (es decir, todo lo que
hay en el modelo de requerimientos representa con precisin un aspecto del sistema). Es com pl et a
si se describen todos los escenarios posibles que hay en el sistema, incluyendo el comportamiento
excepcional (es decir, en el modelo de requerimientos estn representados todos los aspectos del
sistema). La especificacin del sistema es c onsi st e nt e si no se contradice a s misma. La especifi
cacin del sistema no e s a m b i g u a si est definido exactamente un sistema (es decir, no es posible
interpretar la especificacin en dos o ms formas diferentes). Por ltimo, es r eal i st a si el sistema
puede implementarse dentro de esas restricciones. Estas propiedades se ilustran con diagramas de
instancia UML en la tabla 4-1.
www.FreeLibros.org
Tabla 4-1 Propiedades de la especificacin que se revisan durante la validacin.
104 C apitulo 4 Obtencin d e requerimientos
www.FreeLibros.org
C o n ce pt o s d e la obtencin d e requerimientos 105
La correccin y suficiencia de la especificacin del sistema con frecuencia son difciles de
establecer, en especial antes de que exista el sistema. Tomando en cuenta que la especificacin
del sistema sirve como una base contractual entre el cliente y los desarrolladores, ambas partes
deben revisar en forma minuciosa la especificacin del sistema. Adems, en las partes del
sistema que presentan un alto riesgo deben elaborarse prototipos o hacerse simulaciones para
demostrar su factibilidad o para obtener retroalimentacin del usuario. En el caso del RelojSat
descrito antes, se construira una maqueta del reloj usando un reloj tradicional y se realizara una
encuesta entre los usuarios para recopilar sus impresiones iniciales. Un usuario podra hacer la
observacin de que quisiera que el reloj pudiera desplegar los formatos de fecha americano y
europeo.
4.3.5 Verificabilidad y rastreabilidad
Dos propiedades deseables de una especificacin del sistema son que sea verificable y ras-
treable. La especificacin es v e r i f i c a b l e si, una vez que se construye el sistema, se puede disear
una prueba repetible para demostrar que el sistema satisface los requerimientos. Por ejemplo, una
falla de tiempo medio durante cien aos para el RelojSat sera difcil de lograr (suponiendo, en
primer lugar, que fuera realista). Los siguientes requerimientos son ejemplos adicionales de reque
rimientos no verificables:
El producto debe tener una buena interfaz de usuario (no se define buena).
El producto debe estar libre de errores (se requieren muchos recursos para determinarlo).
El producto debe responder a l usuario en menos de un segundo en la mayora de los casos
(no se define en la mayora de los casos).
Una especificacin del sistema es ra st re a bl e si cada funcin del sistema puede rastrearse hasta su
conjunto de requerimientos correspondiente. La rastreabilidad no es una restriccin en el contenido
de la especificacin sino, ms bien, en su organizacin. La rastreabilidad facilita el desarrollo de
pruebas y la validacin sistemtica del diseo contra los requerimientos.
4.3.6 Ingeniera a partir de cero (greenfield), reingeniera e ingeniera
de interfaz
Las actividades para la obtencin de requerimientos pueden clasificarse en tres categoras
dependiendo del origen de los mismos. En la i n g e n i e r a a par t ir de c er o ( greenfield) el desarrollo
comienza sin nada, no existe sistema anterior y los requerimientos se extraen de los usuarios y del
cliente. Un proyecto de ingeniera a partir de cero se activa por una necesidad del usuario o por la
creacin de un nuevo mercado. El RelojSat es un proyecto de ingeniera a partir de cero.
Un proyecto de r e i n g e n i e r a es el rediseo y reimplementacin de un sistema existente
activado por los coordinadores de tecnologa o por nuevo flujo de informacin [Hammer y
Champy, 1993]. A veces se ampla la funcionalidad del nuevo sistema, pero el propsito inicial del
sistema sigue siendo el mismo. Los requerimientos del nuevo sistema se extraen de un sistema
existente.
Un proyecto de inge ni er a de int e rf a z es el rediseo de la interfaz de usuario de un sistema
existente. El sistema heredado se deja intacto, a excepcin de su interfaz, la cual se redisea y
www.FreeLibros.org
106 C apitulo 4 Obtencin d e requerimientos
reimplementa. Este tipo de proyecto es un proyecto de reingeniera en el cual el sistema heredado
no puede descartarse sin entraar altos costos. En esta seccin examinamos la manera en que se
realiza la obtencin de requerimientos en estas tres situaciones.
En ambas reingenieras y en la ingeniera a partir de cero, los desarrolladores necesitan
recopilar la mayor cantidad posible de informacin a partir del dominio de aplicacin. Esta infor
macin puede encontrarse en manuales de procedimientos, documentacin distribuida a los nuevos
empleados, el manual del sistema anterior, glosarios, anotaciones de trampas y notas desarrolladas
por los usuarios, y entrevistas con los usuarios y el cliente. Debe sealarse que aunque las entrevis
tas con los usuarios son una herramienta inestimable, no recopilan la informacin necesaria si no
se hacen las preguntas relevantes. Los desarrolladores primero deben obtener un conocimiento
firme del dominio de aplicacin antes que puedan usar el enfoque directo.
A continuacin describimos las actividades para la obtencin de requerimientos que dan
como resultado una especificacin del sistema.
4.4 Actividades para la obtencin de requerimientos
En esta seccin describimos las actividades para la obtencin de requerimientos. Con ellas se
establece la correspondencia entre un enunciado del problema y una especificacin del sistema
que representamos como un conjunto de actores, escenarios y casos de uso (vea el captulo 2,
Modelado con UML). Exponemos la heurstica y mtodos para la extraccin de requerimientos a
partir de los usuarios y modelamos el sistema en funcin de estos conceptos. Las actividades
para la obtencin de requerimientos incluyen:
Identificacin de los actores (seccin 4.4.1)
Identificacin de los escenarios (seccin 4.4.2)
Identificacin de los casos de uso (seccin 4.4.3)
Refinamiento de los casos de uso (seccin 4.4.4)
Identificacin de las relaciones entre casos de uso (seccin 4.4.5)
Identificacin de los objetos participantes (seccin 4.4.6)
Identificacin de los requerimientos no funcionales (seccin 4.4.7)
Los mtodos que se describen en esta seccin estn adaptados de Object-Oriented Software Engi-
neering ( 0 0 SE) [Jacobson et al., 1992], The Unified Software Development Process [Jacobson et
al., 1999] y Design objects and their interactions: A brief look at responsability-driven design
[Wirfs-Brock etal., 1990].
4.4.1 Identificacin de los actores
Los actores representan entidades externas que interactan con el sistema. Un actor puede
ser un sistema humano o uno externo. En el ejemplo RelojSat, el propietario del reloj, los satlites
GPS y el dispositivo serial WebificarReloj, son actores (vea la figura 4-3). Todos ellos interactan e
intercambian informacin con el RelojSat. Sin embargo, observe que todos ellos tienen interac
ciones especficas con el RelojSat: el propietario del reloj lo porta y observa, el reloj rastrea la
seal de tos satlites GPS y WebificarReloj transfiere nuevos datos hacia el reloj. Los actores definen
clases de funcionalidad.
www.FreeLibros.org
Actividades para la obtencin d e requerimientos 107
WebificarReloj
Figura 4-3 Los actores del sistema RelojSat. PropietarioRelo j mueve el reloj (posiblemente cruzando
diferentes zonas horarias) y lo consulta para saber la hora. RelojSat interacta con GPS para calcular su posicin,
webif i c a r R e l o j actualiza los datos que estn contenidos en el reloj para reflejar cambios en su poltica
del tiempo (por ejemplo, cambios en las fechas inicial y final del tiempo de ahorro de luz de da).
Considere un ejemplo ms complejo, FRIEND, un sistema de informacin distribuido para
la administracin de accidentes [FRIEND, 1994] [Bruegge et al., 1994]. ste incluye muchos
actores, como OficialCampo que representa a los oficiales de polica y bomberos que estn
respondiendo a un incidente, y Despachador, el oficial de polica responsable de atender las lla
madas 911 y despachar recursos hacia un incidente. FRIEND apoya a ambos actores llevando la
cuenta de los incidentes, recursos y planes de tarea. Tambin tiene acceso a varias bases de
datos, como una base de datos de materiales peligrosos y de procedimientos de operacin de emer
gencias. Los actores OficialCampo y Despachador interactan mediante interfaces diferentes:
OficialCampo tiene acceso a FRIEND mediante un ayudante personal mvil, y Despachador
tiene acceso a FRIEND mediante una estacin de trabajo (vea la figura 4-4).
Los actores son abstraccin de papeles y no necesariamente tienen una correspondencia
directa con personas. La misma persona puede ocupar el papel de OficialCampo o Despachador
en momentos diferentes. Sin embargo, la funcionalidad a que tienen acceso es sustancialmente
diferente. Por esta razn, a estos dos papeles se les modela como dos actores diferentes.
El primer paso de la obtencin de requerimientos es la identificacin de actores. Esto sirve
para definir las fronteras del sistema y para encontrar todas las perspectivas desde las cuales los
desarrolladores necesitan considerarlo. Cuando el sistema se despliega en una organizacin exis
tente (como una compaa), por lo general ya existen la mayora de los actores antes de que se
desarrolle el sistema y corresponden a los papeles dentro de la organizacin.
Despachador
Figura 4-4 Actores del sistema FRIEND. OficialCampo no slo tiene acceso a una funcionalidad diferente,
sino que usa una computadora diferente para tener acceso al sistema.
ERIEND
www.FreeLibros.org
Cuando se trata de identificar a los actores, los desarrolladores pueden hacer las siguientes
preguntas:
108 C apitulo 4 Obtencin d e requerimientos
Preguntas para la identificacin de actores
Cules grupos de usuarios son apoyados por el sistema para realizar su trabajo?
Cules grupos de usuarios ejecutan las funciones principales del sistema?
Cules grupos de usuarios realizan funciones secundarias, como el mantenimiento y la
administracin?
Interactuar el sistema con algn sistema de hardware o software externo?
En el ejemplo de FRIEND, estas preguntas conducen a una larga lista de actores potenciales: bom
bero, oficial de polica, despachador, investigador, alcalde, gobernador, una base de datos de
materiales peligrosos EPA, administrador del sistema, etc. Luego necesitamos consolidar esta
lista en una pequea cantidad de actores que son diferentes desde el punto de vista de su uso del
sistema. Por ejemplo, un bombero y un oficial de polica pueden compartir la misma interfaz del sis
tema, ya que ambos estn involucrados con un solo incidente en el campo. Por otro lado, un
despachador administra varios incidentes concurrentes y requiere acceso a una mayor cantidad
de informacin. Es probable que el alcalde y el gobernador no interactuarn en forma directa con
el sistema sino que usarn los servicios de un operador entrenado.
Una vez identificados los actores, el siguiente paso en la actividad de obtencin de reque
rimientos es determinar la funcionalidad a la que tiene acceso cada actor. Esta informacin puede
extraerse usando escenarios y formalizando el uso de los casos de uso.
4.4.2 Identificacin de escenarios
Un escenario es una descripcin narrativa de lo que la gente hace y experimenta cuando
trata de utilizar sistemas y aplicaciones de computadora [Carroll, 1995]. Un escenario es una
descripcin concreta, enfocada e informal de una sola caracterstica del sistema desde el punto
de vista de un solo actor. El uso de escenarios para la obtencin de requerimientos es una desvia
cin conceptual con respecto a las representaciones tradicionales que son genricas y abstractas.
Las representaciones tradicionales se centran en el sistema y no en el trabajo al cual da apoyo el
sistema. Por ltimo, su enfoque es la suficiencia, consistencia y precisin, mientras que los esce
narios son abiertos e informales. Un enfoque basado en escenarios no puede reemplazar por
completo (y no se pretende que lo haga) a los enfoques tradicionales. Sin embargo, mejora la
obtencin de requerimientos proporcionando una herramienta que es comprensible con facilidad
para usuarios y clientes.
La figura 4 - 5 es un ejemplo de un escenario del sistema F R I E N D [FRIEND, 1994], un
sistema de informacin para responder a incidentes. En este escenario, un oficial de polica
reporta un incendio y un Despachador inicia la respuesta al incidente. Observe que este escena
rio es concreto en el sentido de que describe una sola instancia. No trata de describir todas las
situaciones posibles en las que se reporta un incidente de incendio.
www.FreeLibros.org
Actividades para la obtencin d e requerimientos 109
Nombre del escenario bodegaEnLlamas
Instancias de actores partid- r o b e r t o , a l i c i a : OficialCampo
juan: Despachador
1. Roberto, manejando por la calle principal en su patrulla, observa que
sale humo de una bodega. Su compaera, Alicia, activa la funcin
Reportar emergencia en su laptop FRIEND.
Z Alicia captura la direccin del edificio, una breve descripcin d e su
ubicacin (es decir, esquina noroeste) y un nivel de emergencia.
Adems d e un carro de bomberos, solicita varias ambulancias, ya
que el rea parece estar algo atareada. Confirma lo capturado y
espera el acuse de recibo.
3. Juan, el Despachador, e s alertado de que hay una emergencia
mediante un sonido de su estacin de trabajo. Revisa la informacin
enviada por Alicia y da el acuse de recibo del reporte. Asigna un
carro de bomberos y dos ambulancias al lugar del I n c i d e n t e y
enva la hora estimada de llegada (ETA) a Alicia.
4. Alicia recibe el acuse de recibo y la ETA.
Figura 4-5 Escenario bodegaEnLlamas para el caso de uso ReportarEmergencia.
Los escenarios pueden tener muchos usos diferentes durante la obtencin de requerimientos
y durante otras actividades del ciclo de vida. A continuacin se tiene una cantidad seleccionada
de tipos de escenarios tomados de [Carroll, 1995]:
Los escenarios tal como son describen una situacin actual. Por ejemplo, durante la rein
geniera se comprende al sistema actual observando a los usuarios y describiendo sus
acciones como escenarios. Luego se pueden validar estos escenarios con los usuarios para
ver si son correctos y precisos.
Los escenarios visionarios describen un sistema futuro, ya sea que se le est aplicando
reingeniera o se est diseando a partir de cero. Los desarrolladores usan los escenarios
como una representacin de diseo conforme retinan su idea del sistema futuro y como un
medio de comunicacin para obtener requerimientos de los usuarios. Los escenarios
visionarios pueden verse como un prototipo barato.
Los escenarios de evaluacin describen las tareas del usuario contra las que se va a eva
luar el sistema. La colaboracin por parte de usuarios y desarrolladores para la elaboracin
de los escenarios de evaluacin tambin mejora la definicin de la funcionalidad que se
prueba mediante estos escenarios.
Los escenarios de entrenamiento son cursos prcticos que se usan para introducir a los
nuevos usuarios al sistema. Son instrucciones paso a paso diseadas para llevar de la mano
al usuario a travs de tareas comunes.
En la obtencin de requerimientos, los desarrolladores y usuarios escriben y retinan una serie de
escenarios para obtener una comprensin compartida de lo que debe ser el sistema. En un prin
cipio, cada escenario puede ser de nivel alto e incompleto, como el escenario de bodegaEnLlamas.
Se pueden usar las siguientes preguntas para identificar escenarios:
paes
Flujo de eventos
www.FreeLibros.org
110 C apitulo 4 Obtencin d e requerimientos
Preguntas para identificar escenarios
Cules son las tareas que el actor quiere que realice el sistema?
Qu informacin consulta el actor? Quin crea esos datos? Se les puede modificar o eliminar?
Quin lo hace?
Qu cambios externos necesita informar el actor al sistema? Con cunta frecuencia? Cundo?
Cules eventos necesita el actor que le informe el sistema? Con cunta latencia?
Los desarrolladores usan los documentos existentes acerca del dominio de aplicacin para respon
der estas preguntas. Esos documentos incluyen manuales de usuario de sistemas anteriores, ma
nuales de procedimientos, estndares de la compaa, notas y trucos del usuario y entrevistas
con usuarios y clientes. Los desarrolladores siempre deben redactar los escenarios usando trmi
nos del dominio de aplicacin en vez de sus propios trminos. Conforme los desarrolladores
obtienen una mayor visin del dominio de aplicacin y las posibilidades de la tecnologa disponi
ble, refinan los escenarios en forma iterativa e incremental para incluir mayor cantidad de detalles.
El trazo de maquetas de interfaz de usuario a menudo ayuda a encontrar omisiones en la especi
ficacin y ayuda a que los usuarios se formen una imagen ms completa del sistema.
En el ejemplo FRIEND podemos identificar cuatro escenarios que abarcan el tipo de tareas
que se espera que apoye el sistema:
bodegaEnLlamas (figura 4-5): se detecta un incendio en una bodega y dos oficiales de
campo llegan a la escena y solicitan recursos.
dobladoDeDefensas. Sucede un accidente automovilstico sin vctimas en la autopista.
Los oficiales de polica documentan el incidente y manejan el trfico mientras son retira
dos los vehculos daados.
gatoEnrbol. Un gato queda atrapado en un rbol. Se llama a un camin de bomberos
para que recupere al gato. Debido a que el incidente es de baja prioridad, el carro de bom
beros se toma su tiempo para llegar a la escena. Mientras tanto, el impaciente propietario
del gato se sube al rbol, se cae y se rompe una pierna, requiriendo que se enve una ambu
lancia.
Temblor. Un temblor sin precedentes daa seriamente edificios y carreteras, abarcando
varios incidentes y disparando la activacin de un plan de operaciones de emergencia a
escala estatal. Se le notifica al gobernador. El dao a las carreteras impide la respuesta al
incidente.
El nfasis en la identificacin de actores y escenarios es para que los desarrolladores comprendan
el dominio de aplicacin y definan el sistema correcto. Esto da como resultado una compren
sin compartida de los procesos de trabajo del usuario que necesitan ser apoyados y el alcance
del sistema. Una vez que los desarrolladores identifican y describen a los actores y escenarios,
formalizan los escenarios hacia casos de uso.
4.4.3 Identificacin de casos de uso
Un escenario es una instancia de un caso de uso, esto es, un caso de uso especifica todos los
escenarios posibles para una parte de funcionalidad dada. Un caso de uso es iniciado por un actor.
www.FreeLibros.org
Actividades para la obtencin d e requerimientos 111
Nombre del caso de uso ReportarEmergencia
Actor participante Iniciado por OficialCampo
Se comunica con Despachador
Condicin inicial 1. El OficialCampo activa la funcin Reportar Emergencia de su
terminal.
Flujo de eventos 2. FRIEND responde presentando un formulario al oficial.
3. El OficialCampo llena e l formulario, seleccionando el nivel de
emergencia, tipo, ubicacin y una breve descripcin de la situacin.
El OficialCampo tambin describe respuestas posibles a la
situacin de emergencia. Una vez que ha llenado e l formulario,
e l OficialCampo lo enva y en e se momento se le notifica al
Despachador.
4. El Dsspachador revisa la informacin enviada y crea un Incidente
e n la base de datos llamando al caso de uso A b r i r l n c i d e n t e . El
Despachador selecciona una respuesta y da un acuse de recibo del
reporte de emergencia.
Condicin de salida 5. El OficialCampo recibe el acuse de recibo y la respuesta
seleccionada.
Requerimientos especiales Se da acuse de recibo del reporte del OficialCampo en menos de 30
segundos. La respuesta seleccionada llega antes de que transcurran
30 segundos a partir de que la enva el Despachador.
Figura 4-6 Un ejemplo de un caso de uso: el caso de uso ReportarEmergencia.
Despus de haber sido iniciado, un caso de uso tambin puede interactuar con otros actores. Un
caso de uso representa un flujo de eventos completo a travs del sistema, en el sentido de que
describe una serie de interacciones relacionadas que resultan de la iniciacin del caso de uso.
La figura 4-6 muestra el caso de uso ReportarEmergencia del cual es una instancia el
escenario bodegaEnLlamas (vea la figura 4-5). El actor OficialCampo inicia este caso de uso
activando la funcin Reportar Emergencia de FRIEND. El caso de uso se termina cuando el
actor OficialCampo recibe un acuse de recibo de que se ha creado un incidente. Este caso de
uso es general y comprende un rango de escenarios. Por ejemplo, el caso de uso ReportarEmer
g e n c i a tambin podra aplicarse al escenario dobladoDeDefens as . Los casos de uso pueden
escribirse con varios niveles de detalle, como sucede con los escenarios. El caso de uso Repor
t a rE m e rg e n ci a puede ser lo bastante ilustrativo como para describir la manera en que FRIEND
apoya el reporte de emergencias y para obtener retroalimentacin general del usuario, pero no
proporciona detalles suficientes para una especificacin del sistema.
www.FreeLibros.org
112 C apitulo 4 Obtencin d e requerimientos
4.4.4 Refinamiento de los casos de uso
La figura 4-7 es una versin refinada del caso de uso ReportarEmergencia. Ha sido
ampliada para incluir detalles acerca del tipo de incidente que conoce FRIEND e interacciones
detalladas que indican la manera en que el Despachador da el acuse de recibo al Of icialCampo.
Ubicacin Descripcin del caso de uso
Estacin del oficial de campo 1.
Estacin del despachador
Estacin del oficial de campo
El OficialCampo activa la funcin Reportar Emergencia de su
terminal.
2. FRIEND responde presentando un formulario al oficial. El
formulario incluye un men de tipos de emergencia (emergencia
general, incendio, transporte), y campos para ubicacin, descripcin
del incidente, peticin de recursos y materiales peligrosos.
3. El OficialCampo llena el formulario, especificando en forma
mnima el tipo de emergencia y los campos de descripcin. El
OficialCampo tambin puede describir respuestas posibles a la
situacin de emergencia y solicitar recursos especficos. Una vez
que ha llenado el formulario, e l OficialCampo lo enva oprimiendo
el botn Enviar Reporte y en ese momento se le notifica al
Despachador.
4. Al Despachador se le notifica un nuevo reporte de incidente
mediante un cuadro de dilogo desplegable. El Despachador
revisa la informacin enviada y crea un i n c i d e n t e en la base de
datos llamando al caso de uso A b r i r l n c i d e n t e . Toda la infor
macin contenida en el formulario del OficialCampo se incluye en
forma automtica en el In c i d e n t e . El Despachador selecciona
una respuesta asignando recursos al incidente (con el caso de uso
AsignarRecursos) y da un acuse de recibo al reporte de emer
gencia enviando un mensaje breve al OficialCampo.
5. El OficialCampo recibe el acuse de recibo y la respuesta
seleccionada.
Figura 4-7 Descripcin refinada del caso de uso ReportarEmergencia.
El uso de escenarios y casos de uso para definir la funcionalidad del sistema ayuda en la
creacin de requerimientos que son validados por el usuario al inicio del desarrollo. Conforme
empiezan el diseo y la implementacin del sistema se incrementa el costo de los cambios a la
especificacin del sistema y la adicin de nuevas funcionalidades no previstas. Aunque los reque
rimientos cambian hasta cerca del final del desarrollo, los desarrolladores y usuarios deben esfor
zarse para manejar desde el principio la mayora de los requerimientos. Esto implica muchos cam
bios y experimentacin durante la obtencin de requerimientos. Observe que muchos casos de uso
se escriben varias veces, otros se refinan mucho y otros, incluso, se eliminan por completo. Para
ahorrar tiempo se puede realizar mucho trabajo de exploracin usando escenarios y maquetas de
interfaz. Se puede usar la siguiente heurstica para la escritura de escenarios y casos de uso.
www.FreeLibros.org
Actividades para la obtencin d e requerimientos 113
Heurstica para la escritura de escenarios y c a s o s de u s o
Use escenarios para comunicarse con los usuarios y para validar la funcionalidad.
Primero refine una rebanada vertical reducida ( e s decir, un escenario) para comprender el estilo de
interaccin preferido por el usuario.
Luego defina una rebanada horizontal (es decir, muchos escenarios no muy detallados) para definir
el alcance del sistema. Valdelos con el usuario.
Use maquetas slo como un apoyo visual, ya que el diseo de interfaz de usuario debe darse como
una tarea separada una vez que la funcionalidad sea lo suficientemente estable.
Presente varias alternativas al usuario (en vez de extraer una sola alternativa del usuario).
Detalle una rebanada vertical amplia cuando el alcance del sistema y las preferencias del usuario
se tengan bien comprendidas. Valdelo con el usuario.
El enfoque de esta actividad es la suficiencia y la correccin. Los desarrolladores identifican la
funcionalidad que no est cubierta por los escenarios y la documentan con nuevos casos de uso.
Los desarrolladores describen casos que suceden rara vez y el manejo de excepciones tal como
es visto por los actores. Si los actores requieren un sistema de soporte de ayuda en lnea, los
desarrolladores lo describen con casos de uso durante esta actividad.
Una vez que la especificacin del sistema llega a ser estable se pueden tratar los asuntos de
rastreabilidad y redundancia, consolidando y reorganizando los actores y casos de uso.
4.4.5 Identificacin de las relaciones entre actores y casos de uso
Aun los sistemas de tamao medio tienen muchos casos de uso. Las relaciones entre actores
y casos de uso permiten que los desarrolladores y usuarios reduzcan la complejidad del modelo e
incrementen su comprensibilidad. Usamos las relaciones de comunicacin entre actores y casos de
uso para describir el sistema en capas de funcionalidad. Usamos relaciones extendidas para separar
el flujo comn de eventos del excepcional. Usamos relaciones de inclusin para reducir la redun
dancia entre casos de uso.
Relaciones de comunicacin entre actores y casos de uso
Las relaciones de comunicacin entre actores y casos de uso representan el flujo de infor
macin durante el caso de uso. Se debe distinguir entre el actor que inicia el caso de uso y los
dems actores con los que se comunica el caso de uso. Por lo tanto, el control de acceso (es
decir, cul actor tiene acceso a cul funcionalidad de clase) puede representarse a este nivel. Las
relaciones entre actores y casos de uso se identifican cuando se identifican los casos de uso. La
figura 4-8 muestra un ejemplo de relaciones de comunicacin en el caso del sistema FRIEND.
Relaciones extendidas entre casos de uso
Un caso de uso extiende otro caso de uso si el caso de uso extendido puede incluir el com
portamiento de la extensin bajo determinadas condiciones. En el ejemplo FRIEND, suponga que
se corta la conexin entre la estacin del Of icialCampo y la estacin del Despachador mientras
el OficialCampo est llenando el formulario (por ejemplo, el automvil del OficialCampo entra a
un tnel). La estacin del OficialCampo necesita comunicarle al OficialCampo que su formulario
no fue entregado y las medidas que debe tomar. El caso de uso ConexinPerdida est modelado
como una extensin a ReportarEmergencia (vea la figura 4-9). Las condiciones bajo las cuales se
www.FreeLibros.org
114 C apitulo 4 Obtencin d e requerimientos
F i g u r a 4-8 Ejemplo de relaciones de comunicacin entre actores y casos de uso en FRIEND (diagrama de
caso de uso UML). El O f i c i a l C a m p o inicia el caso de uso R e p o r t a r E m e r g e n c i a y el D e s p a c h a d o r
inicia los casos de uso A b r i r l n c i d e n t e y A s i g n a r R e c u r s o s . Los O f i c i a l C a m p o no pueden abrir en
forma directa un incidente o asignar recursos por s mismos.
inicia el caso de USO C o n e x i n P e r d i d a se describen en C o n e x i n P e r d i d a en vez de en R e p o r t a r E
m e r g e n c i a . La separacin del flujo de eventos excepcional y opcional con respecto al caso de uso
bsico tiene dos ventajas. Primera, el caso de uso bsico se hace ms pequeo y ms fcil de com
prender. Segunda, se hace distincin entre el caso comn y el excepcional, y esto permite que los
desarrolladores traten cada tipo de funcionalidad en forma diferente (por ejemplo, optimizar el
caso comn en su tiempo de respuesta, optimizar el caso excepcional en su claridad). Tanto el caso
de uso extendido como las extensiones son casos de uso completos por s mismos. Deben tener una
condicin inicial y otra final, y ser comprensibles por el usuario como un conjunto independiente.
F i g u r a 4-9 Ejemplo del uso de una relacin extendida (diagrama de caso de uso UML). C o n e x i n P e r d i d a
extiende al caso de uso R e p o r t a r E m e r g e n c i a . El caso de uso R e p o r t a r E m e r g e n c i a se hace ms corto y
se enfoca slo en reportar la emergencia.
Relaciones de inclusin entre casos de uso
Las redundancias entre casos de uso pueden factorizarse usando relaciones de inclusin.
Supongamos, por ejemplo, que un D e s p a c h a d o r necesita consultar el plano de la ciudad cuando
abre un incidente (por ejemplo, para verificar cules reas tienen riesgo durante un incendio) y
cuando asigna recursos (por ejemplo, para saber cules recursos estn ms cercanos al incidente).
En esta circunstancia, el caso de uso V e r P l a n o describe el flujo de eventos que se requieren
cuando se ve el plano de la ciudad, y es utilizado por los casos de uso A b r i r l n c i d e n t e y A s i g
n a r R e c u r s o s (figura 4-10).
La factorizacin del comportamiento compartido de casos de uso tiene muchos beneficios,
incluyendo descripciones ms cortas y menos redundancias. El comportamiento slo deber fac-
www.FreeLibros.org
Actividades para la obtencin d e requerimientos 1 1 5
F i g u r a 4-10 Ejemplo de relaciones de inclusin entre casos de uso. Ver P l a n o describe el flujo de eventos
para ver un mapa de la ciudad (por ejemplo, desplazamiento, acercamiento, consulta por nombre de calle)
y e s utilizado por los casos de uso A b r i r l n c i d e n t e y A s i g n a r R e c u r s o s .
torizarse en casos de uso separados si es compartido entre dos o ms casos de uso. La fragmenta
cin excesiva de la especificacin del sistema a travs de una gran cantidad de casos de uso hace
que la especificacin sea confusa para los usuarios y clientes.
Relaciones extendidas fren te a inclusin
Las construcciones de inclusin y extendidas son similares, y al principio puede ser que no
le quede claro al desarrollador cundo hay que usar cada una de ellas [Jacobson et al., 1992]. La
principal distincin entre estas construcciones es la direccin de la relacin. En el caso de una
relacin de inclusin, las condiciones bajo las cuales se inicia el caso de uso estn descritas en el
caso de uso iniciador como un evento en el flujo de eventos. En el caso de una relacin exten
dida, las condiciones bajo las cuales se inicia la extensin estn descritas en la extensin como
una condicin inicial. La figura 4-11 muestra el ejemplo C o n e x i n P e r d i d a descrito con una rela
cin de inclusin (columna izquierda) y con una relacin extendida (columna derecha). En la
columna izquierda necesitamos insertar texto en dos lugares del flujo de eventos en donde puede
llamarse al caso de uso C o n e x i n P e r d i d a . Tambin, si se describen situaciones excepcionales
adicionales (por ejemplo, una funcin Ayuda en la estacin O f i c i a l C a m p o ) el caso de uso
R e p o r t a r E m e r g e n c i a tendr que modificarse y llegar a atiborrarse con condiciones. En la
columna derecha slo necesitamos describir las condiciones bajo las cuales se llama al caso de
uso. Adems, se pueden aadir situaciones excepcionales adicionales sin modificar el caso de uso
bsico (por ejemplo, R e p o r t a r E m e r g e n c i a ) . La habilidad para extender el sistema sin modificar
las partes existentes es crtica, ya que nos permite aseguramos que el comportamiento original
queda intacto.
En resumen, se puede usar la siguiente heurstica para seleccionar una relacin extendida
o de inclusin.
Heurstica para las relaciones extendidas y de inclusin
Use relaciones extendidas para comportamientos excepcionales, opcionales o que rara vez
suceden.
Use relaciones de inclusin para comportamientos que se comparten entre dos o ms casos de uso.
www.FreeLibros.org
1 1 6 C apitulo 4 Obtencin d e requerimientos
R e p o r t a r E m e r g e n c i a (relacin de inclusin)
1. ...
2. ...
3. El O f i c i a l C a m p o llena el formulario seleccio
nando el nivel de emergencia, tipo, ubicacin
y una breve descripcin de la situacin. El
O f i c i a l C a m p o tambin describe respuestas
posibles a la situacin de emergencia. Una vez
que est lleno el formulario, el O f i c i a l C a m p o
lo enva y en ese momento se le notifica al
Despa cha dor .
Si se perdi la conexin con el Despachador se
usa el caso de uso ConexinPerdida.
4. Si la conexin existe, e l D e s p a c h a d o r revisa
la informacin enviada y crea un i n c i d e n t e
en la base de datos llamando al caso de uso
A b r i r l n c i d e n t e . El D e s p a c h a d o r selec
ciona una respuesta y da un acuse de recibo al
reporte de emergencia.
Si se perdi la conexin se usa el caso de uso
ConexinPerdida.
5. ...
C o n e x i n P e r d i d a (relacin de inclusin)
1. Se le notifica a l O f i c ia lC a m p o y al Despa
c h a d o r que la conexin se ha perdido. Se les
avisa de las posibles razones por las cuales pudo
ocurrir el evento (por ejemplo, est en un tnel
la estacin del O f i c ia lC a m p o ? ).
2. Se registra la situacin en el sistema y se recu
pera cuando se vuelve a establecer la conexin.
3. El O f i c i a l C a m p o y e l D e s p a c h a d o r se ponen
en contacto por otros medios y el D e s p a c h a d o r
inicia R e p o r t a r E m e r g e n c i a desde la estacin
del D e s p a c h a d o r .
R e p o r t a r E m e r g e n c i a (relacin extendida)
1. ...
2. ...
3. El O f i c i a l C a m p o llena el formulario seleccio
nando el nivel de emergencia, tipo, ubicacin
y una breve descripcin de la situacin. El
O f i c i a l C a m p o tambin describe respuestas
posibles a la situacin de emergencia. Una vez
que est lleno el formulario, el O f i c i a l C a m p o
lo enva y en ese momento se le notifica al
D e s p a ch a d o r .
4. El D e s p a c h a d o r revisa la informacin enviada
y c r e a un I n c i d e n t e en la b a se de datos
llamando al caso de uso A b r i r l n c i d e n t e . El
D e s p a c h a d o r selecciona una respuesta y da un
acuse de recibo al reporte de emergencia.
5. ...
C o n e x i n P e r d i d a (relacin extendida)
El caso de uso ConexinPerdida extiende a Re
portarEmergencia cuando se pierde la conexin
entre el OficialCampo y el Despachador.
1. Se le notifica al O f i c i a l C a m p o y al Despa
c h a d o r que la conexin se ha perdido. Se les
avisa de las posibles razones por las cuales
pudo ocurrir el evento (por ejemplo, est en
un tnel la estacin del O f i c i a l C a m p o ? ).
2. Se registra la situacin en el sistema y se recu
pera cuando se vuelve a establecer la conexin.
3. El O f i c i a l C a m p o y el D e s p a c h a d o r se ponen
en contacto por otros medios y e l D e spa cha dor
inicia R e p o r t a r E m e r g e n c i a desde la estacin
del D e s p a ch a d o r .
F i g u r a 4-11 Adicin de la condicin excepcional C o n e x i n P e r d i d a a R e p o r ta r E m e r g e n c ia . Se usa una
relacin extendida para el flujo de eventos excepcional y opcional, ya que produce una descripcin ms modular.
En todos los casos el propsito de la adicin de relaciones de inclusin y extendidas es
reducir o eliminar redundancias del modelo del caso de uso, eliminando, por lo tanto, inconsisten
cias potenciales.
www.FreeLibros.org
Actividades para la obtencin d e requerimientos 1 1 7
4.4.6 Identificacin inicial de los objetos de anlisis
Uno de los primeros obstculos que encuentran los desarrolladores y los usuarios cuando
colaboran es la terminologa diferente. Se produce una falta de comprensin por usar los mismos
trminos en contextos diferentes y con diferente significado. Aunque los desarrolladores con el
tiempo aprenden la terminologa de los usuarios, es probable que vuelvan a encontrar este pro
blema cuando aadan nuevos desarrolladores al proyecto.
Una vez que se han consolidado los casos de uso, los desarrolladores identifican los obje
tos participantes en cada caso de uso. Los objetos participantes corresponden a los conceptos
principales del dominio de aplicacin. Los desarrolladores los identifican, nombran y describen
sin ambigedad, y los renen en un glosario.
Este glosario se incluye en la identificacin del sistema y ms adelante en los manuales de
usuario. Los desarrolladores mantienen actualizado este glosario conforme evoluciona la especi
ficacin del sistema. Son muchos los beneficios del glosario: los nuevos desarrolladores quedan
expuestos a un conjunto de definiciones consistentes, un solo trmino se usa para cada contexto
(en vez de un trmino del desarrollador y un trmino del usuario) y cada trmino tiene un signifi
cado oficial preciso y claro.
La identificacin de los objetos participantes da como resultado el modelo de anlisis inicial.
La identificacin de los objetos participantes durante la obtencin de requerimientos constituye sola
mente un primer paso hacia el modelo de anlisis completo. El modelo de anlisis completo no se
usa, por lo general, como medio de comunicacin entre usuarios y desarrolladores, ya que con fre
cuencia los usuarios no estn familiarizados con los conceptos orientados a objetos. Sin embargo, la
descripcin de los objetos (es decir, la definicin de los trminos en el glosario) y sus atributos son
visibles para los usuarios y se revisan. En el captulo 5, Anlisis, describimos con ms detalle los refi
namientos posteriores del modelo de anlisis.
En la literatura se han propuesto muchas heursticas para la identificacin de objetos. stas
son unas cuantas seleccionadas:
Heursticas para la identificacin inicial de l o s objetos de anlisis
Trminos que los desarrolladores o los usuarios necesitan aclarar para comprender el caso de uso.
Nombres recurrentes en los casos de uso (por ejemplo, i n c i d e n t e ) .
Entidades del mundo real de las que el sistema necesita llevar cuenta (por ejemplo, Of i c i a l C a m p o ,
R e cu r s o ).
Procesos del mundo real de los que el sistema necesita llevar cuenta (por ejemplo,
P l a n O p e r a c i o n e s E m e r g e n c i a ) .
Casos de uso (por ejemplo, R e p o r t a r E m e r g e n c i a ) .
Orgenes o destinos de datos (por ejemplo, i m p r e s o r a ) .
Artefactos de interfaz (por ejemplo, E s t a c i n ) .
Siempre hay que usar trminos del dominio de aplicacin.
Durante la obtencin de requerimientos se generan objetos participantes para cada caso de uso. Si dos
casos de uso se refieren al mismo concepto, el objeto correspondiente deber ser el mismo. Si dos obje
tos comparten el mismo nombre y no corresponden al mismo concepto, se le cambia el nombre a uno
de los conceptos o a ambos para reconocer y enfatizar su diferencia. Esta consolidacin elimina
cualqjier ambigedad en la terminologa usada. Por ejemplo, la tabla 4-2 muestra los objetos partici
pantes iniciales que identificamos para el caso de uso R e p o r t a r E m e r g e n c i a .
www.FreeLibros.org
118 C apitulo 4 Obtencin d e requerimientos
Tabla 4-2 Objetos participantes en el caso de uso R e p o r t a r E m e r g e n c i a .
D e s p a c h a d o r
Es un oficial de polica que administra I n c i d e n t e s . Un D e s p a c h a d o r ,
abre, documenta y cierra incidentes en respuesta a reportes de emergencia y
otras comunicaciones con los O f i c ia lC a m p o . Los D e s p a c h a d o r se iden
tifican mediante sus nmeros de identificacin.
R e p o r te D e Em e r g en -
c i a
Es el reporte inicial acerca de un i n c i d e n t e que hace un O f i c ia lC a m p o
hacia un E e s p a c h a d o r . Por lo general, un Re p o r te D e Em e r g en c ia activa la
creacin de un I n c i d e n t e por parte del D e s p a c h a d o r . Un ReporteDe-
B n e r g e n c i a est compuesto de un nivel de emergencia, un tipo (incendio,
accidente de carretera u otro), una ubicacin y una descripcin.
O f i c i a l C a m p o Es un oficial de polica o bombero que est trabajando. Un O f i c ia lC a m p o
puede asignarse, a lo mucho, a un i n c i d e n t e a la vez. Los O f i c ia lC am po se
identifican mediante sus nmeros de identificacin.
I n c i d e n t e
Es una situacin que requiere atencin de un O f i c ia lC am p o . Un i n c i d e n t e
puede ser reportado al sistema por un O f i c i a l C a m p o o por alguna persona
ajena al sistema. Un i n c i d e n t e est compuesto por una descripcin, una res
puesta, un estado (abierto, cerrado, documentado), una ubicacin y una can
tidad de OficialCampo.
Una vez que los objetos participantes estn identificados y consolidados, los desarrolla
dores pueden usarlos como lista de verificacin para asegurarse que est completo el conjunto de
casos de uso identificados.
Heurstica para la revisin cruzada de c a s o s de u s o y objetos participantes
Cul caso de uso crea a este objeto (es decir, durante cules casos de uso se dan al sistema los
valores de los atributos del objeto)? Cules actores pueden tener acceso a esta informacin?
Cules casos de uso modifican y destruyen este objeto (es decir, cules casos de uso editan o
eliminan esta informacin del sistema)? Cul actor puede iniciar estos casos de uso?
Es necesario este objeto?, es decir, hay al menos un caso de uso que depende de esta informacin?
Cuando los desarrolladores identifican nuevos casos de uso, describen e integran el nuevo caso de uso
en el modelo siguiendo el proceso descrito antes. Cn frecuencia, en la actividad de obtencin de
requerimientos, los cambios de perspectiva introducen modificaciones en la especificacin del sistema
(por ejemplo, la localizacin de nuevos objetos participantes activa la adicin de nuevos casos de uso, y
la adicin de nuevos casos de uso activa la adicin o refinamiento de tos nuevos objetos participantes).
Se debe tena prevista esta inestabilidad y motivar el cambio de paspectivas. Por la misma razn, las
tareas que se llevan mucho tiempo, como la descripcin de casos excepcionales y el refinamiento de
interfaces de usuario, se deben posponer hasta que el conjunto de casos de uso sea estable.
4.4.7 Identificacin de requerimientos no funcionales
Los requerimientos no funcionales describen aspectos del sistema visibles para el usuario que
no estn relacionados en forma directa con el comportamiento funcional del sistema. Los reque
rimientos no funcionales abarcan varios asuntos, desde la apariencia de la interfaz de usuario hasta
www.FreeLibros.org
Actividades para la obtencin d e requerimientos 1 1 9
los requerimientos de tiempo de respuesta y las cuestiones de seguridad. Los requerimientos no
funcionales se definen al mismo tiempo que los funcionales, debido a que tienen mucho impacto
en el desarrollo y costo del sistema.
Por ejemplo, considere una pantalla en mosaico que usa un controlador de trfico areo para
el seguimiento de los aviones. Un sistema de pantalla en mosaico recopila datos de una serie de
radares y bases de datos (por eso el trmino mosaico) en una pantalla de resumen que indica
todas las aeronaves que estn en determinada rea, incluyendo su identificacin, velocidad y altitud.
La cantidad de aeronaves que puede mostrar tal sistema restringe el desempeo del controlador de
trfico areo y el costo del sistema. Si el sistema slo puede manejar unas cuantas aeronaves en
forma simultnea, no podr usarse en aeropuertos con mucho trfico. Por otro lado, es ms costoso
y complejo construir un sistema capaz de manejar una gran cantidad de aeronaves.
Los requerimientos no funcionales pueden obtenerse investigando los siguientes temas:
Interfaz de usuario y factores humanos. Qu tipo de interfaz debe proporcionar el
sistema? Cul es el nivel de experiencia de los usuarios?
Documentacin. Qu nivel de documentos se requiere? Slo deber proporcionarse
documentacin para los usuarios? Deber haber documentacin tcnica para mante
nimiento? Deber documentarse el proceso de desarrollo?
Consideraciones de hardware. Hay requerimientos de compatibilidad de hardware?
Interactuar el sistema con otros sistemas de hardware?
Caractersticas de desempeo. Qu tan sensible debe ser el sistema? Qu tantos usua
rios concurrentes debe soportar? Cul es la carga tpica o extrema?
Manejo de errores y condiciones extremas. Cmo debe manejar el sistema las excep
ciones? Qu excepciones debe manejar el sistema? Cul es el peor ambiente en que se
espera que se desempee el sistema? Hay requerimientos de seguridad en el sistema?
Asuntos de calidad. Qu tan confiable, disponible y robusto debe ser el sistema? Cul
es la participacin del cliente en la valoracin de la calidad del sistema o en el proceso de
desarrollo?
Modificaciones ai sistema. Cul es el alcance previsto de cambios futuros? Quin reali
zar los cambios?
Ambiente fsico. Cundo se entregar el sistema? Hay factores extemos, como las
condiciones climticas, que debe resistir el sistema?
Cuestiones de seguridad. El sistema deber estar protegido contra intrusiones extemas o
usuarios malintencionados? En qu nivel?
Cuestiones de recursos. Cules son las restricciones en los recursos consumidos por el
sistema?
Una vez que se han identificado y descrito todos los requerimientos no funcionales se les asigna
prioridad de acuerdo con su importancia. Aunque la mayora de los requerimientos no funcionales
son muy deseables, algunos de ellos necesitan satisfacerse para que el sistema opere en forma
correcta.
www.FreeLibros.org
1 2 0 C apitulo 4 Obtencin d e requerimientos
4.5 Administracin de la obtencin de requerimientos
En la seccin anterior describimos las cuestiones tcnicas del modelado de un sistema desde el punto
de vista de tos casos de uso. Sin embargo, el modelado de casos de uso no constituye, por s mismo,
la obtencin de requerimientos. Aun despus de que se convierten en expertos modeladores de casos
de uso, los desarrolladores todava necesitan obtener requerimientos de los usuarios y llegar a un
acuerdo con el cliente. En esta seccin describimos mtodos para la obtencin de informacin de los
usuarios y la negociacin de un acuerdo con un cliente. En particular describimos:
La obtencin de requerimientos a partir de los usuarios: conocimiento del anlisis de tareas
(KAT) (seccin 4.5.1).
Negociacin de una especificacin con los clientes: diseo conjunto de aplicaciones (JAD)
(seccin 4.5.2).
Validacin de requerimientos: pruebas de utilidad (seccin 4.5.3).
Documentacin de la obtencin de requerimientos (seccin 4.5.4).
4.5.1 Obtencin de informacin de los usuarios:
conocimiento del anlisis de tareas
El anlisis de tareas se origin en Estados Unidos y en el Reino Unido en los aos cin
cuenta y sesenta [Johnson, 1992]. En un principio el anlisis de tareas no se preocupaba por los
requerimientos o el diseo de sistemas. El anlisis de tareas se us para identificar la manera en
que deba entrenarse a las personas. En Estados Unidos los militares se interesaron en el anlisis
de tareas sobre todo para disminuir el costo del entrenamiento. En el Reino Unido el Departa
mento de Comercio e Industria se interes en el anlisis de tareas para desarrollar mtodos que
permitieran a las personas moverse entre industrias. Ms recientemente, el anlisis de tareas ha
llegado a ser importante en el campo de la interaccin entre humanos y computadoras (HCI, por
sus siglas en ingls) para identificar y describir las tareas del usuario que debe apoyar el sistema.
El anlisis de tareas se basa en la suposicin de que es poco eficiente pedir a tos usuarios que
describan lo que hacen y la manera en que lo hacen. Los usuarios, por lo general, no piensan en forma
explcita en la secuencia de tareas que se requieren para realizar su trabajo, ya que con frecuencia
repiten estas tareas muchas veces. Cuando se pregunta a los usuarios la manera en que realizan su tra
bajo, describen, en el mejor de los casos, la manera en que se supone que lo realizan, y esto puede
estar muy lejano de la realidad. En consecuencia, el anlisis de tareas usa la observacin como una
alternativa para construir un modelo de tarea inicial. Este modelo de tarea inicial se refina luego pre
guntndole a los usuarios por qu realizan una tarea de determinada forma.
El conocimiento del anlisis de tareas (KAT, por sus siglas en ingls) es un mtodo de
anlisis de tareas propuesto por Johnson [Johnson, 1992]. Se interesa en la recoleccin de datos a
partir de una diversidad de fuentes (por ejemplo, anlisis de protocolo, procedimientos estndar,
libros de texto, entrevistas), analizndolos para identificar elementos individuales involucrados en
la tarea (por ejemplo, objetos, acciones, procedimientos, objetivos y subobjetivos) y construye un
modelo del conocimiento general que usa la gente para realizar las tareas que le interesan. El KAT
es una tcnica de anlisis orientado a objetos, ya que representa el dominio de aplicacin desde el
punto de vista de objetos y acciones.
Se puede resumir al KAT con los cinco pasos siguientes:
1. Identificacin de objetos y acciones. Se identifican los objetos y acciones asociadas con
los objetos usando tcnicas similares a las de la identificacin de objetos en el anlisis
www.FreeLibros.org
Administracin d e la obtencin d e requerimientos 121
orientado a objetos, como el anlisis de libros de texto, manuales, reglamentos, reportes,
entrevistas con quien realiza la tarea y la observacin de quien realiza la tarea.
2. Identificacin de procedimientos. Un procedimiento es un conjunto de acciones, una condicin
previa necesaria para activar el procedimiento y una condicin posterior. Las acciones pueden
estar ordenadas en forma parcial. Los procedimientos se identifican mediante la redaccin
de escenarios, la observacin de quien realiza la tarea y pidindole a quien realiza la tarea
que seleccione y ordene tarjetas en las que se escriben acciones individuales.
3. Identificacin de objetivos y subobjetivos. Un objetivo es un estado a lograr para que la tarea
sea satisfactoria. Los objetivos se identifican mediante entrevistas durante la realizacin de
una tarea o despus de ella. Los subobjetivos se identifican descomponiendo los objetivos.
4. Identificacin del carcter tpico y la importancia. Cada elemento identificado se califica
de acuerdo con la frecuencia con que se le encuentra y si es necesario para la realizacin de
un objetivo.
5. Construccin de un modelo de la tarea. La informacin recopilada antes se generaliza
para tomar en cuenta las caractersticas comunes que hay entre las tareas. Se relacionan los
objetivos, procedimientos y objetos correspondientes usando una notacin textual o una
grfica. Por ltimo se valida el modelo con quien realiza la tarea.
Aunque el anlisis de tareas y el KAT no son mtodos para la obtencin de requerimientos por s
mismos (no producen una descripcin del sistema de software futuro), pueden beneficiar en gran
medida la actividad de obtencin de requerimientos en varias formas:
Durante la obtencin proporcionan tcnicas para obtener y describir el conocimiento del
dominio de aplicacin, incluyendo informacin como el carcter tpico y la importancia de
acciones especficas, y el resultado final es comprensible para quien realiza la tarea.
Cuando se definen las fronteras de un sistema, los modelos de tarea ayudan a determinar cules
partes de la tarea deben seguir siendo manuales y cules deben automatizarse; adems, el
modelo de tarea puede revelar reas problemticas en el sistema actual.
Cuando se disea la interfaz del sistema los modelos de tareas sirven como una fuente de
inspiracin para metforas comprensibles por parte del usuario [Nielsen y Mack, 1994].
Para mayor informacin sobre el KAT, el lector deber consultar literatura especializada [Johnson,
1992].
4.5.2 Negociacin de especificaciones con los clientes:
diseo conjunto de aplicaciones
El diseo conjunto de aplicaciones (JAD, por sus siglas en ingls) es un mtodo de
requerimientos desarrollado por IBM a finales de los setenta. Su efectividad radica en que el tra
bajo de obtencin de requerimientos se realiza en una sola sesin de trabajo en la que participan
todos los involucrados. Usuarios, clientes, desarrolladores y un lder de sesin entrenado se sientan
juntos en un saln para presentar sus puntos de vista, escuchar los puntos de vista de los dems,
negociar y ponerse de acuerdo en una solucin mutuamente aceptable. El resultado de la sesin de
trabajo, el documento JAD final, es un documento de especificacin de sistema completo que
incluye definiciones de elementos de datos, flujos de trabajo y pantallas de interfez. Debido a que el
www.FreeLibros.org
1 2 2 C apitulo 4 Obtencin d e requerimientos
documento final es desarrollado en forma conjunta por todos los interesados (es decir, los participantes
que no slo tienen un inters en el xito del proyecto sino que tambin pueden tomar decisiones sus
tanciales), el documento JAD final representa un acuerdo entre usuarios, clientes y desarrolladores y,
por lo tanto, minimiza los cambios de requerimientos posteriores en el proceso de desarrollo.
El JAD est compuesto de cinco actividades (resumidas en la figura 4-12):
D e f i n i c i n
d e l p r o y e c t o
G u i a de d e f i n i c i n
a d m i n i s t r a t i v a
JL
I n v e s t i g a c i n
Agenda de s e s i n
E s p e c i f i c a c i n
p r e l i m i n a r
P r e p a r a c i n
Documento
de t r a b a j o
Guin de l a s e s i n
i
f P r e p a r a c i n \
d e l d oc ume nt o
v f i n a l /
Documento f i n a l
F i g u r a 4-12 Actividades del JAD (diagrama de actividad UML). El corazn del JAD e s la actividad
S e s i n durante la cual todos los interesados disean y se ponen de acuerdo en una especificacin del
sistema. Las actividades anteriores a la S e s i n incrementan al mximo su ef iciencia. La produccin
del documento final asegura que se capturen las decisiones tomadas durante la S e s i n .
www.FreeLibros.org
Administracin d e la obtencin d e requerimientos 1 2 3
1. Definicin del proyecto. Durante esta actividad el coordinador JAD entrevista a gerentes
y clientes para determinar los objetivos y el alcance del proyecto. Lo que encuentra en las
entrevistas se recopila en la gua de definicin administrativa. Durante esta actividad, el
coordinador JAD forma un equipo compuesto por usuarios, clientes y desarrolladores.
Estn representados todos los interesados, y los participantes tienen la capacidad de tomar
decisiones conjuntas.
2. Investigacin. Durante esta actividad el coordinador JAD entrevista a los usuarios presentes
y futuros, recopila informacin del dominio y describe los flujos de trabajo. El coordinador
JAD tambin inicia una lista de asuntos que necesitarn tratarse durante la reunin. Los
resultados principales de la actividad de investigacin son una agenda de sesin y una
especificacin preliminar que lista el flujo de trabajo y la informacin del sistema.
3. Preparacin. Durante esta actividad el coordinador JAD prepara la sesin. El coordinador
JAD crea un documento de trabajo, primer borrador del documento final, una agenda para
la sesin y cualquier cantidad de filminas o grficas que representan la informacin reco
pilada durante la actividad de investigacin.
4. Sesin. Durante esta actividad el coordinador JAD gua al equipo para la creacin de la
especificacin del sistema. Una sesin JAD dura de tres a cinco das. El equipo define y se
pone de acuerdo en el flujo de trabajo, los elementos de datos, las pantallas y los reportes del
sistema. Todas las decisiones se documentan mediante un escribano que llena formularios
JAD.
5. Documento final. El coordinador JAD prepara el documento final revisando el documento de
trabajo para que incluya todas las decisiones tomadas durante la sesin. El documento final
representa una especificacin completa del sistema acordada durante la sesin. El documento
final se distribuye a los participantes en la sesin para que lo revisen. Luego los participantes se
renen durante una a dos horas para discutir las revisiones y finalizar el documento.
El JAD ha sido usado en forma satisfactoria por IBM y otras compaas. El JAD eleva la dinmica
de grupo para mejorar la comunicacin entre participantes y para acelerar el consenso. Al final de
una sesin JAD, los desarrolladores tienen mayor conocimiento de las necesidades de los usuarios
y los usuarios tienen ms conocimiento de los compromisos del desarrollo. Resultan ganancias
adicionales de la reduccin de actividades de rediseo a lo largo del desarrollo. Debido a que se
apoya en la dinmica social, el xito de una sesin JAD depende a menudo de las habilidades del
coordinador JAD como facilitador en la reunin.
4.5.3 Validacin de requerimientos: prueba de utilidad
Las pruebas de utilidad examinan la comprensin que tiene el usuario del modelo de los
casos de uso. Las pruebas de utilidad encuentran problemas en la especificacin del sistema per
mitiendo que los usuarios exploren el sistema o slo parte de l (por ejemplo, la interfaz de
usuario). Las pruebas de utilidad tambin se interesan en los detalles de la interfaz de usuario,
como la apariencia de la interfaz de usuario, la disposicin geomtrica de las pantallas y el hard
ware. Por ejemplo, en el caso de una computadora que se lleva en el cuerpo, una prueba de utilidad
podra comprobar la habilidad del usuario para darle comandos al sistema mientras se encuentra
en una posicin difcil, como el caso de un mecnico viendo una pantalla debajo de un auto
mvil mientras revisa el silenciador del escape.
www.FreeLibros.org
124 C apitulo 4 Obtencin d e requerimientos
Las pruebas de utilidad se basan en experimentos que identifican deficiencias que los desa-
rrolladores corrigen en forma iterativa [Rubin, 1994]. La tcnica para la realizacin de las pruebas de
utilidad se basa en el enfoque clsico para la realizacin de un experimento controlado. Los desarro
lladores formulan un objetivo de la prueba y luego lo verifican manipulando parmetros experimen
tales seleccionados bajo condiciones controladas. Los desarrolladores estudian en fama minuciosa
tos valores de estos parmetros para identificar las relaciones de causa y efecto estadsticamente sig
nificativas. Aunque este tipo de enfoque podra usarse para cualquier parmetro, las pruebas de utili
dad se enfocan en parmetros de utilidad, como la facilidad para el aprendizaje del sistema, el tiempo
para realizar una tarea o la tasa de errores que comete un usuario cuando realiza una tarea.
Hay dos diferencias importantes entre los experimentos clsicos y las pruebas de utilidad.
Mientras que el mtodo experimental clsico est diseado para confirmar o refutar una hipte
sis, el objetivo de las pruebas de utilidad es obtener informacin cualitativa sobre la manera de
resolver problemas de utilidad y la manera de mejorar el sistema. Otra diferencia es el rigor con
que necesitan realizarse los experimentos. Se ha mostrado que es de mucha ayuda incluso una
serie de pruebas enfocadas rpidas que se inician desde la obtencin de requerimientos. Nielsen
usa el trmino ingeniera de utilidad descontada para indicar que unas cuantas pruebas de uti
lidad son mejor que ninguna [Nielsen, 1993].
Hay tres tipos de pruebas de utilidad:
Prueba de escenario. Durante esta prueba se presenta un escenario visionario del sistema
ante uno o ms usuarios. Los desarrolladores identifican qu tan rpido pueden comprender
tos usuarios el escenario, con cunta precisin representa su modelo de trabajo y qu tan po
sitivamente reaccionan a la descripcin del nuevo sistema. Los escenarios seleccionados
debern ser lo ms realistas y detallados posible. Una prueba de escenario permite una retro-
alimentacin rpida y frecuente del usuario. Las pruebas de escenario pueden realizarse
como maquetas en papel2 o con un ambiente prototipo simple, el cual con frecuencia es ms
fcil de aprender que el ambiente de programacin que se usa para el desarrollo. La ventaja
de las pruebas de escenario es que es barato realizarlas y repetirlas. La desventaja es que el
usuario no puede interactuar en forma directa con el sistema y que los datos son fijos.
Prueba de prototipo. Durante este tipo de prueba se presenta ante uno o ms usuarios un frag
mento de software que prcticamente implementa al sistema. Un prototipo vertical implementa
un caso de uso completo a lo largo del sistema y un prototipo horizontal presenta una interfaz
para la mayora de los casos de uso (propacionando poca o ninguna funcionalidad). Las ven
tajas de las pruebas de prototipo consisten en que proporcionan una vista realista del
sistema ante el usuario y que se pueden implementar tos prototipos para recolectar datos deta
llados. Las desventajas de tos prototipos son los altos costos de producirlos y modificarlos.
Prueba de producto. Esta prueba es similar a la de prototipo, a excepcin de que se usa una
versin funcional del sistema en vez del prototipo. Una prueba de producto slo puede
2. El uso del guin sinptico, una tcnica de la industria de los dibujos animados, consiste en bocetar una secuencia de
imgenes de la pantalla en diferentes puntos del escenario. Luego se ordenan las imgenes de cada escenario en
forma cronolgica en un tablero colocado en la pared. Los desarrolladores y usuarios pueden desplazarse por el
saln mientras revisan y discuten los escenarios. Si se tiene un saln de buen tamao, los participantes pueden ver
varios cientos de bocetos.
www.FreeLibros.org
Administracin d e la obtencin d e requerimientos 1 2 5
realizarse una vez que ya se ha desarrollado la mayor parte del sistema. Tambin requiere
que el sistema sea fcil de modificar para que los resultados de la prueba de utilidad puedan
tomarse en cuenta.
En los tres tipos de pruebas, los elementos bsicos para la prueba de utilidad incluyen [Rubin, 1994]:
Desarrollo de los objetivos de la prueba.
Uso de una muestra representativa de usuarios finales.
Uso del sistema en el ambiente de trabajo actual o simulado.
Participacin de los usuarios finales.
Interrogatorio extenso y controlado, y prueba de los usuarios por la persona que realiza la
prueba de utilidad.
Recopilacin y anlisis de resultados cuantitativos y cualitativos.
Recomendaciones sobre la manera de mejorar el sistema.
Los objetivos tpicos de la prueba en una prueba de utilidad abordan la comparacin de dos estilos
de interaccin del usuario, la identificacin de la mejor y la peor caractersticas en un escenario
o prototipo, los obstculos principales, la identificacin de caractersticas tiles para usuarios
novatos y expertos, cundo se necesita la ayuda y el tipo de informacin de entrenamiento que se
requiere.
Uno de los principales problemas de las pruebas de utilidad es conseguir a los participantes.
Hay varios obstculos que enfrentan los gerentes de proyecto para la seleccin de usuarios finales
reales [Grudin, 1990]:
El gerente del proyecto, por lo general, tiene miedo de que los clientes hagan a un lado a las
organizaciones de soporte tcnico establecidas y llamen directamente a los desarrolladores una
vez que saben la manera de llegar a ellos. Una vez que se establece esta lnea de comunicacin
puede ser que los desarrolladores sean distrados con mucha frecuencia de sus trabajos asignados.
El personal de ventas no quiere que los desarrolladores hablen con sus clientes. Los
vendedores tienen miedo de que puedan ofender al cliente o de crear insatisfaccin con la
generacin actual de productos (que todava deben vender).
Los usuarios finales no tienen tiempo.
A los usuarios finales no les gusta que los estudien. Por ejemplo, un mecnico de auto
mviles puede pensar que un sistema que comprenda ms aspectos de la realidad lo dejar
sin trabajo.
Interrogar a los participantes es la clave para llegar a una comprensin sobre la manera de mejorar
la utilidad del sistema que se est probando. Aunque las pruebas de utilidad descubren y exponen
problemas, con frecuencia es el interrogatorio el que ilustra, en primer lugar, por qu han sucedido
estos problemas. Es importante escribir las recomendaciones sobre la manera de mejorar los com
ponentes probados lo ms pronto posible despus de que termina la prueba de utilidad para que
puedan usarlas los desarrolladores a fin de poner en prctica cualquier cambio necesario en los
modelos del sistema del componente probado.
Para mayores detalles sobre las pruebas de utilidad, el lector deber acudir a la literatura
especializada [Rubin, 1994], [Nielsen y Mack, 1994].
www.FreeLibros.org
126 C apitulo 4 Obtencin d e requerimientos
4.5.4 Documentacin de la obtencin de requerimientos
Los resultados de la actividad de obtencin de requerimientos y la actividad de anlisis se
documentan en el documento de anlisis de requerimientos (RAD, por sus siglas en ingls).
Este documento describe por completo al sistema desde el punto de vista de los requerimientos
funcionales y no funcionales, y sirve como una base contractual entre el cliente y los desarrolla
dores. La audiencia del RAD incluye al cliente, los usuarios, los administradores del proyecto,
los analistas del sistema (es decir, los desarrolladores que participan en los requerimientos) y los
diseadores del sistema (es decir, los desarrolladores que participan en el diseo del sistema). La
primera parte del documento, incluyendo los casos de uso y los requerimientos no funcionales,
se escribe durante la obtencin de requerimientos. La formalizacin de la especificacin en trmi
nos de modelos de objetos se escribe durante el anlisis. La siguiente es una plantilla de ejemplo
para un RAD:
Documento de a n li si s de requerimientos
1. Introduccin
1.1 Propsito del sistema
1.2 Alcance del sistema
1.3 Objetivos y criterios de xito del proyecto
1.4 Definiciones, siglas y abreviaturas
1.5 Referencias
1.6 Panorama
2. Sistema actual
3. Sistema propuesto
3.1 Panorama
3.2 Requerimientos funcionales
3.3 Requerimientos no funcionales
3.3.1 Interfaz de usuario y factores humanos
3.3.2 Documentacin
3.3.3 Consideraciones de hardware
3.3.4 Caractersticas de desempeo
3.3.5 Manejo de errores y condiciones extremas
3.3.6 Cuestiones de calidad
3.3.7 Modificaciones al sistema
3.3.8 Ambiente fsico
3.3.9 Cuestiones de seguridad
3.3.10 Cuestiones de recursos
3.4 Seudorrequerimientos
3.5 Modelos del sistema
3.5.1 Escenarios
3.5.2 Modelo de caso de uso
3.5.3 Modelo de objetos
3.5.3.1 Diccionario de datos
3.5.3.2 Diagramas de clase
3.5.4 Modelos dinmicos
3.5.5 Interfaz de usuario: rutas de navegacin y maquetas de pantallas
4. Glosario
www.FreeLibros.org
Administracin d e la obtencin d e requerimientos 1 2 7
La primera seccin del RAD es una Introduccin. Su propsito es proporcionar un panorama
breve de las funciones del sistema y las razones para su desarrollo, de su alcance y de las referen
cias al contexto de desarrollo (por ejemplo, enunciado de problemas relacionados, referencias a
sistemas existentes, estudios de factibilidad). La introduccin tambin incluye los objetivos y
criterios para el xito del proyecto.
La segunda seccin, Sistema actual, describe el estado actual de las cosas. Si el nuevo
sistema reemplazar a uno existente, esta seccin describe la funcionalidad y los problemas
del sistema actual. Si no es as, esta seccin describe cmo se realizan ahora las tareas soportadas
por el nuevo sistema. Por ejemplo, en el caso de RelojSat, en la actualidad el usuario ajusta su
reloj cada vez que pasa por una zona horaria. Debido a la naturaleza manual de esta operacin,
el usuario de vez en cuando pone la hora equivocada. Por el contrario, el RelojSat asegura en
forma continua un tiempo preciso durante vida til. En el caso de FRIEND, el sistema actual se
basa en papel: los despachadores llevan la cuenta de la asignacin de recursos llenando formu
larios. La comunicacin entre los despachadores y los oficiales de campo se hace por radio. El
sistema actual requiere altos costos de documentacin y administracin que pretende reducir
el sistema FRIEND.
La tercera seccin, Sistema propuesto, documenta la obtencin de requerimientos y el modelo
de anlisis del nuevo sistema. Se divide en cinco subsecciones:
Panorama presenta una vista funcional del sistema.
Requerimientos funcionales describe, en lenguaje natural, la funcionalidad de alto nivel
del sistema.
Requerimientos no funcionales describe los requerimientos en el nivel de usuario que no
estn relacionados en forma directa con la funcionalidad. Esto incluye el desempeo, la
seguridad, la modificabilidad, el manejo de errores, la plataforma de hardware y el ambiente
fsico.
Seudorrequerimientos describe la restricciones de diseo e implementacin impuestas por
el cliente. Esto incluye la especificacin de la plataforma de entrega, el lenguaje de imple-
mentacin o el sistema de administracin de base de datos.
Modelos del sistema describe los escenarios, casos de uso, modelo de objetos y modelos
dinmicos que describen al sistema. Esta seccin contiene la especificacin funcional com
pleta del sistema, incluyendo maquetas y grficas de navegacin que ilustran la interfaz de
usuario del sistema. Esta seccin se escribe durante la actividad de Anlisis que se describe
en el siguiente captulo.
El RAD deber escribirse despus de que sea estable el modelo de caso de uso, esto es, cuando
la cantidad de modificaciones a los requerimientos sea mnima. Sin embargo, el RAD se actua
liza a lo largo del proceso de desarrollo cuando se descubren problemas de especificaciones o
cuando cambia el alcance del sistema. El RAD, una vez que se publica, es tomado como la lnea
base y se pone bajo la administracin de configuracin. La seccin de historia de revisiones del
RAD proporciona una historia de los cambios en forma de una lista de los autores responsables
de los cambios, la fecha del cambio y una breve descripcin del cambio.
www.FreeLibros.org
128 C apitulo 4 Obtencin d e requerimientos
4.6 Ejercicios
1. Considere a su reloj como un sistema y adelntelo 2 minutos. Escriba en forma de escenario
cada interaccin entre usted y el reloj. Registre todas las interacciones, incluyendo cualquier
retroalimentacin que le d el reloj.
2. Considere el escenario que escribi en el ejercicio 1. Identifique al actor del escenario.
Luego escriba el caso de uso A j u s t a r H o r a correspondiente. Incluya todos los casos, e
incluya adelantar la hora y atrasarla, y poner las horas, minutos y segundos.
3. Suponga que el sistema de reloj que describi en los ejercicios 1 y 2 tambin tiene alarma.
Describa el ajuste de la hora de la alarma como un caso de uso autocontenido llamado
A j u s t a r Ho r a A l a ma.
4. Examine los casos de uso A j u s t a r H o r a y A j u s t a r H o r a A l a r m a que escribi en los
ejercicios 2 y 3. Examine cualquier redundancia usando una relacin de inclusin. Justifique
por qu se prefiere, en este caso, una relacin de inclusin en vez de una extendida.
5. Suponga que O f i c i a l C a m p o puede llamar una caracterstica de Ayuda cuando llena un
R e p o r t e D e E m e r g e n c i a . La caracterstica A y u d a R e p o r t a r E m e r g e n c i a proporciona una
descripcin detallada de cada campo y especifica cules campos se requieren. Modifique
el caso de uso R e p o r t a r E m e r g e n c i a (descrito en la figura 4-11) para incluir la funcio
nalidad de ayuda. Cul relacin deber usarse para vincular a R e p o r t a r E m e r g e n c i a y
Ayuda Repo r t a r E m e r g e n c i a?
6. A continuacin se tienen ejemplos de requerimientos no funcionales. Especifique cules
de los requerimientos son verificables y cules no.
El sistema debe ser utilizable.
El sistema debe proporcionar retroalimentacin visual al usuario en menos de un
segundo despus de haber dado un comando.
La disponibilidad del sistema debe ser superior a 95%.
La interfaz de usuario del nuevo sistema debe ser lo suficientemente similar a la del
sistema antiguo para que los usuarios familiarizados con el sistema antiguo puedan
ser entrenados con facilidad en el uso del nuevo sistema.
7. Explique por qu los cuestionarios de opcin mltiple no son efectivos como medio
principal para la extraccin de informacin para la obtencin de requerimientos.
8. Desde su punto de vista, describa las fortalezas y debilidades de los usuarios durante la
actividad de obtencin de requerimientos. Describa tambin las fortalezas y debilidades de
los desarrolladores durante la actividad de obtencin de requerimientos.
9. Describa brevemente el trmino men. Escriba su respuesta en un pedazo de papel y
pngalo boca abajo en la mesa junto con las definiciones de otros cuatro estudiantes.
Compare las cinco definiciones y discuta cualquier diferencia sustancial.
www.FreeLibros.org
Ejercicios 129
Referencias
[Bruegge et al., 1994]
[Carroll, 1995]
[Christel y Kang, 1992]
[Constantine y Lockwood, 1999]
[Dumas y Redish, 1998]
[FRIEND, 1994]
[Grudin, 1990]
[Hammer y Champy, 1993]
[Jackson, 1995]
[Jacobson et al., 1992]
[Jacobson et al., 1999]
[Johnson, 1992]
[Macaulay, 1996]
[Nielsen, 1993]
[Nielsen y Mack, 1994]
[Paech, 1998]
[Rubin, 1994]
[Wirfs-Brock, 1995]
[Wirfs-Brock et al., 1990]
[Wood y Silver, 1989]
[Zultner, 1993]
B. Bruegge, K. OToole y D. Rothenberger, Design considerations for an accident
management system, en Proceedings o f the Second Internationa! Conference on
Cooperative Information Systems, M. Brodie, M. Jarke y M. Papazoglou (eds.),
University ofToronto Press, Toronto, Canad, mayo de 1994, pgs. 90-100.
J. M. Carroll (ed.), Scenario-BasedDesign: Envisioning Work and Technology in
System Development. Wiley, Nueva York, 1995.
M. G. Christel y K. C. Kang, Issues in requirements elicitation , Software
Engineeringnstitute, Technical Report CMU/SEI-92-TR-I2, Camegie Mellon Univ.,
Pittsburgh, PA, 1992.
L. L. Constantine y L. A. D. Lockwood, Software fo r Use. Addison-Wesley, Reading,
MA, 1999.
Dumas y Redish, A Practica! Guide to Usability Testing. Ablex, NJ, 1993.
FRIEND Project Documentation. School of Computer Science, Camegie Mellon
Univ., Pittsburgh, PA, 1994.
J. Grudin, Obstacles to user involvement in interface design in large product
development organizations, Proceeding IFIP INTERACT90 Third International
Conference on Haman-Computer nteraction, Cambridge, Inglaterra, agosto de 1990.
M. Hammer y J. Champy, Reengineering The Corporation: a Manifest For Business
Revolution. Harper Business, Nueva York, 1993.
M. Jackson, Sojhvare Requirements & Specifications: A Lexicn o f Practice,
Principies and Prejudices. Addison-Wesley, Reading, MA, 1995.
I. Jacobson, M. Christerson, P. Jonsson y G. Overgaard, Object-Oriented Software
EngineeringA Use Case Driven Approach. Addison-Wesley, Reading, MA, 1992.
I. Jacobson, G. Booch y J. Rumbaugh, The Unified Software Development Process.
Addison-Wesley, Reading, MA, 1999.
P. Johnson, Human Computer Interaction: Psychology, Task Analysis and Software
Engineering. McGraw-Hill Int., Londres, 1992.
L Macaulay, Requirements Engineering. Springer Verlag, Londres, 19%.
J. Nielsen, Usability Engineering. Academic, 1993.
J. Nielsen y R. L. Mack (eds.), Usability Inspection Methods. Wiley, Nueva York,
1994.
B. Paech, The Four Levels of Use Case Description, 4th Int. Workshop on
Requirements Engineering: Foundations f or Software Quality, Pisa, junio de 1998.
J. Rubin, Handbookof Usability Testing. Wiley, Nueva York, 1994.
R. Wirfs-Brock, Design objects and their interactions: A brief look at
responsibility-driven design", Scenario-Based Design: Envisioning Work and
Technology in System Development. J. M. Carroll (ed.), Wiley, Nueva York, 1995.
R. Wirfs-Brock, B. Wilkerson y Lauren Wiener, Designing Object-Oriented
Sojhvare. Prentice Hall, Englewood Cliffs, NJ, 1990.
J. Wood y D. Silver, Joint Application Design. Wiley, Nueva York, 1989.
R. E. Zultner, TQM for Technical Teams, Communications o f the ACM, vol. 36,
nm. 10, 1993.
www.FreeLibros.org
5
5.1 Introduccin: una ilusin ptica 132
5.2 Un panorama del anlisis 132
5.3 Conceptos de anlisis 134
5.3.1 Objetos de entidad, frontera y control 134
5.3.2 Revisin de la multiplicidad de asociacin 135
5.3.3 Asociaciones calificadas 137
5.3.4 Generalizacin 138
5.4 Actividades de anlisis: desde los casos de uso hasta los objetos 139
5.4.1 Identificacin de objetos de entidad 140
5.4.2 Identificacin de objetos de frontera 142
5.4.3 Identificacin de objetos de control 144
5.4.4 Modelado de interacciones entre objetos: diagramas de secuencia 146
5.4.5 Identificacin de asociaciones 149
5.4.6 Identificacin de atributos 151
5.4.7 Modelado del comportamiento no trivial de objetos individuales 153
5.4.8 Modelado de las relaciones de generalizacin entre objetos 153
5.4.9 Revisin del modelo de anlisis 154
5.4.10 Resumen del anlisis 155
5.5 Administracin del anlisis 157
5.5.1 Documentacin del anlisis 157
5.5.2 Asignacin de responsabilidades 158
5.5.3 Comunicacin acerca del anlisis 159
5.5.4 Iteracin por el modelo de anlisis 161
5.5.5 Aprobacin del cliente 162
5.6 Ejercicios 164
Referencias 165
1 3 0
www.FreeLibros.org
5
Anlisis
Soy Foo con un nombre, si tan slo pudiera
recordarlo.
Un programador con muy poco cerebro
E, anlisis da como resultado un modelo del sistema que pretende ser correcto, completo,
consistente y verificable. Los desarrolladores formalizan la especificacin del sistema producida
durante la obtencin de requerimientos y examinan con mayor detalle las condiciones de frontera
y los casos excepcionales. Tambin corrigen y aclaran la especificacin del sistema si es que
encuentran errores o ambigedades. El cliente y el usuario estn involucrados, por lo general, en
esta actividad, en especial cuando se necesita cambiar la especificacin del sistema y cuando se
necesita recopilar informacin adicional.
En el anlisis orientado a objetos, los desarrolladores construyen un modelo que describe
al dominio de aplicacin. Por ejemplo, el modelo de anlisis de un reloj describe la manera en
que el reloj representa al tiempo (por ejemplo, Sabe el reloj acerca de los aos bisiestos? Sabe
acerca del da de la semana? sabe acerca de las fases de la luna?). El modelo de anlisis se
extiende luego para describir la manera en que interactan los actores y el sistema para manipu
lar el modelo del dominio de aplicacin (por ejemplo, cmo ajusta la hora el propietario del
reloj? Cmo ajusta el da de la semana?). Los desarrolladores usan el modelo de anlisis, junto
con los requerimientos no funcionales, para preparar la arquitectura del sistema que se desarrolla
durante el diseo de alto nivel (captulo 6, Diseo del sistema).
En este captulo tratamos con mayor detalle las actividades de anlisis. Nos enfocamos en
la identificacin de objetos, su comportamiento, sus relaciones, su clasificacin y su organiza
cin. Revisamos en forma breve las presentaciones y mtodos del anlisis que no est orientado
a objetos. Por ltimo, describimos asuntos de administracin relacionados con el anlisis en el
contexto de un proyecto de desarrollo de varios equipos.
1 31
www.FreeLibros.org
132 C aptulo 5 An l i s i s
En 1915, Rubn mostr una imagen similar a la figura 5-1 para ilustrar el concepto de imgenes
multiestables. Qu ve usted? Dos caras, una frente a otra? Si se enfoca ms en el rea blanca, en
vez de ello puede ver un jarrn. Una vez que puede percibir ambas formas de manera individual es
fcil alternar entre el jarrn y las caras.
5.1 Introduccin: una ilusin ptica
F i g u r a 5-1 Ambigedad: Qu ve usted?
Si la imagen de la figura 5-1 hubiera sido una especificacin de sistema, cules modelos
habra que construir? Las especificaciones, al igual que las imgenes multiestables, contienen
ambigedades causadas por las imprecisiones inherentes al lenguaje natural y por las suposi
ciones de los autores acerca de las especificaciones. Por ejemplo, una cantidad especificada sin
unidades es ambigua (por ejemplo, el caso de metros o kilmetros? de la seccin 4.1). Una
hora sin zona horaria es ambigua (por ejemplo, programar una llamada telefnica entre pases
diferentes).
La formalizacin ayuda a identificar reas de ambigedad, as como inconsistencias y omi
siones en una especificacin de sistema. Una vez que los desarrolladores identifican problemas
con la especificacin, los resuelven obteniendo ms informacin de los usuarios y el cliente. La
obtencin de requerimientos y el anlisis son actividades iterativas e incremntales que suceden
en forma concurrente.
5.2 Un panorama del anlisis
El anlisis se enfoca en la produccin de un modelo del sistema, llamado el modelo de anlisis,
que es correcto, completo, consistente y verificable. El anlisis se diferencia de la obtencin de
requerimientos en que los desarrolladores se enfocan en la estructuracin y formalizacin de los
www.FreeLibros.org
Un panorama del a nlisis 133
F i g u r a 5-2 Productos de la obtencin de requerimientos y el anlisis (diagrama de actividad UML).
requerimientos obtenidos de los usuarios (figura 5-2). Aunque puede ser que el modelo de anlisis
no sea comprensible para los usuarios y el cliente, ayuda a que los desarrolladores verifiquen la
especificacin del sistema producida durante la obtencin de requerimientos.
Hay una tendencia natural para que los usuarios y desarrolladores pospongan las deci
siones difciles hasta lo ltimo del proyecto. Una decisin puede ser difcil debido a la falta de
conocimiento del dominio, falta de conocimiento tecnolgico o tan slo a causa de desacuerdos
entre usuarios y desarrolladores. Posponer las decisiones permite que el proyecto avance con
suavidad y evita la confrontacin con la realidad o entre los participantes. Por desgracia, tarde o
temprano se tendrn que tomar las decisiones difciles, a menudo con costos ms elevados,
cuando se descubran problemas intrnsecos durante las pruebas o, lo que es peor, durante la eva
luacin del usuario. La traduccin de una especificacin de sistema a un modelo formal o semi-
formal obliga a los desarrolladores a que identifiquen y resuelvan asuntos difciles al principio
del desarrollo.
El m o d e l o de a n l i s i s est compuesto por tres modelos individuales: el m o d e l o f u n c i o
nal, representado por casos de uso y escenarios, el m o d e l o de o b j e t o s de a n l i s i s , representado
por diagramas de clase y objeto, y el m o d e l o di n mi c o , representado por grficas de estado y
diagramas de secuencia (figura 5-3). En el captulo anterior describimos la manera de obtener
requerimientos de los usuarios y los describimos como casos de uso y escenarios. En este cap
tulo describimos la manera de refinar el modelo funcional y derivar el modelo de objetos y el
dinmico. Esto conduce a una descripcin ms precisa y completa conforme se aaden detalles al
modelo de anlisis. Concluimos el captulo describiendo las actividades administrativas que estn
relacionadas con el anlisis. En la siguiente seccin, primero definimos los conceptos principales
del anlisis.
www.FreeLibros.org
134 C aptulo 5 An l i s i s
F i g u r a 5-3 El modelo de anlisis est compuesto por el modelo funcional, el modelo de objetos y el modelo
dinmico. En UML, el modelo funcional se representa con diagramas de caso de uso, el modelo de objetos con
diagramas de clase y el modelo dinmico con grficas de estado y diagramas de secuencia.
5.3 C once ptos de anli sis
En esta seccin describimos los principales conceptos de anlisis que se usan en este captulo.
Particularmente describimos:
Objetos de entidad, frontera y control (seccin 5.3.1)
Multiplicidad de asociacin (seccin 5.3.2)
Asociaciones calificadas (seccin 5.3.3)
Generalizacin (seccin 5.3.4)
5.3.1 Objetos de entidad, frontera y control
El modelo de objetos de anlisis consiste en objetos de entidad, frontera y control [Jacob-
son et al., 1999]. Los o b j e t o s de e n t i d a d representan la informacin persistente rastreada por el
sistema. Los o b j e t o s de f r o n t e r a representan la interaccin entre los actores y el sistema. Los
o b j e t o s de c o n t r o l representan las tareas realizadas por el usuario y soportadas por el sistema.
En el ejemplo Reloj2B, Ao, Mes, Dia son objetos de entidad, FronteraBotn y FronteraPan-
tallaLCD son objetos de frontera, ControlCambioFecha es un objeto de control que representa
la actividad de cambiar la fecha oprimiendo combinaciones de botones.
Modelar el sistema con objetos de entidad, frontera y control tiene varias ventajas. Pri
mero, proporciona a los desarrolladores heurstica simple para distinguir conceptos diferentes pero
relacionados. Por ejemplo, la hora que lleva un reloj tiene propiedades diferentes que la pantalla
que muestra la hora. La diferenciacin entre los objetos de frontera y entidad obliga a esta distin
cin: la hora que es seguida por el reloj est representada por el objeto Hora. La pantalla est
representada por FronteraPantallaLCD. Segundo, el enfoque de tres tipos de objetos da como
www.FreeLibros.org
C o n ce pt o s d e a n li s i s 135
resultado objetos ms pequeos y ms especializados. Tercero, el enfoque de tres tipos de objetos
conduce a modelos que son ms adaptables al cambio: es ms probable que cambie la interfaz
del sistema (representada por los objetos de frontera) que la funcionalidad bsica (representada
por los objetos de entidad y control).
Para distinguir entre diferentes tipos de objetos, UML proporciona el mecanismo de este
reotipo para permitir que el desarrollador aada esa metainformacin a los elementos del mode
lado. Por ejemplo, en la figura 5-4 aadimos el estereotipo c o n t r o l al objeto ControlCam-
b ioFecha. Adems de los estereotipos, tambin podemos usar convenciones de denominacin
para efectos de claridad, y recomendamos que se haga distincin entre los tres tipos de objetos
diferentes sobre una base sintctica: los objetos de frontera pueden tener el prefijo F r o n t e r a
aadido a su nombre. Los objetos de control pueden tener el prefijo C o n t r o l , y los objetos de
entidad, por lo general, no tienen ningn prefijo. Otro beneficio de esta convencin de denomi
nacin es que est representado el tipo de la clase aun cuando no se disponga del estereotipo
UML, por ejemplo, cuando slo se examina el cdigo fuente.
e n t i d a d
Ao
e n t i d a d
Mes
e n t i d a d
Dia
c o n t r o l
Con t r o ICaxnbi oFe cha
f r o n t e r a
Fron t e raBotn
f r o n t e r a
FronteraPantallaLCD
F i g u r a 5-4 Clases de anlisis para el ejemplo Reloj2B.
5.3.2 Revisin de la multiplicidad de asociacin
Como vimos en el captulo 2, Modelado con UML, el extremo de una asociacin puede
etiquetarse con un conjunto de enteros llamados m u l t i p l ic i d a d . La multiplicidad indica la can
tidad de vnculos que pueden originarse legtimamente desde una instancia de la clase
conectada al extremo de la asociacin. Por ejemplo, en la figura 5-5, un Reloj2B tiene exacta
mente dos Botones y una PantallaLCD.
F i g u r a 5-5 Un ejemplo de multiplicidad de asociaciones (diagrama de clase UML). Un Reloj2B tiene dos
botones y una PantallaLCD.
www.FreeLibros.org
136 C aptulo 5 An l i s i s
En UML, un extremo de una asociacin puede tener como multiplicidad un conjunto de
enteros arbitrarios. Por ejemplo, una asociacin podra permitir slo un nmero primo de vn
culos, esto es, podra tener una multiplicidad de 1, 2, 3, 5, 7, 11, 13... Sin embargo, en la prc
tica, la mayora de las asociaciones que encontramos pertenece a alguno de los siguientes tres
tipos (vea la figura 5-6).
Un a aso c i a ci n de un o a un o tiene una multiplicidad de 1 a cada extremo. Una asociacin
de uno a uno entre dos clases (por ejemplo, O f i c i a l P o l i c i a y N m e r o ld e n tif ic aci n )
significa que existe solamente un vnculo entre instancias de cada clase (por ejemplo, un
O f i c i a l P o l i c i a tiene exactamente un N m er o l d e n t i f i c aci n , y un N m er o l d e n t i f i
c a c i n indica exactamente a un O f i c i a l P o l i c i a ) .
U n a a s o c i a c i n de u n o a m u c h o s tiene una multiplicidad de l en un extremo y 0 . . n
(tambin representada por asterisco) o 1. .n en el otro. Una asociacin de uno a muchos
entre dos clases (por ejemplo. P ersona y Automvil) indica composicin (por ejemplo,
una UnidadBomberos posee uno o ms CaminBomberos y un CaminBomberos pertenece
exactamente a una UnidadBomberos).
Un a aso c i a ci n de m uc ho s a m uc ho s tiene una multiplicidad de 0. .n o i . . n e n ambos
extremos. Una asociacin de muchos a muchos entre dos clases (por ejemplo, O f i c i a l -
Campo y Report eDei ncidente) indica que puede existir una cantidad arbitraria de vnculos
entre instancias de las dos clases (por ejemplo, un OficialCampo puede escribir muchos
ReporteDeI n c i d e n t e , y un R e p ort eD el ncide nte puede ser escrito por muchos Of i c i a l -
Canpo). ste es el tipo ms complejo de asociacin.
F i g u r a 5-6 Ejemplos de multiplicidad (diagrama de clase UML). La asociacin entre P ers on a y
NmeroSeguroSocial es de uno a uno. La asociacin entre P ers on a y Automvil es de uno a muchos.
La asociacin entre P e rs ona y Compaa es de muchos a muchos.
La adicin de multiplicidad a las asociaciones incrementa la cantidad de informacin que
capturamos del dominio de aplicacin o del dominio de solucin. La especificacin de la multi
plicidad de una asociacin llega a ser crtica cuando determinamos cules casos de uso se nece
sitan para manipular objetos del dominio de aplicacin. Por ejemplo, considere un sistema de
archivo compuesto de D i r e c t o r i o ( s ) y Archivo(s). Un D i r e c t o r i o puede contener cualquier
cantidad de E le me ntos i stemaAr c h i v o . Un E l e m e n t o S i s t e m a A r c h i v o es un concepto
abstracto que indica un D i r e c t o r i o o un Archivo. En caso de un sistema estrictamente
jerrquico, un ElementoSist emaArchi vo es parte de exactamente un D i r e c t o r i o , y esto lo
indicamos con una multiplicidad de uno a muchos (figura 5-7).
www.FreeLibros.org
C o n ce pt o s d e a n li s i s 137
F i g u r a 5-7 Ejemplo de sistema de archivos jerrquico. Un D i r e c t o r i o puede contener cualquier cantidad
de ElementoSis tema Archivo. (Un ElementoSistemaArchivo es un Archivo Oun D ir ec to ri o .) Sin
embargo, un ElementoSistemaArchivo es parte de exactamente un D i r e c t o r i o .
Sin embargo, si A r c h i v o o D i r e c t o r i o puede ser al mismo tiempo parte de ms de un
D i r e c t o r i o , necesitamos representar la agregacin de ElementoSistemaArchivo con D i r e c t o r i o
como una asociacin de muchos a muchos (vea la figura 5-8).
F i g u r a 5-8 Ejemplo de un sistema de archivo no jerrquico. Un D i r e c t o r i o puede contener cualquier
cantidad de Elemen t o S i s tema Archivo (un ElementoSistemaArchivo es un Archivo Oun Directorio).
Un ElementoSistemaArchivo puede ser parte de muchos Directorio(s).
Puede parecer que esta discusin est considerando asuntos detallados que podran dejarse
para actividades posteriores en el proceso de desarrollo. Sin embargo, la diferencia entre un
sistema de archivo jerrquico y otro no jerrquico tambin reside en la funcionalidad que propor
ciona. Si un sistema permite que un Archivo dado sea parte de varios D i r e c t o r i o ( s ) , necesita
mos definir un caso de uso que describa la manera en que un usuario aade un Archivo existente a
D i r e c t o r i o ( s ) existentes (por ejemplo, el comando l i n k de Unix o el concepto de men Make-
A l i a s de Macintosh). Adems, los casos de uso que eliminan un Archivo de un D i r e c t o r i o
deben especificar si el Archivo se elimina slo de un D i r e c t o r i o o de todos los D i r e c t o r i o ( s )
que hacen referencia a l. Observe que una asociacin de muchos a muchos puede dar como
resultado un sistema sustancialmente ms complejo.
5.3.3 Asociaciones calificadas
La calificacin es una tcnica para la reduccin de la multiplicidad usando claves. Las asocia
ciones que tienen una multiplicidad de 0. . l o l son ms fciles de comprender que las asociaciones
www.FreeLibros.org
138 C aptulo 5 An l i s i s
con multiplicidad 0. .n o 1 . .n. Con frecuencia, en el caso de una asociacin de uno a muchos,
los objetos del lado de muchos pueden distinguirse entre ellos usando un nombre. Por ejemplo,
en un sistema de archivos jerrquicos, cada archivo pertenece exactamente a un directorio. Cada
archivo est identificado en forma nica por un nombre dentro del contexto de un directorio.
Muchos archivos pueden tener el mismo nombre dentro del contexto de sistema de archivo, pero
dos archivos no pueden compartir un mismo nombre dentro del mismo directorio. Sin califi
cacin (vea la parte superior de la figura 5-9), la asociacin entre D i r e c t o r i o y Archivo tiene
multiplicidad de 1 en el lado D i r e c t o r i o y multiplicidad cero a muchos del lado Archivo.
Reducimos la multiplicidad del lado Archivo usando el atributo nombrearchivo como clave,
tambin llamada c a li f i c a d o r (vea la parte superior de la figura 5-9). A la relacin entre Dir ec
t o r i o y Archivo se le llama a s o c i a c i n calif icada.
F i g u r a 5-9 Ejemplo de la manera en que la asociacin calificada reduce la multiplicidad (diagrama de clase
UML). La adicin de un calificador aclara el diagrama de clase e incrementa la informacin que conlleva. En este
caso, el modelo que incluye la calificacin indica que el nombre del archivo es nico dentro de un directorio.
Siempre es preferible la reduccin de la multiplicidad, ya que el modelo se hace ms claro y
se tienen que tomar en cuenta menos casos. Los desarrolladores deben examinar cada asociacin
que tiene multiplicidad de uno a muchos, o de muchos a muchos, y revisar si se puede aadir un
calificador. A menudo, estas asociaciones pueden calificarse con un atributo de la clase de des
tino (por ejemplo, el atributo nombrearchivo en la figura 5-9).
5.3.4 Generalizacin
Como vimos en el captulo 2, Modelado con UML, la gene ra l i za c i n nos permite organizar
conceptos en jerarquas. En la parte superior de la jerarqua est un concepto general (por ejemplo, un
i n c i d e n t e , figura 5-10) y en la parte inferior de la jerarqua estn los conceptos ms especializados
(por ejemplo, GatoEnrbol, A c c i d e n t e T r f i c o , I n c e n d i o E d i f i c i o , Temblor, FugaQumica).
Puede haber cualquier cantidad de niveles intermedios entre ellos, cubriendo conceptos ms o
menos generalizados (por ejemplo, Baj a P r i o r i d a d , Emergencia, Des a s tr e) . Tales jerarquas nos
permiten hacer referencia con precisin a muchos conceptos. Cuando usamos el trmino i n c i d e n t e
queremos decir todas las instancias de todos los tipos de i n c i d e n t e . Cuando usamos el trmino
Emergencia slo nos referimos a un i n c i d e n t e que requiere una respuesta inmediata. Esta vista
de la generalizacin proviene del modelado.
En un lenguaje de programacin orientado a objetos, la h e r e n c i a es una tcnica de reuti
lizacin. Si una clase H i j o hereda de una clase Padre, todos los atributos y mtodos que estn
www.FreeLibros.org
Actividades d e anlisis: d e s d e l o s c a s o s d e u s o hasta l o s objetos 139
F i g u r a 5-10 Un ejemplo de una jerarqua de generalizacin (diagrama de clase UML). La raz de la jerarqua
representa el concepto ms general, mientras que los nodos hojas representan los conceptos ms especializados.
disponibles en Padre se tienen disponibles automticamente en Hijo. La clase Hijo puede
aadir mtodos adicionales o sobreponer mtodos heredados, refinando as a la clase Padre.
Como sucede en el caso de la generalizacin, la clase que est en la parte superior de la jerarqua
tiende a ser la ms general, mientras las hojas tienden a ser las ms especializadas.
La generalizacin y la herencia son conceptos muy relacionados. Sin embargo, no son idnti
cos. La herencia es un mecanismo para la reutilizacin de atributos y comportamientos, aunque las
clases involucradas en la herencia no tengan una relacin de generalizacin. Por ejemplo, es posible
implementar una coleccin conj unto refinando una Tablahash (aunque puede ser que esto no sea
una buena solucin para implementar conjunto). Sin embargo, un conj unto no es un concepto ms
especializado que Tablahash, y tampoco Tablahash es una generalizacin de un Conjunto.
Durante el anlisis slo nos enfocamos en la organizacin de conceptos en relaciones de
generalizacin y no se deben interpretar desde el punto de vista de la reutilizacin. Sin embargo,
aunque la jerarqua de herencia se deriva al principio de la jerarqua de generalizacin, se rees
tructurar durante el diseo de objetos.
5.4 Actividades de anlisis: desde l o s c a s o s de u s o hasta l o s objetos
En esta seccin describimos las actividades que transforman los casos de uso y escenarios
producidos durante la obtencin de requerimientos hacia un modelo de anlisis. Las actividades
de anlisis incluyen:
Identificacin de objetos de entidad (seccin 5.4.1)
Identificacin de objetos de frontera (seccin 5.4.2)
Identificacin de objetos de control (seccin 5.4.3)
Modelado de interacciones entre objetos (seccin 5.4.4)
Identificacin de asociaciones entre objetos (seccin 5.4.5)
www.FreeLibros.org
140 C aptulo 5 An l i s i s
Identificacin de atributos de objetos (seccin 5.4.6)
Modelado de comportamiento no trivial con grficas de estado (seccin 5.4.7)
Modelado de relaciones de generalizacin (seccin 5.4.8)
Revisin del modelo de anlisis (seccin 5.4.9)
Ilustramos cada actividad enfocndonos en el caso de uso ReportarEmergencia de
FRIEND, descrito en el captulo 4, Obtencin de requerimientos. Estas actividades estn guiadas
por heurstica. La calidad de sus resultados depende de la experiencia del desarrollador en la apli
cacin de la heurstica y los mtodos. Los mtodos y la heurstica que se presentan en esta sec
cin estn adaptados de [De Marco, 1978], [Jacobson et al., 1999], [Rumbaugh et al., 1991] y
[Wirfs-Brock et al., 1990].
5.4.1 Identificacin de objetos de entidad
Los objetos participantes (vea la seccin 4.4.6) forman la base del modelo de anlisis.
Como se describi en el captulo 4, Obtencin de requerimientos, los objetos participantes se
encuentran examinando cada caso de uso e identificando objetos candidatos. El anlisis del len
guaje natural [Abbott, 1983] es un conjunto de heurstica intuitiva para la identificacin de obje
tos, atributos y asociaciones a partir de una especificacin del sistema. La heurstica de Abbott
hace corresponder partes del habla (por ejemplo, nombres, verbos posesivos, verbos de accin,
adjetivos) con componentes del modelo (por ejemplo, objetos, operaciones, relaciones de heren
cia, clases). La tabla 5-1 proporciona ejemplos de tales correspondencias examinando el caso de
uso ReportarEmergencia de la figura 5-11.
Tabla 5-1 Heurstica de Abbott para la correspondencia de partes del habla con los componentes del
modelo [Abbott, 1983].
Parte del habla C omponente del modelo Ejemplos
Sustantivo propio Objeto Alicia
Sustantivo comn Clase OficialCampo
Verbo de accin Operacin Crea, enva, selecciona
Verbo de ser Herencia Es un tipo de, es alguno de
Verbo de tener Agregacin Tiene, consiste en, incluye
Verbo modal Restricciones Debe ser
Adjetivo Atributo Descripcin del incidente
El anlisis del lenguaje natural tiene la ventaja de enfocarse en los trminos del usuario.
Sin embargo, tiene varias limitaciones. Primero, la calidad del modelo de objetos depende en gran
medida del estilo de escritura del analista (por ejemplo, consistencia en los trminos usados, trans
formacin de sustantivos en verbos). El lenguaje natural es una herramienta imprecisa, y un modelo
de objetos derivado literalmente del texto tiene el riesgo de ser impreciso. Los desarrolladores
www.FreeLibros.org
Actividades d e anlisis: d e s d e l o s c a s o s d e u s o hasta l o s objetos 141
pueden atacar esta limitacin volviendo a redactar y aclarando la especificacin del sistema con
forme identifican y estandarizan los objetos y trminos. Una segunda limitacin del anlisis del
lenguaje natural es que hay muchos ms nombres que clases relevantes. Muchos nombres corres
ponden a atributos o sinnimos de otros nombres. El ordenamiento de todos los nombres en
una especificacin de un sistema grande es una actividad que consume tiempo. La heurstica
de Abbott funciona bien para la generacin de una lista de objetos candidatos iniciales a partir de
descripciones cortas, como el flujo de eventos de un escenario o un caso de uso. La siguiente
heurstica puede usarse junto con las reglas de Abbott:
Heurstica para la identificacin de objetos de identidad
Trminos que los desarrolladores o usuarios necesitan aclarar para comprender el caso de uso.
Nombres recurrentes en los casos de uso (por ejemplo, i n c i d e n t e ) .
Entidades del mundo real de las que necesita llevar cuenta el sistema (por ejemplo,
Ofici alCampo, Despachador, Recurso).
Actividades del mundo real de las que necesita llevar cuenta el sistema (por ejemplo,
Pl anOperaci onesEmergencia).
Casos de uso (por ejemplo, R eportar Emergenci a) .
Fuentes o destinos de datos (por ejemplo, Impresora).
Siempre hay que usar los trminos del usuario.
Los desarrolladores nombran y describen en forma breve los objetos, sus atributos y sus respon
sabilidades conforme los identifican. La denominacin nica de los objetos promueve una termi
nologa estndar. La descripcin de los objetos, aunque sea breve, permite que los desarrolladores
aclaren los conceptos que usan y eviten tergiversaciones (por ejemplo, el uso de un objeto para
dos conceptos diferentes pero relacionados). Sin embargo, los desarrolladores no necesitan pasar
mucho tiempo detallando objetos o atributos, tomando en cuenta que el modelo de anlisis toda
va est fluyendo. Los desarrolladores deben documentar atributos y responsabilidades si son
obvias. Si no es as, un nombre tentativo y una descripcin breve es suficiente para cada objeto.
Habr muchas iteraciones durante las cuales se pueden revisar los objetos. Sin embargo, una vez
que el modelo de anlisis es estable, la descripcin de cada objeto deber ser tan detallada como se
necesite (vea la seccin 5.4.9).
Por ejemplo, despus de un primer examen del caso de uso ReportarEmergencia (figura
5-11) usamos el conocimiento del dominio de aplicacin y entrevistas con los usuarios para
identificar los objetos Despachador, ReporteDeEmergencia, OficialCampo e I n c i d e n t e .
Observe que el objeto ReporteDeEmergencia no se menciona de manera explcita en el caso de
uso ReportarEmergencia. El paso 3 del caso de uso hace referencia a un reporte de emergencia
como informacin enviada por el OficialCampo. Despus de revisar con el cliente descubri
mos que a esta informacin se le menciona por lo general como el reporte de emergencia, y se
decide nombrar ReporteDeEmergencia al objeto correspondiente.
www.FreeLibros.org
142 C aptulo 5 An l i s i s
Nombre del caso de uso
Condicin inicial
Flujo de eventos
Condicin de salida
ReportarEmergencia
1. El OficialCampo activa la funcin Reportar Emergencia de su
terminal.
2. FRIEND responde presentando un formulario al oficial. El formulario
incluye un men de tipo de emergencia (emergencia general,
incendio, transporte), campos para ubicacin, descripcin del
incidente, peticin de recursos y materiales peligrosos.
3. El OficialCampo llena el formulario, seleccionando el nivel de
emergencia, tipo, ubicacin y una breve descripcin de la situacin.
El OficialCampo tambin describe respuestas posibles a la situacin
de emergencia y solicita recursos especficos. Una vez que ha llenado
el formulario, el OficialCampo lo enva oprimiendo el botn Enviar
Reporte y en ese momento se le notifica al Despachador.
4. El Despachador revisa la informacin enviada porel OficialCampo,
y crea un i n c i d e n t e en la base de datos llamando al caso de uso
f t b r i r i n c i d e n t e . En el incidente se incluye en forma automtica
toda la informacin contenida en el formulario del OficialCampo.
El Despachador selecciona una respuesta asignando recursos al
incidente (con el caso de uso AsignarRecursos) y da un acuse de
recibo del reporte de emergencia enviando un FRJENDgrama al
OficialCampo.
5. El OficialCampo recibe el acuse de recibo y la respuesta
seleccionada.
F i g u r a 5-11 Un ejemplo del caso de uso ReportarEmergencia.
La definicin de objetos de entidad conduce al modelo de anlisis inicial que se describe
en la tabla 5-2.
Observe que el modelo de objeto anterior est muy lejos de ser una descripcin completa
del sistema para la implementacin del caso de uso ReportarEmergencia. En la siguiente sec
cin describimos la identificacin de objetos de frontera.
5.4.2 Identificacin de objetos de frontera
Los objetos de frontera representan la interfaz del sistema con los actores. En cada caso de
uso, cada actor interacta con, al menos, un objeto de frontera. El objeto de frontera recopila la
informacin del actor y la traduce hacia una forma neutral de interfaz que puede ser usada por
los objetos de entidad y tambin por los objetos de control.
Los objetos de frontera modelan la interfaz de usuario a un nivel burdo. No describen con
detalle los aspectos visuales de la interfaz de usuario. Por ejemplo, objetos de frontera como
botn o concepto de men estn demasiado detallados. Primero, los desarrolladores pueden
discutir los detalles de interfaz de usuario con ms facilidad con bosquejos y maquetas. Segundo, la
idea del diseo de la interfaz de usuario continuar evolucionando a consecuencia de la prueba
www.FreeLibros.org
Tabla 5-2 Objetos de entidad para el caso de uso ReportarEmergencia.
Actividades d e anlisis: d e s d e l o s c a s o s d e u s o hasta l o s objetos 143
Despachador
Es un oficial de polica que administra i n c i d e n t e . Un
Despachador abre, documenta y cierra I n c i d e n t e en respuesta
a ReporteDeEmergencia y otras comunicaciones con los
OficialCampo. Los Despachador se identifican mediante sus
nmeros de identificacin.
ReporteDeEmergencia Es el reporte inicial acerca de un i n c i d e n t e que hace un
OficialCampo hacia un Despachador. Por lo general, un
ReporteDeEmergencia activa la creacin de un i n c i d e n t e por
parte del Despachador. Un ReporteDeEmergencia est
compuesto de un nivel de emergencia, un tipo (incendio, accidente
de carretera u otro), una ubicacin y una descripcin.
OficialCampo Es un oficial de polica o bomberos que est trabajando. Un
OficialCampo puede asignarse, a lo mucho, a un i n c i d e n t e a la
vez. Los OficialCampo estn identificados mediante sus nmeros
de identificacin.
Incidente Es una situacin que requiere atencin de un OficialCampo. Un
I n c i d e n t e puede ser reportado al sistema por un OficialCampo
o alguna persona externa al sistema. Un i n c i d e n t e est compuesto
por una descripcin, una respuesta, un estado (abierto, cerrado,
documentado), una ubicacin y una cantidad de OficialCampo.
de utilidad, incluso despus de que llegue a ser estable la especificacin funcional del sistema. La
actualizacin del modelo de anlisis cada vez que se hace un cambio visual a la interfaz con
sume tiempo y no produce ningn beneficio sustancial.
Heurstica para la identificacin de objetos de frontera
Identificar formularios y ventanas que el usuario necesita para dar datos al sistema (por ejemplo,
FormularioReporteDeEmergencia,BotnReportarEmergencia).
Identificar noticias y mensajes que el sistema usa para responder al usuario (por ejemplo,
NoticiaAcuseDeRecibo).
No hay que modelar los aspectos visuales de la interfaz con objetos de frontera (las maquetas son
ms adecuadas).
Siempre hay que usar los trminos del usuario para describir las interfaces en vez de los trminos
de la tecnologa de implementacin.
Examinando el caso de uso ReportarEmergencia encontramos los siguientes objetos de fron
tera (tabla 5-3).
Observe que el F o r m u l a r i o i n c i d e n t e no se menciona de manera explcita en ningn
lugar del caso de uso R e p o r t a r E m e r g e n c i a . Identificamos este objeto observando que el
Despachador necesita una interfaz para ver el reporte de emergencia enviado por el O f i c i a l -
Campo y para regresar un acuse de recibo. Los trminos usados para describir los objetos de
www.FreeLibros.org
144 C aptulo 5 An l i s i s
Tabla 5-3 O b j e t o s d e f r o n t e r a p a r a e l c a s o d e u s o R e p o r t a r E m e r g e n c i a .
NoticiaAcuseDeRecibo Noticia usada para desplegar el acuse de recibo del
Despachador hacia el OficialCampo.
EstacinDespachador
Computadora usada por el Despachador.
BotnReportarEmergoncia Botn usado por el OficialCampo para iniciar el caso de
USOReportarEmergencia.
FormularioReporteDeEmergencia Formulario usado para dar los datos de ReportarEmer
gencia. Este formulario se le presenta al OficialCampo
en la EstacinOf icialCampo cuando se selecciona la
funcin ReportarEmergencia. El Formular ioReporte
DeEmergencia contiene campos para especificar todos
los atributos de un reporte de emergencia y un botn (u
otro control) para enviar el formulario cuando est lleno.
EstacinOficialCampo Computadora mvil usada por el OficialCampo.
Formulariolncidente
Formulario usado para la creacin de i n c i d e n t e . Este
formulario se le presenta al Despachador en la Estacin-
Despachador cuando se recibe el ReporteDeEmergencia.
El Despachador tambin usa este formulario para asignar
recursos y dar el acuse de recibo al reporte del O f i c i a l -
Campo.
frontera en el modelo de anlisis deben apegarse a la terminologa del usuario, aunque sea tenta
dor usar trminos del dominio de implementacin.
Hemos avanzado hacia la descripcin del sistema. Ahora hemos incluido la interfaz entre
el actor y el sistema. Sin embargo, todava faltan partes significativas de la descripcin, como el
orden en que sucede la interaccin entre los actores y el sistema. En la siguiente seccin descri
bimos la identificacin de los objetos de control.
5.4.3 Identificacin de objetos de control
Los objetos de control son responsables de la coordinacin entre objetos de frontera y de
entidad. Por lo general, los objetos de control no tienen una contraparte concreta en el mundo
real. A menudo hay una relacin cercana entre un caso de uso y un objeto de control. Un objeto
de control se crea, por lo general, al inicio del caso de uso y deja de existir cuando termina. Es
responsable de la recopilacin de informacin de los objetos de frontera y de enviarla a los obje
tos de entidad. Por ejemplo, los objetos de control describen el comportamiento asociado con la
secuencia de formularios, las colas de deshacer y de historia y el envo de informacin en un
sistema distribuido.
www.FreeLibros.org
Actividades d e anlisis: d e s d e l o s c a s o s d e u s o hasta l o s objetos 145
Heurstica para la identificacin de l o s objetos de control
Identifique un objeto de control por caso de uso o ms si el caso de uso es complejo y si puede
dividirse en flujos de eventos ms cortos.
Identifique un objeto de control por actor en el caso de uso.
La vida de un objeto de control debe ser la del caso de uso o la de la sesin del usuario. Si es difcil
identificar el inicio y final de la activacin de un objeto de control, puede ser que el caso de uso
correspondiente no tenga condiciones de entrada y salida bien definidas.
Al principio modelamos el flujo de control del caso de uso ReportarEmergencia con un objeto
de control para cada actor, Co n t rolR epor ta rEme rge ncia para el OficialCampo y Cont rol-
Adminis trarEmergencia para el Despachador, respectivamente (tabla 5-4).
La decisin de modelar el flujo de control del caso de uso ReportarEmergencia con dos
objetos de control procede del conocimiento de que EstacinOficialCampo y Es ta cin-
Despachador son, de hecho, dos subsistemas que se comunican a travs de un vnculo asincrono.
Esta decisin podra haberse pospuesto hasta la actividad de diseo del sistema. Por otro lado,
hacer visible este concepto en el modelo de anlisis nos permite enfocamos en el comportamiento
excepcional que es la prdida de comunicacin entre ambas estaciones.
Al modelar el caso de uso Repo rt ar Em er g en c ia modelamos la misma funcionalidad
usando objetos de entidad, frontera y control. Al cambiar de la perspectiva del flujo de eventos
hacia una perspectiva estructural incrementamos el nivel de detalle de la descripcin y selec
cionamos trminos estndar para referimos a las entidades del dominio de aplicacin y del
Tabla 5-4 Objetos de control para el caso de uso ReportarEmergencia.
ControlReportarEmergencia Maneja la funcin de reporte de ReportarEmergencia en la
EstacinOficialCampo. Este objeto se crea cuando el Ofi
cialCampo selecciona el botn Reportar Emergencia. Luego
crea un FormularioReporteDeEmergencia y lo presenta al
OficialCampo. Despus del envo del formulario, este objeto
recopila la informacin del formulario, crea un ReporteDe-
Emergencia y se lo pasa al Despachador. El objeto de control
luego espera la llegada de un acuse de recibo desde la Esta-
cinDespachador. Cuando llega el acuse de recibo, el
objeto ControlReportarEmergencia crea una No tic ia-
AcuseDeRecibo y la despliega ante el OficialCampo.
ControlAdministrarEmergencia Maneja la funcin de reporte de ReportarEmergencia
en la EstacinDespachador. Este objeto se crea cuando se
recibe un ReporteDeEmergencia. Luego crea un Formu-
l a r i o l n c i d e n t e y lo despliega ante el Despachador.
Una vez que el Despachador ha creado un i n c i d e n t e , le
ha asignado Recursos y ha enviado un acuse de recibo,
Cont rolAdmi nistrarEmergencia enva el acuse de
recibo a la EstacinOficialCampo.
www.FreeLibros.org
146 C aptulo 5 An l i s i s
sistema. En la siguiente seccin construimos un diagrama de secuencia usando el caso de uso
Repo rt ar Em er g en c ia y los objetos que descubrimos para asegurar la suficiencia de nuestro
modelo.
5.4.4 Modelado de interacciones entre objetos: diagramas de secuencia
Un diagrama de secuencia une los casos de uso con los objetos. Muestra cmo se distri
buye el comportamiento de un caso de uso (o escenario) entre sus objetos participantes. Los dia
gramas de secuencia no son, por lo general, un buen medio de comunicacin con el usuario. Sin
embargo, representan otro cambio de perspectiva y permiten que los desarrolladores encuentren
objetos faltantes o reas grises en la especificacin del sistema.
En esta seccin modelamos la secuencia de interacciones entre los objetos necesarios para
realizar el caso de uso. Las figuras 5-12 a 5-14 son diagramas de secuencia asociados con el caso
de uso ReportarEmergencia. Las columnas de un diagrama de secuencia representan a los obje
tos que participan en el caso de uso. La columna de la extrema izquierda es el actor que inicia el
caso de uso. Las flechas horizontales a travs de columnas representan mensajes, o estmulos, que
son enviados de un objeto a otro. El tiempo avanza en forma vertical de arriba hacia abajo. Por
ejemplo, la flecha de la figura 5-12 representa el mensaje o p r i m i r enviado por un OficialCampo
a un BotnReportarEmergencia. La recepcin de un mensaje dispara la activacin de una ope
racin. La activacin est representada por un rectngulo desde donde se pueden originar otros
mensajes. La longitud del rectngulo representa el tiempo que la operacin est activa. En la figura
5-12, la operacin disparada por el mensaje o p r i m i r enva un mensaje c r e a r a la clase Control-
ReportarEmergencia. Puede pensarse en una operacin como un servicio que el objeto propor
ciona a otros objetos.
Heurstica para el trazado de diagramas de secuencia
La primera columna debe corresponder al actor que inicia el caso de uso.
La segunda columna debe ser un objeto de frontera (que usa el actor para iniciar el caso de uso).
La tercera columna debe ser el objeto de control que maneja el resto del caso de uso.
Los objetos de control son creados por objetos de frontera que inician casos de uso.
Los objetos de frontera son creados por objetos de control.
Los objetos de entidad son accedidos por objetos de control y de frontera.
Los objetos de entidad nunca tienen acceso a los objetos de frontera o control, y esto hace que sea
ms fcil compartir objetos de entidad entre casos de uso.
En general, la segunda columna de un diagrama de secuencia representa el objeto de frontera con el
cual interacta el actor para iniciar el caso de uso (por ejemplo, BotnReportarEmergencia).
La tercera columna es un objeto de control que maneja el resto del caso de uso (por ejemplo,
C o n t r o l R e p o r t a r Emergencia). A partir de ah el objeto de control crea otros objetos de
frontera y tambin puede interactuar con otros objetos de control (en este caso, el objeto
Cont rolAdmi nistr ar Emergencia).
www.FreeLibros.org
Actividades d e anlisis: d e s d e l o s c a s o s d e u s o hasta l o s objetos 147
O f i c i a l C a m p o
Botn R e po rt a r C ont r oIReport ar F orm ul arloReport ar
Em ergenci a
Re po rt e D e C o n t r o l A d ministrar
E m ergenci a Em ergenci a Em ergenci a Em ergenci a
oprlmlrQ
c r e a r Q |
crearQ
HenarConlenldoQ
envl ar()ro
e n v I a r R e p o r t e f l ^
\
A s
crearQ
0
en vI a rR e p o f l p A D e s p a c h a d o r O Q
I I
F i g u r a 5-12 Diagrama de secuencia para el caso de uso R e p o rtar Emergenci a (inicio desde el lado
Es ta c i n Of ic i a lC a m po) .
O
C o n t r o l A d ministrar
Em ergenci a
FronteraFormu-
larlo Inci dente
Incidente A c u s e D e R e c I b o
Despachador
En la figura 5-13 descubrimos el objeto de entidad AcuseDeRecibo que olvidamos durante
nuestro examen inicial del caso de uso ReportarEmergencia (en la tabla 5-2). El objeto Acuse
DeRecibo es diferente de una NoticiaAcuseDeRecibo. Guarda la informacin asociada con un
AcuseDeRecibo y se crea antes del objeto de frontera NoticiaAcuseDeRecibo. Cuando describimos
al objeto AcuseDeRecibo, tambin nos damos cuenta que el caso de uso ReportarEmergencia
www.FreeLibros.org
148 C aptulo 5 An l i s i s
O f i c i a l C a m p o
C o n trolAd ministrar C ont r oIR eport ar N ot l claAcu se
Em ergenci a Em ergenci a De R e cibo
Figura 5-14 Diagrama de secuencia para el caso de uso R e p o r t a r E m e r g e n c i a (acuse de recibo para la
E s t a c i n O f i c i a l C a m p o ) .
original (descrito en la figura 5 - 1 1 ) est incompleto. Slo menciona la existencia de un Acuse-
DeRecibo y no describe la informacin que tiene asociada. En este caso, los desarrolladores necesitan
aclararlo con el cliente para definir la informacin que necesita aparecer en el AcuseDeRecibo.
Despus de obtener las aclaraciones se aade el objeto AcuseDeRecibo al modelo de anlisis
(tabla 5 - 5 ) y se aclara el caso de uso R e p o r t a r E m e r g e n c i a para que incluya la informacin adi
cional (figura 5 - 1 5 ) .
Tabla 5-5 Objeto AcuseDeRecibo para el caso de uso R e p o r t a r E m e r g e n c i a .
AcuseDeRecibo Es la respuesta de un despachador a un Re p o r te De Em e r g en c ia de un
O f i c ia lC a m p o . Al enviar un AcuseDeRecibo, el D e s p a c h a d o r comunica
al O f i c ia lC a m p o que ha recibido el R e p o r te D e Em e r g en c ia , ha creado un
I n c i d e n t e y le ha asignado recursos. El AcuseDeRecibo contiene los
recursos asignados y el tiempo de llegada estimado.
Mediante la construccin de diagramas de secuencia no slo modelamos el orden de la
interaccin entre objetos sino que tambin distribuimos el comportamiento del caso de uso. En
otras palabras, asignamos responsabilidades a cada objeto en forma de un conjunto de opera
ciones. Estas operaciones pueden ser compartidas por cualquier caso de uso en donde participe un
objeto dado. Observe que la definicin de un objeto que est compartido entre dos o ms casos
de uso debe ser idntica. En otras palabras, si una operacin aparece en ms de un diagrama de
secuencia, su comportamiento debe ser el mismo.
Compartir operaciones entre casos de uso permite que los desarrolladores eliminen redun
dancias en la especificacin del sistema y mejoren su consistencia. Observe que siempre se debe
dar precedencia a la claridad para eliminar redundancias. La fragmentacin del comportamiento
entre muchas operaciones complica en forma innecesaria la especificacin del sistema.
En el anlisis, los diagramas de secuencia se usan para que ayuden a identificar nuevos obje
tos participantes y comportamiento faltante. Se enfocan en comportamiento de alto nivel y, por lo
tanto, los asuntos de implementacin, como el desempeo, no deben tratarse en este punto. Tomando
www.FreeLibros.org
Actividades d e anlisis: d e s d e l o s c a s o s d e u s o hasta l o s objetos 149
Nombre del caso
de uso
R e p o r t a r E m e r g e n c i a
Condicin inicial 1. El O f i c i a l C a m p o activa la funcin Reportar Emergencia de su terminal.
Flujo de eventos
Condicin
de salida
2. FRIEND responde presentando un formulario al oficial. El formulario incluye un
men de tipo de emergencia (emergencia general, incendio, transporte), y campos
para ubicacin, descripcin del incidente, peticin de recursos y materiales
peligrosos.
3. El O f i c i a l C a m p o llena el formulario, seleccionando el nivel de emergencia, tipo,
ubicacin y una breve descripcin de la situacin. El OficialCampo tambin describe
respuestas posibles a la situacin de emergencia y solicita recursos especficos.
Una vez que ha llenado el formulario, el O f i c i a l C a m p o lo enva oprimiendo el
botn Enviar Reporte y en ese momento se le notifica al D e s p a ch a d o r .
4. El D e s p a c h a d o r revisa la informacin enviada por el O f i c i a l C a m p o y crea un
I n c i d e n t e en la base de datos llamando al caso de uso A b r i r l n c i d e n t e . En el
incidente se incluye de manera automtica toda la informacin contenida en
d formulario del O f i c i a l C a m p o . El D e s p a c h a d o r selecciona una respuesta
asignando recursos al incidente (con el caso de uso A s i g n a r R e c u r s o s ) y da
un acuse de recibo del reporte de emergencia enviando un FRJENDgrama al
O f i c i a l C a m p o . El AcuseDeRecibo ndica al OficialCampo que se recibi
el ReporteDeQnergencia, se cre un incidente y se asignaron recursos al
incidente. El AcuseDeRecibo incluye los recursos (por ejemplo, un
camin de bomberos) y su tiempo de llegada estimado.
5. El O f i c i a l C a m p o recibe el acuse de recibo y la respuesta seleccionada.
Figura 5-15 Caso de uso R e p o r t a r E m e r g e n c i a refinado. El descubrimiento y la adicin del objeto
AcuseDeRecibo al modelo de anlisis revela que el caso de uso R e p o r t a r E m e r g e n c i a original no describi
con precisin la informacin asociada con AcuseDeRecibo. Los refinamiento se indican en negritas.
en cuenta que la construccin de diagramas de interaccin puede consumir mucho tiempo, los
desarrolladores deben enfocarse primero en la funcionalidad problemtica o no especificada. El
trazo de diagramas de interaccin para partes del sistema que son simples o estn bien definidas no
es una buena inversin de los recursos de anlisis.
5.4.5 Identificacin de asociaciones
Mientras que los diagramas de secuencia permiten que b s desarrolladores representen interac-
dones entre objetos a lo largo del tiempo, los diagramas de clase permiten que los desarrolladores
describan la conectividad espacial de los objetos. En el captulo 2, Modelado con UML, describimos
la notacin de b s diagramas de clase UML, y la usamos a lo largo del libro para representar diversos
artefactos del proyecto (por ejempb, actividades, cosas a entregar). En esta seccbn tratamos el uso de
diagramas de clase para representar asociaciones entre objetos. En la seccin 5.4.6 tratamos el
uso de los diagramas de clase para representar atributos de objetos.
www.FreeLibros.org
150 C aptulo 5 An l i s i s
Una asociacin muestra una relacin entre dos o ms clases. Por ejemplo, un o f i c i a l C a m p o
escribe un R e p o r t e D e E m e r g e n c i a (vea la figura 5-16). La identificacin de asociaciones tiene dos
ventajas. Primero, aclara el modelo de anlisis haciendo explcitas las relaciones entre objetos (por
ejemplo, un R e p o r t e D e E m e r g e n c i a puede ser creado por un O f i c i a l C a m p o o un D e s p a c h a d o r ) .
Segundo, permite que el desarrollador descubra casos de frontera asociados con vnculos. Los
casos de frontera son excepciones que es necesario aclarar en el modelo. Por ejemplo, es intuitivo
asumir que la mayora de los R e p o r t e D e E m e r g e n c i a son escritos por un O f i c i a l Campo. Sin
embargo, debe soportar el sistema los R e p o r t e D e E m e r g e n c i a escritos por ms de uno? Debe
permitir el sistema R e p o r t e D e E m e r g e n c i a annimos? Estas preguntas deben investigarse durante
el anlisis usando el conocimiento del dominio.
O f i c i a l C a m p o
e s c r i b o
Re por t e D eE me rg e n cia
a u t o r d o ciamen t o
Figura 5-16 Un ejemplo de asociacin entre las clases R e p o r t e D e E m e r g e n c i a y O f i c i a l C a m p o .
Las asociaciones tienen varias propiedades:
Un no m b re para describir la asociacin entre las dos clases (por ejemplo, e s c r i b e en la
figura 5-16). Los nombres de asociacin son opcionales y no es necesario que sean nicos
en forma global.
Un pa p el a cada extremo, que identifica la operacin de cada clase con respecto a las asocia
ciones (por ejemplo, a u t o r es el papel desempeado por O f i c i a l C a m p o en la asociacin
e s c r i b e ) .
Una m u l t i p l ic i d a d a cada extremo, que identifica la cantidad posible de instancias (por
ejemplo, * indica que un O f i c i a l C a m p o puede escribir cero o ms R e p o r t e D e E m e r g e n c i a ,
mientras que 1 indica que cada R e p o r t e D e E m e r g e n c i a tiene exactamente un Of i c i a l C a m p o
como autor.
Al principio, las asociaciones entre objetos de entidad son lo ms importante, ya que revelan ms
informacin acerca del dominio de aplicacin. De acuerdo con la heurstica de Abbott (vea la
tabla 5-1), las asociaciones pueden identificarse examinando verbos y frases verbales que indican
un estado (por ejemplo, tiene, es parte de, administra, reporta a, es activado por, est contenido en,
habla a, incluye). Cada asociacin debe tener un nombre y papeles asignados a cada extremo.
Heurstica para la identificacin de asociaciones
Examine las frases verbales.
Nombre con precisin a las asociaciones y papeles.
Use calificadores con tanta frecuencia como sea posible para identificar espacios de nombres y
atributos principales.
Elimine cualquier asociacin que pueda derivarse de otras asociaciones.
No se preocupe por la multiplicidad hasta que el conjunto de asociaciones sea estable.
Evite modelos espagueti: demasiadas asociaciones hacen que el modelo sea ilegible.
www.FreeLibros.org
Actividades d e anlisis: d e s d e l o s c a s o s d e u s o hasta l o s objetos 151
El modelo de objetos incluir al principio demasiadas asociaciones si los desarrolladores incluyen
todas las asociaciones identificadas despus de examinar las frases verbales. En la figura 5-17, por
ejemplo, identificamos dos relaciones: la primera entre un i n c i d e n t e y el ReporteDeEmergencia
que activ su creacin, y la segunda entre el i n c i d e n t e y el OficialCampo que lo report.
Tomando en cuenta que ReporteDeEmergencia y OficialCampo ya tienen un autor de mode
lado de asociacin, la asociacin entre i n c i d e n t e y OficialCampo no es necesaria. La adicin
de asociaciones innecesarias complica el modelo conduciendo a modelos espagueti incom
prensibles e informacin redundante.
autor documento
F i g u r a 5-17 Eliminacin de asociacin redundante. La recepcin de un ReporteDeEmergencia activa la
creacin de un In cid e n te por parte de un cespachador. Tomando en cuenta que ReporteDeEmergencia
tiene una asociacin con el OficialCampo que lo escribe, no es necesario mantener una asociacin entre
OficialCampo e Incidente.
La mayora de los objetos de entidad tienen una caracterstica identificadora que usan los
actores para tener acceso a ellos. Los OficialCampo y los Despachador tienen un nmero de
identificacin. Los i n c i d e n t e y Report e tienen nmeros asignados y se archivan por fecha.
Una vez que el modelo de anlisis incluye a la mayora de las clases y asociaciones, los desarro
lladores deben revisar cada clase para ver la manera en que es identificada por los actores y en
cul contexto. Por ejemplo, son nicos los nmeros de identificacin de los OficialCampo para
todo el universo? Para toda la ciudad? En una estacin de polica? Si son nicos entre ciudades,
el sistema FRIEND puede saber acerca de OficialCampo de ms de una ciudad? Este enfoque
puede formalizarse examinando cada clase individual, identificando la secuencia de asociaciones
que se necesita recorrer para tener acceso a una instancia especfica de esa clase.
5.4.6 Identificacin de atributos
Los atributos son propiedades de objetos individuales. Por ejemplo, un ReporteDeEmer
g en c i a , como se describe en la tabla 5-2, tiene propiedades de tipo de emergencia, ubicacin y
descripcin (vea la figura 5-18). stas son proporcionadas por el OficialCampo cuando reporta
una emergencia y son mantenidas en adelante por el sistema. Cuando se identifican propiedades
de objetos, slo deben considerarse los atributos relevantes para el sistema. Por ejemplo, cada
OficialCampo tiene un nmero de seguro social que no es relevante para el sistema de infor
macin de emergencia. En vez de ello, los OficialCampo estn identificados por un nmero de
identificacin representado por la propiedad N m e r o i d e n t i f i c a c i n .
www.FreeLibros.org
152 C aptulo 5 An l i s i s
ReporteDeQnorgencia
tipoEmergencia: (incendio,
t r f i c o , otro)
ubicacin: String
descripcin: String
F i g u r a 5-18 Atributos de ia clase Re p o r te D e Em e r g e n c ia .
Las propiedades que estn representadas por objetos no son atributos. Por ejemplo, todo
ReporteDeEmergencia tiene un autor representado por la asociacin con la clase O f i c i a l -
Campo. Los desarrolladores deben identificar la mayor cantidad de asociaciones posible antes de
identificar atributos para evitar confusiones entre atributos y objetos. Los atributos tienen:
Un no m b re que los identifica dentro de un objeto. Por ejemplo, un ReporteDeEmergencia
puede tener un atributo t i p o R e p o r t e y un atributo tipoEmergencia. El t i p o R e p o r t e
describe el tipo de reporte que se est registrando (por ejemplo, reporte inicial, peticin de
recursos, reporte final). El tipoEmergencia describe el tipo de emergencia (por ejemplo,
incendio, trfico, otro). Para evitar confusiones no se debe llamar t i p o a estos dos atributos.
Una d e s c r ip c i n breve.
Un t i p o que describe los valores legales que puede adoptar. Por ejemplo, el atributo
d e s c r i p c i n de un ReporteDeEmergencia es una cadena. El atributo tipoEmergencia
es una enumeracin que puede adoptar uno de tres valores: i n c e n d i o , t r f i c o u o t r o .
Los atributos pueden identificarse usando la heurstica de Abbott (vea la tabla 5-1). En particular,
deben examinarse las frases nominales que estn seguidas por frases posesivas (por ejemplo, la
descripcin de una emergencia) o una frase adjetiva (por ejemplo, descripcin de emergencia).
En el caso de objetos de entidad, cualquier propiedad que necesite guardarse en el sistema es un
atributo candidato.
Observe que los atributos representan la parte menos estable del modelo de objetos. Con
frecuencia los atributos se descubren o aaden ms adelante en el desarrollo cuando los usuarios
evalan el sistema. A menos que los atributos aadidos estn asociados con funcionalidad adi-
Heurstica para la identificacin de atributos3
Examine las frases posesivas.
Represente el estado guardado como atributo de un objeto de entidad.
Describa cada atributo.
No represente un atributo como un objeto; en vez de ello use una asociacin (vea la seccin 5.4.5).
No pierda tiempo describiendo detalles finos antes de que sea estable la estructura del objeto.
a. Adaptado de [Rumbaugh et al^ 1991].
www.FreeLibros.org
Actividades d e anlisis: d e s d e l o s c a s o s d e u s o hasta l o s objetos 153
cional, no implican cambios importantes en la estructura del objeto (ni del sistema). Por estas
razones, los desarrolladores no necesitan gastar recursos excesivos identificando y detallando los
atributos que representan aspectos menos importantes del sistema. Estos atributos pueden aa
dirse despus cuando se valida el modelo de anlisis o los bosquejos de interfaz de usuario.
5.4.7 Modelado del comportamiento no trivial de objetos individuales
Los diagramas de secuencia se usan para distribuir comportamiento entre objetos y para
identificar operaciones. Los diagramas de secuencia representan el comportamiento del sistema
desde la perspectiva de un solo caso de uso. Los diagramas de grfica de estado representan el
comportamiento desde la perspectiva de un solo objeto. La visin del comportamiento desde la
perspectiva de cada objeto permite que el desarrollados por un lado, identifique casos de uso fal-
tantes y, por otro, construya una descripcin ms formal del comportamiento del objeto. Observe
que no es necesario construir grficas de estado para cada una de las clases del sistema. Slo
vale la pena construir grficas de estado de los objetos que tienen una vida extendida y un com
portamiento no trivial.
La figura 5-19 muestra una grfica de estado para la clase i n c i d e n t e . El examen de esta
grfica de estado puede ayudar para que el desarrollador revise si hay casos de uso para la docu
mentacin, el cierre y el archivado del i n c i d e n t e . Observe que la figura 5-19 es una grfica
de estado de alto nivel y no modela los cambios de estado por los que pasa el i n c i d e n t e mien
tras est activo (por ejemplo, cuando se le estn asignando recursos). Tal comportamiento puede
modelarse asociando una grfica de estado anidada con el estado Activo.
cantRecursosAsignados = 0 cuando i n c i d e n t e . focha > 1 ao
F i g u r a 5-19 Grfica de estado UML para in c i d e n t e .
5.4.8 Modelado de las relaciones de generalizacin entre objetos
La generalizacin se usa para eliminar redundancia en el modelo de anlisis. Si dos o ms
clases comparten atributos o comportamientos, las similitudes se consolidan en una superclase. Por
ejemplo, Despachador y OficialCampo tienen un atributo, n m e r o l d e n t i f i c a c i n , que sirve
para identificarlos dentro de una ciudad. Los OficialCampo y Despachador son O f i c i a l P o l i c i a
que tienen asignadas funciones diferentes. Para modelar de manera explcita esta similitud intro
ducimos una clase abstracta, o f i c i a l P o l i c i a , de la cual heredan las clases OficialCampo y
Despachador (vea la figura 5-20).
www.FreeLibros.org
154 C aptulo 5 An l i s i s
F i g u r a 5-20 Un ejemplo de relacin de herencia (diagrama de clase UML).
5.4.9 Revisin del modelo de anlisis
El modelo de anlisis se construye en forma incremental e iterativa. El modelo de anlisis
rara vez es correcto o completo en el primer paso. Se necesitan varias iteraciones con el cliente y el
usuario antes de que el modelo de anlisis converja hacia una especificacin correcta que puedan
utilizar los desarrolladores para continuar con el diseo y la implementacin. Por ejemplo, una
omisin descubierta durante el anlisis conducir a la adicin o extensin de un caso de uso en la
especificacin del sistema, la cual puede conducir a la obtencin de ms informacin del usuario.
Una vez que el modelo de anlisis llega a ser estable (es decir, cuando la cantidad de cam
bios al modelo es mnima y est localizado el alcance de los cambios) se revisa el modelo de
anlisis, primero entre los desarrolladores (es decir, revisiones internas) y luego en forma conjunta
tos desarrolladores con el cliente. El objetivo de la revisin es asegurarse que la especificacin del
sistema sea correcta, completa, consistente y realista. Observe que los desarrolladores deben estar
preparados para descubrir errores ms adelante y hacer cambios a la especificacin. Sin embargo,
vale la pena la inversin para atrapar al inicio la mayor cantidad de errores de requerimientos. La
revisin puede facilitarse con una lista de revisin o una lista de preguntas. A continuacin se
tienen preguntas de ejemplo adaptadas de [Jacobson et al., 1999] y [Rumbaugh et al., 1991].
Debern hacerse las siguientes preguntas para asegurarse que el modelo sea correcto:
El glosario de objetos de entidad es comprensible para el usuario?
Las clases abstractas corresponden a conceptos en el nivel de usuario?
Todas las descripciones estn de acuerdo con las definiciones de los usuarios?
Todos los objetos de entidad y frontera tienen como nombre frases nominativas significativas?
Todos los casos de uso y objetos de control tienen como nombre frases verbales
significativas?
Todos los casos de error estn descritos y manejados?
Estn descritas las fases de inicio y terminacin del sistema?
Estn descritas las funciones de administracin del sistema?
Debern hacerse las siguientes preguntas para asegurarse que el modelo est completo:
Para cada objeto: Lo necesita algn caso de uso? En qu caso de uso se crea? En cul se
modifica? En cul se destruye? Se puede tener acceso a l desde un objeto de frontera?
www.FreeLibros.org
Actividades d e anlisis: d e s d e l o s c a s o s d e u s o hasta l o s objetos 155
Para cada atributo: Cundo se asigna? Cul es su tipo? Debe ser un calificador?
Para cada asociacin: Cundo se le recorre? Porqu se escogi esa multiplicidad especfica?
Pueden calificarse las asociaciones con multiplicidades de uno a muchos o de muchos a
muchos?
Para cada objeto de control: Tiene las asociaciones necesarias para tener acceso a los obje
tos que participan en su caso de uso correspondiente?
Debern hacerse las siguientes preguntas para asegurarse que el modelo sea consistente:
Hay varias clases o casos de uso con el mismo nombre?
Las entidades (por ejemplo, casos de uso, clases, atributos) con nombres similares indican
fenmenos similares?
Estn descritas todas las entidades con el mismo nivel de detalle?
Hay objetos con atributos y asociaciones similares que no estn en la misma jerarqua de
generalizacin?
Debern hacerse las siguientes preguntas para asegurarse que el sistema descrito por el modelo
de anlisis sea realista:
Hay alguna caracterstica novedosa en el sistema? En dnde se han realizado estudios o
prototipos para asegurar su factibilidad?
Pueden satisfacerse los requerimientos de desempeo y confiabilidad? Se verificaron
esos requerimientos mediante algn prototipo ejecutado en el hardware seleccionado?
5.4.10 Resumen del anlisis
La actividad de requerimientos es sumamente iterativa e incremental. Se bosquejan y pro
ponen bloques de funcionalidad a los usuarios y clientes. El cliente aade requerimientos adiciona
les, critica la funcionalidad existente y modifica los requerimientos existentes. Los desarrolladores
investigan los requerimientos no funcionales mediante la elaboracin de prototipos y estudios de
tecnologa, y ponen a prueba cada requerimiento propuesto. Al principio, la obtencin de reque
rimientos se asemeja a una actividad de lluvia de ideas. Conforme crece la descripcin del sistema
y los requerimientos se hacen ms concretos, los desarrolladores necesitan extender y modificar el
modelo de anlisis de forma ms ordenada para administrar la complejidad de la informacin.
La figura 5-21 muestra una secuencia tpica de las actividades de anlisis que describimos en
este captulo. Los usuarios, desarrolladores y clientes estn involucrados en la definicin de casos
de uso y desarrollan un modelo de caso de uso inicial. Identifican varios conceptos y construyen un
glosario de objetos participantes. Luego los desarrolladores clasifican estos objetos en objetos de
entidad, frontera y control (en definir objetos de entidad, seccin 5.4.1, definir objetos de frontera,
seccin 5.4.2, y definir objetos de control, seccin 5.4.3). Estas actividades suceden en un ciclo
apretado hasta que la mayor parte de la funcionalidad del sistema ha sido identificada como casos
de uso con nombres y descripciones breves. Luego los desarrolladores construyen diagramas de
secuencia para identificar cualquier objeto faltante (<definir interacciones, seccin 5.4.4). Una vez
que han sido nombrados y descritos en forma breve todos los objetos de identidad, el modelo de
anlisis debe permanecer bastante estable conforme se le refina.
www.FreeLibros.org
156 C aptulo 5 An l i s i s
Definir comportamiento interesante (seccin 5.4.7), definir atributos (seccin 5.4.6) y
definir asociaciones (seccin 5.4.5) constituyen el refinamiento del modelo de anlisis. Estas tres
actividades representan un ciclo apretado durante el cual se extraen y se detallan el estado de los
objetos y sus asociaciones de los diagramas de secuencia. Luego se modifican los casos de uso
para que tomen en cuenta cualquier cambio en la funcionalidad. Esta fase puede conducir a la
identificacin de bloques adicionales de funcionalidad en forma de casos de uso adicionales.
Luego se repite el proceso general en forma incremental para estos nuevos casos de uso.
www.FreeLibros.org
Administracin del a nlisis 157
Durante consolidar modelo (seccin 5.4.8), los desarrolladores solidifican el modelo intro
duciendo calificadores, relaciones de generalizacin y suprimiendo redundancias. Durante revisar
modelo (seccin 5.4.9), el cliente, usuarios y desarrolladores examinan el modelo para que haya en
l correccin, consistencia, suficiencia y realismo. La calendarizacin del proyecto deber planear
varias revisiones para asegurar la alta calidad de los requerimientos y permitir espacio para el
aprendizaje de la actividad de requerimientos. Sin embargo, una vez que el modelo llega al punto
en donde la mayora de las modificaciones son cosmticas, debe continuarse con el diseo del
sistema. Habr un punto durante los requerimientos en donde ya no se puedan anticipar ms pro
blemas sin informacin adicional de los prototipos, estudios de utilidad, investigaciones de tec
nologa o diseo de sistema. Hacer que todos los detalles estn correctos llega a ser un ejercicio
intil: algunos de esos detalles sern irrelevantes con el siguiente cambio. La administracin debe
reconocer este punto e iniciar la siguiente fase del proyecto.
5.5 Administracin del anlisis
En esta seccin tratamos asuntos relacionados con la administracin de las actividades de anlisis
en un proyecto de desarrollo de varios equipos. El reto principal de la administracin de los
requerimientos en estos proyectos es mantener la consistencia mientras se usan tantos recursos. Al
final, el documento de anlisis de requerimientos debe describir un solo sistema coherente que sea
comprensible para una sola persona.
Primero describimos una plantilla de documento que puede usarse para documentar los
resultados del anlisis (seccin 5.5.1). Luego describimos la asignacin de papeles para el anlisis
(seccin 5.5.2). Luego tratamos los asuntos de comunicacin durante el anlisis. A continuacin
tratamos los asuntos de administracin relacionados con la naturaleza iterativa e incremental de los
requerimientos (seccin 5.5.4).
5.5.1 Documentacin del anlisis
Como vimos en el captulo anterior, las actividades de obtencin de requerimientos y
anlisis se documentan en el documento de anlisis de requerimientos (RAD, por sus siglas en
ingls). Las secciones 1 a 3.5.2 ya se han escrito durante la obtencin de requerimientos. Durante
el anlisis revisamos estas secciones conforme se descubren ambigedades y nueva funcionalidad.
Sin embargo, el esfuerzo principal se enfoca en la escritura de las secciones que documentan el
modelo de objetos de anlisis (3.5.3 y 3.5.4).
La seccin 3.5.3, Modelo de objetos, documenta con detalle todos los objetos que identifi
camos, sus atributos y, en caso que usemos diagramas de secuencia, sus operaciones. Conforme
se describe cada objeto con definiciones textuales, las relaciones entre objetos se ilustran con
diagramas de clase.
La seccin 3.5.4, Modelos dinmicos, documenta el comportamiento del modelo de objeto
desde el punto de vista de diagramas de grfica de estado y diagramas de secuencia. Aunque esta
informacin es redundante con el modelo de casos de uso, los modelos dinmicos nos permiten
representar comportamientos complejos con mayor precisin, incluyendo casos de uso que invo
lucran a varios actores.
El RAD, una vez terminado y publicado, ser considerado como una lnea base y se pondr
bajo la administracin de la configuracin. La seccin de historia de revisiones del RAD propor
cionar una historia de los cambios en forma de una lista del autor responsable del cambio, la
fecha del cambio y una breve descripcin del cambio.
www.FreeLibros.org
158 C aptulo 5 An l i s i s
Documento de anlisis de requerimientos
1. Introduccin
2. Sistema actual
3. Sistema propuesto
3.1 Panorama
3.2 Requerimientos funcionales
3.3 Requerimientos no funcionales
3.4 Seudorrequerimientos
3.5 Modelos del sistema
3.5.1 Escenarios
3.5.2 Modelo de casos de uso
3.5.3 Modelo de objetos
3.5.3.1 Diccionario de datos
3.5.3.2 Diagramas de clase
3.5.4 Modelos dinmicos
3.5.5 Interfaz de usuario: rutas de navegacin y maquetas de pantallas
4. Glosario
5.5.2 Asignacin de responsabilidades
El anlisis requiere la participacin de un amplio rango de individuos. El usuario de des
tino proporciona conocimiento sobre el dominio de aplicacin. El cliente proporciona los fondos
para el proyecto y coordina el esfuerzo del lado del usuario. El analista obtiene conocimiento del
dominio de aplicacin y lo formaliza. Los desarrolladores proporcionan retroalimentacin sobre
factibilidad y costo. El gerente del proyecto coordina el esfuerzo del lado del desarrollo. En
grandes sistemas pueden estar involucrados muchos usuarios, analistas y desarrolladores, intro
duciendo retos adicionales para los requerimientos de integracin y comunicacin del proyecto.
Estos retos pueden satisfacerse asignando papeles y alcances bien definidos a los individuos. Hay
tres tipos principales de papeles: generacin de informacin, integracin y revisin.
El u s u a r io es el experto en el dominio de aplicacin, quien genera informacin acerca del
sistema actual, el ambiente del sistema futuro y las tareas que debe soportar. Cada usuario
corresponde a uno o ms actores y ayuda a identificar sus casos de uso asociados.
El c l i e n t e , un papel de integracin, define el alcance del sistema con base en los requeri
mientos del usuario. Diferentes usuarios pueden tener diferentes vistas del sistema, ya sea
debido a que se beneficiarn de diferentes partes del sistema (por ejemplo, un despachador
frente a un oficial de campo) o debido a que los usuarios tienen opiniones o expectativas
diferentes acerca del sistema futuro. El cliente sirve como integrador de la informacin del
dominio de aplicacin y resuelve inconsistencias en las expectativas del usuario.
El ana l i st a es el experto del dominio de desarrollo, quien modela el sistema actual y genera
informacin acerca del sistema futuro. Al inicio cada analista es responsable de detallar
uno o ms casos de uso. Para un conjunto de casos de uso, el anlisis identificar una
www.FreeLibros.org
Administracin del a nlisis 159
cantidad de objetos, sus asociaciones y sus atributos usando las tcnicas que se indicaron
en la seccin 5.4.
El ar quit e ct o, un papel de integracin, unifica los modelos de caso de uso y de objetos desde
un punto de vista del sistema. Diferentes analistas pueden tener diferentes estilos de mode
lado y diferentes vistas de partes del sistema de las cuales no son responsables. Aunque los
analistas trabajan juntos y es muy probable que resuelvan las diferencias conforme avan
zan en el anlisis, el papel del arquitecto es necesario para proporcionar una filosofa del
sistema y para identificar omisiones en los requerimientos.
El e d i t o r d e d o c u m e n t o s es responsable de la integracin de bajo nivel del documento. El
editor de documentos es responsable del formato general del documento y de su ndice.
El g e r e n t e de c o n f i g u r a c i n es responsable del mantenimiento de la historia de revisiones
del documento, as como de la informacin de rastreabilidad que relaciona al RAD con
otros documentos (como el documento de diseo del sistema, vea el captulo 6, Diseo del
sistema).
El r e v i s o r valida el RAD para que sea correcto, completo, consistente, realista, verificable
y rastreable. Los usuarios, clientes, desarrolladores u otros individuos pueden llegar a ser
revisores durante la validacin de requerimientos. Los individuos que todava no han estado
involucrados en el desarrollo representan revisores excelentes, debido a que son ms capa
ces de identificar ambigedades y reas que necesitan aclaracin.
El tamao del sistema determina la cantidad de usuarios y analistas diferentes que se necesitan
para obtener y modelar los requerimientos. En todos los casos deber haber un papel integrador del
lado del cliente y otro del lado del desarrollo. Al final, sin importar qu tan grande sea el sistema,
los requerimientos debern ser comprensibles para un solo individuo que tenga conocimiento
del dominio de aplicacin.
5.5.3 C omunicacin acerca del anlisis
La tarea de comunicar informacin es la ms desafiante durante la obtencin de requeri
mientos y el anlisis. Los factores que contribuyen comprenden:
Diferentes conocimientos de los participantes. Los usuarios, clientes y desarrolladores
tienen diferentes dominios de experiencia y usan vocabularios diferentes para describir los
mismos conceptos.
Diferentes expectativas de los participantes. Los usuarios, clientes y administradores tienen
objetivos diferentes cuando definen el sistema. Los usuarios quieren un sistema que soporte
sus procesos de trabajo actual sin interferir o amenazar su posicin actual (por ejemplo, un
sistema mejorado con frecuencia se traduce en la eliminacin de posiciones actuales). El
cliente quiere maximizar el rendimiento de su inversin. La administracin quiere entregar
el sistema a tiempo. Diferentes expectativas y diferentes personas involucradas en el proyecto
pueden conducir a una resistencia a compartir informacin y a reportar problemas en forma
ordenada.
www.FreeLibros.org
160 C aptulo 5 An l i s i s
Nuevos equipos. La obtencin de requerimientos y el anlisis a menudo marcan el inicio de
un nuevo proyecto. Esto se traduce en nuevos participantes y nuevas asignaciones de equipos
y, por lo tanto, en un periodo cuesta arriba durante el cual los miembros del equipo deben
aprender a trabajar juntos.
Sistema en evolucin. Cuando se desarrolla un nuevo sistema a partir de cero, los trminos y
conceptos relacionados con el nuevo sistema estn fluyendo durante la mayor parte del anlisis
y el diseo del sistema. Un trmino puede tener hoy un significado que cambiar maana.
Ningn mtodo de requerimientos o mecanismo de comunicacin puede resolver los problemas
relacionados con las polticas internas y la ocultacin de informacin. Los objetivos en conflicto
y la competencia siempre sern parte de los proyectos de desarrollo grandes. Sin embargo,
unos cuantos lincamientos pueden ayudar a manejar la complejidad de vistas conflictivas del
sistema:
Definir territorios claros. La definicin de papeles, como se describe en la seccin 5.5.2,
es parte de esta actividad. Esto tambin incluye la definicin de foros de discusin priva
dos y pblicos. Por ejemplo, cada equipo puede tener una base de datos de discusin como
se describe en el captulo 3, Comunicacin de proyectos, y la discusin con el cliente se
realiza en una base de datos para clientes separada. El cliente no debe tener acceso a la
base de datos interna. Del mismo modo, los desarrolladores no deben interferir con las
polticas internas de clientes y usuarios.
Definir objetivos claros y criterios de xito. La definicin conjunta por parte del cliente y los
(fesanolladores de objetivos claros, mensurables y verificables, y de criterios de xito, facilita
la resolucin de conflictos. Observe que la definicin de un objetivo claro y verificable no es
una tarea trivial, tomando en cuenta que es ms fcil dejar abiertos b s objetivos. Los objetivos
y el criterio de xito del proyecto deben estar documentados en la seccin 1.3 del RAD.
Lluvia de ideas. Poner a todos los interesados juntos en el mismo saln y hacer que generen
con rapidez soluciones y definiciones puede eliminar muchas barreras en la comunicacin.
La realizacin de entrevistas como actividad recproca (es decir, la revisin por parte del
cliente y los desarrolladores, durante la misma sesin, de los productos a entregar) tiene
un efecto similar.
La lluvia de ideas y, en trminos ms generales, el desarrollo cooperativo de los requerimientos
puede conducir a la definicin de notaciones compartidas ad hoc para soportar la comunicacin.
Los guiones sinpticos, los bosquejos de interfaz de usuario y los diagramas de flujo de datos de
alto nivel con frecuencia aparecen de modo espontneo. Conforme aumenta la informacin acerca
del dominio de aplicacin y el nuevo sistema, es crtico que se utilice una notacin precisa y
estructurada. En UML los desarrolladores emplean casos de uso y escenarios para comunicarse
con el cliente y los usuarios, y usan diagramas de objetos, diagramas de secuencia y grficas de
estado para comunicarse con los dems desarrolladores (vea las secciones 4.4 y 5.4). Adems, la
versin ms reciente de los requerimientos deber estar disponible para todos los participantes.
El mantenimiento en lnea de una versin viva del documento de anlisis de requerimientos, con
una historia de cambios actualizada, facilita la propagacin a tiempo de los cambios a lo largo de
todo el proyecto.
www.FreeLibros.org
Administracin del a nlisis 16 1
5.5.4 Iteracin por el modelo de anlisis
El anlisis sucede en forma iterativa e incremental, con frecuencia en forma paralela a las
dems actividades del desarrollo, como el diseo del sistema y la implementacin. Sin embargo,
observe que la modificacin y extensin irrestricta del modelo de anlisis slo puede producir caos,
en especial cuando est involucrada una gran cantidad de participantes. Las iteraciones e incrementos
necesitan administrarse con cuidado, y se debe dar seguimiento a las peticiones de cambio una vez
que se han definido los requerimientos. La actividad de requerimientos puede verse como una serie
de pasos (lluvia de ideas, solidificacin, madurez) que convergen hacia un modelo estable.
Lluvia de ideas
Antes de que se inicie cualquier otra actividad de desarrollo, los requerimientos son un pro
ceso de lluvia de ideas. Todo cambia: los conceptos y los trminos usados para referirse a ellos. El
objetivo de un proceso de lluvia de ideas es generar la mayor cantidad posible de ideas sin tener
necesariamente que organizaras. Durante esta etapa las iteraciones son rpidas y de largo alcance.
Solidificacin
Una vez que el cliente y los desarrolladores convergen en una idea comn, definen las
fronteras del sistema y se ponen de acuerdo en un conjunto de trminos estndar, comienza la
solidificacin. La funcionalidad se inicia en grupos de caso de uso con sus interfaces correspon
dientes. Los grupos de funcionalidad se asignan a diferentes equipos que son responsables de
detallar sus casos de uso correspondientes. Durante esta etapa las iteraciones son rpidas pero
localizadas.
Madurez
Todava son posibles los cambios de alto nivel, pero ms difciles, y por lo tanto se reali
zan con mayor cuidado. Cada equipo es responsable de los casos de uso y modelos de objetos
relacionados con la funcionalidad que se les ha asignado. Un equipo de funcionalidad cruzada,
el equipo de arquitectura, compuesto por representantes de cada equipo, es responsable de ase
gurar la integracin de los requerimientos (por ejemplo, denominacin).
Una vez que el cliente acepta los requerimientos, las modificaciones al modelo de anlisis
deben ser sobre las omisiones y errores. Los desarrolladores, en particular el equipo de arquitec
tura, necesitan asegurarse que no se comprometa la consistencia del modelo. El modelo de
requerimientos est bajo la administracin de configuracin y los cambios deben propagarse a
los modelos de diseo existentes. Las iteraciones son rpidas pero se localizan.
Siempre se incrementar con el tiempo la cantidad de caractersticas y funciones de un
sistema. Sin embargo, cada cambio puede amenazar la integridad del sistema. El riesgo de intro
ducir ms problemas con cambios tardos puede dar como resultado la prdida de informacin en
el proyecto. Las dependencias entre funciones no se han capturado del todo y muchas suposiciones
pueden estar implcitas y olvidadas para cuando se hace el cambio. A menudo el cambio responde
a problemas y, en ese caso, hay mucha presin para implementarlo, dando como resultado slo un
examen superficial de las consecuencias del cambio. Cuando se aaden caractersticas y funciones
nuevas al sistema debern ponerse en tela de juicio con las siguientes preguntas: Las solicit el
cliente? Son necesarias o son adornos? Deben ser parte de un programa de utilidad separado y
enfocado en vez de ser parte del sistema bsico? Cul es el impacto de los cambios en las funcio
www.FreeLibros.org
162 C aptulo 5 An l i s i s
nes existentes desde el punto de vista de la consistencia, la interfez y la confiabilidad? Los cambios
son requerimientos medulares o caractersticas opcionales?
Cuando los cambios son necesarios, el cliente y el desarrollador definen el alcance del cam
bio y su resultado deseado, y cambian el modelo de anlisis. Tomando en cuenta que ya existe
un modelo de anlisis completo para el sistema, es fcil la especificacin de nueva funcionalidad
(aunque su implementacin es ms difcil).
5.5.5 Aprobacin del cliente
La aprobacin del cliente representa la aceptacin del modelo de anlisis (como est
documentada en el documento de anlisis de requerimientos) por parte del cliente. El cliente y
los desarrolladores convergen en una sola idea y se ponen de acuerdo acerca de las funciones
y caractersticas que tendr el sistema. Adems se ponen de acuerdo en:
Una lista de prioridades
Un proceso de revisin
Una lista de criterios que se usarn para aceptar o rechazar el sistema
Una calendarizacin y un presupuesto
El establecimiento de la prioridad de las funciones del sistema permite que los desarrolladores
comprendan mejor las expectativas del cliente. En su forma ms simple permite que los desarro
lladores separen los adornos de las caractersticas esenciales del sistema. En general, permite que
los desarrolladores entreguen el sistema en fragmentos incremntales: primero se entregan las
funciones esenciales, y los fragmentos adicionales se entregan dependiendo de la evaluacin del
primer fragmento. Aunque el sistema vaya a entregarse como un solo paquete completo, el
establecimiento de la prioridad de las funciones permite que el cliente comunique con claridad
lo que es importante para l y dnde deber ponerse el nfasis del desarrollo. La figura 5-22 pro
porciona un ejemplo de un esquema de prioridades.
A cada funcin s e le debe a si gn ar alguna de las s iguientes prioridades
P r i o r i d a d a lta Una caracterstica de prioridad alta debe demostrarse en forma satisfactoria
durante la aceptacin del cliente.
P r i o r i d a d mediaUna caracterstica de prioridad media debe tomarse en cuenta en el diseo
del sistema y en el diseo de objetos. Se instrumentar y demostrar en la segunda iteracin del
desarrollo del sistema.
P r i o r i d a d b a ja Una caracterstica de prioridad baja ilustra la manera en que podra extenderse el
sistema a largo plazo.
Figura 5-22 Un ejemplo de un esquema de prioridad para los requerimientos.
Un proceso de revisin permite que el cliente y el desarrollador definan la manera en que
se van a manejar los cambios a los requerimientos despus de la aprobacin. Los requerimientos
cambiarn, ya sea a causa de errores, omisiones, cambios en el ambiente operativo, cambios en
el dominio de aplicacin o cambios en la tecnologa. La definicin desde el principio de un pro-
www.FreeLibros.org
Administracin del a nlisis 163
ceso de revisin fomenta que los cambios se comuniquen a lo largo del proyecto y reduce la can
tidad de sorpresas a largo plazo. Observe que un proceso de cambio no necesita ser burocrtico o
requerir una sobrecarga excesiva. Puede ser tan simple como designar a una persona como res
ponsable para la recepcin de solicitudes de cambio, aprobar los cambios y llevar cuenta de su
implementacin. La figura 5-23 muestra un ejemplo ms complejo en donde los cambios son
diseados y revisados por el cliente antes de que se implementen en el sistema. En todos los
casos, el reconocimiento de que no se pueden congelar los requerimientos (sino slo considerar
los como una lnea base) beneficiar al proyecto.
La lista de criterios de aceptacin se revisa antes de la aprobacin. La actividad de obtencin
de requerimientos y anlisis aclara muchos aspectos del sistema, incluyendo los requerimientos no
funcionales a los cuales debe apegarse el sistema y la importancia relativa de cada funcin. Al
Figura 5 - 2 3 U n e j e m p l o d e u n p r o c e s o d e r e v i s i n ( d i a g r a m a d e a c t i v i d a d U M L ) .
www.FreeLibros.org
164 C aptulo 5 An l i s i s
volver a plantear los criterios de aceptacin en la aprobacin, el cliente asegura que los desarrolla
dores estn actualizados acerca de cualquier cambio en sus expectativas.
El presupuesto y la calendarizacin se revisan despus de que el modelo de anlisis se
vuelve estable. En el captulo \ \ , Administracin del proyecto, describimos asuntos relacionados
con la estimacin de costos.
La aprobacin del cliente es un hito importante en el proyecto, ya sea que se trate de un
nuevo acuerdo contractual o bien que el proyecto est regido por un contrato establecido con
anterioridad. La aprobacin del cliente representa la convergencia de ste y el desarrollador en
un solo conjunto de definiciones funcionales del sistema y un solo conjunto de expectativas. La
aceptacin del documento de anlisis de requerimientos es ms crtica que la de cualquier otro
documento, en vista de que muchas actividades dependen del modelo de anlisis.
5.6 Ejercicios
1. Considere un sistema de archivo con una interfaz grfica de usuario, como el Finder de
Macintosh, el Explorador de Windows de Microsoft o el KDE de Linux. Los siguientes obje
tos se identificaron en un caso de uso que describe la manera de copiar un archivo desde un
disco flexible hacia un disco duro: Archivo, icono, P a p e l e r a de r e c i c l a j e , Carpeta,
Disco, Apuntador. Especifique cules son objetos de entidad, cules son de frontera y
cules son de control.
2. Suponiendo el mismo sistema de archivo anterior, considere un escenario que consista en
aleccionar un archivo en un disco flexible, arrastrado hacia una carpeta y soltarlo. Identifique
y defina al menos un objeto de control asociado con este escenario.
3. Acomode en forma horizontal los objetos que se listan en los ejercicios 1 y 2 en un dia
grama de secuencia, poniendo a la izquierda los objetos de frontera, luego los objetos de
control y por ltimo los objetos de entidad. Trace la secuencia de interacciones resultantes
de soltar el archivo en la carpeta. Por ahora ignore los casos excepcionales.
4. Examine el diagrama de secuencia que produjo en el ejercicio 4 e identifique las asocia
ciones entre esos objetos.
5. Identifique los atributos de cada objeto que sean relevantes para este escenario (mover un
archivo desde un disco flexible hacia un disco duro). Tambin considere los casos de excepcin
Ya hay un archivo con ese nombre en la carpeta y Ya no hay espacio en el disco.
6. Considere el modelo de objetos de la figura 5-24 (adaptado de [Jackson, 1995]): dado su
conocimiento del calendario gregoriano, liste todos los problemas que tiene este modelo.
Modifquelo para corregirlos.
7. Considere el modelo de objetos de la figura 5-24. Usando solamente la multiplicidad de
asociacin, puede modificar el modelo para que alguien que no est familiarizado con el
calendario gregoriano pueda deducir la cantidad de das de cada mes? Identifique clases
adicionales si es necesario.
8. Considere un sistema de semforos en un cruce de caminos de cuatro vas (por ejemplo, dos
caminos que se cruzan en ngulo recto). Suponga el algoritmo ms simple para hacer ciclo
entre las luces (por ejemplo, se permite que pase todo el trfico de una va mientras se detiene
al trfico de la otra). Identifique los estados de este sistema y trace una grfica de estado que los
describa. Recuerde que cada semforo tiene tres estados (es decir, verde, mbar y rojo).
www.FreeLibros.org
Ejercicios 165
F i g u r a 5-24 Un modelo sencillo del calendario gregoriano (diagrama de clase UML).
Referencias
[Abbott, 1983]
[Booch, 1994]
[Booch et a l , 1998]
[Bruegge et al^ 1994]
[De Marco, 1978]
[Fowler, 1997]
[FRIEND, 1994]
[Harel, 1987]
[Jacobson et al., 1992]
[Jacobson et al., 1999]
[Jackson, 1995]
[Larman, 1998]
[Meyer, 1997]
[Rumbaugh et al^ 1991]
[Wirfs-Brock et al^ 1990]
R Abbott, Program design by informal English descriptions , Communications o f the
ACM, 1983, vol. 26, nm. 11.
G. Booch, Object-Oriented Analysis and Design with Applications, 2a. ed. Benjamn/
Cummings, Redwood City, CA, 1994.
G. Booch, J. Rumbaugh e I. Jacobson, The Unified Modeling Language User Guide.
Addison-Wesley, Reading, MA, 1998.
B. Bruegge, K. OToole y D. Rothenberger, Design considerations for an accident
management system , en M. Brodie, M. Jarke y M. Papazoglou (eds.), Proceedings o f the
Second International Conference on Cooperative Information Systems. University of
Toronto, Canad, mayo de 1994, pgs. 90-100.
T. De Marco, Structured Analysis and System Specification. Yourdon, Nueva York, 1978.
M. Fowler, Analysis Patterns: Reusable Object Models. Addison-Wesley, Reading, MA,
1997.
FRIEND Project Documentaron. School o f Computer Science, Camegie Mellon Univ.,
Pittsburgh, PA, 1994.
D. Harel, Statecharts: A Visual Formalism for Complex Systems, Science o f Computer
Programming, 1987, pgs. 231-274.
I. Jacobson, M. Christerson, P. Jonsson y G. Overgaard, Object-Oriented Software
EngineeringA Use Case Driven Approach. Addison-Wesley, Reading, MA, 1992.
Jacobson, G. Booch y J. Rumbaugh, The Unified Software Development Process.
Addison-Wesley, Reading, MA, 1999.
M. Jackson, Software Requirements & Specifications: A Lexicn ofPractice, Principies and
Prejudices. Addison-Wesley, Reading, MA, 1995.
C. Larman, Applying UML and Patterns: An ntroduction to Object-Oriented Analysis and
Design. Prentice Hall, Upper Saddle River, NJ, 1998.
Bertrand Meyer, Object-Oriented Software Construction, 2a. ed. Prentice Hall, Upper
Saddle River, NJ, 1997.
J. Rumbaugh, M. Blaha, W. Premerlani, F. Eddy y W. Lorensen, Object-Oriented Modeling
and Design. Prentice Hall, Englewood Cliffs, NJ, 1991.
R. Wirfs-Brock, B. Wilkerson y Lauren Wiener, Designing Object-Oriented Software.
Prentice Hall, Englewood Cliffs, NJ, 1990.
www.FreeLibros.org
6
6.1 Introduccin: un ejemplo del plano de un piso 168
6.2 Un panorama del diseo de sistemas 170
6.3 Conceptos del diseo de sistemas 172
6.3.1 Subsistemas y clases 173
6.3.2 Servicios e interfaces de subsistema 174
6.3.3 Acoplamiento y coherencia 174
6.3.4 Capas y particiones 178
6.3.5 Arquitectura de software 182
6.3.6 Diagramas de despliegue UML 188
6.4 Actividades del diseo de sistemas: desde los objetos hasta
los subsistemas 190
6.4.1 Punto de partida: el modelo de anlisis para un sistema
de planeacin de rutas 190
6.4.2 Identificacin de los objetivos de diseo 193
6.4.3 Identificacin de subsistemas 196
6.4.4 Correspondencia de subsistemas a procesadores y componentes 198
6.4.5 Definicin de los almacenes de datos persistentes 203
6.4.6 Definicin del control de acceso 207
6.4.7 Diseo del flujo de control global 212
6.4.8 Identificacin de condiciones de frontera 216
6.4.9 Anticipacin del cambio 218
6.4.10 Revisin del diseo de sistemas 220
6.5 Administracin del diseo del sistema 221
6.5.1 Documentacin del diseo del sistema 222
6.5.2 Asignacin de responsabilidades 224
6.5.3 Comunicacin acerca del diseo del sistema 224
6.5.4 Iterando sobre el diseo del sistema 226
6.6 Ejercicios 227
Referencias 229
166
www.FreeLibros.org
6
Diseo del sistema
Hay dos formas de construir un diseo de software:
una es hacerlo tan simple que obviamente no haya
eficiencias, y la otra es hacerlo tan complicado que
no haya deficiencias obvias.
C. A. R. Hoare
E l diseo de sistemas es la transformacin del modelo de anlisis en un modelo de diseo del
sistema. Durante el diseo del sistema los desarrolladores definen los objetivos de diseo del pro
yecto y descomponen el sistema en subsistemas ms pequeos que pueden ser realizados por equipos
individuales. Los desarrolladores tambin seleccionan estrategias para la construccin del sistema,
como la plataforma de hardware y software en la que se ejecutar el sistema, la estrategia de almace
namiento de datos persistentes, el flujo de control global, la poltica de control de acceso y el manejo
de condiciones de frontera. El resultado del diseo del sistema es un modelo que incluye una des
cripcin clara de cada una de estas estrategias, una descomposicin en subsistemas y un diagrama de
organizacin UML que representa la correspondencia entre el hardware y el software del sistema.
El diseo de sistemas no es algortmico. Sin embargo, los profesionales y acadmicos han
desarrollado soluciones patrn para problemas comunes, y han definido notaciones para la repre
sentacin de arquitecturas de software. En este captulo presentamos primero esos bloques de
construccin y luego tratamos las actividades de diseo que tienen impacto sobre esos bloques
de construccin. En particular, el diseo de sistemas incluye:
La definicin de los objetivos de diseo
La descomposicin del sistema en subsistemas
La seleccin de componentes hechos y heredados
La correspondencia entre los subsistemas y el hardware
La seleccin de la infraestructura de administracin de datos persistentes
La seleccin de una poltica de control de acceso
La seleccin de un mecanismo de flujo de control global
El manejo de condiciones de frontera
Concluimos este captulo describiendo asuntos administrativos que se relacionan con el diseo
de sistemas.
167
www.FreeLibros.org
168 C apitulo 6 D ise o del sistema
El diseo del sistema, el diseo de objetos y la implementacin constituyen la construccin del
sistema. Durante estas tres actividades los desarrolladores llenan el hueco entre la especificacin
del sistema producida durante la obtencin de requerimientos y el anlisis y el sistema que se
entregar a los usuarios. El diseo del sistema es el primer paso de este proceso y se enfoca en la
descomposicin del sistema en partes manejables. Durante la obtencin de requerimientos y el
anlisis nos concentramos en el propsito y la funcionalidad del sistema. Durante el diseo
del sistema nos enfocamos en los procesos, estructuras de datos y componentes de software y
hardware necesarios para implementarlo. El reto del diseo del sistema es que hay que satisfacer
muchos criterios y restricciones conflictivos cuando se descompone el sistema.
Considere, por ejemplo, la tarea de disear una casa residencial. Despus de ponerse de
acuerdo con el cliente sobre la cantidad de cuartos y pisos, el tamao del rea de estar y la ubica
cin de la casa, el arquitecto debe disear el plano de la casa, esto es, dnde debern ir las paredes,
puertas y ventanas. Debe hacerlo de acuerdo con varios requerimientos funcionales: la cocina
debe estar cerca del comedor y la cochera, el bao debe estar cerca de las recmaras, etc. El arqui
tecto tambin debe apoyarse en varios estndares cuando establece las dimensiones de cada cuarto
y la posicin de la puerta: los anaqueles de cocina vienen en incrementos fijos y las camas tienen
tamaos estndar. Sin embargo, observe que el arquitecto no tiene que conocer el contenido
exacto de cada cuarto ni la disposicin del mobiliario, sino que, por el contrario, estas decisiones
deben posponerse y dejrselas al cliente.
La figura 6-1 muestra tres revisiones sucesivas de un plano de piso para una casa residen
cial. Necesitamos satisfacer las siguientes restricciones:
1. Esta casa debe tener dos recmaras, un estudio, una cocina y un rea de estar.
2. Se debe minimizar la distancia general que recorren diario los ocupantes.
3. Se debe maximizar la utilizacin de la luz de da.
Para satisfacer las restricciones anteriores suponemos que la mayora de los recorridos se harn
entre la puerta de entrada y la cocina cuando los alimentos se descargan del coche, y entre la cocina
y el rea de estar cuando se transporta la vajilla antes y despus de las comidas. El siguiente
recorrido a minimizar es entre las recmaras y el bao. Suponemos que los ocupantes de la casa
pasarn la mayor parte del tiempo en el rea de estar y en la recmara principal.
En la primera versin del plano (en la parte superior de la figura 6-1) encontramos que el
rea de estar est demasiado lejos de la cocina. Para resolver este problema intercambiamos la
recmara 2 (vea las flechas grises de la figura 6-1). Esto tambin tiene la ventaja de mover el rea
de estar hacia la pared sur de la casa. En la segunda revisin encontramos que la cocina y las
escaleras estn muy lejos de la puerta de entrada. Para resolver este problema movemos la puerta
de entrada a la pared norte. Esto nos permite reacomodar la recmara 2 y mover el bao ms
cerca de las recmaras. El rea de estar se incrementa y satisfacemos todas las restricciones que
se impusieron al principio.
6.1 Introduccin: un ejemplo del plano de un piso
www.FreeLibros.org
Introduccin: un ejemplo del plano d e un p i s o 169
\fa -sftn in cn J
Spfflnda versin
Terrera versin
Escaleras 0
H
*0
1
O
s
H
s
s
S
l
8
P a s i l l o
i
rea de e s t a r
Recmara
p r i n c i p a l
F i g u r a 6-1 Ejemplo de un diseo de plano de un piso. Tres versiones sucesivas muestran cmo minimiza
mos la distancia a recorrer y aprovechamos la luz de da.
www.FreeLibros.org
170 C apitulo 6 D ise o del sistema
En este momento podemos colocar las puertas y ventanas de cada cuarto para precisar y
detallar los requerimientos. Despus que hayamos hecho esto habremos terminado el diseo del
plano sin un conocimiento detallado de la disposicin de cada cuarto individual. Se puede con
tinuar con los planos para las instalaciones hidrulica, elctrica y de calefaccin.
El diseo de un plano en arquitectura es similar al diseo en la ingeniera de software. El
conjunto se divide en componentes ms simples (es decir, cuartos, subsistemas) e interfaces (es
decir, puertas, servicios) tomando en cuenta los requerimientos no funcionales (es decir, rea de
estar, tiempo de respuesta) y funcionales (es decir, cantidad de recmaras, casos de uso). El diseo
del sistema tiene un impacto en las actividades de implementacin (es decir, la disposicin de la
cocina, la complejidad de la codificacin de subsistemas individuales), y si se cambia despus pro
voca una repeticin costosa del trabajo (es decir, movimiento de paredes, cambio de interfaces de
subsistemas). El diseo de los componentes individuales se deja para despus.
En la seccin 6.2 proporcionamos una vista a ojo de pjaro del diseo del sistema y su rela
cin con el anlisis. En la seccin 6.3 describimos el concepto de subsistemas y la descomposicin
en subsistemas. En la seccin 6.4 describimos las actividades del diseo del sistema y usamos un
ejemplo para ilustrar la manera en que se pueden usar juntos estos bloques de construccin. En la
seccin 6.5 describimos asuntos administrativos relacionados con el diseo de sistemas.
6.2 Un panorama del diseo de sistemas
El anlisis da como resultado el modelo de requerimientos descrito por los siguientes productos:
Un conjunto de requerimientos no funcionales y restricciones, como tiempo de respuesta
mximo, produccin mnima, confiabilidad, plataforma de sistema operativo, etctera.
Un modelo de caso de uso que describe la funcionalidad del sistema desde el punto de
vista de los actores.
Un modelo de objetos que describe las entidades manipuladas por el sistema.
Un diagrama de secuencia para cada caso de uso que muestra la secuencia de interacciones
entre los objetos que participan en el caso de uso.
El modelo de anlisis describe el sistema por completo desde el punto de vista de los actores
y sirve como la base de comunicacin entre el cliente y los desarrolladores. Sin embargo, el
modelo de anlisis no contiene informacin acerca de la estructura interna del sistema, su con
figuracin de hardware o, en trminos ms generales, la manera en que se debe realizar el
sistema. El diseo del sistema es el primer paso en esta direccin. El diseo del sistema da como
resultado los siguientes productos:
Una lista de objetivos de diseo que describe las cualidades del sistema que deben optimizar
los desarrolladores.
Una arquitectura de software que describe la descomposicin en subsistemas desde el punto
de vista de responsabilidades del subsistema, dependencias entre subsistemas, correspon
dencia de los subsistemas con el hardware y decisiones de poltica principales, como el
flujo de control, control de acceso y almacenamiento de datos.
Los objetivos de diseo se derivan de los requerimientos no funcionales. Los objetivos de diseo
guan las decisiones que deben tomar los desarrolladores, en especial cuando hay compromisos.
www.FreeLibros.org
Un panorama del d i s e o d e sist emas 17 1
La descomposicin en subsistemas constituye la mayor parte del diseo del sistema. Los desarro
lladores dividen el sistema en partes manejables para tratar la complejidad: cada subsistema se
asigna a un equipo y se realiza en forma independiente. Sin embargo, para que esto sea posible, los
desarrolladores necesitan atacar asuntos en el nivel de sistema cuando descomponen el sistema.
En particular necesitan atacar los siguientes asuntos:
Correspondencia entre hardware y software: Cul es la configuracin de hardware del
sistema? Cul nodo es responsable de cul funcionalidad? Cmo se realiza la comunicacin
entre nodos? Cules servicios se realizan usando componentes de software existentes? Cmo
se encapsulan estos componentes? El establecimiento de la correspondencia entre hardware y
software conduce, con frecuencia, a la definicin de subsistemas adicionales dedicados
a mover datos de un nodo hacia otro, manejando tos asuntos de concurrencia y confiabilidad.
Los componentes ya hechos y adquiridos a terceros (tomados del mostrador) permiten que
tos desarrolladores realicen servicios complejos en forma ms econmica. Los paquetes de
interfaz de usuario y los sistemas de administracin de bases de datos son muy buenos
ejemplos de componentes ya hechos. Sin embargo, los componentes deben encapsularse para
minimizar la dependencia de un componente particular: puede llegar un vendedor con un mejor
componente.
Administracin de datos: Cules datos necesitan ser persistentes? Dnde deben guardarse
tos datos persistentes? Cmo se tiene acceso a ellos? Los datos persistentes representan un
cuello de botella en muchos frentes diferentes del sistema: la mayor parte de la funcionalidad
del sistema se relaciona con la creacin o manipulacin de datos persistentes. Por esta razn,
el acceso a los datos debe ser rpido y confiable. Si la recuperacin de los datos es lenta, el
sistema completo ser lento. Si es probable la corrupcin de los datos, tambin es probable la
falla completa del sistema. Estos asuntos necesitan manejarse en forma consistente en el
nivel de sistema. Con frecuencia, esto conduce a la seleccin de un sistema de administracin
de base de datos y a un subsistema adicional dedicado a la administracin de datos persistentes.
Control de acceso: Quin puede tener acceso a cules datos? Puede cambiar de manera
dinmica el control de acceso? Cmo se especifica y realiza el control de acceso? El control
de acceso y la seguridad son asuntos en el nivel de sistema. El control de acceso debe ser
consistente por todo el sistema. En otras palabras, la poltica usada para especificar quin
puede y quin no puede tener acceso a determinados datos debe ser la misma en todos los
subsistemas.
Flujo de control: Cmo pone el sistema en secuencia a las operaciones? El sistema es
manejado por eventos? Puede manejar ms de una interaccin de usuario a la vez? La
seleccin del control de flujo tiene impacto en las interfaces de tos subsistemas. Si se selecciona
un control de flujo manejado por eventos, los subsistemas proporcionarn manejadores de
eventos. Si se seleccionan hilos de proceso, los subsistemas deben garantizar la exclusin
mutua en secciones crticas.
Condiciones de frontera: Cmo se inicia el sistema? Cmo se le apaga? Cmo se detectan y
manejan tos casos excepcionales? La iniciacin y apagado del sistema representan, a menudo,
la parte ms grande de la complejidad del sistema, en especial en un ambiente distribuido. La
iniciacin, el apagado y el manejo de excepciones tienen impacto en la interfaz de todos los
subsistemas.
www.FreeLibros.org
1 7 2 C apitulo 6 D ise o del sistema
La figura 6-2 muestra las actividades del diseo de sistemas. Cada actividad aborda cada uno
de los asuntos que describimos antes. El ataque a cualquiera de esos asuntos puede dar lugar a
cambios en la descomposicin de los subsistemas y presentar nuevos asuntos. Como ver cuando
describamos cada una de estas actividades, el diseo de sistemas es una actividad muy iterativa,
que conduce en forma continua a la identificacin de nuevos subsistemas, a la modificacin de los
subsistemas existentes y a revisiones en el nivel del sistema que tienen un impacto en todos
los subsistemas. Pero primero describamos el concepto de subsistema con mayor detalle.
Figura 6-2 Las actividades del diseo de sistemas (diagrama de actividad UML).
6.3 C once ptos del diseo de sis temas
En esta seccin describimos con mayor detalle la descomposicin en subsistemas y sus propie
dades. Primero definimos el concepto de subsistema y su relacin con las clases (seccin 6.3.1).
Luego vemos la interfaz de los subsistemas (seccin 6.3.2): los subsistemas proporcionan servicios
a otros subsistemas. Un servicio es un conjunto de operaciones relacionadas que comparten un
propsito comn. Durante el diseo del sistema definimos los subsistemas desde el punto de vista
de los servicios que proporcionan. Ms adelante, durante el diseo de objetos, definimos la inter
faz de los subsistemas desde el punto de vista de las operaciones que proporcionan. Luego vemos
dos propiedades de los subsistemas: acoplamiento y coherencia (seccin 6.3.3). El acoplamiento
mide la dependencia entre dos subsistemas y la coherencia mide las dependencias entre clases den
tro de un subsistema. La descomposicin ideal en subsistemas debe minimizar el acoplamiento y
maximizar la coherencia. Luego vemos la subdivisin en capas y la particin, dos tcnicas para
www.FreeLibros.org
C o n ce pt o s del d i s e o d e s i s t e m a s 173
relacionar subsistemas (seccin 6.3.4). La subdivisin en capas permite que se organice un sistema
como una jerarqua de subsistemas, proporcionando cada uno servicios de alto nivel a los subsis
temas que tiene encima usando servicios de nivel ms bajo de los subsistemas que estn debajo de
l. La particin organiza los subsistemas como partes iguales que se proporcionan mutuamente
diferentes servicios. En la seccin 6.3.5 describimos varias arquitecturas de software tpicas que se
encuentran en la prctica. Por ltimo, en la seccin 6.3.6 describimos los diagramas de organiza
cin UML que usamos para representar la correspondencia entre los subsistemas de software y los
componentes de hardware.
6.3.1 Subsistemas y clases
En el captulo 2, Modelado con UML, presentamos la distincin entre dominio de aplicacin
y dominio de solucin. Para reducir la complejidad del dominio de aplicacin identificamos partes
ms pequeas, llamadas clases, y las organizamos en paquetes. En forma similar, para reducir la
complejidad del dominio de solucin descomponemos un sistema en partes ms simples, llamadas
subsistemas, que estn compuestas de varias clases del dominio de solucin. En el caso de subsis
temas complejos aplicamos en forma reiterada este principio y descomponemos un subsistema en
subsistemas ms simples (vea la figura 6-3).
S i s t e m a O
P a r t e
5
C l a s e S u b s i s t e m a
C ^ -
p a r t e s
Figura 6-3 Descomposicin de subsistemas (diagrama de clase UML).
Por ejemplo, el sistema de administracin de accidentes que describimos antes puede des
componerse en un subsistema i n t e r f a z Despachador que implementa la interfaz de usuario
para el Despachador, un subsistema i n t e r f a z O f i c i a l C a m p o que implementa la interfaz de
usuario para el OficialCampo, un subsistema A d m i n i s t r a r l n c i d e n t e que implementa la
creacin, modificacin y almacenamiento de i n c i d e n t e y un subsistema N o t i f i c a c i n que
implementa la comunicacin entre las terminales OficialCampo y las estaciones Despachador.
Esta descomposicin en subsistemas se muestra en la figura 6-4 usando paquetes UML.
Varios lenguajes de programacin (por ejemplo, Java y Modula-2) proporcionan construccio
nes para el modelado de subsistemas (paquetes en Java, mdulos en Modula-2). En otros lenguajes,
como C o C++, los subsistemas no estn modelados en forma explcita y, en ese caso, los desa-
rrolladores usan convenciones para el agolpamiento de clases (por ejemplo, un subsistema puede
representarse como un directorio que contiene todos los archivos que implementan el subsistema).
Sin importar si los subsistemas estn representados en forma explcita en el lenguaje de programa
cin o no, los desarrolladores necesitan documentar de manera minuciosa la descomposicin en
subsistemas, ya que los subsistemas son realizados, por lo general, por equipos diferentes.
www.FreeLibros.org
174 C apitulo 6 D ise o del sistema
Figura 6-4 Descomposicin en subsistemas para un sistema de administracin de accidentes (diagrama
de clase UML, vista colapsada). Los subsistemas se muestran como paquetes UML. Las flechas de guiones
indican dependencias entre subsistemas.
6.3.2 Servicios e interfaces de subsistema
Ui subsistema se caracteriza por los servicios que proporciona a otros subsistemas. Un servi
cio es un conjunto de operaciones relacionadas que comparten un propsito comn. Un subsistema
que proporciona un servicio de notificacin, por ejemplo, define operaciones para enviar noticias,
buscar canales de notificacin y suscribirse y anular la suscripcin a un canal.
El conjunto de operaciones de un subsistema que est disponible para otros subsistemas
forma la interfaz del subsistema. sta, a la que tambin se le menciona como interfaz de pro
gramacin de aplicaciones (API, por sus siglas en ingls), incluye el nombre de las operaciones,
sus parmetros, sus tipos y sus valores de retomo. El diseo de sistemas se enfoca en la defini
cin de los servicios proporcionados por cada subsistema, esto es, en la enumeracin de sus
operaciones, sus parmetros y su comportamiento de alto nivel. El diseo de objetos se enfocar
en la definicin de las interfaces de los subsistemas, es decir, el tipo de los parmetros y el valor
de retomo de cada operacin.
La definicin de un subsistema desde el punto de vista de los servicios que proporciona
nos ayuda a enfocamos en su interfaz, en vez de en su implementacin. Una buena interfaz de
subsistema debe proporcionar la menor cantidad de informacin acerca de su implementacin.
Esto nos permite minimizar el impacto de los cambios cuando revisamos la implementacin de
un subsistema. En trminos generales, queremos minimizar el impacto del cambio minimizando
las dependencias entre subsistemas.
6.3.3 Acoplamiento y coherencia
El acoplamiento es la fuerza de las dependencias entre dos subsistemas. Si dos subsistemas
estn poco acoplados son relativamente independientes y, por lo tanto, las modificaciones a uno de
tos subsistemas tendr poco impacto en el otro. Si dos subsistemas estn muy acoplados es proba
ble que las modificaciones a un subsistema tengan impacto en el otro. Una propiedad deseable de
una descomposicin en subsistemas es que los subsistemas estn lo menos acoplados posible. Esto
minimiza el impacto que tengan los errores o cambios futuros en la operacin correcta del sistema.
www.FreeLibros.org
C o n ce pt o s del d i s e o d e s i s t e m a s 175
Considere, por ejemplo, un compilador en el que un rbol de anlisis es producido por el
subsistema de anlisis sintctico y pasado al subsistema de anlisis semntico. Ambos subsiste
mas acceden al rbol de anlisis y lo modifican. Una forma eficiente para compartir grandes
cantidades de datos es permitir que ambos subsistemas tengan acceso a los nodos del rbol de
anlisis por medio de atributos. Sin embargo, esto introduce un acoplamiento fuerte: ambos sub
sistemas necesitan conocer la estructura exacta del rbol de anlisis y sus invariantes. Las figuras
6-5 y 6-6 muestran el efecto de cambiar la estructura de datos del rbol de anlisis para dos
casos: las columnas de la izquierda muestran las interfaces de clases cuando se usan atributos
para compartir datos, y las columnas de la derecha muestran las interfaces de clases cuando se
usan operaciones. Debido a que el analizador sintctico y el analizador semntico dependen de
esas clases, ambos subsistemas deberan ser modificados y volver a probarse en el caso que
muestra la columna izquierda. En general, compartir datos por medio de atributos incrementa el
acoplamiento y debe evitarse.
La coherencia es la fuerza de las dependencias dentro de un subsistema. Si un subsistema
contiene muchos objetos que estn relacionados entre s y realizan tareas similares, su coheren
cia es alta. Si un subsistema contiene varios objetos que no estn relacionados, su coherencia es
baja. Una propiedad deseable de una descomposicin en subsistemas es que conduzca a subsis
temas con coherencia alta.
Por ejemplo, considere un sistema de seguimiento de decisiones para el registro de proble
mas de diseo, discusiones, evaluaciones alternas, decisiones y su implementacin desde el punto
de vista de tareas (vea la figura 6-7).
Representacin de rbol binario
C ompartiendo mediante atributos
c l a s s NodoOp {
NodoArg i z q u i e r d o ;
NodoArg d e r e c h o ;
S t r i n g nombre;
}
c l a s s NodoArg {
S t r i n g nombre;
C ompartiendo mediante operaciones
c l a s s NodoOp {
E n u m e r a t i o n o b t e n e r A r g u m e n t o s ( ) ;
S t r i n g o b t e n e r N o m b r e ( ) ;
}
c l a s s NodoArg {
S t r i n g o b t e n e r N o m b r e ( ) ;
}
Figura 6-5 Ejemplo de una reduccin de acoplamiento (diagrama de objetos UML y declaraciones Java).
Esta figura muestra un rbol de anlisis para la expresin a + b + c . La columna izquierda muestra la in
terfaz de la clase NodoOp compartindola mediante atributos. La columna derecha muestra la interfaz de
NodoOp compartindola mediante operaciones. La figura 6-6 muestra los cambios para cada caso cuando,
en vez de esto, se selecciona una lista vinculada.
www.FreeLibros.org
176 C apitulo 6 D ise o del sistema
Representacin de lista vinculada
C ompartiendo mediante atributos
c l a s s NodoOp {
NodoArg primero;
NodoArg izqui erdo;
NodoArg derecho;
S t r i n g nombre;
}
c l a s s NodoArg {
S t r i n g nombre;
NodoArg s i g u i e n t e ;
)
C ompartiendo mediante operaciones
c l a s s OpNode {
E n u m e r a t i o n o b t e n e r A r g u m e n t o s ( ) ;
S t r i n g o b t e n e r N o m b r e ( ) ;
}
c l a s s NodoArg {
S t r i n g o b t e n e r N o m b r e ( ) ;
Figura 6-6 Ejemplo de una reduccin de acoplamiento (diagrama de objetos UML y declaraciones Java).
Esta figura muestra el impacto de cambiar la representacin de rbol de anlisis de la figura 6-5 hacia una
lista vinculada. En la columna izquierda, donde se comparte mediante atributos, e s necesario cambiar cuatro
atributos (los cambios se indican en cursivas). En la columna derecha, donde se comparte mediante opera
ciones, la interfaz permanece sin cambios.
Figura 6-7 Sistema de seguimiento de decisiones (diagrama de clase UML). El S u b s i s t e m a D e c i s i n
tiene una coherencia baja: las clases C r i t e r i o , A l t e r n a t i v a y P r o b l e m a D i s e o no tienen relacin con
S u b t a r e a , C o n c e p t o A c c i n y T a r e a .
www.FreeLibros.org
C o n ce pt o s del d i s e o d e s i s t e m a s 177
P ro b l e m a D i s e o y A l t e r n a t i v a representan la exploracin del espacio de diseo: for
mulamos el sistema desde el punto de vista de varios P ro bl emaD is e o y documentamos cada
A l t e r n a t i v a que se explora. La clase C r i t e r i o representa las cualidades en las que estamos
interesados. Una vez que valoramos las A l t e r n a t i v a exploradas contra los C r i t e r i o deseados,
tomamos D e c i s i n y las implementamos desde el punto de vista de T a r e a . Las T a r e a se
descomponen en forma reiterada en S u b t a r e a lo bastante pequeas para que se asignen a desa
rrolladores individuales. A las tareas atmicas las llamamos Concepto Accin.
El sistema de seguimiento de decisiones es tan pequeo que podramos agrupar todas estas
clases en un solo subsistema llamado S u b s i s t e m a D e c i s i n (vea la figura 6-7). Sin embargo,
observamos que el modelo de la clase puede partirse en dos subgrficas. Una, llamada Sub-
s i s t e m a R a c i o n a l , contiene las clases P r ob l emaD is e o , A l t e r n a t i v a , C r i t e r i o y D e c i s i n .
La otra, llamada S u b s i s t e m a P l a n e a c i n , contiene T a r e a , S u b t a r e a y C on c e p t o A c c i n
(vea la figura 6-8). Ambos subsistemas tienen mejor coherencia que el S u b s i s t e m a D i s e o
original. Adems, los subsistemas resultantes son ms pequeos que el subsistema original:
Figura 6-8 Descomposicin alterna de subsistemas para el sistema de seguimiento de decisiones de la figura
6-7 (diagrama de clase UML). La coherencia del S u b s i s t e m a R a c i o n a l y del S u b s i s t e m a P l a n e a c i n es
ms alta que la coherencia del S u b s i s t e m a D e c i s i n original. Observe tambin que hemos reducido la com
plejidad descomponiendo el sistema en subsistemas ms pequeos.
www.FreeLibros.org
178 C apitulo 6 D ise o del sistema
redujimos complejidad. El acoplamiento entre los nuevos subsistemas es relativamente bajo, ya
que slo hay una asociacin entre los dos subsistemas.
En general, hay un compromiso entre la coherencia y el acoplamiento. Siempre podemos
incrementar la coherencia descomponiendo el sistema en subsistemas ms pequeos. Sin embargo,
esto incrementa el acoplamiento conforme se incrementa la cantidad de interfaces. Una buena
heurstica es que los desarrolladores pueden manejar 7 2 conceptos en cualquier nivel de
abstraccin. Si hay ms de nueve subsistemas en cualquier nivel de abstraccin dado, o si hay un
subsistema que proporciona ms de nueve servicios, se debe considerar una revisin de la descom
posicin. Siguiendo la misma regla, la cantidad de capas no debe ser mayor a 7 2. De hecho,
muchos buenos diseos de sistemas pueden realizarse con slo tres capas.
6.3.4 C apas y particiones
El objetivo del diseo del sistema es manejar la complejidad dividiendo el sistema en partes
ms manejables. Esto puede lograrse mediante un enfoque de dividir y conquistar, en donde divi
dimos las partes en forma reiterada hasta que son lo bastante simples para ser manejadas por una
persona o un equipo. La aplicacin sistemtica de este enfoque conduce a una descomposicin
jerrquica en la cual cada subsistema, o c a p a , proporciona servicios de nivel ms alto usando
servicios proporcionados por subsistemas de nivel inferior (vea la figura 6-9). Cada capa puede
depender slo de las capas de nivel inferior y no tiene conocimiento de las capas que estn encima
de ella. En una a r q u i t e c t u r a c e r r a d a cada capa slo puede depender de las capas que estn
inmediatamente debajo de ella. En una arquitectura abi e rt a una capa tambin puede tener acceso
a capas que estn en niveles ms profundos.
Capa i
(superior)
Capa 2
Capa 3
(inferior)
Figura 6-9 Descomposicin de un sistema en tres capas de subsistemas (diagrama de objetos UML). A
un subconjunto de una descomposicin en capas que incluye al menos un subsistema de cada capa se le lla
ma rebanada vertical. Por ejemplo, los subsistemas A, B y E constituyen una rebanada vertical, mientras que
no es as con los subsistemas D y G.
Un ejemplo de arquitectura cerrada es el Modelo de Referencia de la Interconexin de Siste
mas Abiertos (abreviado, el modelo OSI, por sus siglas en ingls), que est compuesto por siete capas
[Day y Zimmermann, 1983]. Cada capa es responsable de la realizacin de una funcin bien definida.
Adems, cada capa proporciona sus servicios usando servicios de la capa inferior (vea la figura 6-10).
La capa F s i c a representa la interfaz de hardware hacia la red. Es responsable de la trans
misin de bits por los canales de comunicacin. La capa vinculoDeDatos es responsable de la
transmisin de marcos de datos sin error usando los servicios de la capa F s i c a . La capa Red es
www.FreeLibros.org
C o n ce pt o s del d i s e o d e s i s t e m a s 179
Formato
e
Sesin Conexin
B
i
Transporte Mensaje
e
Red Paquete
Vin. VinculoDeDatos Marco
e
F i s i c a B i t
Figura 6-10 Un ejemplo de arquitectura cerrada: el modelo OSI (diagrama de clase UML). El modelo OSI
descompone los servicios de r e d en siete capas, donde cada una es responsable de un nivel de abstraccin
diferente.
responsable de la transmisin y el enmtamiento de paquetes dentro de una red. La capa T r a n s p o r t e
es responsable de asegurarse que los datos se transmitan en forma confiable de extremo a extremo.
La capa T r a n s p o r t e es la interfaz que ven los programadores Unix cuando transmiten infor
macin a travs de sockets TCP/IP entre dos procesos. La capa S e s i n es responsable de la inicia
cin de una conexin, incluyendo la autentificacin. La capa P r e s e n t a c i n realiza los servicios
de transformacin de datos, como el intercambio de bytes o el cifrado. La capa A p l i c a c i n es el
sistema que uno est diseando (a menos que est construyendo un sistema operativo o pila de pro
tocolo). La capa A p l i c a c i n tambin puede consistir de subsistemas en capas.
Hasta hace poco slo estaban estandarizadas las cuatro capas inferiores del modelo OSI. Unix
y muchos sistemas operativos de escritorio, por ejemplo, proporcionan interfaces para TCP/IP que
implementan las capas T r a n s p o r t e , Red y VinculoDeDatos. El desarrollador de aplicaciones
todava necesita llenar el hueco entre las capas T r a n s p o r t e y A p l i c a c i n . Con el creciente nmero
de aplicaciones distribuidas este hueco motiv el desarrollo de middleware como CORBA [OMG,
www.FreeLibros.org
180 C apitulo 6 D ise o del sistema
O b j e t o
S o c k e t
P
i
F s i c a
P
E t h e r n e t A l a m b r e
F i g u r a 6-11 Un ejemplo de arquitectura cerrada (diagrama de clase UML). CORBA permite el acceso a
objetos implementados en diferentes lenguajes en anfitriones diferentes. CORBA implementa en forma
efectiva las capas P r e s e n t a c i n y S e s i n de la pila OSI.
1995] y Java RMI [RMI, 1998]. CORBA y Java RMI nos permiten tener acceso a objetos remotos en
forma transparente, envindoles mensajes en forma similar a como se envan a los objetos locales,
implementando en forma efectiva las capas de Presentacin y Sesin (vea la figura 6-11).
Ui ejemplo de arquitectura abierta es el juego de herramientas de interfaz de usuario Motif
para XI 1 [Nye y O'Reilly, 1992]. La capa inferior, x i i b , proporciona facilidades de trazado bsicas y
define el concepto de ventana, x t proporciona herramientas para la manipulacin de objetos de inter
faz de usuario, llamados aparatos mecnicos, usando servicios de x i i b . Motif es una biblioteca de
aparatos mecnicos que proporciona un amplio rango de facilidades, desde botones hasta manejo
de la geometra. Motif est construido sobre x t , pero tambin tiene acceso directo a x i i b . Por
ltimo, una aplicacin que usa Motif, como un administrador de ventanas, puede tener acceso a
las tres capas. lyfotif no tiene conocimiento del administrador de ventanas y x t no tiene conoci
miento de lybtif o de la aplicacin. Muchos otros juegos de herramientas de interfaz de usuario para
X I 1 tienen arquitecturas abiertas. La apertura de la arquitectura permite que los desarrolladores
hagan a un lado las capas superiores cuando se presentan cuellos de botella (figura 6- 12).
www.FreeLibros.org
C o n ce pt o s del d i s e o d e s i s t e m a s 18 1
F i g u r a 6-12 Un ejemplo de arquitectura abierta: la biblioteca OSF/Motif (diagrama de clase UML, paquetes
colapsados). X l i b proporciona facilidades de trazado de bajo nivel. Xt proporciona el manejo de aparatos
mecnicos de interfaz de usuario bsicos. M o t i f proporciona una gran cantidad de aparatos mecnicos sofisti
cados. La A p l i c a c i n puede tener acceso a cada una de estas capas en forma independiente.
Las arquitecturas de capas cerradas tienen propiedades deseables: conducen a un bajo aco
plamiento entre subsistemas y los subsistemas pueden integrarse y probarse en forma incremen-
tal. Sin embargo, cada nivel introduce una sobrecarga de velocidad y almacenamiento que puede
dificultar la satisfaccin de requerimientos no funcionales. Adems, puede ser difcil la adicin
de funcionalidad al sistema en revisiones posteriores, en especial cuando no se anticiparon las
adiciones. En la prctica, rara vez se descompone un sistema en ms de tres a cinco capas.
Otro enfoque para el manejo de la complejidad es hacer una p a r t i c i n del sistema en sub
sistemas de igual rango, donde cada uno es responsable de una clase de servicios diferente. Por
ejemplo, un sistema a bordo para un automvil puede descomponerse en un servicio de viaje que
d direcciones en tiempo real al conductor, un servicio de preferencias individuales que recuerde
la posicin del asiento del conductor y las estaciones de radio favoritas y un servicio del vehculo
que lleve cuenta del consumo de gasolina del automvil, las reparaciones y el mantenimiento
preventivo. Cada subsistema depende vagamente de los dems y con frecuencia puede operar
aislado.
En general, la descomposicin en subsistemas es el resultado de la particin y de la sepa
racin en capas. Primero partimos el sistema en subsistemas de alto nivel que son responsa
bles de la funcionalidad especfica o que se ejecutan en un nodo de hardware especfico. Si la
complejidad lo justifica, cada uno de los subsistemas resultantes se descompone en capas de
nivel ms inferior hasta que es lo suficientemente simple para que lo implemente un solo desa
rrollador. Cada subsistema aade una determinada sobrecarga de procesamiento debido a su interfaz
con los dems sistemas. La particin o las capas excesivas pueden conducir a una complejidad
mayor.
www.FreeLibros.org
182 C apitulo 6 D ise o del sistema
6.3.5 Arquitectura de software
Cbnforme se incrementa la complejidad de los sistemas se hace crtica la especificacin de la
descomposicin del sistema. Es difcil modificar o corregir una descomposicin dbil una vez que ha
comenzado el desarrollo conforme tienen que cambiarse ms interfaces de subsistema. En recono
cimiento a la importancia de este problema ha surgido el concepto de arquitectura de software. Una
arquitectura de software incluye la descomposicin del sistema, el flujo de control global, las polti
cas de manejo de errores y tos protocolos de comunicacin entre subsistemas [Shaw y Garlan, 1996].
En esta seccin describimos unas cuantas arquitecturas de ejemplo que pueden usarse para
diferentes sistemas. sta no es, por ningn medio, una exposicin sistemtica o exhaustiva del
tema. En vez de ello, pretendemos proporcionar unos cuantos ejemplos representativos y referir
al lector a la literatura para mayores detalles.
Arquitectura de depsito
En la arquitectura de depsito (vea la figura 6-13) los subsistemas acceden y modifican datos
de una sola estructura de datos llamada de p s it o central. Los subsistemas son relativamente inde
pendientes e interactan tan slo por medio de la estructura de datos central. El flujo de control
puede estar dictado por el depsito central (por ejemplo, activadores en los datos llaman a los siste
mas perifricos) o por los subsistemas (por ejemplo, flujo de control independiente y sincroniza
cin mediante candados en el depsito).
Figura 6-13 Arquitectura de depsito (diagrama d e clase UML). Cada uno de los subsistemas depende
slo de una estructura de datos central llamada depsito. El depsito, a su vez, no tiene conocimiento de los
dems subsistemas.
La arquitectura de depsito es tpica de los sistemas de administracin de bases de datos, como
tos sistemas de nmina o bancartos. La ubicacin central de los datos facilita el manejo de los asuntos
de concurrencia e integridad entre subsistemas. Los compiladores modernos y los ambientes de desa
rrollo de software tambin siguen una arquitectura de depsito (vea la figura 6-14). Los diferentes sub
sistemas de un compilador tienen acceso a un rbol de anlisis y una tabla de smbolos centrales y los
actualizan. Los depuradores y editores de sintaxis tambin tienen acceso a la tabla de smbolos.
H subsistema de depsito tambin puede usarse para la implementacin del flujo de control glo
bal En el ejemplo del compilador de la figura 6-14, cada herramienta individual (por ejemplo, el com
pilador, el depurador y el editor) es llamada por el usuario. El depsito slo asegura que sean seriados
tos accesos concurrentes. En forma alterna, el depsito puede usarse para llamar a tos subsistemas con
base en el estado de la estructura de datos central. A estos sistemas se les llama sistemas de pizarrn.
El sistema de comprensin del habla HEARSAYII [Erman et al., 1980], uno de los primeros siste
mas de pizarrn, selecciona las herramientas a llamar con base en el estado actual del pizarrn.
www.FreeLibros.org
C o n ce pt o s del d i s e o d e s i s t e m a s 183
Figura 6-14 Una instancia de la arquitectura de depsito (diagrama de clase UML). Un compilador moder
no genera en forma incremental un rbol de anlisis y una tabla de smbolos que pueden ser usados despus
por los depuradores y los editores de sintaxis.
Las arquitecturas de depsito son bastante adecuadas para aplicaciones con tareas de proce
samiento de datos complejos que cambian en forma constante. Una vez que est bien definido el
depsito central podemos aadir con facilidad nuevos servicios en forma de subsistemas adiciona
les. La desventaja principal de los sistemas de depsito es que el depsito central puede convertirse
rpido en un cuello de botella, tanto en el aspecto de desempeo como en el de modificabilidad.
El acoplamiento entre cada subsistema y el depsito es alto y, por lo tanto, dificulta cambiar el
depsito sin que tenga un impacto sobre todos los subsistemas.
Modelo/Vista/Con trotador
En la arquitectura Modelo/Vista/Controlador (MVC) (vea la figura 6-15) se clasifica a los
sistemas en tres tipos diferentes: los s u bs is t emas mode l o son responsables del mantenimiento del
conocimiento del dominio; los s u b s i s t e m a s v i s t a son responsables del despliegue ante el
usuario, y los s u b s is t e m a s c o n t r o la d o r son responsables del manejo de la secuencia de interac
ciones con el usuario. Los subsistemas modelo se desarrollan de tal forma que no dependan de
ningn subsistema vista o controlador. Los cambios en su estado son propagados a los subsiste
mas vista mediante un protocolo de suscripcin/notificacin. La arquitectura MVC es un caso
especial de la arquitectura de depsito en donde el Modelo implementa la estructura de datos
central y los objetos de control dictan el flujo de control.
www.FreeLibros.org
184 C apitulo 6 D ise o del sistema
Figura 6-15 Arquitectura Modelo/Vista/Controlador (diagrama de clase UML). El C o n t r o l a d o r recopila la
entrada de los usuarios y enva mensajes al M o d e l o . El M o d e l o mantiene la estructura de datos central. La v i s t a
despliega el M o d e l o y es notificada (mediante un protocolo de suscripcin/notificacin) cuando ste cambia.
Por ejemplo, las figuras 6-16 y 6-17 ilustran la secuencia de eventos que suceden en una
arquitectura MVC. La figura 6-17 despliega dos vistas del sistema de archivos. La ventana infe
rior lista el contenido de la carpeta Comp-Based Software E n g i n e e r i n g que incluye al archivo
9 D e s i g n P a t t e r n s 2 . p p t . La ventana superior despliega informacin acerca de ese archivo. El
nombre del archivo, 9 D e s i g n P a t t e r n s 2 . p p t , aparece en tres lugares: en ambas ventanas y en
el ttulo de la ventana superior.
Supongamos ahora que cambiamos el nombre del archivo a 9 D e s i g n P a t t e r n s . p p t . La
figura 6-16 muestra la secuencia de eventos:
1. v i s t a i n f o y v i s t a C a r p e t a se suscriben ante cambios de los modelos Archivo que des
pliegan (cuando se crean).
2. El usuario teclea el nuevo nombre del archivo.
3. El C o n t r o l a d o r , el objeto responsable de la interaccin con el usuario durante los cam
bios de nombre de archivo, enva una peticin al Modelo.
4. El Modelo cambia el nombre del archivo y notifica el cambio a todos los suscripto res.
5. Se actualizan V i s t a l n f o y V i s t a C a r p e t a para que tos usuarios vean un cambio consistente.
2. E l usuario t e c l e a un nuevo nontore de archivo
Figura 6-16 Secuencia de eventos en la arquitectura Modelo/Vi sta/ Control ador (diagrama de colabora
cin UML).
www.FreeLibros.org
C o n ce pt o s del d i s e o d e s i s t e m a s 185
C omp-Based Software Engineering
ame S ize Kind
U 5SoftwareLifecycle.pdf
D 5SoftwareLifecycle
D 6Project Management
D 6Project Management.pdf
D 7SystemDesign.pdf
D 7SystemDesignl.ppt
D 8DesignRationale.pdf
D 8DesignRationale.ppt
9DesignPatterns2.ppt Info
9DesignPatterns2 .ppt
3 7 1K PowerPoint document
78 0 K PowerPoint document
2 9 3 K Ac r ob a t Exchange ...
8 5 K Ac r ob a t Exchange ...
13 7 K PowerPoint document
3 5 8 K Ac r ob a t Exchange ...
2 0 8 K PowerPoint document
13 0 K PowerPoint document
Ki n d : PowerPoint document
S i z e : 13 0 K on disk ( 1 2 7 , 8 8 5 by tes used)
V h e r e : Teaching: TUM V S 9 7 / 9 8 :
C omp-Based S oftw are Engineering:
Figura 6-17 Un ejemplo de arquitectura MVC. El modelo es el nombre de archivo 9Design-
Patterns2 .ppt. Una vista es una ventana titulada Comp-Based Software Engineering que des
pliega el contenido de una carpeta que contiene el archivo 9DesignPatterns2 .ppt. La otra vista es una
ventana llamada 9DesignPatterns2 .ppt info que despliega informacin relacionada con el archivo. Si
se cambia el nombre del archivo ambas vistas son actualizadas por el controlador.
La funcionalidad de suscripcin y notificacin asociada con esta secuencia de eventos se
realiza, por lo general, con un patrn Observador (vea la seccin A.7). El p a t r n O bse r vador
permite que los objetos Modelo y Vista se desacoplen an ms eliminando de ellos las dependen
cias directas. Para mayores detalles el lector debe consultar [Gamma et a l , 1994] y la seccin A.7.
Las razones que hay para la separacin de Modelo, Vista y Controlador es que las interfaces
de usuario, o sea, la Vista y el Controlador, estn sujetas a cambios ms frecuentes que el dominio de
conocimiento, esto es, el Modelo. Adems, al eliminar cualquier dependencia del Modelo en la
Vista con el protocolo suscripcin/notificacin, los cambios en las vistas (interfaces de usuario) no
tienen ningn efecto en los subsistemas del modelo. En el ejemplo de la figura 6-17 podramos
aadir una vista del sistema de archivos como shell estilo Unix sin tener que modificar el sistema
de archivos. En el captulo 5, Anlisis, describimos una descomposicin similar cuando identifi
camos los objetos de entidad, frontera y control. Esta descomposicin tambin est motivada por
las mismas consideraciones acerca de los cambios.
Las arquitecturas MVC son bastante adecuadas para sistemas interactivos, en especial
cuando se necesitan varias vistas del mismo modelo. La MVC puede usarse para mantener la
www.FreeLibros.org
186 C apitulo 6 D ise o del sistema
consistencia a travs de datos distribuidos, pero introduce los mismos cuellos de botella de
desempeo que otras arquitecturas de depsito.
Arquitectura cliente/servidor
En la arquitectura cliente/servidor (figura 6-18), un subsistema, el servidor, proporciona ser
vicios a instancias de los dems subsistemas llamados los cli e n t es , que son responsables de la
interaccin con el usuario. La peticin de un servicio se realiza, por lo general, mediante un meca
nismo de llamada a procedimiento remoto o a un agente (broker) de objetos comn (por ejemplo,
CORBA o Java RMI). El flujo de control en los clientes y el servidor es independiente, a excepcin
de la sincronizacin para administrar las peticiones o para recibir los resultados.
Servidor
Cli ent e
* *
s o l i c i t a n t e proveedor
s e r v i c i o l ()
s e r v i c i o 2 ()
servicioN()
Figura 6-18 Arquitectura cliente/servidor (diagrama de clase UML). Los clientes solicitan servicios de
uno o ms servidores. Los servidores no tienen conocimiento del cliente. La arquitectura cliente/servidor
es una generalizacin de la arquitectura de depsito.
Un sistema de informacin con una base de datos central es un ejemplo de la arquitectura cliente/
servidor. Los clientes son responsables de la recepcin de entrada del usuario, de la realizacin de revi
siones de rango y de la iniciacin de transacciones de base de datos una vez que se han recolectado
todos los datos necesarios. Luego el servidor es responsable de la realizacin de las transacciones y de
garantizar la integridad de los datos. En este caso, una arquitectura cliente/servidor es un caso especial
de la arquitectura de depsito en donde la estructura de datos central es manejada por un proceso. Sin
embargo, b s sistemas cliente/servidor no estn restringidos a un sob servidor. En la Worid Wide Web
un solo cliente puede tener acceso con facilidad a datos de miles de servidores diferentes (figura 6-19).
Figura 6-19 La Worid Wide Web como una instancia de la arquitectura cliente/servidor (diagrama de obje
tos UML).
www.FreeLibros.org
C o n ce pt o s del d i s e o d e s i s t e m a s 187
Las arquitecturas cliente/servidor son muy adecuadas para los sistemas distribuidos que
manejan grandes cantidades de datos.
Arquitectura par a par
Una arquitectura par a par (vea la figura 6-20) es una generalizacin de la arquitectura cliente/
servidor en donde los subsistemas pueden actuar como clientes y como servidores, en el sentido de
que cada subsistema puede solicitar y proporcionar servicios. El flujo de control dentro de cada sub
sistema es independiente de los dems, a excepcin de la sincronizacin de las peticiones.
Figura 6-20 Arquitectura pa r a par (diagrama de clase UML). Los pares pueden solicitar y proporcionar
servicios a los dems pares.
Figura 6-21 Un ejemplo de arquitectura pa r a par (diagrama de colaboracin UML). El servidor de base
de datos puede procesar peticiones de las aplicaciones y enviar notificaciones a stas.
Un ejemplo de una arquitectura par a par es una base de datos en donde, por un lado, acepta
peticiones de la aplicacin y, por el otro, enva notificaciones a la aplicacin cada vez que cambian
ciertos datos (figura 6-21). Los sistemas par a par son ms difciles de disear que los sistemas
cliente/servidor. Introducen la posibilidad de estancamientos y complican el flujo de control.
Arquitectura de tubo y filtro
En la arquitectura de tubo y filtro (vea la figura 6-22) los subsistemas procesan datos reci
bidos de un conjunto de entradas y envan resultados a otros subsistemas por medio de un conjunto
de salidas. A los subsistemas se les llama fi lt r o s y a las asociaciones entre los subsistemas se
les llama t u b o s . Cada filtro slo sabe el contenido y el formato de los datos recibidos en los
tubos de entrada y no el de los filtros que los producen. Cada filtro ejecuta en forma concurrente
y la sincronizacin se realiza por medio de los tubos. La arquitectura de tubo y filtro es modi-
ficable: los filtros pueden sustituirse por otros o volver a configurarse para lograr un propsito
diferente.
www.FreeLibros.org
188 C apitulo 6 D ise o del sistema
Figura 6-22 Arquitectura de tubo y filtro (diagrama de c la se UML). Un Filtro puede ten e r muchas
entradas y salidas. Un Tubo conecta una d e las salidas de un Filtro a una de las entradas de otro
Filtro.
El ejemplo ms conocido de la arquitectura de tubo y filtro es el shell Unix. La mayora de
los filtros estn escritos de tal forma que leen su entrada y escriben sus resultados en tubos estn
dar. Esto permite que un usuario de Unix los combine en muchas formas diferentes. La figura 6-23
muestra un ejemplo compuesto por cuatro filtros. La salida de ps (estado del proceso) se alimenta
a grep (bsqueda de patrn) para eliminar todos los procesos que no pertenecen a un usuario espe
cfico. La salida de grep (es decir, los procesos que posee el usuario) es ordenada luego mediante
sort y luego enviada a more, que es un filtro que despliega su salida en una terminal, pantalla por
pantalla.
% ps auxwww I grep d u to i t | s o r t | more
d u to i t 19737 0.2 1 . 6 1908 1500 pts/6 O 15:24:36 0:00 - t c s h
d u to i t 19858 0.2 0.7 816 580 pts/6 S 15:38:46 0:00 grep d u t o i t
d u to i t 19859 0.2 0.6 812 540 pts/6 O 15:38:47 0:00 s o r t
Las arquitecturas de tubo y filtro son adecuadas para sistemas que aplican transforma
ciones a flujos de datos sin intervencin de los usuarios. No son adecuadas para sistemas que
requieren interacciones ms complejas entre componentes, como un sistema de administracin
de informacin o un sistema interactivo.
6.3.6 Diagramas de despliegue UML
Los d i a g r a m a s de d e s p l i e g u e UML se usan para mostrar la relacin entre componentes
del tiempo de ejecucin y los nodos de hardware. Los componentes son entidades autoconteni-
das que proporcionan servicios a otros componentes o actores. Un servidor Web, por ejemplo, es
un componente que proporciona servicios a navegadores Web. Un navegador Web, como Netscape,
es un componente que proporciona servicios a los usuarios. Un sistema distribuido puede estar
compuesto por muchos componentes interactuantes del tiempo de ejecucin.
En los diagramas de despliegue UML los nodos se representan con cuadros que contienen
iconos de componentes. Las dependencias entre los componentes se representan con flechas
de guiones. La figura 6-24 muestra un ejemplo de un diagrama de despliegue que ilustra dos
www.FreeLibros.org
C o n ce pt o s del d i s e o d e s i s t e m a s 189
Figura 6-24 Un diagrama de organizacin UML que representa la asignacin de componentes a diferentes
nodos y las dependencias entre componentes. Los navegadores Web de la PC y la Mac pueden acceder a
ServidorWeb, que proporciona informacin de una BaseDeDatos.
navegadores Web accediendo a un servidor Web. El servidor Web a su vez accede a datos de un
servidor de base de datos. En la grfica de dependencia podemos ver que los navegadores Web no
acceden en forma directa a la base de datos en ningn momento.
El diagrama de organizacin de la figura 6 - 2 4 se enfoca en la asignacin de componentes
a nodos y proporciona una vista de alto nivel de cada componente. Los componentes pueden
refinarse para que incluyan informacin acerca de las interfaces que proporcionan y las clases
que contienen. La figura 6 - 2 5 ilustra las interfaces obtener y enviar del componente S e r v i
dorWeb y las clases que contiene.
S er vid orW e b
URL
P e t i c i n H t t p
C ns ulta B D
A r c h i v o
Ra su l ta doBD
- Q OBTENER
- O ENVIAR
Figura 6-25 Vista refinada del componente ServidorWeb (diagrama de despliegue UML). El compo
nente ServidorWeb proporciona dos interfaces a los navegadores: un navegador puede solicitar el contenido
de un archivo al que hace referencia mediante un URL (o b t e n e r ) o enviar el contenido de un formulario
(ENVIAR). El componente ServidorWeb contiene cinco clases: URL, PeticinHttp, ConsultaBD, Archivo
y ResultadoBD.
www.FreeLibros.org
190 C apitulo 6 D ise o del sistema
6.4 Actividades del diseo de sistemas: desde l o s objetos hasta
los s u b si s te m a s
El diseo de sistemas consiste en la transformacin del modelo de anlisis en el modelo de
diseo, que toma en cuenta los requerimientos no funcionales y las restricciones descritos en el
enunciado del problema y el documento de anlisis de requerimientos. En la seccin 6.3 nos
enfocamos en la descomposicin en subsistemas y sus propiedades. En esta seccin describimos
las actividades necesarias para asegurarse que una descomposicin en subsistemas tome en
cuenta todos los requerimientos no funcionales y prepararse para tomar en cuenta cualquier
restriccin durante la fase de implementacin. Ilustramos estas actividades con un ejemplo,
MiViaje, un sistema para la planeacin de rutas para los automovilistas. Esto proporcionar
un conocimiento ms concreto de los conceptos de diseo de sistemas.
Comenzamos con el modelo de anlisis de MiViaje. Luego:
Identificamos los objetivos de diseo para los requerimientos no funcionales (seccin 6.4.2)
Diseamos una descomposicin inicial en subsistemas (seccin 6.4.3)
Establecemos la correspondencia entre los subsistemas y los procesadores y componentes
(seccin 6.4.4)
Decidimos el almacenamiento (seccin 6.4.5)
Definimos las polticas de control de acceso (seccin 6.4.6)
Seleccionamos un mecanismo de flujo de control (seccin 6.4.7)
Identificamos condiciones de frontera (seccin 6.4.8)
En la seccin 6.4.9 examinamos asuntos relacionados con la estabilizacin del diseo del sistema
y, al mismo tiempo, anticipamos los cambios. Por ltimo, en la seccin 6.4.10 describimos la
manera en que se revisa el modelo de diseo del sistema. Pero primero describimos el modelo de
anlisis que usamos como punto de partida para el diseo del sistema de MiViaje.
64.1 Punto de partida: el modelo de anlisis para un sistema
de planeacin de rutas
Usando MiViaje, un automovilista puede planear un viaje desde una computadora casera
ponindose en contacto con un servicio de planeacin de viajes en la Web ( PlanViaj e en la figura
6-26). El viaje se guarda en el servidor para consultas futuras. El servicio de planeacin de viajes
debe soportar a ms de un automovilista.
www.FreeLibros.org
Actividades del d i s e o d e sistemas: d e s d e l o s objetos hasta l o s s u b s i s t e m a s 191
Nombre del caso de uso PlanVia j e
Condicin inicial 1. El Aut omovi l i s t a activa su computadora casera y se registra en el
servicio Web de planeacin de viajes.
Flujo de eventos 2. Despus de registrarse en forma satisfactoria, el Automovilista
proporciona las restricciones para el viaje como una secuencia de destinos.
3. Basndose en una base de datos de mapas, el servicio de planeacin
calcula la ruta ms corta visitando los destinos en el orden especificado. El
resultado es una secuencia de segmentos que enlazan una serie de cruces y
una lista de indicaciones.
4. El Automovilista puede revisar el viaje aadiendo o eliminando destinos.
Condicin final 5. El Automovil ista guarda el viaje planeado con un nombre en la base de
datos del servicio de planeacin para recuperarlo ms adelante.
Figura 6-26 El caso de uso PlanVia j e del sistema MiViaje.
Luego el automovilista va al automvil e inicia el viaje, mientras la computadora de a
bordo le da indicaciones, basada en la informacin del viaje del servicio de planeacin y su ubi
cacin actual indicada por un sistema GPS a bordo ( E jec u ta r V iaje en la figura 6-27).
Nombre del caso de uso Ej ec u t a rV i a j e
Condicin inicial L. El Automovilista arranca su automvil y se registra en el asistente de
ruta a bordo.
Flujo de eventos 2. Despus de registrarse en forma satisfactoria, el Automovilista especifica
el servicio de planeacin y el nombre del viaje a ejecutar.
3. El asistente de ruta a bordo obtiene la lista de destinos, indicaciones,
segmentos y cruces desde el servicio de planeacin.
4. Tomando en cuenta la posicin actual, el asistente de ruta proporciona al
Automovil ista el siguiente conjunto de indicaciones.
Condicin final 5. El Automovilista llega a su destino y apaga al asistente de ruta.
Figura 6-27 El caso de uso Ej ec u t a rV i a j e del sistema MiViaje.
Realizamos el anlisis del sistema MiViaje siguiendo la tcnica indicada en el captulo 5,
Anlisis, y obtenemos el modelo de la figura 6-28.
www.FreeLibros.org
192 C apitulo 6 D ise o del sistema
Un Cruce es un punto geogrfico en donde el automovilista puede escoger
entre varios Segmento.
Un Destino representa una ubicacin a donde quiere ir el automovilista.
Teniendo un Cruce y un Segmento adyacente dados, una indicacin
describe en lenguaje natural la manera de conducir el automvil hacia el
Segmento dado.
Una ubicacin es la posicin del automvil como es conocida por el sistema
GPS a bordo o por la cantidad de giros de las ruedas.
ServicioPlaneacin Un ServicioPlaneacin es un servidor Web que puede proporcionar un viaje,
vinculando varios destinos en forma de una secuencia de cruces y segmentos.
AsistenteRuta Un AsistenteRuta da indicacin al automovilista tomando en cuenta la
Ubicacin actual y el siguiente Cruce.
Segmento Un Segmento representa el camino que hay entre dos Cruce.
Viaje Un Via j e es una secuencia de Indicacin entre dos Destino.
F i g u r a 6-28 Modelo de anlisis para la planeacin y ejecucin de la planeacin de ruta de MiViaje.
Adems, durante la obtencin de requerimientos nuestro cliente especific los siguientes
requerimientos no funcionales para MiViaje.
Requerimientos n o funcionales para MiViaje
1. MiViaje est en contacto con el ServicioPlaneacin mediante un mdem inalmbrico. Puede
suponerse que el mdem inalmbrico funciona en forma adecuada en su destino inicial.
2. Una vez que ha comenzado el viaje, MiViaje debe dar indicaciones correctas aunque el mdem falle
y no pueda mantener una conexin con el ServicioPlaneacin.
3. MViaje debe minimizar el tiempo de conexin para reducir costos de operacin.
4. Slo es posible la replaneacin si se puede hacer la conexin con el ServicioPlaneacin.
5. El ServicioPlaneacin puede soportar, al menos, 50 automovilistas diferentes y 1000 viajes.
Cruce
Destino
Indicacin
Ubicacin
www.FreeLibros.org
Actividades del d i s e o d e sistemas: d e s d e l o s objetos hasta l o s s u b s i s t e m a s 193
6.4.2 Identificacin de los objetivos de diseo
La definicin de los objetivos de diseo es el primer paso del diseo del sistema. Identifica
las cualidades en las que debe enfocarse el sistema. Muchos objetivos de diseo pueden inferirse a
partir de los requerimientos no funcionales o del dominio de aplicacin. Otros habr que obtener
los del cliente. Sin embargo, es necesario especificarlos de manera explcita para que cada una
de las decisiones de diseo importantes pueda tomarse en forma consistente siguiendo el mismo
conjunto de criterios.
Por ejemplo, a la luz de los requerimientos no funcionales de MiViaje, descritos en la sec
cin 6.4.1, identificamos la confiabilidad y la tolerancia a fallas de conectividad como objetivos
de diseo. Luego identificamos la seguridad como objetivo de diseo, ya que muchos automo
vilistas tendrn acceso al mismo servidor de planeacin de viajes. Aadimos la modificabilidad
como objetivo de diseo, ya que queremos proporcionar la capacidad de que los automovilistas
seleccionen el servicio de planificacin de viajes que deseen. El siguiente cuadro resume los
objetivos de diseo que identificamos.
Objetivos de d i s e o para MiViaje
Confiabilidad: MiViaje debe ser confiable [generalizacin del requerimiento no funcional 2].
Tolerancia a fallas: MiViaje debe tolerar la falla de prdida de conectividad con el servicio de rutas
[el requerimiento no funcional 2 en otras palabras].
Seguridad: MiViaje debe ser seguro, es decir, no debe permitir que otros automovilistas o usuarios no
autorizados tengan acceso a los viajes de otro automovilista [se deduce del dominio de aplicacin].
Modificabilidad: MiViaje debe ser modificable para que use servicios de enrutamiento diferentes
[anticipacin de cambios hechos por los desarrolladores].
En general, podemos seleccionar los objetivos de diseo a partir de una larga lista de cualidades
muy deseables. Las tablas 6-1 a 6-5 listan varios criterios de diseo posibles. Estos criterios estn
organizados en cinco grupos: desempeo, solidez, costo, mantenimiento y criterios de usuario fi n a l
El desempeo, la seguridad y los criterios de usuario final se especifican, por lo general, en los
requerimientos o se deducen del dominio de aplicacin. Los criterios de costo y mantenimiento
son dictados por el cliente y el proveedor.
Los c ri t er i o s de d e se mpe o (tabla 6-1) incluyen los requerimientos de velocidad y espacio
impuestos por el sistema. Deber ser sensible el sistema o deber realizar un cantidad mxima de
tareas? Se dispone de espacio de memoria para optimizaciones de velocidad o se deber usar la
memoria con mesura?
Tabla 6-1 Criterios de desempeo.
C riterio de diseo Definicin
Tiempo de respuesta Qu tan rpido debe atenderse una peticin de usuario despus de haberla enviado?
Produccin Qu tantas tareas puede realizar el sistema en un periodo de tiempo fijo?
Memoria Qu tanto espacio se requiere para que se ejecute el sistema?
www.FreeLibros.org
194 C apitulo 6 D ise o del sistema
Tabla 6-2 C r i t e r i o s d e s o l i d e z .
C riterio de diseo Definicin
Robustez Capacidad para sobrevivir ante datos invlidos del usuario
Confiabilidad Diferencia entre el comportamiento especificado y el observado
Disponibilidad Porcentaje del tiempo del sistema en que puede usarse para realizar las tareas
normales
Tolerancia a fallas Capacidad para operar bajo condiciones errneas
Seguridad Capacidad para resistir ataques maliciosos
Inocuidad Capacidad para no poner en riesgo la vida humana, aun en presencia de errores y
fallas
Los criterios de s olide z (tabla 6-2) determinan qu tanto esfuerzo debe ponerse en la mini-
mizacin de fallas del sistema y sus consecuencias. Con cunta frecuencia puede fallar el
sistema? Qu tan disponible debe estar el sistema ante el usuario? Hay asuntos de seguridad
asociados con las fallas del sistema? Hay riesgos de seguridad asociados con el ambiente del
sistema?
Los c r i t e r i o s de c o s t o (tabla 6-3) incluyen el costo para desarrollar el sistema, entregarlo
y administrarlo. Observe que los criterios de costo no slo incluyen consideraciones de diseo
sino tambin las administrativas. Cuando el sistema est reemplazando a otro antiguo, tambin
tiene que tomarse en cuenta el costo de asegurar la compatibilidad retrospectiva o la transicin
hacia el nuevo sistema. Tambin hay compromisos entre diferentes tipos de costos, como el
costo del desarrollo, el costo del entrenamiento a los usuarios finales, los costos de transicin y
los costos de mantenimiento. El mantenimiento de la compatibilidad retrospectiva con un sistema
anterior puede sumarse al costo de desarrollo, reduciendo el costo de transicin.
Tabla 6-3 Criterios de costo.
C riterio de diseo Definicin
Costo de desarrollo Costo del desarrollo del sistema inicial
Costo de entrega Costo de la instalacin del sistema y del entrenamiento a los usuarios
Costo
de actualizacin
Costo de trasladar los datos del sistema anterior. Este criterio es resultado de los
requerimientos de compatibilidad retrospectiva
Costo
de mantenimiento
Costo requerido para la correccin de errores y para las mejoras al sistema
Costo
de administracin
Dinero requerido para la administracin del sistema
www.FreeLibros.org
Actividades del d i s e o d e sistemas: d e s d e l o s objetos hasta l o s s u b s i s t e m a s 195
Los c r i t e r i o s de m a n t e n i m i e n t o (tabla 6-4) determinan qu tan difcil es cambiar el
sistema despus de la entrega. Con cunta facilidad puede aadirse nueva funcionalidad? Con
cunta facilidad pueden revisarse las funciones existentes? Puede adaptarse el sistema a un
dominio de aplicacin diferente? Qu tanto esfuerzo se requiere para transportar el sistema a
una plataforma diferente? Estos criterios son difciles de optimizar y planear, ya que rara vez se
tiene en claro qu tanto tiempo ser operativo el sistema y qu tan exitoso ser el proyecto.
Tabla 6-4 Criterios de mantenimiento.
C riterio de diseo Definicin
Extensibilidad Qu tan fcil es agregar funcionalidad o nuevas clases al sistema?
Modificabilidad Qu tan fcil es cambiar la funcionalidad del sistema?
Adaptabilidad Qu tan fcil es transportar el sistema a diferentes dominios de
aplicacin?
Portabilidad Qu tan fcil es transportar el sistema a diferentes plataformas?
Legibilidad Qu tan fcil es comprender el sistema leyendo el cdigo?
Rastreabilidad
de requerimientos
Qu tan fcil es establecer la correspondencia entre el cdigo y los
requerimientos especficos?
Los c r i t e r i o s de l u s u a r io fi nal (tabla 6-5) incluyen cualidades que son deseables desde el
punto de vista de los usuarios que todava no han sido cubiertas bajo los criterios de desempeo
y solidez. Estos incluyen la utilidad (qu tan difcil es usar y aprender el software?) y el valor
prctico (qu tan bien apoya el sistema el trabajo del usuario?). Con frecuencia estos criterios
no reciben mucha atencin, en especial cuando el cliente que contrata el sistema es diferente a
los usuarios del sistema.
Tabla 6-5 Criterios de usuario final.
C riterio de diseo Definicin
Valor prctico Qu tan bien soporta el sistema el trabajo del usuario?
Utilidad Qu tan fcil es para el usuario la utilizacin del sistema?
Cuando se definen los objetivos de diseo slo se toman en cuenta en forma simultnea un
pequeo subconjunto de estos criterios. Por ejemplo, no es realista desarrollar software que sea
inocuo, seguro y barato. Por lo general, los desarrolladores necesitan establecer la prioridad
de los objetivos de diseo e intercambiarlos entre s, as como con los objetivos administrativos
conforme el proyecto se atrasa o rebasa el presupuesto. La tabla 6-6 lista varios intercambios
posibles.
www.FreeLibros.org
196 C apitulo 6 D ise o del sistema
Tabla 6-6 E j e m p l o s d e i n t e r c a m b i o s d e o b j e t i v o s d e d i s e o .
Intercambio Razo nes
Espacio frente a velocidad Si el software no satisface los requerimientos de tiempo de respuesta
o productividad se puede gastar en ms memoria para agilizar el soft
ware (por ejemplo, cacheo, ms redundancia, etctera). Si el software
no satisface las restricciones de espacio de memoria se pueden com
primir los datos a costa de la velocidad.
Tiempo de entrega frente
a funcionalidad
Si el desarrollo se atrasa con respecto a lo planeado, un gerente de
proyecto puede entregar una funcionalidad menor a la esperada y
entregar a tiempo o entregar toda la funcionalidad en un momento
posterior. Los contratos de software, por lo general, ponen ms
nfasis en la funcionalidad, mientras que los proyectos de software
para la venta en paquete ponen ms nfasis en la fecha de entrega.
Tiempo de entrega frente
a calidad
Si las pruebas se atrasan con respecto a lo planeado, un gerente de
proyecto puede entregar el software a tiempo con errores conocidos
(y tal vez proporcionar ms adelante un parche para corregir cualquier
error serio) o entregar el software en un momento posterior con ms
errores corregidos.
Tiempo de entrega frente
a contratacin de personal
Si el desarrollo se atrasa con respecto a lo planeado, un gerente de
proyecto puede aadir recursos al proyecto para incrementar la
productividad. En la mayora de los casos, esta opcin slo est
disponible al inicio del proyecto: la adicin de recursos, por lo
general, disminuye la productividad mientras se entrena al nuevo
personal o se le actualiza. Tome en cuenta que la adicin de recursos
tambin incrementar el costo del desarrollo.
Los objetivos administrativos pueden entrar en conflicto con los objetivos tcnicos (por
ejemplo, tiempo de entrega frente a funcionalidad). Una vez que se tiene una idea clara de los
objetivos de diseo se puede continuar para disear una descomposicin inicial en subsistemas.
6.4.3 Identificacin de subsistemas
Encontrar subsistemas durante el diseo del sistema tiene muchas similitudes con encontrar
objetos durante el anlisis: es una actividad voltil manejada por heurstica. En consecuencia, las
tcnicas para la identificacin de objetos que describimos en el captulo 5, Anlisis, como las reglas
lxicas de Abbott, son aplicables a la identificacin de subsistemas. Es ms, la descomposicin en
subsistemas se revisa en forma constante siempre que se tratan temas nuevos: los subsistemas se
combinan en un subsistema, un subsistema complejo se divide en partes y se aaden algunos sub
sistemas para que se encarguen de nueva funcionalidad. Las primeras iteraciones sobre la descom
posicin en subsistemas pueden introducir cambios drsticos en el modelo de diseo del sistema.
Con frecuencia se manejan mejor mediante lluvia de ideas.
La descomposicin en subsistemas inicial debe derivarse de los requerimientos funciona
les. Por ejemplo, en el sistema MiViaje identificamos dos grupos principales de objetos: los que
estn involucrados en los casos de uso P lanear Viaje y los que estn involucrados en el caso de
www.FreeLibros.org
Actividades del d i s e o d e sistemas: d e s d e l o s objetos hasta l o s s u b s i s t e m a s 197
uso Eje c utar V iaje . Las clases Via je , i ndi ca c in, Cruce, Segmento y Destino se comparten
entre ambos casos de uso. Este conjunto de clases est muy acoplado, ya que se usa como un
conjunto para representar un Viaje. Decidimos asignarlas, junto con ServicioPlaneacin, al
Subsistema Plae acin, y el resto de las clases se asignan al SubsistemaEnrut amiento
(figura 6-29). Esto conduce a una sola asociacin que cruza fronteras de subsistema. Observe que
esta descomposicin en subsistemas sigue una arquitectura de depsito en donde el Subsistema-
Planeacin es responsable de la estructura de datos central.
SubsistemaPlanea-
ci n
SubsistemaEnruta-
mionto
El SubsistemaPlaneacin es responsable de la construccin de un Via j e
que conecta una secuencia de Destino. El SubsistemaPlaneacin
tambin es responsable de responder a peticiones de replanificacin de los
SubsistemasEnrutamiento.
El SubsistemaEnrutamiento es responsable de la descarga de un Viaje
desde el ServicioPlaneacin y de ejecutarlo dando Indicacin al
automovilista con base en su Ubicacin.
Figura 6-29 Descomposicin en subsistemas inicial para MiViaje (diagrama de clase UML).
Otra heurstica para la identificacin de subsistemas es mantener juntos los objetos relacionados
desde el punto de vista funcional. Un punto inicial es tomar tos casos de uso y asignar a tos subsistemas
bs objetos participantes que hayan sido identificados en cada uno de ellos. Algunos grupos de objetos,
como el grupo Viaje a i MiViaje, se comparten y usan para comunicar informacin entre subsistemas.
Podemos crear un nuevo subsistema para atojarlos o asignarlos al subsistema que crea esos objetos.
Heurstica para el agrupamiento de objetos en s ubsistemas
Asigne los objetos identificados en un caso de uso al mismo subsistema.
Cree un subsistema dedicado para los objetos que se usan para mover datos entre subsistemas.
Minimice la cantidad de asociaciones que cruzan fronteras de subsistemas.
Todos los objetos que estn en el mismo subsistema deben estar relacionados desde el punto de
vista funcional.
www.FreeLibros.org
198 C apitulo 6 D ise o del sistema
Encapsulado de subsistemas
La descomposicin en subsistemas reduce la complejidad del dominio de solucin minimi
zando las dependencias entre clases. El pa t r n F ach ada [Gamma et a l , 1994] nos permite reducir
an ms las dependencias entre clases encapsulando un subsistema con una interfaz unificada
simple. Por ejemplo, en la figura 6-30 la clase Compilador es una Fachada que oculta las clases
Generador Cdigo, Optimizador, NodoAnlisis, Analizador y Lxico. La Fachada propor
ciona el acceso slo a los servicios pblicos proporcionados por el subsistema y oculta todos los
dems detalles, reduciendo en forma efectiva el acoplamiento entre subsistemas.
Figura 6-30 Un ejemplo del patrn Fachada (diagrama de clase UML).
Los subsistemas que se identifican durante la descomposicin inicial en subsistemas
resultan, con frecuencia, del agolpamiento de varias clases relacionadas desde el punto de vista
funcional. Estos subsistemas son buenos candidatos para el patrn Fachada y deben encapsu-
larse bajo una clase.
6.4.4 C orrespondencia de subsistemas a procesadores y componentes
Seleccin de una configuracin de hardware y una plataforma
Muchos sistemas ejecutan en ms de una computadora y dependen del acceso a una red
interna o a Internet. El uso de varias computadoras puede resolver las necesidades de alto desem
peo o la interconexin de varios usuarios distribuidos. En consecuencia, necesitamos examinar en
forma minuciosa la asignacin de subsistemas a computadoras y el diseo de una infraestructura
para soportar la comunicacin entre subsistemas. Estas computadoras se modelan como nodos en
los diagramas de organizacin UML. Los nodos pueden representar instancias especficas (por
www.FreeLibros.org
Actividades del d i s e o d e sistemas: d e s d e l o s objetos hasta l o s s u b s i s t e m a s 199
ejemplo, MiMac) o una clase de computadoras (por ejemplo, ServidorWeb).1 Debido a que la
actividad de correspondencia con el hardware tiene un impacto significativo en el desempeo y
complejidad del sistema, la realizamos al inicio del diseo del sistema.
La seleccin de una configuracin de hardware tambin incluye la seleccin de una mquina
virtual sobre la que se construir el sistema. La mquina virtual incluye el sistema operativo y cual
quier componente de software necesario, como un sistema de administracin de base de datos o un
paquete de comunicaciones. La seleccin de una mquina virtual reduce la distancia entre el sis
tema y la plataforma de hardware sobre la que se ejecutar. Entre ms funcionalidad proporcionen
tos componentes habr menos trabajo involucrado. Sin embargo, la seleccin de una mquina virtual
puede estar restringida por el cliente que adquiere el hardware antes del inicio del proyecto. La selec
cin de una mquina virtual tambin puede estar restringida por consideraciones de costo: en algunos
casos es difcil estimar si la construccin de un componente cuesta ms que comprarlo.
En MiViaje deducimos de los requerimientos que el SubsistemaPlaneacin y el Sub-
sistemaEnrutamiento se ejecutan en dos nodos diferentes: el primero es un servicio basado en Web
en un anfitrin Internet, mientras que el segundo ejecuta en una computadora a bordo. La figura 6-31
ilustra la ubicacin del hardware para MiViaje con dos nodos llamados :ComputadoraABordo y
ServidorWeb.
F i g u r a 6-31 Asignacin de los subsistemas de MiViaje al hardware (diagrama de organizacin UML).
S u b s i s t e m a E n r u t a m i e n t o ejecuta en ComputadoraABordo y S u b s i s t e m a P l a n e a c i n ejecuta en
Se r vidor We b.
Seleccionamos una mquina Unix como mquina virtual para el ServidorWeb, y los nave
gadores Web Netscape e Internet Explorer como mquinas virtuales para la ComputadoraABordo.
Asignacin de objetos y subsistemas a nodos
Una vez que se ha definido la configuracin de hardware y se han seleccionado las
mquinas virtuales, se asignan los objetos y subsistemas a los nodos. Esto activa, a veces, la iden
tificacin de nuevos objetos y subsistemas para el transporte de datos entre los nodos.
En el sistema MiViaje, SubsistemaEnrutamiento y SubsistemaP laneacin comparten los
objetos v i a j e , Destino, Cruce, Segmento e i n d i c a c i n . Las instancias de estas clases necesitan
comunicarse mediante mdems inalmbricos usando algn protocolo de comunicaciones. Creamos
1. E s t o s d o s c a s o s s e d i s t i n g u e n c o n l a c o n v e n c i n d e d e n o m i n a c i n u s u a l U ML : n o m b r e s s u b r a y a d o s p a r a i n s t a n c i a s y
n o m b r e s s in s u b r a y a d o p a r a c l a s e s .
www.FreeLibros.org
200 C apitulo 6 D ise o del sistema
un nuevo subsistema para soportar esta comunicacin: SubsistemaComunicaciones, un sub
sistema que se encuentra en ambos nodos para administrar la comunicacin entre los dos.
Tambin observamos que en SubsistemaEnrutamiento slo se guardan tos segmentos que
constituyen el viaje planeado. Los segmentos adyacentes que no son parte del viaje se guardan slo en el
SubsistemaPlaneacin. Para tomar esto en cuenta necesitamos objetos en el SubsistemaEn ru-
tamientoque puedan actuar como sustitutos de Segmento y V i a j e del SubsistemaPlaneacin. A un
objeto que acta a nombre de otro se le llama apoderado (Proxy"). Por lo tanto, creamos dos nuevas
clases llamadas ApoderadoSegmento y poderadoViajey las hacemos parte del SubsistemaEnru-
tamiento. Estos apoderados son ejemplos del patrn de diseo Apoderado [Gamma et al., 1994].
En caso de una replaneacin por parte del automovilista, esta clase solicitar en forma trans
parente al SubsistemaComunicaciones que recupere la informacin asociada con sus Segmento
correspondientes del S ubsistemaPlaneacin. Por ltimo, el SubsistemaComunicaciones se usa
para transferir un viaje completo desde SubsistemaPlaneacin hacia A s i s t e n t e R u t a . El modelo
de diseo revisado y las descripciones de las clases adicionales se muestran en la figura 6-32.
SubsistemaComunica- El S u b s i s t e m a C o m u n i c a c i o n e s es responsable del transporte de
ciones objetos del S u b s i s t e m a P l a n e a c i n al S u b s i s t e m a E n r u t a m i e n t o .
C o n e x i n Una Con e x i n representa un vnculo activo entre el
S u b s i s t e m a P l a n e a c i n y el S u b s i s t e m a E n r u t a m i e n t o . Un objeto
Con e x i n maneja los casos excepcionales asociados con la prdida de
los servicios de red.
Mensaje Un Mensa j e representa a un V i a j e y sus D e s t i n o , Segmento, Cr uc e e
i n d i c a c i n relacionados codificados para el transporte.
Figura 6-32 Modelo de diseo revisado para MiViaje (diagrama de clase UML, se omiten las asociaciones
por claridad).
www.FreeLibros.org
Actividades del d i s e o d e sistemas: d e s d e l o s objetos hasta l o s s u b s i s t e m a s 201
En general, la asignacin de subsistemas a nodos de hardware nos permite distribuir la
funcionalidad y la potencia de procesamiento a donde ms se necesita. Por desgracia, tambin
introduce problemas relacionados con almacenamiento, transferencia, rplica y sincronizacin
de datos entre subsistemas. Por esta razn, los desarrolladores tambin seleccionan los compo
nentes que usarn para desarrollar el sistema.
Encapsulado de componentes
Conforme se incrementa la complejidad de los sistemas y se acorta el tiempo para lanzarlo al
mercado, los desarrolladores tienen fuertes incentivos para reutilizar cdigo y apoyarse en compo
nentes proporcionados por vendedores. Los sistemas interactivos, por ejemplo, ahora rara vez se
construyen a partir de cero, sino que se desarrollan con juegos de herramientas de interfaz de
usuario que proporcionan un amplio rango de dilogos, ventanas, botones u otros objetos estndar
de interfaz. Otros proyectos se enfocan en volver a hacer slo partes de un sistema existente. Por
ejemplo, los sistemas de informacin corporativa, que son costosos de disear y construir, necesi
tan ser actualizados para un nuevo hardware del cliente. Con frecuencia slo se mejora el lado cliente
del sistema para la nueva tecnologa y se deja intacto el otro extremo del sistema.2 Cuando se mane
jan componentes hechos o cdigo heredado, los desarrolladores tienen que manejar cdigo existente
que no pueden modificar y que no ha sido diseado para ser integrado en sus sistemas.
Podemos manejar los componentes existentes, como el cdigo, encapsulndolos. Este
enfoque tiene la ventaja de desacoplar al sistema con respecto al cdigo encapsulado, mini
mizando, por lo tanto, el impacto del software existente en el diseo. Cuando el cdigo encap
sulado est escrito en el mismo lenguaje que el nuevo sistema esto puede realizarse usando
un patrn Adaptador.
El patrn Adaptador (figura 6-33) se usa para convertir la interfaz de un fragmento de
cdigo existente en una interfaz, llamada Nueva i n t e r f a z , de acuerdo a lo que espera el sub
sistema que lo llama. Una clase A d a p t a d o r , llamada tambin una envoltura, se introduce para pro
porcionar el pegamento entre N u e v a l n t e r f a z y S i s t e m a H e r e d a d o . Por ejemplo, supongamos
F i g u r a 6-33 Patrn A d a p t a d o r (diagrama de clase UML). El patrn A d a p t a d o r se usa para proporcio
nar una interfaz diferente ( N u e v a l n t e r f a z ) a un componente existente (S i s t e m a H e r e d a d o ) .
2 . E s t o s d o s c a s o s s e d i s t i n g u e n c o n l a c o n v e n c i n d e d e n o m i n a c i n u s u a l U ML : n o m b r e s s u b r a y a d o s p a r a i n s t a n c i a s y
n o m b r e s s in s u b r a y a d o p a r a c l a s e s .
www.FreeLibros.org
202 C apitulo 6 D ise o del sistema
/ * In te r fa z de d esti no e x i s t e n t e */
interfaco C o m p a r a t o r {
i n t c o m p a r e ( O b j e c t o l , O b j e c t o 2 ) ;
/* . . . */
}
/ / C l i e n t e e x i s t e n t e
c l a s s A r r a y {
s t a t i c v o i d s o r t ( O b j e c t [] a , C o m p a r a t o r c ) ;
/* . . . * /
}
/* Clase adaptadora e x i s t e n t e */
c l a s s M y S t r i n g extends S t r i n g {
b o o l e a n e q u a l s ( O b j e c t o ) ;
b o o l e a n g r e a t e r T h a n ( M y S t r i n g s ) ;
/* . . . * /
}
/* Clase adaptadora nueva */
c l a s s M y S t r i n g C o m p a r a t o r implemonts C o m p a r a t o r {
/ * . . . V
i n t c o m p a r e ( O b j e c t o l , O b j e c t o2) {
i n t r e s u l t ;
i f ( o l . g r e a t e r T h a n ( o 2 ) ) {
r e s u l t = 1
} el s e i f ( o l . e q u a l s ( o 2 ) ) {
r e s u l t = 0 ;
} e l s e {
r e s u l t = - 1 ;
}
return r e s u l t ;
}
}
F i g u r a 6-34 Ejemplo de patrn A d a p t a d o r (Java). El mtodo esttico s o r t () e n A r r a y toma dos argu
mentos: un arreglo de Ob j e c t s a ser ordenado y un Co m p a r a t o r que define el orden relativo de los elementos.
Para ordenar un arreglo de M y S t r i n g s necesitamos definir un comparador llamado M y S tr i n g s C o m p a r a t o r
con la interfaz adecuada. M y S t r i n g s C o m p a r a t o r es un A d a p t a d o r .
que el cliente es el mtodo s o r t () esttico de la clase A r r ay de Java (figura 6-34). Este mtodo
espera dos argumentos a, un A r r ay de objetos y c, un objeto Comparator que proporciona un
mtodo compare () que define el orden relativo entre los elementos. Supongamos que estamos
interesados en el ordenamiento de cadenas de la clase MyString, la cual define a los mtodos
g r e a t e r T h a n () y e q u a l s (). Para ordenar un A r r ay de MyString necesitamos definir un nuevo
comparador, MyStringComparator, que proporciona un mtodo compare () usando g r e a t e r
Than () y e q u a l s ( ) . MyStringComparator es una clase Adaptador.3
3. A estos proyectos se les llama proyectos de ingeniera de interfaz (vea el captulo 4, Obtencin de requerimientos).
www.FreeLibros.org
Actividades del d i s e o d e sistemas: d e s d e l o s objetos hasta l o s s u b s i s t e m a s 203
Cuando se encapsula cdigo heredado que est escrito en un lenguaje diferente al del sistema
que se est desarrollando, necesitamos manejar las diferencias entre los lenguajes. Aunque se puede
realizar la integracin de cdigo de dos lenguajes compilados diferentes, puede presentar grandes
problemas, en especial cuando uno o ambos lenguajes estn orientados a objetos e implementan
diferentes semnticas para el envo de mensajes. Esto motiv a estndares como CORBA, el cual
define protocolos para permitir la interoperabilidad de objetos distribuidos escritos en lenguajes
diferentes. En el caso de arquitecturas cliente/servidor, otras soluciones incluyen el desarrollo de
envolturas alrededor de los protocolos de comunicaciones entre procesos.
Los protocolos para la comunicacin entre procesos (por ejemplo, tubos y sockets) son pro
porcionados, por lo general, por el sistema operativo y, por lo tanto, son independientes con rela
cin al lenguaje. En el caso de CORBA y la comunicacin entre procesos, el costo del llamado
del servicio es mucho ms alto que el costo del envo de mensajes entre objetos en el mismo pro
ceso. Cuando se han seleccionado el tiempo de respuesta y otros objetivos de diseo que tienen
relacin con el desempeo, es necesario evaluar con cuidado el impacto en el desempeo de las
envolturas alrededor del cdigo heredado.
Las decisiones sobre tecnologa se hacen obsoletas con rapidez. Es probable que el sistema
que se est construyendo sobreviva a muchas plataformas, y ser transportado y mejorado varias
veces durante el mantenimiento. Estas tareas, cuando se realizan durante el mantenimiento, por lo
general son costosas, debido a que se ha perdido gran cantidad de la informacin de diseo. Cul
fue la configuracin original del hardware? En cules caractersticas del sistema de administra
cin de base de datos se apoya este sistema? Los desarrolladores pueden conservar esta informacin
documentando las razones de diseo del sistema, incluyendo las decisiones sobre hardware y com
ponentes. En el captulo 8, Administracin de la fundamentacin, describimos tcnicas para hacerlo.
6.4.5 Definicin de los almacenes de datos persistentes
Los datos persistentes sobreviven a una sola ejecucin del sistema. Por ejemplo, un autor
puede guardar su trabajo en un archivo cuando usa un procesador de palabras. Luego puede volver
a abrir el archivo unos cuantos das o semanas despus. No es necesario que est ejecutando el
procesador de palabras para que exista el archivo. En forma similar, la informacin relacionada
con los empleados, su estado de empleo y sus cheques de pago viven en un sistema de adminis
tracin de base de datos. Esto permite que todos los programas que operan sobre datos de
empleados lo hagan en forma consistente. Adems, al guardar los datos en una base de datos se
permite que el sistema realice consultas complejas en un gran conjunto de datos (por ejemplo,
los registros de varios miles de empleados).
El lugar y la manera en que se guardan los datos tienen un impacto en la descomposicin del
sistema. En algunos casos, por ejemplo, en una arquitectura de depsito (vea la seccin 6.3.5), un
subsistema puede estar dedicado por completo al almacenamiento de los datos. La seleccin de
un sistema de administracin de base de datos especfico tambin puede tener implicaciones en la
estrategia de control general y la administracin de la concurrencia.
Por ejemplo, en MiViaje decidimos almacenar el v i a j e actual en un archivo en un disco remo
vile pequeo para permitir la recuperacin del v i a j e en caso de que el automovilista detenga el
automvil antes de llegar al Destino final. El uso de un archivo es la solucin ms simple y eficiente
en este caso, tomando en cuenta que el SubsistemaEnrutamiento slo guardar viajes completos en
www.FreeLibros.org
204 C apitulo 6 D ise o del sistema
el archivo antes de apagarse y cargar el archivo al arrancar. Sin embargo, en el SubsistemaPla-
neacin, los viajes se guardarn en una base de datos. Luego se podr usar este subsistema para
manejar todos los v i a j e de muchos automovilistas, as como los mapas necesarios para generar
los viajes. El uso de una base de datos para este subsistema nos permite realizar consultas com
plejas sobre esos datos. Aadimos los subsistemas SubsistemaAlmacnArchivoViaje y Sub-
sistemaBDAlmacnMapas a MiViaje para reflejar esas decisiones, como se muestra en la figura 6-35.
SubsistemaAlmacn-
ArchivoViaje
aab s i s temaBDAlmacn-
Mapas
El SubsistemaAlmacnArchivoViaje es responsable del almace
namiento de viajes en archivos en la computadora a bordo. Debido a
que esta funcionalidad se usa slo para el almacenamiento de viajes
cuando se detiene el vehculo, este subsistema slo soporta el almace
namiento y la carga rpidos de viajes completos.
El SubsistemaBDAlmacnMapas es responsable del almacenamiento de
mapas y viajes en una base de datos para el SubsistemaPlaneacin.
Este subsistema soporta varios automovilistas y agentes de planeacin
concurrentes.
Figura 6-35 Descomposicin en subsistemas de MiViaje despus de decidir sobre los asuntos de almace
namiento de datos (diagrama de clase UML, paquetes colapsados por claridad).
En general, primero necesitamos identificar cules objetos necesitan ser persistentes. La persis
tencia de objetos se infiere en forma directa del dominio de aplicacin. En MiViaje slo necesitan guar
darse los v i a j e y sus clases relacionadas. La ubicacin del automvil, por ejemplo, no necesita ser
persistente debido a que es necesario recalcularla de manera constante. Luego necesitamos decidir la
manera en que deben guardarse estos objetos (per ejemplo, archivo, base de datos relacional o base
de datos de objetos). La decisin sobre la administracin del almacenamiento es ms compleja y, por
to general, est dictada por requerimientos no funcionales: Deben recuperarse rpido tos objetos? Se
necesitan consultas complejas? Ocupan mucho espacio los objetos (por ejemplo, se guardarn im
genes)? Los sistemas de administracin de base de datos proporcionan mecanismos para el control de
la concurrencia y consultas eficientes sobre conjuntos de datos grandes.
www.FreeLibros.org
Actividades del d i s e o d e sistemas: d e s d e l o s objetos hasta l o s s u b s i s t e m a s 205
En la actualidad hay tres opciones realistas para la administracin del almacenamiento:
Archivos planos. Los archivos son la abstraccin de almacenamiento proporcionada por los
sistemas operativos. La aplicacin guarda sus datos como una secuencia de bytes y define la
manera y el momento en que deben recuperarse los datos. La abstraccin de archivo es
relativamente de bajo nivel y permite que la aplicacin realice una variedad de optimizaciones
de tamao y velocidad. Sin embargo, tos archivos requieren que la aplicacin se encargue de
muchos asuntos, como el acceso concurrente y la prdida de datos en caso de falla del sistema.
B a s e de d a t o s r e l a c i o n a l . Una base de datos relacional proporciona una abstraccin de
datos que es ms elevada que la de los archivos planos. Los datos se guardan en tablas que se
apegan a un tipo predefinido llamado esquema. Cada columna de la tabla representa un
atributo. Cada rengln representa un concepto de dato como un tupio de valores de atributo.
Varios tupios de diferentes tablas se usan para representar los atributos de un objeto individual.
Las bases de datos relacinales ya se han usado bastante tiempo y son una tecnologa
madura. El uso de una base de datos relacional introduce un alto costo y, con frecuencia, un
cuello de botella.
B a s e d e d a t o s o r i e n t a d a a o b j e t o s . Una base de datos orientada a objetos proporciona
servicios similares a los de una base de datos relacional. A diferencia de una base de datos
relacional, guarda los datos como objetos y asociaciones. Adems de proporcionar un nivel
de abstraccin ms alto (reduciendo, por lo tanto, la necesidad de traducir entre objetos y
entidades de almacenamiento), las bases de datos orientadas a objetos proporcionan a los
desarrolladores herencia y tipos de datos abstractos. Las bases de datos orientadas a objetos
son, por lo general, ms lentas que las bases de datos relacinales para consultas tpicas.
El siguiente cuadro resume los intercambios cuando se seleccionan sistemas de administracin de
almacenamiento.
Intercambios entre a rchivos y b a s e s de datos
Cundo se debe escoger un archivo?
Datos voluminosos (por ejemplo, imgenes).
Datos temporales (por ejemplo, archivo de imagen de memoria).
Baja densidad de informacin (por ejemplo, archivos para archivado, bitcoras de historia).
Cundo se debe escoger una base de datos?
Accesos concurrentes.
Accesos a niveles de detalle finos.
Plataformas mltiples.
Aplicaciones mltiples sobre los mismos datos.
Cundo se debe escoger una base de datos relacional?
Consultas complejas sobre los atributos.
Conjunto grande de datos.
Cundo se debe escoger una base de datos orientada a objetos?
Amplio uso de asociaciones para recuperar datos.
Conjunto de datos de tamao medio.
Asociaciones irregulares entre objetos.
www.FreeLibros.org
206 C apitulo 6 D ise o del sistema
Encapsulado de almacenes de datos
Una vez que hemos seleccionado un mecanismo de almacenamiento (digamos, una base de
datos relacional), podemos encapsularlo en un subsistema y definir una interaz de alto nivel que sea
independiente del vendedor. Por ejemplo, el patrn Puente (vea la figura 6-36 y [Gamma et al.,
1994]) permite que se desacoplen la interfaz y la implementacin de una clase. Esto permite la sus
titucin de diferentes implementaciones de una clase dada, a veces hasta en el tiempo de ejecucin.
La clase A b s t r a c c i n define la interfaz visible ante el cliente. La implementadora es una clase
abstracta que define los mtodos de nivel ms bajo disponibles en A b s t r a c c i n . Una instancia
de A b s t r a c c i n mantiene una referencia hacia su instancia de inplementadora correspon
diente. A b s t r a c c i n e implementadora se pueden refinar en forma independiente.
F i g u r a 6-36 Patrn P u e n t e (diagrama de clase UML).
Los estndares de conectividad de bases de datos, como ODBC [Microsoft, 1995] y JDBC
[JDBC, 1998], proporcionan tales abstracciones para las bases de datos relacinales (vea patrn
P u e n t e ODBC en la figura 6-37). Sin embargo, observe que, aunque la mayora de las bases de datos
relacinales proporcionan servicios similares, la provisin de una abstraccin como sta reduce
el desempeo. Los objetivos de diseo que definimos al inicio de la fase de diseo del sistema
nos ayudan a resolver los compromisos de desempeo y modificabilidad.
F i g u r a 6-37 Patrn P u e n t e para abstraer a los vendedores de bases de datos (diagrama de clase UML).
La eliminacin de la dependencia de los sistemas con relacin a los vendedores de bases de datos propor
ciona mayor flexibilidad.
www.FreeLibros.org
Actividades del d i s e o d e sistemas: d e s d e l o s objetos hasta l o s s u b s i s t e m a s 207
6.4.6 Definicin del control de acceso
En los sistemas multiusuario, actores diferentes tienen acceso a funcionalidades y datos
diferentes. Por ejemplo, un actor de trabajo diario puede acceder slo a los datos que l crea, mien
tras que un actor administrador del sistema puede tener acceso ilimitado a los datos del sistema y
a los datos de los dems usuarios. Durante el anlisis modelamos estas distinciones asociando
diferentes casos de uso a diferentes actores. Durante el diseo del sistema modelamos el acceso
examinando el modelo de objetos y determinando cules objetos estn compartidos entre actores
y definiendo la manera en que los actores pueden controlar el acceso. Dependiendo de los reque
rimientos de seguridad del sistema, tambin definimos la manera en que los actores se autentifi
can ante el sistema (es decir, cmo prueban los actores quines son ante el sistema) y la manera
en que deben cifrarse datos seleccionados en el sistema.
Tabla 6-7 Revisin del modelo de diseo procedente de la decisin de autentificar a los Automovilista y
cifrar el trfico de comunicaciones. El texto aadido al modelo est en cursivas.
Subsi s temaComuni-
caciones
El SubsistemaComunicaciones es responsable del transporte de
objetos desde el SubsistemaPlaneacin hacia el Subsistema
Enrutamiento. El SubsistemaComunicaciones usa al Automovilista
asociado con el Viaje que se est transportando para seleccionar una
clave y cifrar el trfico de comunicaciones.
SubsistemaPlaneacin El SubsistemaPlaneacin es responsable de la construccin de
un Viaje que conecta una secuencia de Destino. El Subsistema
Planeacin tambin es responsable de responder a peticiones de re
planificacin de los SubsistemaEnrutamiento. Antes de procesar
cualquier peticin, el SubsistemaPlaneacin autentifica al Automovilista
del SubsistemaEnrutamiento. El Automovilista autentificado se usa
para determinar cules Viaje pueden enviarse al Subsistema
Enrutamiento correspondiente.
Automovilista Un Automovilista representa a un usuario autentificado. Lo usan el
SubsistemaComunicaciones para recordar las claves asociadas con un
usuario y el SubsistemaPlaneacin para asociar Viaje con los usuarios.
Por ejemplo, en MiViaje el almacenamiento de mapas y v i a j e para muchos automovilistas en la
misma base de datos introduce asuntos de seguridad. Debemos aseguramos que tos v i a j e se enven
slo al automovilista que tos cre. Esto tambin es consistente con el objetivo de diseo de seguridad
que definimos en la seccin 6.4.2 para MiViaje. En consecuencia, modelamos a un automovilista con la
clase Autoirovilista y lo asociamos con la clase Viaje. El SubsistemaPlaneacin tambin llega a
ser responsable de la autentificacin de Automovilista antes de enviar v i a j e . Por ltimo, decidimos
cifrar el trfico de comunicaciones entre el SubsistemaEnrutamiento y el SubsistemaPlaneacin.
Esto lo realizar el SubsistemaComunicaciones. En la tabla 6-7 se muestran la descripcin de la
clase Automovilista y las descripciones revisadas para el SubsistemaPlaneacin y el Sub
sistemaComunicaciones. Las revisiones al modelo de diseo se muestran en cursivas.
La definicin del control de acceso para un sistema multiusuario, por lo general, es ms com
pleja que en MiViaje. En general, para cada actor necesitamos definir las operaciones a las cuales
www.FreeLibros.org
208 C apitulo 6 D ise o del sistema
puede tener acceso en cada objeto compartido. Por ejemplo, en un sistema de informacin bancario
un cajero puede abonar o cargar dinero a cuentas locales hasta una cantidad predefinida. Si la transac
cin excede a la cantidad predefinida, un gerente necesita aprobar la transaccin. Adems, los gerentes
y cajeros slo pueden acceder a cuentas de su propia sucursal, esto es, no pueden acceder a las
cuentas de otras sucursales. Los analistas, por otro lado, pueden acceder a informacin de todas
las sucursales de la corporacin, pero no pueden hacer transacciones en cuentas individuales.
Modelamos el acceso a las clases con una matriz de acceso. Los renglones de la matriz repre
sentan a los actores del sistema. Las columnas representan a las clases cuyo acceso controlamos. A
una entrada ( c las e , a ct or) de la matriz de acceso se le llama un derecho de acceso, y lista las
operaciones (por ejemplo, aplicarCargoPequeo 0 , aplicarCargoGrande (), examinarSaldo (),
ctotenerDireccinCliente ()) que puede ejecutar el a c t o r en instancias de la c l a s e . La tabla 6-8
es un ejemplo de una matriz de acceso para el sistema de informacin bancario.
Tabla 6-8 Matriz de acceso para un sistema bancario. Los Ca j ero slo pueden ver cuentas locales,
realizar pequeas transacciones sobre las cuentas y solicitar saldos. Los Gerente pueden realizar
transacciones ms grandes y tener acceso a la historia de la cuenta, adems de las operaciones accesibles
a los cajeros. Los Analista pueden tener acceso a estadsticas de todas las sucursales pero no realizan
operaciones en el nivel de cuenta.
Objetos
Actores
C orporacin Sucursal L o cal C uenta
Cajero BuscarCuentaLocal() aplicarCargoPequeo()
aplicarAbonoPequeo()
buscarSaldo()
Geren
te
BuscarCuentaLocal() aplicarCargoPequeo()
aplicarAbonoPequeo()
aplicarCargoGrande()
aplicarAbonoGrande()
examinarSaldo()
examinarHistoria()
A n al i s
t a
examinarCargosGlobales()
examinarAbonosGlobales()
examinarCargosLoca-
l s ( )
exami narAbonos Lo ca
l e s ()
Podemos representar la matriz de acceso usando uno de tres diferentes enfoques: tabla de
acceso global, lista de control de acceso y capacidades:
Una t a b l a d e a c c e s o g l o b a l representa en forma explcita a cada celda de la matriz como
un tupio ( a c t o r , c l a s e , operacin). La determinacin de si un actor tiene acceso a un
objeto especfico requiere que se busque el tupio correspondiente. Si no se encuentra el
tupio se niega el acceso.
Una l i s t a d e c o n t r o l d e a c c e s o asocia una lista de pares ( a c t o r , operacin) con cada
c l a s e a acceder. Se descartan las celdas vacas. Cada vez que se accede a un objeto se
revisa la lista de acceso para buscar el actor y la operacin correspondientes. Un ejemplo
www.FreeLibros.org
Actividades del d i s e o d e sistemas: d e s d e l o s objetos hasta l o s s u b s i s t e m a s 209
de una lista de control de acceso es la lista de invitados a una fiesta. Un mayordomo revisa
a los invitados que llegan comparando sus nombres contra los nombres de la lista de
invitados. Si hay una concordancia el invitado puede entrar y si no, se le niega la entrada.
Una c apacidad asocia un par ( c l a s e , operacin) con un a c t o r . Una capacidad proporciona
a un actor la obtencin de acceso a un objeto de la clase descrita en la capacidad. La negacin
de la capacidad es equivalente a la negacin del acceso. Un ejemplo de una capacidad es una
invitacin a una fiesta. En este caso, el mayordomo revisa si el invitado que llega tiene
una invitacin a la fiesta. Si la invitacin es vlida se admite al invitado y si no, se le niega la
entrada. No se necesita ninguna revisin adicional.
La representacin de la matriz de acceso tambin es un asunto de desempeo. Las tablas de acceso
globales se usan rara vez ya que requieren mucho espacio. Las listas de control de acceso hacen
que sea rpido responder la pregunta Quin tiene acceso a este objeto?, mientras que las listas
de capacidad hacen que sea rpido responder a la pregunta A cules objetos tiene acceso este
actor?
Cada rengln de la matriz de acceso representa una vista de acceso diferente de las clases que
estn listadas en las columnas. Todas estas vistas del acceso deben ser consistentes. Sin embargo,
por lo general, las vistas de acceso se implementan definiendo una subclase para cada tipo diferente
de tupio ( a c t o r , operacin). Por ejemplo, en nuestro sistema bancario podramos implementar
unas clases CuentaVistaPorCajero y CuentaVistaPorGerente como subclases de Cuenta.
Slo las clases adecuadas estn disponibles para el actor correspondiente. Por ejemplo, el software
cliente A n a l i s t a no incluira una clase Cuenta, debido a que el A n a l i s t a no tiene acceso a nin
guna operacin de esta clase. Esto reduce el riesgo de que un error en el sistema d como resultado
la posibilidad de un acceso no autorizado.
Una matriz de acceso slo representa el c ont r ol de a c ce so esttico. Esto significa que los
derechos de acceso pueden modelarse como atributos de los objetos del sistema. En el ejemplo del
sistema de informacin bancario, considere a un actor corredor a quien se asigna en forma dinmica
un conjunto de portafolios. Por poltica, un corredor no puede acceder a los portafolios manejados
por otro corredor. En este caso, necesitamos modelar los derechos de acceso en forma dinmica en
el sistema y, por lo tanto, a este tipo de acceso se le llama control de acceso dinmico. Por ejemplo,
la figura 6-38 muestra la manera en que se puede implementar este acceso con un patrn A p ode
ra do [Gamma et a l , 1994]. Para cada P o r t a f o l i o creamos un ApoderadoPort af o l i o para pro
teger el P o r t a f o l i o y revisar el acceso. Una asociacin Acceso entre un Cor redor legtimo y un
A p o d e r a d o P o r t a f o l i o indica a cules P o r t a f o l i o tiene acceso el Co r r ed o r . Para acceder a
un P o r t a f o l i o el Corredor enva un mensaje al ApoderadoPortaf o l i o correspondiente. El
A p o d er ad o P o rt af o lio revisa primero si el Corredor que llama tiene la asociacin correspon
diente con el ApoderadoPortaf o l i o . Si se otorga el acceso, el A p o d er ad o P o rt af o lio delega el
mensaje al P o r t a f o l i o . En caso contrario la operacin falla.
En ambos tipos de control de acceso suponemos que conocemos al actor: ya sea el usuario
que est ante el teclado o el subsistema que hace la llamada. A este proceso de verificacin de la
asociacin entre la identidad del usuario o subsistema y el sistema se le llama autentificacin. Un
mecanismo de autentificacin muy difundido es, por ejemplo, que el usuario especifique un nom
bre de usuario, conocido por todos, y una contrasea correspondiente conocida slo por el sistema
y guardada en una lista de control de acceso. El sistema protege las contraseas de los usuarios
cifrndolas antes de guardarlas o transmitirlas. Si nicamente un usuario conoce esta combinacin
www.FreeLibros.org
210 C apitulo 6 D ise o del sistema
Acceso
esAccesible(op)
Corredor
ApoderadoPortafolio
1 1
Portafolio
comprar()
vender()
rendimiento-
Estimado()
comprar ()
vender ()
rendimiento-
Estimado()
Figu ra 6-38 El acceso dinmico implementado con un Apode r a d o de proteccin. La clase de asociacin Acce
s o contiene un conjunto de operaciones que puede usar C o r r e d o r para tener acceso a un P o r t a f o l i o . Cada ope
racin de A p o d e r a d o P o r t a f o l i o revisa primero con la operacin e s A c c e s i b l e () si el C o r r e d o r que llama
tiene acceso legtimo. Una vez que se ha otorgado el acceso, Apoderado Por t a f o l i o delega la operacin al objeto
P o r t a f o l i o actual. Una asociacin Acceso puede usarse para controlar el acceso a muchos P o r t a f o l i o .
de nombre de usuario y contrasea podemos suponer que el usuario que est ante el teclado es leg
timo. Aunque la autentificacin de contraseas puede hacerse segura con la tecnologa actual, tiene
muchas desventajas en su utilizacin: los usuarios escogen contraseas que son fciles de recordar
y, por lo tanto, fciles de adivinar. Tambin tienden a escribir su contrasea en notas que conservan
cerca de su monitor y, por lo tanto, visibles para muchos otros usuarios no autorizados. Por suerte
se dispone de otros mecanismos de autentificacin ms seguros. Por ejemplo, se puede usar una
tarjeta inteligente junto con una contrasea: un intruso necesitara la tarjeta inteligente y la con
trasea para obtener acceso al sistema. Lo que es mejor, se puede usar un sensor biomtrico para
analizar patrones de vasos sanguneos en los dedos u ojos de una persona. Un intruso necesitara la
presencia fsica del usuario legtimo para obtener acceso al sistema, lo cual es mucho ms difcil
que el simple robo de una tarjeta inteligente.
En un ambiente en donde se comparten recursos entre varios usuarios, la autentificacin,
por lo general, no es suficiente. En el caso de una red, por ejemplo, es relativamente fcil para un
intruso encontrar herramientas para husmear el trfico de la red, incluyendo paquetes generados
por otros usuarios (vea la figura 6-39). Lo que es peor, los protocolos como TCP/IP no fueron
diseados pensando en la seguridad: un intruso puede falsificar paquetes de tal forma que apa
rezcan como si vinieran de usuarios legtimos.
El c if r a d o se usa para impedir tales accesos no autorizados. Utilizando un algoritmo de
cifrado podemos traducir un mensaje, llamado t e x t o l l a n o , hacia un mensaje cifrado, llamado
t e x t o c if r a d o , tal que aunque un intruso intercepte el mensaje no pueda comprenderlo. Slo el
receptor tiene el conocimiento suficiente para descifrar en forma correcta el mensaje, esto es,
invertir el proceso original. El proceso de cifrado est parametrizado por una c la v e tal que el
mtodo de cifrado y descifrado puede cambiarse con rapidez en caso de que el intruso se las
arregle para obtener el conocimiento suficiente para descifrar el mensaje.
www.FreeLibros.org
Actividades del d i s e o d e sistemas: d e s d e l o s objetos hasta l o s s u b s i s t e m a s 211
Usuario
legitimo
Mensaje textollano CC# 1234 5 6 7 8 9 0 1 2 3 4 5 6 EXP 8 / 9 9
Mensaje cifrado XZ<ASLG#34HF* (*A2135SDA*}BKDAWR#%_AS2255
F i g u r a 6-39 Ataque pasivo. Tomando en cuenta la tecnologa actual, es relativamente fcil que un intruso
pasivo escuche todo el trfico de la red. Para impedir este tipo de ataque, el cifrado hace que la informacin
que ve el intruso sea difcil de entender.
La autentificacin segura y el cifrado son problemas fundamentalmente difciles. Siempre
se deber seleccionar uno o ms algoritmos o paquetes hechos en vez de disear los propios (a
menos que su negocio sea construir estos paquetes). Muchos de estos paquetes estn basados en
estndares pblicos que son revisados en forma amplia por los acadmicos y la industria, asegu
rando, por lo tanto, un nivel relativamente alto de confiabilidad y seguridad.
Encapsulado del control de acceso
El uso de software proporcionado por vendedores introduce un problema de seguridad:
Cmo podemos estar seguros de que el software proporcionado no incluye una puerta trasera?
Adems, una vez que se encuentra una vulnerabilidad en un paquete usado de manera amplia,
cmo protegemos el sistema hasta que se disponga de un parche? Podemos usar redundancia
para atacar ambos asuntos. Por ejemplo, la Arquitectura Criptogrfica Java [JCA, 1998] permite
que coexistan varias implementaciones de los mismos algoritmos en el mismo sistema, reducien
do, por lo tanto, la dependencia de un vendedor especfico. En trminos ms generales, podemos
usar el p a t r n E s t r a t e g i a [Gamma et al., 1994] para encapsular varias implementaciones del
mismo algoritmo. En este patrn (vea la figura 6-40) la clase abstracta E s t r a t e g i a define la
interfaz genrica que deben tener todas las implementaciones del algoritmo encapsulado. Las clases
E s t r a t e g i a C o n c r e t a proporcionan implementaciones del algoritmo haciendo a Es tr a te gia
una subclase. Una clase Contexto es responsable del manejo de la estructura de datos sobre los
que opera E s t r a t e g i a C o n c r e t a . Las clases Cont exto y E s t r a t e g i a C o n c r e t a cooperan para
proporcionar la funcionalidad necesaria.
Una vez que se proporcionan autentificacin y cifrado, se puede implementar con ms facilidad
el control de acceso especfico de la aplicacin sobre estos bloques de construccin. En todos los
casos, el tratamiento de tos asuntos de seguridad es un tema difcil. Cuando se atacan estos asuntos
tos desarrolladores deben registrar sus suposiciones y describir los escenarios de intrusos que estn
www.FreeLibros.org
212 C apitulo 6 D ise o del sistema
Mensaje
obtenerBloque()
E
Gase Contexto
F i g u r a 6-40 Un ejemplo de un patrn E s t r a t e g i a encapsulando varias implementaciones del algoritmo
de cifrado IDEA (diagrama de clase UML). Las clases Mensa j e e idea cooperan para realizar el cifrado del
texto llano. Puede hacerse en forma dinmica la seleccin de una implementacin.
considerando. Cuando se exploran varias alternativas, los desarrolladores deben especificar los
problemas de diseo que estn tratando de resolver y registrar los resultados de la evaluacin. En
el siguiente captulo describimos la manera de hacerlo en forma sistemtica usando el modelado
de problemas.
6.4.7 Diseo del flujo de control global
El flujo de control es el ordenamiento de las acciones en un sistema. En los sistemas orien
tados a objetos las acciones a ordenar incluyen la decisin de cules operaciones deben ejecutarse
y en qu orden. Estas decisiones se basan en eventos externos provocados por un actor o en el paso
del tiempo.
El flujo de control es un problema de diseo. Durante el anlisis, el flujo de control no
importa, debido a que asumimos tan slo que todos los objetos se estn ejecutando en forma
simultnea, ejecutando operaciones en el momento en que necesitan hacerlo. Durante el diseo
del sistema necesitamos tomar en cuenta que no todos los objetos tienen el lujo de estar eje
cutando en su propio procesador. Hay tres mecanismos posibles para el flujo de control:
Control manejado por procedimientos. Las operaciones esperan entrada cada vez que
necesitan datos de un actor. Este tipo de flujo de control es el ms usado en los sistemas
heredados y en los sistemas que estn escritos en lenguajes procesales. Presenta dificultades
cuando se usa con lenguajes orientados a objetos. Como el ordenamiento de operaciones est
distribuido entre un gran conjunto de objetos, llega a ser cada vez ms difcil determinar el
orden de las entradas observando el cdigo (figura 6-41).
www.FreeLibros.org
Actividades del d i s e o d e sistemas: d e s d e l o s objetos hasta l o s s u b s i s t e m a s 213
Stream in, out;
String userid, passwd;
/ * Se omite l a i n i c i a l i z a c i n * /
o u t . p r i n t l n ( " L o g i n : " ) ;
i n . r e a d l n ( u s e r i d ) ;
o u t . p r i n t l n ( " C o n t r a s e a : " ) ;
i n . r ea d l n ( p a s s w d ) ;
i f ( Isecurity.check(userid, passwd)) {
out.println("Fall el Login.");
system.exit(-1 );
}
/ * . . . * /
F i g u r a 6-41 Un ejemplo de control manejado por procedimientos (Java). El cdigo imprime mensajes y
espera entrada del usuario.
Control mane j a do po r e ventos. Un ciclo principal espera un evento externo. Cada vez que
se tiene disponible un evento se le despacha al objeto adecuado con base en la informacin
asociada con el evento. Este tipo de flujo de control tiene la ventaja de conducir hacia una
estructura ms simple y centralizar toda la entrada en el ciclo principal. Sin embargo, hace
que las secuencias de varios pasos sean ms difciles de implementar (figura 6-42).
Hilos. Tambin se les llama hilos ligeros, para distinguirlos con respecto a los procesos que
requieren ms sobrecarga de cmputo, y son la variacin concurrente del control manejado por
procedimientos: el sistema puede crear una cantidad arbitraria de hilos y cada uno responde a
un evento diferente. Si un hilo necesita datos adicionales, espera entrada de un actor especfico.
Es probable que este tipo de flujo de control sea el ms intuitivo de los tres mecanismos. Sin
embargo, la depuracin de software en esta modalidad (hilado) requiere buenas herramientas
de depuracin: los sistemas de ejecucin de hilos por prioridad introducen indeterminismo
y, por lo tanto, hacen que sea difcil encontrar casos de prueba repetibles (figura 6-43).
E n u m e r a t i o n s u b s c r i b e r s , e v e n t S t r e a m ;
S u b s c r i b e r s u b s c r i b e r ;
E v e n t e v e n t ;
E v e n t S t r e a m e v e n t S t r e a m ;
/ * . . . V
w h i l e ( e v e n t S t r e a m . h a s M o r e E l e m e n t s ) {
e v e n t = e v e n t S t r e a m . n e x t E l e m e n t ( ) ;
s u b s c r i b e r s = d i s p a t c h l n f o . g e t S u b s c r i b e r s ( e v e n t ) ;
w h i l o ( s u b s c r i b e r s . h a s M o r e E l e m e n t s ( ) ) {
s u b s c r i b e r = s u b s c r i b e r s . n e x t E l e m e n t ( ) ) {
s u b s c r i b e r . p r o c e s s ( e v e n t ) ;
}
}
/ * . . . */
F i g u r a 6-42 Un ejemplo de un ciclo principal para el control manejado po r eventos (Java). Un evento se
toma de una cola de eventos y se enva a los objetos que estn interesados en l.
www.FreeLibros.org
214 C apitulo 6 D ise o del sistema
T h r e a d t h r e a d ;
E ven t e v e n t ;
E v e n t H a n d l e r e v e n t H a n d l e r ;
b o o l e a n d o n e ;
/ * . . . * /
w h i l o ( I d o n e ) {
e v e n t = e v e n t S t r e a m . g e t N e x t E v e n t ( ) ;
e v e n t H a n d l e r = new E v e n t H a n d l e r ( e v e n t )
t h r e a d = new T h r e a d ( e v e n t H a n d l e r ) ;
t h r e a d . s t a r t ( ) ;
}
/ * . . . * /
F i g u r a 6-43 Un ejemplo de procesamiento de eventos con hilos (Java), mane j a d o r E v e n t o s es un objeto
dedicado al manejo de e v e n t o s . Implementa la operacin e j e c u t a r () la cual es llamada cuando se inicia
el h i l o .
El control manejado por procedimientos es til para la prueba de subsistemas. Un maneja-
dor hace llamadas especficas a los mtodos que proporciona el subsistema. Sin embargo, para el
flujo de control del sistema final se debe evitar el control manejado por procedimientos.
El intercambio entre el control manejado por eventos y por hilos es ms complicado. El
control manejado por eventos es ms maduro que los hilos. Los lenguajes modernos slo hasta
hace poco comenzaron a proporcionar soporte para la programacin con hilos. Conforme se ten
gan disponibles ms herramientas de depuracin y se acumule experiencia, el desarrollo de
sistemas basados en hilos se har ms fcil. Adems, muchos paquetes de interfaz de usuario
proporcionan la infraestructura para despachar eventos e imponen este tipo de flujo de control en
el diseo. Aunque los hilos son ms intuitivos, en la actualidad introducen muchos problemas
durante la depuracin y las pruebas. Hasta que se disponga de herramientas e infraestructuras
ms maduras para el desarrollo con hilos, se prefiere el flujo de control manejado por eventos.
Una vez que se selecciona un mecanismo de flujo de control podemos realizarlo con un con
junto de uno o ms objetos de control. El papel de los objetos de control es registrar los eventos
externos, guardar el estado temporal acerca de ellos y emitir la secuencia adecuada de llamadas a
operaciones sobre los objetos de frontera y entidad asociados con el evento externo. Por otro lado,
la colocacin de las decisiones de flujo de control para un caso de uso en un solo objeto da como
resultado cdigo ms comprensible, pero por otro lado hace al sistema ms adaptable a cambios en
la implementacin del flujo de control.
Encapsulado del flu jo de control
Un ejemplo de encapsulado de control es el patrn Comando [Gamma et a l , 1994] (vea la
figura 6-44). En los sistemas interactivos a menudo es deseable ejecutar, deshacer o guardar las
peticiones del usuario sin conocer el contenido de la peticin. La clave para el desacoplamiento de
las peticiones con respecto a su manejo es convertir las peticiones en objetos de comando, los
cuales heredan de una clase abstracta Comando. La clase Comando define la manera en que el
comando se ejecuta, deshace o guarda, mientras que la clase concreta implementa peticiones espe
cficas.
www.FreeLibros.org
Actividades del d i s e o d e sistemas: d e s d e l o s objetos hasta l o s s u b s i s t e m a s 215
Figura 6-44 Patrn Comando (diagrama de clase UML). Este patrn permite el encapsulado del control en for
ma tal que las peticiones de usuario pueden tratarse en forma uniforme, independiente de la peticin especfica.
Podemos usar el patrn Comando para desacoplar los conceptos de men con respecto a
las acciones (vea la figura 6-45). El desacoplamiento de los conceptos de men con respecto a las
acciones tiene la ventaja de centralizar el flujo de control (por ejemplo, ordenamiento de dilogos)
en objetos de control en vez de repartirlo entre objetos de frontera y de entidad. Un Men com
puesto de ConceptoMen crea un objeto Comando de la clase adecuada cada vez que el usuario
selecciona el ConceptoMen correspondiente. La A p l i c a c i n llama a la operacin e j e c u t a r ()
del objeto Comando recin creado. Si el usuario desea deshacer la ltima peticin se ejecuta la ope
racin des h ac er () del ltimo objeto Comando. Diferentes objetos Comando implementan peticiones
diferentes (por ejemplo, ComandoCopiar y ComandoPegar).
Figura 6-45 Un ejemplo del patrn Comando (diagrama de clase UML). En este ejemplo estn desaco
plados los conceptos de men y las operaciones sobre documentos. Esto nos permite centralizar el flujo de
control e n los objetos comando (ComandoCopiar y ComandoPegar), e n vez de repartirlos entre objetos
de frontera (ConceptoMen) y objetos de entidad (Documento).
www.FreeLibros.org
2 1 6 C apitulo 6 D ise o del sistema
6.4.8 Identificacin de condiciones de frontera
En las secciones anteriores tratamos el diseo y el refinamiento de la descomposicin en
subsistemas. Ahora tenemos una mejor idea de la manera de descomponer el sistema, de distri
buir casos de uso entre subsistemas, dnde guardar datos y la manera de lograr el control de
acceso y garantizar la seguridad. Todava necesitamos examinar las condiciones de frontera del
sistema, esto es, decidir la manera en que el sistema se arranca, se inicia y se apaga, y necesita
mos definir la manera de manejar las grandes fallas, como corrupcin de datos, causadas por un
error de software o por una falla de corriente elctrica.
Admini s t r a r S e r v i d o r A p a g a r S e r v i d o r
i n c l u y o
C o n f i g u r a r S o r v i d o r
Figura 6-46 Administracin de casos de uso para MiViaje (diagrama de caso de uso UML). Se llama a Ad-
ministrarAutomovilista para aadir, eliminar, modificar o leer datos acerca de los automovilistas (por
ejemplo, nombre de usuario y contrasea, bitcora de uso, generacin de clave de cifrado). Se llama a Ad-
ministrarMapas para aadir, eliminar o actualizar mapas que se usan para generar viajes. Adminis-
trarServidor incluye todas las funciones necesarias para arrancar y apagar el servidor.
Por ejemplo, ahora tenemos una buena idea de la manera en que debe trabajar MiViaje en
estado estable. Sin embargo, todava no hemos tratado la manera en que se inicia MiViaje. Por
ejemplo, cmo se cargan los mapas en el ServicioPlaneacin? Cmo se instala MiViaje en el
automvil? Cmo sabe MiViaje con cul ServicioPlaneacin tiene que conectarse? Cmo se
aaden automovilistas al ServicioPlaneacin? Pronto descubrimos un conjunto de casos de
uso que no se han especificado. A estos les llamamos casos de uso de administracin del sistema.
Los casos de uso de administracin del sistema especifican el comportamiento de un sistema
durante las fases de arranque y paro.
Es comn que stos no se especifiquen durante el anlisis o que se traten en forma separada.
Por otro lado, muchas funciones de administracin del sistema pueden inferirse de los requeri
mientos de usuario diarios (por ejemplo, registro y borrado de usuarios, administracin del con
trol de acceso). Por otro lado, muchas funciones son consecuencia de decisiones de diseo (por
ejemplo, tamao del cach, ubicacin del servidor de base de datos, ubicacin del servidor de
respaldo) y no de decisiones de requerimientos.
www.FreeLibros.org
Actividades del d i s e o d e sistemas: d e s d e l o s objetos hasta l o s s u b s i s t e m a s 217
Ahora modificamos el modelo de anlisis de MiViaje para que incluya los casos de uso de
administracin. En particular aadimos tres casos de uso: A d m i n i s t r a r A u t o m o v i l i s t a , para
aadir, eliminar y editar automovilistas, AdministrarMapas para aadir, eliminar y actualizar
mapas que se usan para generar viajes y A d m i n i s t r a r S e r v i d o r para realizar la configuracin
de rutina, el arranque y el apagado (vea la figura 6-46). A r r a n c a r S e r v i d o r , que es parte de
A d m i n i s t r a r S e r v i d o r , se proporciona como ejemplo en la figura 6-47.
Nombre del caso de uso ArrancarServidor
Condicin inicial 1. El Administr ador ServicioPlaneacin se registra en la mquina
servidora.
Flujo de eventos 2. Despus de registrarse en forma satisfactoria, el AdministradorServicio-
Planeacin ejecuta el comando arrancarServicioPlaneacin.
3. Si el ServicioPlaneacin se apag de modo normal la vez anterior, el
servidor lee la lista de Automovilista legtimos y el ndice de Via j e
y Mapa activos. Si el ServicioPlaneacin fall se le notifica al
AdministradorServicioPlaneacin y se realiza una revisin de
consistencia en BDAlmacnMapas.
Condicin final 4. El ServicioPlaneacin est disponible y espera conexiones de los
AsistenteEnrutamiento.
Figura 6-47 Caso de uso ArrancarServidor del sistema MiViaje.
En este caso, la adicin de tres casos de uso, es decir, la revisin del modelo de casos de uso, no
tiene impacto en la descomposicin en subsistemas. Sin embargo, aadimos nuevos casos de uso a
b s subsistemas existentes: el SubsistemaBDAlmacnMapas necesita po d a detectar si fue apagado en
forma adecuada o no, y necesita poda realizar las revisiones de consistencia y reparar los datos corrup
tos a i caso necesario. Revisamos la descripcin de SubsistemaBDAlmacnMapas (figura 6-48).
Cuando examinamos condiciones de frontera tambin necesitamos investigar los casos
excepcionales. Por ejemplo, los requerimientos no funcionales de MiViaje especifican que el sistema
necesita tolerar fallas en la conexin. Por esta razn, el A s i s t e n t e E n r u t a m i e n t o descarga el
V i a j e planeado al Dest ino inicial. Tambin decidimos descargar los Segmento que estn cer
canos al v i a j e para permitir una replaneacin mnima aunque no se disponga de una conexin.
SubsistemaBDAlmacn- El SubsistemaBDAlmacnMapas es responsable del almacenamiento de
Mapas mapas y viajes en una base de datos para el SubsistemaPlaneacin.
Este subsistema soporta varios automovilistas y agentes de planeacin
concurrentes. Cuando arranca, el SubsistemaBDAlmacnMapas detecta si fue
apagado en forma adecuada. Si no es as, realiza una revisin de consistencia
sobre los Mapa y Viaje, y repara datos corruptos si es necesario.
Figura 6-48 Descripcin revisada de SubsistemaBDAlmacnMapas basada en el caso de uso Arran
carServidor adicional de la figura 6-47. (Los cambios se indican en cursivas.)
www.FreeLibros.org
2 1 8 C apitulo 6 D ise o del sistema
En general, una excepcin es un evento inesperado o error que sucede durante la eje
cucin del sistema. Las excepciones son causadas por una de tres fuentes diferentes:
Un error de usuario. El usuario, por error o de manera deliberada, da datos que estn fiiera de
bs lmites. Por ejemplo, una cantidad negativa en una transaccin bancaria podra conducir a la
transferencia de dinero en la direccin equivocada si el sistema no protege ante tales errores.
Una falla de hardware. El hardware envejece y falla. La falla de un vnculo de red, por
ejemplo, puede desconectar en forma momentnea a dos nodos del sistema. Una falla de
disco duro puede dar lugar a la prdida permanente de datos.
Un error de software. Un error puede ocurrir debido a que el sistema, o alguno de sus
componentes, contiene un error de diseo. Aunque es difcil la escritura de software libre
de errores, los subsistemas individuales pueden anticipar errores de otros subsistemas y
protegerse en contra de ellos.
El manejo de excepciones es el mecanismo por el cual un sistema trata una excepcin. En el caso
de un error de usuario el sistema debe desplegar un mensaje de error significativo ante el usua
rio, de tal forma que pueda corregir el valor dado. En el caso de una falla de vnculo de red el sis
tema debe guardar su estado temporal para recuperarlo cuando la red vuelva a estar en lnea.
El desarrollo de sistemas confiables es un asunto difcil. Con frecuencia, comprometer algo
de la funcionalidad facilita el diseo del sistema. En MiViaje suponemos que siempre es posible la
conexin en el destino inicial y que la replaneacin podra sufrir un impacto por problemas de
comunicaciones a lo largo del viaje.
6.4.9 Anticipacin del cambio
El diseo del sistema introduce una extraa paradoja en el proceso de desarrollo. Por un
lado, queremos construir paredes slidas entre subsistemas para manejar la complejidad dividiendo
el sistema en partes ms pequeas e impedir que los cambios en un subsistema tengan un impacto
en los dems. Por otro lado, queremos que la arquitectura de software sea modificable para mini
mizar el costo de los cambios posteriores. Estos son objetivos en conflicto que no pueden reconci
liarse: tenemos que definir una arquitectura al inicio para manejar la complejidad y tenemos que
pagar el precio de los cambios ms adelante en el proceso de desarrollo. Sin embargo, podemos
anticipar los cambios y disear para ellos, ya que las fuentes de los cambios posteriores tienden a
ser las mismas para la mayora de los sistemas:
Nuevos vendedores o nueva tecnologa. Cuando se usan componentes para construir el
sistema hay que anticipar que el componente ser reemplazado por uno equivalente de un
vendedor diferente. Este cambio es frecuente y, por lo general, es difcil enfrentarlo. El mer
cado de software es dinmico, y muchos vendedores iniciarn negocios y los abandonarn
antes de que se termine el proyecto.
Akievas implementaciones. Cuando tos subsistemas se integran y prueban juntos, el tiempo de
respuesta general del sistema es, con mucha frecuencia, ms elevado que el establecido o
el de tos requerimientos de desempeo implcitos: la colocacin de un cargo en un sistema de
informacin bancario puede llevarse 2 minutos, un sistema de reservaciones de vuelos puede
www.FreeLibros.org
Actividades del d i s e o d e sistemas: d e s d e l o s objetos hasta l o s s u b s i s t e m a s 219
llevarse 5 minutos para registrar un vuelo. El desempeo en el nivel de sistema es difcil de
predecir y, por lo general, no se optimiza antes de la integracin: los desarrolladores se
enfocan primero en sus subsistemas. Esto activa la necesidad de estructuras de datos y
algoritmos ms eficientes y mejores interfaces, a menudo bajo restricciones de tiempo.
Nuevas vistas. La prueba del software con usuarios reales descubre muchos problemas de uti
lidad. Con frecuencia esto se traduce en la creacin de vistas adicionales de los mismos datos.
Nueva complejidad del dominio de aplicacin. La organizacin de un sistema genera ideas
de nuevas generalizaciones: un sistema de informacin bancario para una sucursal puede
conducir a la idea de un sistema de informacin de varias sucursales. Otras veces el dominio
mismo incrementa su complejidad: antes los nmeros de vuelo estaban asociados con un
avin y slo un avin. Con la llegada de alianzas de transporte, un avin puede tener ahora
varios nmeros de vuelo de diferentes compaas.
Errores. Por desgracia muchos errores de requerimientos se descubren slo cuando los
usuarios reales comienzan a usar el sistema.
Los modernos lenguajes orientados a objetos proporcionan mecanismos que pueden minimizar
el impacto del cambio cuando se le anticipa. El uso de delegacin y herencia, junto con las clases
abstractas, desacopla la interfaz de un subsistema con respecto a su implementacin actual. En este
captulo hemos proporcionado ejemplos seleccionados de patrones de diseo [Gamma et a l , 1994]
que manejan los cambios anteriores. La figura 6-49 resume los patrones y el tipo de cambio contra
el que protegen.
Adaptador (vea el
ejemplo de la figura 6-34)
Puente (vea el ejemplo
en la figura 6-37)
Comando (vea el ejemplo
en la figura 6-45)
Observador (vea el ejemplo en
la seccicn 6.3.5)
E s t r a t e g i a (vea el ejemplo
en la figura 6-40)
Nuevo vendedor, nueva tecnologa, nueva implementacin. Este patrn
encapsula una parte de cdigo heredado que no fue diseada para
trabajar con el sistema. Tambin limita el impacto de las sustituciones
de fragmentos de cdigo heredado con un componente diferente.
Nuevo vendedor, nueva tecnologa, nueva implementacin. Este patrn
desacopla la interfaz de una clase con respecto a su implementacin.
Sirve al mismo propsito que el patrn Adaptador, a excepcin de que
el desarrollador no est restringido por un fragmento de cdigo existente.
Nueva funcionalidad. Este patrn desacopla los objetos responsables
del procesamiento de comandos con respecto a los comandos mismos.
Este patrn protege estos objetos con respecto a cambios a causa de
una nueva funcionalidad.
Nuevas vistas. Este patrn desacopla los objetos de entidad con respecto
a sus vistas. Se pueden aadir vistas adicionales sin que tengan que
modificarse los objetos de entidad.
Nuevo vendedor, nueva tecnologa, nueva implementacin. Este patrn
desacopla un algoritmo con respecto a sus implementaciones. Sirve al
mismo propsito que los patrones Adaptador y Puente, a excepcin
de que la unidad encapsulada es un comportamiento.
Figura 6 - 4 9 P a t r o n e s d e d i s e o s e l e c c i o n a d o s y l o s c a m b i o s q u e a n t i c i p a n .
www.FreeLibros.org
220 C apitulo 6 D ise o del sistema
Una razn del alto costo de los cambios tardos en el proceso es la prdida del contexto de
diseo. Los desarrolladores olvidan con mucha rapidez las razones que los llevaron a disear desa
rrollos complicados o estructuras de datos complejas durante las primeras fases del proceso. Cuando
se cambia el cdigo ms adelante en el proceso, es muy grande la probabilidad de introducir errores
en el sistema. Para protegerse contra esas situaciones se deben registrar las suposiciones. Por
ejemplo, cuando se usa un patrn de diseo para anticipar un cambio determinado (de la figura
6-49), se deber registrar cul cambio se est anticipando. En el captulo 8, Administracin de la
fundamentacin, describimos varias tcnicas para registrar las alternativas y decisiones de diseo.
6.4.10 Revisin del diseo de sistemas
Al igual que el anlisis, el diseo de sistemas es una actividad en evolucin e iterativa. A
diferencia del anlisis, no hay un agente extemo, como el cliente, que revise las iteraciones sucesi
vas y asegure una mejor calidad. Sin embargo, esta actividad de mejora de la calidad todava es
necesaria, y los gerentes de proyecto y desarrolladores necesitan organizar un proceso de revisin
para sustituirlo. Existen varias alternativas, como usar desarrolladores que no han estado involucra
dos en el diseo del sistema para que acten como revisores independientes o usar desarrolladores
de otro proyecto para que acten como revisores a la par. Estos procesos de revisin slo funcionan
si los revisores tienen un incentivo en el descubrimiento y reporte de problemas.
Adems de satisfacer los objetivos de diseo que se identificaron durante el diseo del
sistema, necesitamos aseguramos que el modelo del diseo del sistema sea correcto, completo,
consistente, realista y legible. El modelo del diseo del sistema es correcto si se puede establecer
una correspondencia entre el modelo de anlisis y el modelo del diseo del sistema. Debern
hacerse las siguientes preguntas para determinar si es correcto el diseo del sistema:
Puede rastrearse cada subsistema de regreso a un caso de uso o un requerimiento no funcional?
Puede establecerse la correspondencia entre cada caso de uso y un conjunto de subsistemas?
Puede rastrearse cada objetivo de diseo de regreso a un requerimiento no funcional?
Se ha tratado cada uno de los requerimientos no funcionales en el modelo de diseo del
sistema?
Cada actor tiene una poltica de acceso?
Es consistente con los requerimientos de seguridad no funcionales?
El modelo est completo si se han tratado cada uno de los requerimientos y asuntos del diseo
del sistema. Debern hacerse las siguientes preguntas para determinar si el diseo del sistema
est completo:
Se han manejado las condiciones de frontera?
Hubo pruebas iniciales de los casos de uso para identificar funcionalidad faltante en el
diseo del sistema?
Se han examinado todos los casos de uso y se les ha asignado un objeto de control?
Se han tratado todos los aspectos del diseo del sistema (es decir, asignacin de hardware,
almacenamiento persistente, control de acceso, cdigo heredado, condiciones de frontera)?
Se han definido todos los subsistemas?
www.FreeLibros.org
Administracin del d i s e o del s istema 221
El modelo es consistente si no contiene ninguna contradiccin. Debern hacerse las siguientes
preguntas para determinar si un diseo de sistemas es consistente:
Se ha establecido la prioridad de los objetivos de diseo en conflicto?
Hay objetivos de diseo que violen algn requerimiento no funcional?
Hay varios subsistemas o clases con el mismo nombre?
Se intercambian colecciones de objetos entre subsistemas en forma consistente?
El modelo es realista si se puede implementar el sistema correspondiente. Debern hacerse las
siguientes preguntas para determinar si un diseo de sistemas es realista:
Hay alguna tecnologa o componente nuevo en el sistema? Hay algn estudio que
evale lo apropiado o robusto de estas tecnologas o componentes?
Se han revisado los requerimientos de desempeo y confiabilidad en el contexto de la
descomposicin en subsistemas? Por ejemplo, hay alguna conexin de red en la ruta crtica
del sistema?
Se han abordado los problemas de concurrencia (por ejemplo, contencin, estancamientos,
exclusin mutua)?
El modelo es legible si los desarrolladores que no estn involucrados en el diseo del sistema
pueden comprender el modelo. Debern hacerse las siguientes preguntas para asegurarse que el
diseo del sistema sea legible:
Son comprensibles los nombres de los subsistemas?
Las entidades (por ejemplo, subsistemas, clases, operaciones) que tienen nombres similares
indican fenmenos similares?
Estn descritas todas las entidades con el mismo nivel de detalle?
En muchos proyectos encontrar que el diseo del sistema y la implementacin se traslapan un poco.
Por ejemplo, tal vez se construyan prototipos de algunos subsistemas seleccionados antes de que la
arquitectura sea estable para evaluar nuevas tecnologas. Esto conduce a muchas revisiones parciales,
en vez de una revisin completa seguida por una aceptacin del cliente, como sucede en el anlisis.
Aunque este proceso produce una mayor flexibilidad, tambin requiere que los desarrolladores den
seguimiento con ms cuidado a los asuntos pendientes. Ms adelante tendrn que resolverse muchos
asuntos difciles, no debido a su dificultad sino a que cayeron por las grietas de la organizacin.
6.5 Administracin del diseo del sistema
En esta seccin tratamos los asuntos relacionados con la administracin de las actividades del
diseo del sistema. Al igual que en el anlisis, el reto principal en la administracin del diseo
del sistema es mantener la consistencia mientras se usa la mayor cantidad de recursos posible. Al
final, la arquitectura de software y las interfaces del sistema deben describir un solo sistema
coherente que sea comprensible para una sola persona.
Primero describimos una plantilla de documentos que puede usarse para documentar los
resultados del sistema (seccin 6.5.1). Luego describimos la asignacin de funciones durante el
diseo del sistema (seccin 6.5.2) y tratamos los asuntos de comunicacin durante el diseo del
www.FreeLibros.org
222 C apitulo 6 D ise o del sistema
sistema (seccin 6.5.3). Luego tratamos los asuntos de administracin relacionados con la natu
raleza iterativa del diseo de sistemas (seccin 6.5.4).
6.5.1 Documentacin del diseo del sistema
H diseo del sistema se plasma en el Documento de Diseo del Sistema (SDD, por sus siglas
en ingls). Describe los objetivos de diseo puestos para el proyecto, la descomposicin en sub
sistemas (con diagramas de clase UML), la correspondencia entre el hardware y el software (con
diagramas de despliegue UML), la administracin de datos, el control de acceso, los mecanismos
de flujo de control y las condiciones de frontera. El SDD se usa para definir las interfaces entre
equipos de desarrolladores y como referencia cuando se necesitan revisar las decisiones en el nivel
de arquitectura. La audiencia del SDD incluye al gerente del proyecto, los arquitectos del sistema
(es decir, los desarrolladores que participan en el diseo del sistema) y los desarrolladores que
disean e implementan cada subsistema. El siguiente es un ejemplo de plantilla para un SDD:
D o c u m e n t o del d i s e o del s i s t e m a
1. Introduccin
1.1 Propsito del sistema
1.2 Objetivos de diseo
1.3 Definiciones, siglas y abreviaturas
1.4 Referencias
1.5 Panorama
2. Arquitectura del software actual
3. Arquitectura del software propuesto
3.1 Panorama
3.2 Descomposicin en subsistemas
3.3 Correspondencia entre hardware y software
3.4 Administracin de datos persistentes
3.5 Control de acceso y seguridad
3.6 Control de software global
3.7 Condiciones de frontera
4. Servicios de subsistemas
Glosario
La primera seccin del SDD es una Introduccin. Su propsito es dar un breve panorama de la
arquitectura de software y los objetivos de diseo. Tambin proporciona referencias a otros docu
mentos e informacin de rastreabilidad (por ejemplo, documento de anlisis de requerimientos
relacionados, referencias a sistemas existentes, restricciones que tienen un impacto en la arqui
tectura del software).
La segunda seccin. Arquitectura del software actual, describe la arquitectura del sistema
que se est reemplazando. Si no hay un sistema anterior, esta seccin puede reemplazarse con un
www.FreeLibros.org
Administracin del d i s e o del s istema 223
estudio de las arquitecturas actuales de sistemas similares. El propsito de esta seccin es hacer
explcita la informacin de fondo que usan los arquitectos del sistema, sus suposiciones y asun
tos comunes que tratar el nuevo sistema.
La tercera seccin. Arquitectura del software propuesto, documenta el modelo de diseo
del sistema del nuevo sistema. Est dividida en siete subsecciones:
Panorama presenta una vista a ojo de pjaro de la arquitectura del software y describe en
forma breve la asignacin de funcionalidad de cada subsistema.
Descomposicin en subsistemas describe la descomposicin en subsistemas y las responsabi
lidades de cada uno de ellos. ste es el producto principal del diseo del sistema.
Correspondencia entre hardware y software describe la manera en que se asignan los
subsistemas al hardware y los componentes hechos. Tambin lista los asuntos introducidos
por varios nodos y la reutilizacin del software.
Administracin de datos persistentes describe los datos persistentes guardados por el sis
tema y la infraestructura de administracin de datos que se requiere para ella. Esta seccin
incluye, por lo general, la descripcin de esquemas de datos, la seleccin de una base de
datos y la descripcin del encapsulado de la base de datos.
Control de acceso y seguridad describe el modelo de usuario del sistema desde el punto de
vista de una matriz de acceso. Esta seccin tambin describe asuntos de seguridad, como
la seleccin de un mecanismo de autentificacin, el uso del cifrado y el manejo de claves.
Control de software global describe la manera en que se implementa el control de software
global. En particular, esta seccin debe describir la manera en que se inician las peticiones y
se sincronizan los subsistemas. Esta seccin debe listar y tratar los asuntos de sincronizacin
y concurrencia.
Condiciones de frontera describe el comportamiento del sistema en el arranque, el apagado y
en los errores. Si se descubren nuevos casos de uso para la administracin del sistema
debern incluirse en el documento de anlisis de requerimientos y no en esta seccin.
La cuarta seccin, Servicios de subsistemas, describe los servicios proporcionados por cada sub
sistema desde el punto de vista de las operaciones. Aunque, por lo general, esta seccin est
vaca o incompleta en las primeras versiones del SDD, sirve como una referencia para los equi
pos sobre las fronteras entre sus subsistemas. La interfaz de cada subsistema se deriva de esta
seccin y se detalla en el documento de diseo de objetos.
El SDD se escribe despus de que se ha realizado la descomposicin inicial en sistemas,
esto es, los arquitectos del sistema no deben esperar hasta que se hayan tomado todas las deci
siones del diseo del sistema para publicar el documento. Adems, el SDD se actualiza a lo
largo del proceso cuando se toman decisiones de diseo o se descubren problemas. El SDD, una
vez que se publica, es la lnea base y se pone bajo la administracin de la configuracin. La sec
cin de historia de revisiones del SDD proporciona una historia de los cambios como una lista
de cambios, incluyendo al autor responsable del cambio, la fecha de ste y una breve descripcin
del mismo.
www.FreeLibros.org
224 C apitulo 6 D ise o del sistema
6.5.2 Asignacin de responsabilidades
A diferencia del anlisis, el diseo del sistema es el reino de los desarrolladores. El cliente
y el usuario final se desvanecen en el fondo. Sin embargo, observe que muchas actividades del
diseo del sistema activan revisiones al modelo de anlisis. El cliente y el usuario regresan al
proceso para estas revisiones. En sistemas complejos el diseo del sistema est centrado alrede
dor del equipo de arquitectura. ste es un equipo de funcionalidad cruzada compuesto por arqui
tectos (que definen la descomposicin en subsistemas) y desarrolladores seleccionados (que
colaboran en la implementacin del subsistema). Es crtico que el diseo del sistema incluya
personas que estn expuestas a las consecuencias de las decisiones del diseo del sistema. El
equipo de arquitectura comienza su trabajo inmediatamente despus de que el modelo de
anlisis es estable, y contina funcionando hasta el final de la fase de integracin. Esto crea un
incentivo en el equipo de arquitectura para que anticipe los problemas que se encuentran durante
la integracin. A continuacin se presentan los papeles principales del diseo del sistema:
El arquitecto tiene el papel principal del diseo del sistema. El arquitecto asegura la consis
tencia en las decisiones de diseo y estilos de interfaz. El arquitecto asegura la consistencia
del diseo en la administracin de la configuracin y los equipos de prueba, en particular
en la formulacin de la poltica de administracin de la configuracin, as como en la
estrategia de integracin del sistema. sta es principalmente un papel de integracin que
consume informacin de cada equipo de subsistema. El arquitecto es el lder del equipo de
arquitectura de funcionalidad cruzada.
Los coordinadores de arquitectura son los miembros del equipo de arquitectura. Son represen
tantes de los equipos de subsistemas. Transmiten informacin desde y hacia sus equipos y nego
cian los cambios de interfaz. Durante el diseo del sistema se enfocan en los servicios de
subsistemas, y durante la fase de implementacin se enfocan en la consistencia de las APIs.
Los papeles de editor de documentos, administrador de configuracin y revisor son
los mismos que para el anlisis.
La cantidad de subsistemas determina el tamao del equipo de arquitectura. Para sistemas com
plejos se introduce un equipo de arquitectura para cada nivel de abstraccin. En todos los casos
debe haber un papel de integracin en el equipo para asegurar la consistencia y la comprensin de
la arquitectura por un solo individuo.
6.5.3 C omunicacin acerca del diseo del sistema
La comunicacin durante el diseo del sistema debe ser menos desafiante que durante el
anlisis: la funcionalidad del sistema ya ha sido definida, los participantes en el proyecto tienen
conocimientos similares y, por ahora, ya deben conocerse mejor entre ellos. La comunicacin
todava es difcil a causa de nuevas fuentes de complejidad:
Tamao. La cantidad de asuntos a manejar se incrementa conforme los desarrolladores
comienzan a disear. La cantidad de asuntos que manejan los desarrolladores se incrementa:
cada parte de funcionalidad requiere muchas operaciones sobre muchos objetos. Adems,
bs desarrolladores investigan, a menudo en forma concurrente, varios diseos y tecnologas
de implementacin.
www.FreeLibros.org
Administracin del d i s e o del s istema 225
Cambio. La descomposicin en subsistemas y las interfaces de los subsistemas estn en
flujo constante. Los trminos que usan los desarrolladores para nombrar diferentes partes
del sistema evolucionan en forma persistente. Si el cambio es rpido puede ser que los
desarrolladores no estn discutiendo la misma versin del subsistema, y esto puede con
ducir a muchas confusiones.
Nivel de abstraccin. Las discusiones acerca de los requerimientos pueden concretarse
usando maquetas de interfaz y analogas con los sistemas existentes. Las discusiones sobre
la implementacin llegan a ser concretas cuando se dispone de la integracin y los resulta
dos de las pruebas. Las discusiones sobre el diseo del sistema rara vez son concretas, ya
que las consecuencias de las decisiones de diseo se sufren ms adelante durante la imple-
mentacin y las pruebas.
Renuencia a enfrentar problemas. El nivel de abstraccin de la mayora de las discusiones
tambin puede facilitar que se posponga la resolucin de asuntos difciles. Una resolucin
tpica de problemas de control con frecuencia es volvamos a ver este asunto durante la
implementacin. Aunque, por lo general, es deseable postergar determinadas decisiones
de diseo, como las estructuras de datos internos y algoritmos usados por cada subsistema,
por ejemplo, ninguna decisin que tenga impacto sobre la descomposicin del sistema y
las interfaces de subsistemas debe postergarse.
Objetivos y criterios conflictivos. Los desarrolladores individuales con frecuencia optimizan
criterios diferentes. Un desarrollador con experiencia en el diseo de interfaz de usuario estar
predispuesto hacia la optimizacin del tiempo de respuesta. Un desarrollador con experiencia
en base de datos puede optimizar la produccin. Estos objetivos conflictivos, en especial
cuando son intrnsecos, dan como resultado que los desarrolladores jalen la descomposicin
del sistema en direcciones diferentes y esto conduzca a inconsistencias.
Las mismas tcnicas que tratamos en el anlisis (vea la seccin 5.5.3) pueden aplicarse durante
el diseo del sistema:
Identificar y asignar prioridad a los objetivos de diseo del sistema y hacerlos explcitos
(vea la seccin 6.4.2). Si los desarrolladores que tienen a su cargo el diseo del sistema
tienen entrada en este proceso se les facilitar encargarse de estos objetivos de diseo. Los
objetivos de diseo tambin proporcionan un marco de trabajo objetivo contra el cual se
pueden evaluar las decisiones.
Poner a disposicin de todos los interesados la versin actual de la descomposicin del
sistema. Un documento vivo distribuido por medio de Internet es una forma para lograr la dis
tribucin rpida. El uso de una herramienta de administracin de configuracin para mantener
los documentos de diseo del sistema ayuda a tos desarrolladores a que identifiquen cambios
recientes.
Mantener un glosario actualizado. Al igual que en el anlisis, la definicin explcita de
trminos reduce la falta de comprensin. Cuando se identifican y modelan subsistemas
hay que proporcionar definiciones adems de los nombres. Un diagrama UML slo con
los nombres de los subsistemas no es suficiente para apoyar una comunicacin efectiva.
Una definicin breve y sustancial debe acompaar a cada nombre de subsistema y clase.
www.FreeLibros.org
226 C apitulo 6 D ise o del sistema
Enfrentar problemas de diseo. El retraso de las decisiones de diseo puede ser benfico
cuando se necesita ms informacin antes de comprometerse a decisiones de diseo. Sin
embargo, este enfoque puede impedir la confrontacin de problemas de diseo difciles.
Antes de plantear un asunto se deben explorar y describir varias alternativas posibles y
justificar el retraso. Esto asegura que los asuntos que se posponen lo hagan sin tener un
impacto serio en la descomposicin del sistema.
Iterar. Excursiones seleccionadas en la fase de implementacin pueden mejorar el diseo
del sistema. Por ejemplo, se pueden evaluar nuevas caractersticas de un componente pro
porcionado por un vendedor implementando un prototipo vertical (vea la seccin 6.5.4)
para la funcionalidad que es ms probable que se beneficie con la caracterstica.
Por ltimo, sin importar qu tanto esfuerzo se gaste en el diseo del sistema, la descomposicin
del sistema y las interfaces de subsistemas cambiarn, casi con seguridad, durante la implemen
tacin. Conforme se tiene disponible nueva informacin sobre tecnologas de implementacin,
los desarrolladores tienen una comprensin ms clara del sistema y se descubren alternativas de
diseo. Los desarrolladores deben anticipar los cambios y reservar algo de tiempo para actuali
zar el SDD antes de la integracin del sistema.
6.5.4 Iterando sobre el diseo del sistema
As como sucede con los requerimientos, el diseo del sistema se da a travs de iteraciones y
cambios sucesivos. Sin embargo, el cambio debe ser controlado para impedir el caos, en especial
en proyectos complejos que incluyen a muchos participantes. Distinguimos tres tipos de itera
ciones durante el diseo del sistema. Primero, las decisiones principales al inicio del diseo del
sistema tienen un impacto en la descomposicin en subsistemas conforme se inicia cada una de las
diferentes actividades del diseo del sistema. Segundo, las revisiones a las interfaces de los sub
sistemas suceden cuando se usan los prototipos de evaluacin para evaluar asuntos especficos.
Tercero, los errores y omisiones que se descubren ms adelante activan cambios a las interfaces de
subsistemas y, a veces, a la descomposicin del sistema mismo.
H primer conjunto de iteraciones se maneja mejor mediante la lluvia de ideas cara a cara y elec
trnica. Las definiciones todava estn fluyendo, los desarrolladores todava no tienen una visin del
sistema completo y debe darse la mxima importancia a la comunicacin a expensas de la formalidad
o tos procedimientos. Con frecuencia, en proyectos basados en equipo, la descomposicin inicial del
sistema se disea antes de que se termine el anlisis. La descomposicin temprana del sistema per
mite que se asigne la responsabilidad de sistemas diferentes a equipos diferentes. Se debe motivar el
cambio y la exploracin, aunque sea para ampliar la comprensin compartida de los desarrolladores o
para generar evidencias que den soporte al diseo actual. Por esta razn, no deber haber un proceso
burocrtico de cambio formal durante esta fase.4
El segundo conjunto de iteraciones est orientado a resolver asuntos difciles y enfocados,
como la seleccin de un vendedor o tecnologa especficos. La descomposicin en subsistemas ya
es estable (debe ser independiente de vendedores y tecnologa, vea la seccin 6.4.9) y la mayora
4. Un prototipo vertical implementa por completo una funcionalidad restringida (por ejemplo, objetos de interfaz,
control y entidad para un caso de uso), mientras que un prototipo horizontal implementa en forma parcial un amplio
rango de funcionalidad (por ejemplo, objetos de interfaz para varios casos de uso).
www.FreeLibros.org
Ejercicios 227
de estas exploraciones estn orientadas a identificar si un paquete especfico es adecuado o no para
el sistema. Durante este periodo los desarrolladores tambin pueden realizar un prototipo vertical
para un caso de uso crtico a fin de probar lo adecuado de la descomposicin. Esto permite que se
descubran y traten lo ms pronto posible asuntos de flujo de control. De nuevo, no es necesario un
proceso de cambio formal. Una lista de asuntos pendientes y su estado puede ayudar a que los
desarrolladores propaguen rpido el resultado de una investigacin de tecnologa.
El tercer conjunto de iteraciones remedia problemas de diseo que se descubren ms adelante
a i el proceso. Aunque los desarrolladores trataran de evitar estas iteraciones, ya que tienden a incu
rrir en altos costos e introducen muchos errores nuevos en el sistema, deben anticipar cambios tardos
en el desarrollo. La anticipacin de iteraciones tardas incluye la documentacin de dependencias
oitre subsistemas, las razones de diseo para interfaces de subsistemas y cualquier rodeo que es pro
bable que se rompa al haber un cambio. Los cambios deben manejarse con cuidado, y se deber
poner en su lugar un proceso de cambio similar al del seguimiento de cambios de requerimientos.
Podemos lograr la estabilizacin progresiva de la descomposicin en subsistemas usando el
concepto de ventana de diseo. Para motivar el cambio, y al mismo tiempo controlarlo, los asuntos
crticos se dejan pendientes slo durante un tiempo especificado. Por ejemplo, la plataforma de
hardware y software que ser el destino del sistema deber resolverse lo ms pronto posible en el
proyecto para que las decisiones de compra del hardware puedan realizarse a tiempo para los
desarrolladores. Sin embargo, las estructuras de datos internas y los algoritmos pueden dejarse
pendientes hasta despus de la integracin, permitiendo que los desarrolladores los revisen con
base en las pruebas de desempeo. Una vez que ha pasado la ventana de diseo, el asunto debe
resolverse y slo se volver a abrir en una iteracin subsecuente.
Con el ritmo cada vez ms rpido de la innovacin tecnolgica se pueden anticipar muchos
cambios cuando una parte dedicada de la organizacin es responsable de la administracin de tec
nologa. Los gerentes de tecnologa revisan nuevas tecnologas, las evalan y acumulan conocimiento
que se utiliza durante la seleccin de componentes. Con frecuencia, los cambios suceden tan
rpido que las compaas no estn conscientes de las tecnologas que ellas mismas proporcionan.
6.6 Ejercicios
1. La descomposicin de un sistema en subsistemas reduce la complejidad que tienen que
manejar los desarrolladores simplificando las partes e incrementando su coherencia. La
descomposicin de un sistema en partes ms simples da como resultado, por lo general, un
incremento en un tipo diferente de complejidad: partes ms simples tambin significan
una mayor cantidad de partes e interfaces. Si la coherencia es el principio que gua a los
desa-rrolladores para descomponer un sistema en partes pequeas, cul principio com
petidor los lleva a mantener pequea la cantidad total de partes?
2. En la seccin 6.4.2 clasificamos los objetivos de diseo en cinco categoras: desempeo,
solidez, costo, mantenimiento y criterios de usuario final. Asigne una o ms categoras a
cada uno de los siguientes objetivos:
A los usuarios se les debe dar retroalimentacin en menos de un segundo despus de
que emitan cualquier comando.
El D i s t r i b u i d o r B o l e t o s debe ser capaz de emitir boletos de tren aunque haya una
falla de red.
www.FreeLibros.org
228 Capitulo 6 Diseo del s ist e m a
El gabinete del D i s t r i b u i d o r B o l e t o s debe permitir que se instalen nuevos botones
por si se incrementa la cantidad de tarifas diferentes.
La MquinaCajeroAutomtico debe resistir ataques de diccionario (es decir, usuarios
que intentan descubrir un nmero de identificacin mediante intentos sistemticos).
La interfaz de usuario del sistema debe impedir que los usuarios emitan comandos
en orden errneo.
3. Considere un sistema que incluya un servidor Web y dos servidores de bases de datos. Los
dos servidores de bases de datos son idnticos: el primero acta como servidor principal y el
segundo como respaldo redundante en caso de que falle el primero. Los usuarios usan nave
gadores Web para tener acceso a los datos mediante el servidor Web. Tambin tienen la
opcin de usar un cliente propio que acceda a las bases de datos en forma directa. Trace un
diagrama de despliegue UML que represente la correspondencia entre hardware y software
de este sistema.
4. Considere un sistema para reporte de problemas heredado basado en fax para un fabricante
de aeronaves. Usted es parte de un proyecto de reingeniera que reemplaza la parte medu
lar del sistema con un sistema basado en computadora, el cual incluye una base de datos y
un sistema de notificacin. El cliente requiere que el fax siga siendo un punto de entrada
para el reporte de problemas. Usted propone un punto de entrada de correo electrnico.
Describa una descomposicin en subsistemas, y de ser posible un patrn de diseo, que
permita ambas interfaces.
Usted est diseando las polticas de control de acceso para una tienda al menudeo basada
en Web. Los clientes acceden a la tienda por medio de Web, examinan informacin de pro
ductos, dan su direccin e informacin de pago y compran productos. Los proveedores
pueden aadir nuevos productos, actualizar la informacin de productos y recibir pedidos.
El propietario de la tienda asigna los precios al menudeo, hace ofertas personalizadas a los
clientes con base en sus perfiles de compra y proporciona servicios de comercializacin.
Usted tiene que manejar tres actores: A d m in i s t r a d o r Ti e n d a , P rov e ed o r y C l i e n t e .
Disee una poltica de control de acceso para los tres actores. Los C l i e n t e pueden crearse
mediante Web, pero los Proveedor son creados por el Adminis trador Ti enda.
6. Seleccione un mecanismo de control de flujo que encuentre ms apropiado para cada uno
de los siguientes sistemas. Debido a que en la mayora de los casos son posibles varias alter
nativas, justifique las que tome.
Un servidor Web diseado para soportar altas cargas.
Una interfaz grfica de usuario para un procesador de palabras.
Un sistema incrustado de tiempo real (por ejemplo, un sistema de gua en un lanzador
de satlites).
7. Por qu se describen durante el diseo del sistema los casos de uso que describen condi
ciones de frontera (en vez de hacerlo durante la obtencin de requerimientos o el anlisis)?
8. Usted est desarrollando un sistema que guarda sus datos en un sistema de archivo Unix.
Anticipa que transportar las versiones futuras del sistema a otros sistemas operativos que
proporcionan diferentes sistemas de archivo. Cul patrn de diseo utilizara para prote
gerse ante este cambio?
www.FreeLibros.org
Referencias
[Bassero/., 1999]
[Booch, 1994]
[Day y Zimmermann, 1983]
[Erman et a l , 1980]
[Fowler, 1997]
[Gamma e t al., 1994]
[JCA, 1998]
[JDBC, 1998]
[Microsoft, 1995]
[Mowbray y Malveau, 1997]
[Nye y OReilly, 1992]
[OMG, 1995]
[RMI, 1998]
[Rumbaughe/a/., 1991]
[Shaw y Garlan, 1996]
[Siewiorek y Swarz, 1992]
[Silberschatz etal., 1991]
[Tanenbaum, 1996]
Ejercicios 229
L Bass, P. Clements y R. Kazman, Software Arehitecture in Practice.
Addison-Wesley, Reading, MA, 1999.
G. Booch, Object-OrientedAnalysis and Design with Applications, 2a. ed.
Benjamin/Cummings, Redwood City, CA, 1994.
J. D. Day y H. Zimmermann, The OSI Reference Model", Proceedings o f the IEEE,
diciembre de 1983, vol. 71, pgs. 1334-1340.
L D. Erman, F. Hayes-Roth et a/., The Hearsay-II Speech-Understanding System:
Integrating knowledge to resolve uncertainty . ACM Computing Surveys, 1980, vol.
12, nm. 2, pgs. 213-253.
M Fowler, Analysis Patterns: Reusable Object Modeis. Addison-Wesley, Reading,
MA, 1997.
E. Gamma, R. Helm, R. Johnson y J. Vlissides, Design Patterns: Elements o f Reusable
Object-Oriented Software. Addison-Wesley, Reading, MA, 1994.
Java Cryptography Arehitecture. JDK Documentaron, JavaSoft, 1998.
JDBCConnecting Java and Databases, JDK Documentation, JavaSoft, 1998.
Microsoft, Chapter 9: Open Database Connectivity (ODBC) 2.0 fundamentis,
Microsoft Windows Operating Systems and Services Arehitecture, Microsoft Corp.,
1995.
T. J. Mowbray y R. C. Malveau, CORBA Design Patterns. Wiley, Nueva York, 1997.
A. Nye yT. OReilly. XToolkit Intrinsics Programming Manual: OSF/Motif 1.1
Edition fo r X I 1 Release 5 The Definitive Guides to the X Windows Systems, OReilly
& Associates, Sebastopol, CA, 1992, vol. 4.
Object Management Group, The Common Object Request Broker: Arehitecture and
Specification. Wiley, Nueva York, 1995.
Java Remte MethodInvocation, JDK Documentation, JavaSoft, 1998.
J. Rumbaugh, M. Blaha, W. Premerlani, F. Eddy y W. Lorensen. Object-Oriented
Modeling and Design. Prentice Hall, Englewood Cliffs, NJ, 1991.
M. Shaw y D. Garlan, Software Arehitecture: Perspectives on an EmergingDiscipline.
Prentice Hall, Upper Saddle River, NJ, 1996.
D. P. Siewiorek y R. S. Swarz, Reliable Computer Systems: Design and Evaluation.
2a. ed. Digital, Burlington, MA, 1992.
A. Silberschatz, J. Peterson y P. Galvin, Operating System Concepts. 3a. ed.
Addison-Wesley, Reading, MA, 1991.
A. S. Tanenbaum, Computer Networks, 3a. ed. Prentice Hall, Upper Saddle River, NJ,
19%.
www.FreeLibros.org
7
7.1 Introduccin: ejemplos de pelculas 232
7.2 Un panorama del diseo de objetos 233
7.3 Conceptos del diseo de objetos
7.3.1 Revisin de los objetos de aplicacin frente a los objetos
235
de solucin 237
7.3.2 Revisin de tipos, firmas y visibilidad 237
7.3.3 Contratos: invariantes, precondiciones y poscondiciones 238
7.3.4 Lenguaje de restriccin de objetos de UML 240
7.4 Actividades del diseo de objetos 241
7.4.1 Identificacin de atributos y operaciones faltantes 245
7.4.2 Especificacin de tipo, firmas y visibilidad 248
7.4.3 Especificacin de restricciones 250
7.4.4 Especificacin de excepciones 252
7.4.5 Identificacin y ajuste de bibliotecas de clase 253
7.4.6 Identificacin y ajuste de marcos de aplicacin 255
7.4.7 Un ejemplo de marco: WebObjects 257
7.4.8 Realizacin de asociaciones 259
7.4.9 Incremento de la reutilizacin 265
7.4.10 Eliminacin de las dependencias de implementacin 267
7.4.11 Revisin de las rutas de acceso
7.4.12 Descomposicin de objetos: conversin de objetos
270
en atributos 271
7.4.13 Cacheo de resultados de clculos costosos 272
7.4.14 Retraso de clculos costosos 272
7.5 Administracin del diseo de objetos 273
7.5.1 Documentacin del diseo de objetos 274
7.5.2 Asignacin de responsabilidades 278
7.6 Ejercicios 280
Referencias 281
230
www.FreeLibros.org
7
Diseo de obj etos
Si tiene un procedimiento con 10 parmetros, es probable
que se le escapen algunos.
Alan Perlis, Epigrams in Programming
D u r a n t e el anlisis describimos el propsito del sistema. Esto da como resultado la identifi
cacin de los objetos de aplicacin que representan a los conceptos de los usuarios. Durante el
diseo del sistema describimos el sistema desde el punto de vista de su arquitectura, como su
descomposicin en subsistemas, su flujo de control global y la administracin de la persistencia.
Durante el diseo del sistema tambin definimos la plataforma de hardware y software sobre la
que construiremos el sistema. Esto da como resultado la seleccin de componentes hechos que
proporcionan un nivel de abstraccin ms elevado que el hardware. Durante el diseo de objetos
cerramos el hueco entre los objetos de aplicacin y los componentes hechos, identificando obje
tos de solucin adicionales y retinando los objetos existentes.
El diseo de objetos incluye:
Especificacin de servicios, durante la cual describimos con precisin cada interfaz de clase.
Seleccin de componentes, durante la cual identificamos componentes hechos y objetos de
solucin adicionales.
Reestructuracin del modelo de objetos, durante la cual transformamos el modelo de
diseo de objetos para mejorar su comprensibilidad y extensibilidad.
Optimizacin del modelo de objetos, durante la cual transformamos el modelo de diseo
de objetos para tratar criterios de desempeo, como el tiempo de respuesta o la utilizacin de
la memoria.
El diseo de objetos, al igual que el diseo del sistema, no es algortmico. En este captulo mos
tramos la manera de aplicar patrones existentes y componentes concretos en el proceso de reso
lucin del problema. Tratamos estos bloques de construccin y sus actividades relacionadas.
Concluimos tratando los asuntos administrativos asociados con el diseo de objetos. En este
captulo usamos Java y tecnologas basadas en Java. Sin embargo, las tcnicas que describimos
tambin son aplicables a otros lenguajes.
231
www.FreeLibros.org
232 C apitulo 7 D i s e o d e objetos
7.1 Introduccin: ejemplos de pelculas
Considere los siguientes ejemplos:
Speed (1994)
Harry, un polica de Los ngeles, es tomado como rehn por Howard, un bombardero loco. Jack, el
compaero de Harry, le dispara a Harry en la pierna para hacer ms lento el avance de Howard. A Harry
lo hieren en la pierna derecha. A lo largo de la pelcula Harry cojea de la pierna izquierda.
Triloga de la guerra de las galaxias (1977,1980 y 1983)
Al final del episodio v: El imperio contraataca (1980), Han Solo es capturado y congelado en carbonita
para envirselo a Jaba. Al inicio del episodio vi, El regreso del Jed i (1983), el congelado Han Solo es
recuperado por sus amigos y descongelado para que vuelva a la vida. Cuando lo congelaron Solo usaba
una chaqueta. Cuando lo descongelan viste una camisa blanca.
Titanio (1997)
Jack, un trotamundos, est enseando a Rose, una dama de la alta sociedad, a escupir. Se lo demuestra
ponindole el ejemplo y motiva a Rose para que lo haga tambin. Durante la leccin llega de improviso
la madre de Rose. Cuando Jack comienza a girar para enfrentar a la madre de Rose no hay saliva en su
cara. Cuando termina el giro tiene saliva en el mentn.
Los presupuestos para Speed, El imperio contraataca, El regreso del Jed i y Titanio fueron 30 , 1 8 ,3 2 . 5 y
200 millones de dlares, respectivamente.
Las pelculas, al igual que el software, son sistemas complejos que contienen errores (a veces
muchos) cuando se entregan a los clientes. Es sorprendente, considerando su costo de produccin,
que cualesquiera errores obvios permanezcan en el producto final. Sin embargo, las pelculas
son como los sistemas de software: son ms complejos de lo que parecen.
Muchos factores conspiran para introducir errores en una pelcula: las pelculas requieren la
colaboracin de muchas personas diferentes, las escenas se filman fuera de secuencia, algunas
escenas se vuelven a filmar fuera de lo planeado, detalles como los accesorios y el vestuario se
cambian durante la produccin, la presin de la fecha de lanzamiento es alta durante el proceso
de edicin cuando se integran todas las partes. Cuando se filma una escena, el estado de cada
uno de los objetos y actores en escena necesita ser consistente con las escenas precedentes y subsi
guientes. Esto puede incluir la pose de cada actor, la condicin de su vestuario, joyera, maquillaje
y peinado, el contenido de los vasos, si estn bebiendo (por ejemplo, vino blanco o tinto), el nivel
de los vasos (por ejemplo, llenos, medio vacos), etctera. Cuando se combinan diferentes segmen
tos en una sola escena, un editor, llamado editor de continuidad, necesita asegurarse que tales
detalles se hayan restaurado de manera adecuada. Cuando suceden cambios, como la adicin o
eliminacin de un accesorio, el cambio no debe interferir con otras escenas.
Los sistemas de software, al igual que las pelculas, son complejos, estn sujetos a cambios
continuos, se integran bajo presiones de tiempo y se desarrollan en forma no lineal. Durante el
diseo de objetos, los desarrolladores cierran el hueco entre los objetos de aplicacin identificados
durante el anlisis y la plataforma de hardware y software seleccionada durante el diseo del
sistema. Los desarrolladores identifican y construyen objetos de solucin personalizados cuyo
propsito es realizar cualquier funcionalidad que falte y cerrar el hueco entre los objetos de apli
cacin y la plataforma de hardware y software seleccionada. Durante el diseo de objetos, los
www.FreeLibros.org
Un panorama del d i s e o d e objetos 233
desarrolladores realizan objetos personalizados, en forma similar a la toma de escenas de pelculas.
Son implementados fuera de secuencia por desarrolladores diferentes y cambian varias veces antes
de que lleguen a su forma final. Con frecuencia, el que llama a una operacin slo tiene una espe
cificacin informal sobre la operacin y hace suposiciones acerca de los efectos laterales y sus
casos de frontera. Esto da lugar a faltas de concordancia entre el que llama y el llamado, compor
tamiento faltante o comportamiento incorrecto. Para resolver estos problemas, los desarrolladores
construyen especificaciones precisas de las clases, atributos y operaciones en forma de restric
ciones. De manera similar, los desarrolladores ajustan y reutilizan componentes hechos, comenta
dos con especificaciones de interfaz. Por ltimo, los desarrolladores reestructuran y optimizan el
modelo del diseo de objetos para tratar los objetivos de diseo, como la mantenibilidad, extensibi-
lidad, eficiencia, tiempo de respuesta o entrega a tiempo.
En la seccin 7.2, la siguiente seccin, proporcionamos un panorama del diseo de objetos.
En la seccin 7.3 definimos los conceptos principales del diseo de objetos, como las restric
ciones que se usan para la especificacin de interfaces. En la seccin 7.4 describimos con mayor
detalle las actividades del diseo de objetos. En la seccin 7.5 tratamos los problemas adminis
trativos relacionados con el diseo de objetos. No describimos actividades como la implemen
tacin de algoritmos y estructuras de datos o el uso de lenguajes de programacin especficos.
Primero, suponemos que el lector ya tiene experiencia en esas reas. Segundo, esas actividades
llegan a ser menos esenciales conforme se dispone cada vez de ms componentes hechos y se les
reutiliza.
7.2 Un panorama del diseo de objetos
Desde el punto de vista conceptual, vemos el desarrollo de sistemas como el relleno del hueco
entre el problema y la mquina. Las actividades de desarrollo del sistema cierran de manera incre-
mental ese hueco al identificar y definir objetos que realizan parte del sistema (figura 7-1).
El anlisis reduce el hueco entre el problema y la mquina, identificando objetos que
representan conceptos visibles para el usuario. Durante el anlisis describimos el sistema
desde el punto de vista del comportamiento externo, como su funcionalidad (modelo de caso
de uso), los conceptos del dominio de aplicacin que maneja (modelo de objetos), su compor
tamiento desde el punto de vista de las interacciones (modelo dinmico) y sus requerimientos no
funcionales.
El diseo del sistema reduce el hueco entre el problema y la mquina definiendo una
plataforma de hardware y software que proporciona un nivel de abstraccin ms alto que el
hardware de la computadora. Esto se realiza seleccionando componentes hechos para la realiza
cin de servicios estndar, como el middleware, juegos de herramientas de interfaz de usuario,
marcos de aplicacin y bibliotecas de clases.
Durante el diseo de objetos refinamos los modelos de anlisis y de diseo del sistema,
identificamos nuevos objetos y cerramos el hueco entre los objetos de aplicacin y los com
ponentes hechos. Esto incluye la identificacin de objetos personalizados, el ajuste de los
componentes hechos y la especificacin precisa de cada interfaz de subsistema y clase. Como
resultado, el modelo de diseo de objetos puede particionarse en conjuntos de clases que pueden
ser implementados por desarrolladores individuales.
www.FreeLibros.org
234 C apitulo 7 D i s e o d e objetos
/
Sistema
rCbjetos de ap l ic aci n
Objetos de solucin
i
Objetos personalizados
/
Componentes hechos
Problema
i
Hueco de reijuerimientos
i
Hueco de diseo de objetos
Hueco de diseo del sistema
i
Mquina
Figura 7-1 El diseo de objetos cierra el hueco entre los objetos de aplicacin identificados durante los
requerimientos y los componentes hechos seleccionados durante el diseo del sistema (diagrama de clase
UML estilizado).
El diseo de objetos incluye cuatro grupos de actividades (vea la figura 7-2):
Especificacin de servicios. Durante el diseo de objetos especificamos los servicios de
subsistemas (identificados durante el diseo del sistema) desde el punto de vista de interfaces
de clase, incluyendo operaciones, argumentos, firmas de tipo y excepciones. Durante esta
actividad tambin encontramos operaciones fahantes y objetos necesarios para transferir datos
entre subsistemas. El resultado de la especificacin de servicios es una especificacin de
interfaz completa para cada subsistema. A la especificacin de servicios de subsistema con
frecuencia se le llama API (siglas en ingls de interfaz de programacin de aplicaciones) de
subsistema.
Seleccin de componentes. Durante el diseo de objetos usamos y adaptamos los componentes
hechos identificados durante el diseo del sistema para realizar cada subsistema. Selecciona
mos bibliotecas de clase y componentes adicionales para las estructuras de datos y servicios
bsicos. A menudo necesitamos ajustar los componentes que seleccionamos antes de poder
usarlos envolviendo objetos personalizados alrededor de ellos o refinndolos usando herencia.
Durante esas actividades enfrentamos el mismo compromiso de compra frente a construccin
que encaramos durante el diseo del sistema.
www.FreeLibros.org
C o n ce pt o s del d i s e o d e objetos 235
Reestructuracin. Las actividades de reestructuracin manipulan el modelo del sistema para
incrementarla reutilizacin del cdigo o satisfacer otros objetivos de diseo. Cada actividad de
reestructuracin puede verse como una transformacin grfica de subconjuntos de un modelo
particular. Las actividades tpicas incluyen la transformacin de asociaciones n-arias
en asociaciones binarias, la implementacin de asociaciones binarias como referencias,
la combinacin de dos clases similares de dos subsistemas diferentes en una sola clase, la
descomposicin en atributos de clases que no tienen comportamiento significativo, la divisin
de clases complejas en otras ms simples, el reacomodo de clases y operaciones para incre
mentar la herencia y el empacado. Durante la reestructuracin tratamos objetivos de diseo,
como el mantenimiento, la legibilidad y la comprensibilidad del modelo del sistema.
Optimizacin. Las actividades de optimizacin tratan los requerimientos de desempeo
del modelo del sistema. Esto incluye el cambio de algoritmos para que respondan a los
requerimientos de velocidad o memoria, la reduccin de multiplicidades en asociaciones para
agilizar las consultas, la adicin de asociaciones redundantes para eficiencia, el reacomodo del
orden de ejecucin, la adicin de atributos derivados para mejorar el tiempo de acceso a objetos
y la apertura de la arquitectura; esto es, la adicin de acceso a capas inferiores debido a
requerimientos de desempeo.
El diseo de objetos no es lineal. Aunque cada una de las actividades que describimos antes
aborda un problema especfico de diseo de objetos, necesitan suceder en forma concurrente. Un
componente hecho especfico puede restringir la cantidad de tipos de excepciones mencionadas
en la especificacin de una operacin y, por tanto, puede tener impacto en la interfaz del sub
sistema. La seleccin de un componente puede reducir el trabajo de implementacin mientras
introduce nuevos objetos de unin, los cuales tambin tienen que especificarse. Por ltimo, la
reestructuracin y la optimizacin pueden reducir la cantidad de objetos a implementar, incre
mentando la cantidad de reutilizacin en el sistema.
La mayor cantidad de objetos y desarrolladores, la alta tasa de cambio y la cantidad de
decisiones concurrentes que se toman durante el diseo de objetos hacen que esta actividad sea
mucho ms compleja que el anlisis o el diseo del sistema. Esto representa un reto de adminis
tracin, ya que muchas decisiones importantes tienden a resolverse en forma independiente y no
se comunican al resto del proyecto. El diseo de objetos requiere que mucha informacin se
ponga a disposicin de los desarrolladores para que puedan tomarse las decisiones en forma
consistente con las decisiones tomadas por los dems desarrolladores y con los objetivos de
di-seo. El Documento de Diseo de Objetos, un documento vivo que describe la especificacin
de cada clase, apoya este intercambio de informacin.
7.3 C once ptos del diseo de objetos
En esta seccin presentamos los principales conceptos del diseo de objetos:
Objetos de aplicacin frente a objetos de solucin (seccin 7.3.1)
Tipos, firmas y visibilidad (seccin 7.3.2)
Precondiciones, poscondiciones e invariantes (seccin 7.3.3)
El lenguaje de restriccin de objetos de UML (seccin 7.3.4)
www.FreeLibros.org
236 C apitulo 7 D i s e o d e objetos
Figura 7-2 Actividades del diseo de objetos (diagrama de actividad UML).
www.FreeLibros.org
C o n ce pt o s del d i s e o d e objetos 237
7.3.1 Revisin de los objetos de aplicacin frente a los objetos de solucin
Como vimos en el captulo 2, Modelado con UML, pueden usarse los diagramas de clase
para modelar el dominio de aplicacin y el dominio de solucin. Los o bj e t os de a plicacin, tam
bin llamados objetos de dominio, representan conceptos del dominio que manipula el sistema.
Los objetos de s o l u c i n representan componentes de apoyo que no tienen una contraparte en el
dominio de aplicacin, como los almacenes de datos persistentes, los objetos de interfaz de usuario
o el middleware.
Durante el anlisis identificamos los objetos de aplicacin, sus relaciones y atributos, y sus
operaciones. Durante el diseo del sistema identificamos subsistemas y los objetos de solucin
ms importantes. Durante el diseo de objetos refinamos y detallamos ambos conjuntos de objetos,
e identificamos cualesquier objetos de solucin faltantes necesarios para completar el sistema.
7.3.2 Revisin de tipos, firmas y visibilidad
Durante el anlisis identificamos atributos y operaciones sin especificar su tipo o par
metros. Durante el diseo de objetos refinamos los modelos de anlisis y diseo del sistema
aadiendo informacin de tipo y visibilidad. El t i p o de un atributo especifica el rango de valores
que puede tomar el atributo y las operaciones que pueden aplicarse al atributo. Por ejemplo, con
sidere el atributo n u m E l e m e n t o s de la clase T a b l a H a s h (vea la figura 7-3). n u m E l e m e n t o s
representa el nmero actual de entradas en una T a b l a H a s h dada. Su tipo es i n t , indicando
que es un nmero entero. El tipo del atributo n u m E l e m e n t o s tambin indica las operaciones que
pueden aplicarse a este atributo: podemos sumar o restar otros enteros a nu m El e me n to s .
A los parmetros de operacin y los valores de retomo se les asigna tipo de la misma forma
que a los atributos. El tipo restringe el rango de valores que puede tomar el parmetro o el valor de
retomo. Para toda operacin, al tupio compuesto por los tipos de sus parmetros y el tipo de valor
de retomo se le llama firma de la operacin. Por ejemplo, la operacin p o n e r () de T a b l a H a s h
toma dos parmetros de tipo O b j e c t y no tiene valor de retomo. El tipo de firma para p o n e r () es
entonces ( O b j e c t , O b j e c t ) : v o i d . En forma similar, la operacin o b t e n e r () de T a b l a H a s h
toma un parmetro O b j e c t y regresa un O b j e c t . El tipo de firma de o b t e n e r () es entonces
( O b j e c t ) O b j e c t .
La v i s i b i l i d a d de un atributo o una operacin especifica si puede ser usada por otras clases
o no. UML define tres niveles de visibilidad:
P ri v a d o . Slo puede tener acceso a un atributo privado la clase en la que est definido. En
forma similar, una operacin privada slo puede ser llamada por la clase en la que est
definida. Las subclases u otras clases no pueden tener acceso a los atributos y operaciones
privados.
P ro t e g id o . La clase en la que estn definidos y cualquier descendiente de la clase pueden
tener acceso a un atributo u operacin protegidos.
P b l i c o . Cualquier clase puede tener acceso a un atributo u operacin pblico.
La visibilidad se indica en UML poniendo como prefijo el smbolo: - (privado), # (protegido) o
+ (pblico) al nombre del atributo u operacin. Por ejemplo, en la figura 7-3 especificamos que el
atributo nu m El e me n to s de T a b l a H a s h es privado, mientras que todas las operaciones son pblicas.
www.FreeLibros.org
238 C apitulo 7 D i s e o d e objetos
TablaHash
-numElamentos: i n t
+poner(clava: Cb j a c t , entrada:Objact)
+obtonar(clavo:0b j o c t ) : 0b j a c t
+eliminar(clavo :0bjoct)
+contionoClavo(clavo:0bjoct):booloan
+tamao() : i n t
c l a s s T a b l a H a s h {
p rivat e i n t numElementos ;
/ * S e o m i t e n l o s C o n s t r u c t o r e s * /
p u bli c void p o n e r ( O b j e c t c l a v e , O b j e c t e n t r a d a ) { - } ;
p u bli c O b j e c t o b t e n e r ( O b j e c t c l a v e ) {.};
p u bli c void e l i m i n a r ( O b j e c t c l a v e ) {_.};
p u bli c booloan c o n t i e n e C l a v e ( O b j e c t c l a v e ) { - } ;
p u bli c i n t t am a o ()
/ * Se o m i t e n o t r o s m t o d o s * /
}
Figura 7-3 Declaraciones para la clase Tabl aH as h (modelo de clase UML y fragmentos Java).
Con frecuencia, la informacin del tipo por s sola no es suficiente para especificar el rango
de valores legtimos. En el ejemplo T a b l a H a s h el tipo i n t permite que n u m E l e m e n to s tome
valores negativos, los cuales no son vlidos para este atributo. A continuacin tratamos esta
cuestin con contratos.
7.3.3 C ontratos: invariantes, precondiciones y poscondiciones
Los c o n t r a t o s son restricciones sobre una clase que permiten que el llamador y el llamado
compartan las mismas suposiciones acerca de la clase [Meyer, 1997]. Un contrato especifica
restricciones que debe satisfacer el llamador antes de usar la clase, as como las restricciones que
asegura cumplir el llamado cuando se le usa. Los contratos incluyen tres tipos de restricciones:
Un in v a r ia n t e es un predicado que siempre es cierto para todas las instancias de una clase.
Los invariantes son restricciones asociadas con clases o interfaces. Los invariantes se usan
para especificar restricciones de consistencia entre atributos de clase.
Una p r e c o n d i c i n es un predicado que debe ser cierto antes de que se llame a una
operacin. Las precondiciones estn asociadas con una operacin especfica. Las
precondiciones se usan para especificar restricciones que debe satisfacer el llamador antes
de llamar a una operacin.
Una p o s c o n d i c i n es un predicado que debe ser cierto despus de que se llama a una
operacin. Las poscondiciones estn asociadas con una operacin especfica. Las
poscondiciones se usan para especificar restricciones que el objeto debe asegurar despus
de la invocacin de la operacin.
www.FreeLibros.org
C o n ce pt o s del d i s e o d e objetos 239
Por ejemplo, considere la interfaz Java para una TablaHash que se muestra en la figura 7-3.
Esta clase proporciona un mtodo p o n e r () para crear una entrada en la tabla asociando una
clave con un valor, un mtodo o b t e n e r () para buscar un valor dando una clave, un mtodo
e l i m i n a r () para destruir una entrada de la TablaHash y un mtodo cl aveHash () que regresa
un valor booleano que indica si existe o no una entrada.
Un ejemplo de un invariante para la clase TablaHash es que la cantidad de entradas en Tabla-
Hash siempre es no negativa. Por ejemplo, si el mtodo e l i m i n a r () da como resultado un valor
negativo de numElementos, la implementacin de TablaHash es incorrecta. Un ejemplo de una pre-
condicin para el mtodo e l i m i n a r () es que una entrada debe estar asociada con la clave que se
pasa como parmetro. Un ejemplo de una poscondicin para el mtodo e l i m i n a r () es que la entrada
eliminada ya no debe existir en la TablaHash despus de que regrese el mtodo e l i m i n a r (). La
figura 7-4 muestra la clase TablaHash comentada con invariantes, precondiciones y poscondiciones.
/ * C l a s e Ta b l a H a s h . M a n t i e n e l a c o r r e s p o n d e n c i a e n t r e c l a v e s n i c a s y o b j e t o s
a r b i t r a r i o s * /
c l a s s H a s h t a b l e {
/ * La c a n t i d a d d e e l e m e n t o s de TablaHas h e s no n e g a t i v a t o d o e l t i e m p o .
* Q i n v numE l em en t o s >= 0 * /
p r i v a t e i n t numElementos ;
/ * S e o m i t e n l o s c o n s t r u c t o r e s * /
/ * La o p e r a c i n p o n e r asume q ue l a c l a v e e s p e c i f i c a d a no s e ha u s a d o .
* D e s p u s d e que t e r m i n a l a o p e r a c i n p o n e r s e p u e d e u s a r l a c l a v e
e s p e c i f i c a d a
* p a r a r e c u p e r a r l a e n t r a d a con l a o p e r a c i n o b t e n e r ( c l a v e ) :
* @pre c o n t i e n e C l a v e ( c l a v e )
* G p o s t c o n t i e n e C l a v e ( c l a v e )
* Qpos t o b t e n e r ( c l a v e ) == e n t r a d a * /
p u b l i c void p o n e r ( O b j e c t c l a v e , O b j e c t e n t r a d a ) {...};
/ * La o p e r a c i n o b t e n e r asume q u e l a c l a v e e s p e c i f i c a d a c o r r e s p o n d e
* a una e n t r a d a d e l a Ta b l a H a s h .
* @pre c o n t i e n e C l a v e ( c l a v e ) * /
p u b l i c O b j e c t o b t e n e r ( O b j e c t c l a v e ) { - ) ;
/ * La o p e r a c i n e l i m i n a r asume q u e l a c l a v e e s p e c i f i c a d a e x i s t e
* e n l a Ta b l a H a s h .
* @pre c o n t i e n e C l a v e ( c l a v e )
* @post c o n t i e n e C l a v e ( c l a v e ) * /
p u bl i c void e l i m i n a r ( O b j e c t c l a v e )
/ * S e o m i t e n o t r o s m t o d o s * /
}
Figura 7-4 Declaracin de mtodos para la clase T a b l a H a s h comentada con precondiciones,
poscondiciones e invariantes (Java, restricciones e n la sintaxis iContract [iContract]).
www.FreeLibros.org
240 Capitulo 7 Diseo d e objetos
Usamos invariantes, precondiciones y poscondiciones para especificar sin ambigedades
casos especiales o excepcionales. Por ejemplo, las restricciones en la figura 7-4 indican que el
mtodo e l i m i n a r () debe ser llamado slo para entradas que existen en la tabla. En forma similar,
el mtodo poner () debe ser llamado slo si no se est usando la clave. En la mayora de los casos,
tambin es posible usar restricciones para especificar por completo el comportamiento de una ope
racin. Sin embargo, tal uso de restricciones, llamado especificacin basada en restricciones, es
difcil y puede ser ms complicado que la implementacin de la operacin misma [Hom, 1992]. En
este captulo no describiremos especificaciones basadas en restricciones puras. En vez de ello nos
enfocaremos en la especificacin de operaciones usando restricciones y el lenguaje natural, enfa
tizando los casos de frontera.
7.3.4 Lenguaje de restriccin de objetos de UML
En UML las restricciones se expresan usando OCL [OMG, 1998]. OCL es un lenguaje
que permite que se especifiquen de manera formal las restricciones en elementos nicos del
modelo (por ejemplo, atributos, operaciones, clases) o en grupos de elementos del modelo (por
ejemplo, asociaciones y clases participantes). Una restriccin se expresa como una restriccin
OCL que regresa el valor cierto o falso. OCL no es un lenguaje procedural y, por tanto, no puede
usarse para indicar el flujo de control. En este captulo nos enfocamos exclusivamente en los
aspectos de OCL relacionados con invariantes, precondiciones y poscondiciones.
Una restriccin puede mostrarse como una nota asociada al elemento UML restringido
mediante una relacin de dependencia. Una restriccin puede expresarse en lenguaje natural o
en un lenguaje formal, como OCL. La figura 7-5 muestra un diagrama de clase del ejemplo
TablaHash de la figura 7-4 usando UML y OCL.
p r e c o n d i c i n
contieneClave(clave)
p r e c o n d i c i n
confieneClave(clave)
TablaHash
i n v a r i a n t e
self.numElementos>=0
numEl t o s : i n t
poner(clave, entrada:Object)'
obtener(cl ave):Object
eliminar(clave :0b j e c t h ^
aontieneClave(clave : 0 b j e c t y
:boolean
tamao( ) : i n t
h
p o s c o n d i c i n ^
obtener(clave)=entrada |
p o s c o n d i c i n
!contieneClave(clave)
F i g u r a 7-5 Ejemplos de invariantes, precondiciones y poscondiciones en OCL (diagrama de clase UML).
La sintaxis del OCL es similar a la de los lenguajes orientados a objetos como C++ o Java.
En el caso de un invariante, el contexto para la expresin es la clase asociada con el invariante.
La palabra clave s e l f (por ejemplo, s e l f .numElementos en la figura 7-5) indica cualquier
instancia de la clase. Se tiene acceso a los atributos y operaciones usando la notacin de punto
(por ejemplo, s e l f . a t r i b u t o o s e l f . o p e r a c i n ( par me tr os )) . La palabra clave s e l f puede
omitirse si no se presenta ambigedad. (Observe que OCL usa la palabra clave s e l f para repre
sentar el mismo concepto que la palabra clave t h i s en Java y C++.) Para una precondicin o una
poscondicin, los parmetros que se pasan a la operacin asociada pueden usarse en la expresin
www.FreeLibros.org
Actividades del d i s e o d e objetos 241
OCL. Para las poscondiciones el sufijo @pre indica el valor de un parmetro o un atributo antes
de la ejecucin de la operacin. Por ejemplo, una poscondicin de la operacin poner ( c l a v e ,
e n t r a d a ) , que expresa que la cantidad de entradas en la tabla se incrementa en uno, puede
representarse como numElementos = numElementosGpre + 1.
Al aadir expresiones OCL a los diagramas puede presentarse un amontonamiento. Por
esta razn existe la alternativa de manifestar en forma textual las expresiones OCL. La palabra
clave context introduce un nuevo contexto para una expresin OCL. La palabra que est a con
tinuacin de la palabra clave context se refiere a una clase, un atributo o una operacin. Luego
sigue alguna de las palabras clave inv, p r e y p o s t , que corresponden a los estereotipos UML
i n v a r i a n t e , p r e c o n d i c i n y p o s c o n d i c i n , respectivamente. Luego sigue la
expresin OCL en s. Por ejemplo, el invariante para la clase TablaHash y las restricciones para
la operacin Tabl aHash.poner () se escriben de la siguiente manera:
context Hashtable inv:
numElementos >= 0
context TablaHash:: p o n e r ( c l a v e , en t ra d a) pre:
conti eneClave( clave)
context TablaHash:: p o n e r ( c l a v e , en t ra d a) post:
contieneClave(cl ave) and o b t e n e r ( c l a v e ) = e n t r a d a
7.4 Acti vidades del diseo de objetos
Como ya se mencion en la introduccin, el diseo de objetos incluye cuatro grupos de activi
dades: especificacin, seleccin de componentes, reestructuracin y optimizacin.
Las actividades de especificacin incluyen:
Identificacin de atributos y operaciones faltantes (Seccin 7.4.1)
Especificacin de tipos de firma y visibilidad (seccin 7.4.2)
Especificacin de restricciones (seccin 7.4.3)
Especificacin de excepciones (seccin 7.4.4)
Las actividades de seleccin de componentes incluyen:
Identificacin y ajuste de bibliotecas de clase (seccin 7.4.5)
Identificacin y ajuste de marcos de aplicacin (seccin 7.4.6)
Un ejemplo de marco: WebObjects (seccin 7.4.7)
Las actividades de reestructuracin incluyen:
Realizacin de asociaciones (seccin 7.4.8)
Incremento de la reutilizacin (seccin 7.4.9)
Eliminacin de dependencias de implementacin (seccin 7.4.10)
www.FreeLibros.org
242 C apitulo 7 D i s e o d e objetos
Revisin de las rutas de acceso (seccin 7.4.11)
Descomposicin de objetos: conversin de objetos en atributos (seccin 7.4.12)
Cacheo del resultado de clculos costosos (seccin 7.4.13)
Retraso de clculos costosos (seccin 7.4.14)
Para ilustrar con mayor detalle estos cuatro grupos de actividades usamos como ejemplo un
sistema de modelado de emisiones llamado JEWEL (taller ambiental conjunto y laboratorio de
emisiones [Bruegge et al., 1995], [Kompanek et al., 1996]). JEWEL permite que los usuarios
finales simulen y visualicen la contaminacin del aire como funcin de fuentes puntuales (por
ejemplo, fbricas, plantas elctricas), fuentes de rea (por ejemplo, ciudades) y fuentes mviles
(por ejemplo, automviles, camiones, trenes). El rea bajo estudio est dividida en celdas de
cuadrcula. Luego se estiman las condiciones para cada celda de cuadrcula y para cada hora del
da. Una vez que termina la simulacin, el usuario final puede visualizar la concentracin de
varios contaminantes en un mapa, junto con las fuentes de emisin (vea la figura 7-6). JEWEL
est destinado a agencias gubernamentales que regulan la calidad del aire y tratan de que las
reas pobladas que tienen problemas se apeguen a los reglamentos.
Tomando en cuenta su enfoque sobre la visualizacin de datos geogrficos, JEWEL incluye
un subsistema de informacin geogrfica (GIS, por sus siglas en ingls) que es responsable del
almacenamiento y la manipulacin de mapas. El GIS de JEWEL administra la informacin geogr
fica como conjuntos de polgonos y segmentos. Diferentes tipos de informacin, como caminos,
ros y fronteras polticas, estn organizados en capas diferentes que pueden mostrarse en forma
independiente. Adems, los datos estn organizados de tal forma que pueden verse en diferentes
niveles de abstraccin. Por ejemplo, una vista de alto nivel de un mapa slo contiene los caminos
principales, mientras que una vista detallada tambin incluye los secundarios. El g i s es un
ejemplo ideal para el diseo de objetos, tomando en cuenta su rico dominio de aplicacin y su
complejo dominio de solucin. Primero comenzamos con la especificacin del GIS.
L a s a c t i v i d a d e s d e o p t i m i z a c i n i n c l u y e n :
Figura 7-6 M a p a c o n f r o n t e r a s p o l t i c a s y f u e n t e s d e e m i s i n ( m a q u e t a d e JEWEL).
www.FreeLibros.org
Actividades del d i s e o d e objetos 243
Actividades de especificacin
En la figura 7-7 el modelo de objetos para el GIS de JEWEL describe una organizacin en tres
capas (es decir, la capa de caminos, la capa de agua y la capa poltica). Cada capa est compuesta
de elementos. Algunos de estos elementos, como las autopistas, caminos secundarios y ros, se des
pliegan con lneas compuestas por varios segmentos. Otros, como los lagos, estados y condados, se
despliegan como polgonos, que tambin son representados como una coleccin de segmentos de
lneas.
Figura 7-7 Modelo de objetos para el GIS de JEWEL (diagrama de clase UML).
El caso de uso AcercamientoMapa (figura 7-8) describe la manera en que los usuarios
pueden acercarse o alejarse alrededor de un punto seleccionado del mapa. El modelo de anlisis
todava es abstracto. Por ejemplo, en este momento no contiene ninguna informacin sobre la
manera en que se incrementa el acercamiento o cmo se seleccionan los puntos.
El modelo de diseo del sistema se enfoca en la descomposicin en subsistemas y las deci
siones de sistema globales, como la correspondencia entre hardware y software, el almacenamiento
persistente o el control de acceso. Identificamos los subsistemas de nivel superior y los definimos
desde el punto de vista de los servicios que proporciona. En JEWEL, por ejemplo (figuras 7-9 y 7-10),
identificamos al GIS proporcionando servicios para la creacin, almacenamiento y borrado de ele
mentos geogrficos, su organizacin en capas y la recuperacin de su contorno como una serie de
puntos. Estos servicios los usa el subsistema v i s u a l i z a c i n , el cual recupera informacin geogr
fica para el trazado de mapas. Los datos geogrficos se proporcionan como un conjunto de archivos
planos y son tratados por JEWEL como datos estticos. En consecuencia, no necesitamos soportar la
edicin interactiva de datos geogrficos. A partir de los casos de uso de JEWEL tambin sabemos que
tos usuarios necesitan ver los datos geogrficos con diferentes criterios de acercamiento. Durante el
diseo del sistema decidimos que el GIS proporcione los servicios de acercamiento y recorte. El
www.FreeLibros.org
244 C apitulo 7 D i s e o d e objetos
Nombre del caso AcercamientoMapa
de uso
Condicin inicial El mapa se despliega en una ventana y es visible al menos una capa.
Flujo de eventos 1. El usuario final selecciona la herramienta Acercamiento desde la barra de
herramientas. El sistema cambia el cursor a una lupa.
2. El usuario final selecciona un punto del mapa usando el ratn y haciendo clic con
el botn izquierdo o derecho del ratn. El punto seleccionado por el usuario se
convertir en el nuevo centro del mapa.
3. El usuario final hace clic con el botn izquierdo del ratn para solicitar un
incremento en el nivel de detalle (es decir, acercamiento) o con el botn derecho
del ratn para solicitar un decremento del nivel de detalle (es decir, alejamiento).
4. El sistema calcula el nuevo cuadro limitante y recupera del GIS los puntos y
h'neas correspondientes para cada capa visible.
5. Luego el sistema despliega cada capa usando un color predefinido en el nuevo
cuadro limitante.
Condicin final El mapa se desplaza y escala a la posicin y nivel de detalle solicitados.
Figura 7-8 Caso de uso AcercamientoMapa de JEWEL.
subsistema v i s u a l i z a c i n especifica el nivel de detalle y el cuadro limitante del mapa, y el GIS
realiza el acercamiento y recorte y regresa slo los puntos que necesitan trazarse. Esto minimiza la
cantidad de datos que hay que transferir entre subsistemas. Aunque el modelo de diseo del sistema
est cercano a la mquina, todava tenemos que describir con detalle la interfaz del GIS.
Las actividades de especificacin durante el diseo de objetos incluyen:
Identificacin de atributos y operaciones faltantes (seccin 7.4.1)
Especificacin del tipo de firmas y visibilidad (seccin 7.4.2)
Especificacin de restricciones (seccin 7.4.3)
Especificacin de excepciones (seccin 7.4.4)
GIS de JEWEL
Propsito
Almacenar y mantener la informacin geogrfica para JEWEL
Servicio
Creacin y borrado de elementos geogrficos (caminos, ros, lagos y fronteras)
Organizacin de los elementos en capas
Acercamiento (seleccin de puntos en un nivel de detalle dado)
Recorte (seleccin de puntos dentro de un cuadro limitante dado)
Figura 7 - 9 D e s c r i p c i n d e s u b s i s t e m a s p a r a e l G I S d e J E W E L .
www.FreeLibros.org
Actividades del d i s e o d e objetos 245
Almacenamiento
El subsistema ModeladoEmisin es responsable del ajuste de simulaciones y
la administracin de sus resultados.
El GIS mantiene informacin geogrfica para visualizacin y para el
ModeladoEmisin.
El subsistema simulacin es responsable de la simulacin de emisiones.
El subsistema Almacenamiento es responsable de todos los datos persistentes
en el sistema, incluyendo los datos geogrficos y de emisin.
El subsistema visualizacin es responsable del desplegado de datos
geogrficos y de emisiones ante el usuario.
ModeladoEmisin
GIS
Simulacin
Almacenamiento
V isuali za ci n
Figura 7-10 Descomposicin de subsistemas de JEWEL (diagrama de clase UML).
7.4.1 Identificacin de atributos y operaciones faltantes
Durante este paso examinamos la descripcin de servicios del subsistema e identificamos
atributos y operaciones faltantes. Durante el anlisis podemos haber olvidado muchos atributos
debido a que nos enfocamos en la funcionalidad del sistema. Adems describimos la funcionali
dad del sistema principalmente con el modelo de caso de uso (y no con el modelo de objetos).
Cuando construimos el modelo de objetos nos enfocamos en el modelo de aplicacin y, por
tanto, ignoramos detalles relacionados con el sistema que son independientes del dominio de
aplicacin.
En el ejemplo JEWEL, la creacin, borrado y organizacin de capas y de elementos de
capas ya est soportado por la clase Capa. Sin embargo, necesitamos identificar las operaciones
www.FreeLibros.org
246 C apitulo 7 D i s e o d e objetos
para realizar los servicios de recorte y acercamiento. El recorte no es un concepto que est rela
cionado con el dominio de aplicacin sino que est relacionado con la interfaz de usuario del
sistema y, por tanto, es parte del dominio de solucin.
Trazamos un diagrama de secuencia que representa el flujo de control y datos necesario para
realizar la operacin de acercamiento (figura 7-11). Nos enfocamos en especial en la clase Capa.
Cuando trazamos el diagrama de secuencia nos damos cuenta que una Capa necesita tener acceso a
todos los elementos contenidos para recopilar su geometra para el recorte y acercamiento. Obser
vamos que el recorte puede realizarse en forma independiente del tipo de elemento que se est
desplegando; esto es, el recorte de segmentos de lnea que estn asociados con un camino o un ro
puede hacerse usando la misma operacin. En consecuencia, identificamos una nueva clase, la
clase abstracta E l e m e n t o C a p a (vea la figura 7-12), la cual proporciona operaciones para todos los
elementos que son parte de una Capa (es decir, A u t o p i s t a , C a m i n o S e c u n d a r i o , R i o , Lago,
E s t a d o y M u n i c i p i o ) .
A
.:U.9Ufrri.oFi nal :Visualizaci6n
Clase recin ^
identificada
: Capa : E le m e n t o C a p a
acercar(x,y)
y?
i
CalcularCuadroLimit^nte (x,y)
*ObteerContorno(r, d)
ObtenerContornear (r,|d)
puntos
puntos
Figura 7-11 Un diagrama de secuencia para la operacin a c e r c a r () (diagrama de secuencia UML). Este
diagrama de secuencia conduce a la identificacin de una nueva clase, E le mentoCapa . Debido a que nos
estamos enfocando en el GIS, tratamos al subsistema v i s u a l i z a c i n como un solo objeto.
Identificamos la operacin o b t e n e r C o n t o r n o O de la clase E le m e n t o C a p a , la cual es
responsable del escalamiento y recorte de lneas y polgonos de elementos individuales de acuerdo
con un cuadro limitante y un nivel de detalle dados. La operacin o b t e n e r C o n t o r n o O usa el
nivel de detalle para escalar cada lnea y polgono y para reducir la cantidad de puntos para nive
les de detalle ms bajos. Por ejemplo, cuando el usuario reduce el mapa por un factor de 2, el GIS
regresa slo la mitad de la cantidad de puntos para un elemento de capa dado, debido a que se
necesita menos detalle. Luego identificamos la operacin ob t e e rCo n t o r n o () de la clase Capa,
la cual es responsable del llamado de la operacin o b t e n e r C o n t o r n o 0 de cada E l e m e n t o C a p a
y de recopilar todas las lneas y polgonos de la capa en una sola estructura de datos. Ambas
operaciones o b t e n e r C o n t o r n o O regresan colecciones de lneas y polgonos. El subsistema
www.FreeLibros.org
Actividades del d i s e o d e objetos 247
Figura 7-12 Adicin de operaciones al modelo de objetos de GIS de JEWEL para realizar acercamiento y
recorte (diagrama de clase UML).
v i s u a l i z a c i n traduce luego las coordenadas de GIS a coordenadas de pantalla, ajustando la
escala y el desplazamiento, y traza los segmentos de lnea en la pantalla.
Durante una revisin del modelo de objetos nos damos cuenta que el algoritmo de acer
camiento de la operacin E l e m e n t o C a p a . o b t e n e r C o n t o r n o O no es trivial: no es suficiente
seleccionar un subconjunto de puntos del E l e m e n t o C a p a y escalar sus coordenadas. Debido a
que diferentes E l e m e n t o C a p a pueden compartir puntos (por ejemplo, dos caminos que se
conectan, dos municipios vecinos) es necesario seleccionar el mismo conjunto de puntos para
mantener una imagen visual consistente para el usuario final.
Por ejemplo, la figura 7-13 muestra ejemplos de un algoritmo sencillo para la seleccin de
puntos aplicado a caminos que se conectan y municipios vecinos. La columna izquierda muestra
los puntos que se seleccionan para un nivel de detalle alto. La columna derecha muestra los pun
tos que se seleccionan para un nivel de detalle bajo. En este caso, el algoritmo selecciona en
forma arbitraria puntos alternados sin tomar en cuenta si los puntos se comparten o no. Esto da
lugar a elementos que no estn conectados cuando se despliegan en niveles de detalle bajos.
Para resolver este problema decidimos incluir ms inteligencia en las clases P o l i L i n e a ,
P o l g o n o y P u n t o (figura 7-14). Primero, decidimos representar los puntos compartidos exacta
mente por un objeto P u n t o ; esto es, si dos lneas comparten un punto, ambos objetos L i n e a
tienen una referencia al mismo objeto P u n t o . Esto es manejado por el constructor P u n t o ( x , y ) ,
www.FreeLibros.org
248 C apitulo 7 D i s e o d e objetos
Detalle alto Detalle bajo
Figura 7-13 Un algoritmo de seleccin de puntos sencillo para e l GIS. La columna izquierda representa
un cruce de caminos y dos municipios vecinos. La columna derecha muestra que el cruce de caminos y
los municipios vecinos pueden mostrarse en forma incorrecta cuando no se tiene cuidado en la seleccin
de puntos.
el cual revisa para ver si las coordenadas especificadas corresponden a un punto existente.
Segundo, aadimos atributos a los objetos P u n t o para guardar los niveles de detalle en los que
participa. El atributo e n N i v e l e s D e t a l l e es un conjunto de todos los niveles de detalle en los
cuales participa este P u n t o . El atributo n o E n N i v e l e s D e t a l l e es un conjunto de todos los nive
les de detalle en los que este punto ha sido excluido. Si un nivel de detalle no est en ninguno de
estos conjuntos, significa que este P u n t o todava no ha sido considerado para el nivel de detalle
dado. Los atributos e n N i v e l e s D e t a l l e y n o E n N i v e l e s D e t a l l e ( y sus operaciones asociadas)
son usados luego por la operacin E l eme n t o Cap a . o b t e n e r C o n t o r n o O para seleccionar los
puntos compartidos y mantener la conectividad.
Hasta este momento hemos identificado los atributos y operaciones faltantes necesarios
para soportar el acercamiento y recorte de E l e m e n t o C a p a . Volveremos a revisar algunos de estos
problemas ms adelante cuando seleccionemos componentes existentes o realicemos el diseo
de objetos de los subsistemas dependientes. A continuacin, procedemos a especificar la interfaz de
cada una de las clases usando tipos, firmas, contratos y visibilidad.
7.4.2 Especificacin de tipo, firmas y visibilidad
Durante este paso especificamos los tipos de los atributos, las firmas de las operaciones y
la visibilidad de atributos y operaciones. La especificacin de los tipos refina el modelo de di
seo de objetos de dos maneras. Primero, aadimos detalle al modelo especificando el rango de
cada atributo. Por ejemplo, mediante la determinacin del tipo de coordenadas tomamos deci
siones acerca de la posicin del punto de origen ( P u n t o 0, 0) y los valores mximo y mnimo
para todas las coordenadas. Mediante la seleccin de un factor de punto flotante y doble pre-
www.FreeLibros.org
Actividades del d i s e o d e objetos 249
Figura 7-14 Atributos y mtodos adicionales para la clase P u n t o a f n de soportar la seleccin inteligente
de puntos y el acercamiento (diagrama de clase UML).
cisin para los niveles detallados, calculamos coordenadas en diferentes niveles de detalle tan
slo multiplicando el nivel de detalle por las coordenadas. Segundo, establecemos la correspon
dencia entre clases y atributos del modelo de objetos para los tipos integrados proporcionados
por el ambiente de desarrollo. Por ejemplo, mediante la seleccin de S t r i n g para representar el
atributo e t i q u e t a de Ca pa y E l e m e n t o C a p a podemos usar todas las operaciones proporciona
das por la clase S t r i n g para manipular valores de e t i q u e t a .
Durante este paso tambin consideramos la relacin entre las clases que identificamos y las
clases de los componentes hechos. Por ejemplo, varias clases que implementan colecciones se
proporcionan en el paquete j a v a . t i l . La interfaz E n u m e r a t i o n proporciona una forma para
tener acceso a una coleccin ordenada de objetos. La interfaz S e t proporciona una abstraccin de
conjuntos matemticos implementada por varias clases, como H a s h S e t . Seleccionamos la interfaz
E n u m e r a t i o n para el regreso de contornos y la interfaz S e t del paquete j a v a . t i l para la
representacin de los atributos e n N i v e l e s D e t a l l e y n o E n N i v e l e s D e t a l l e .
Por ltimo, durante este paso determinamos la visibilidad de cada atributo y operacin.
Al hacerlo determinamos cules atributos son manejados por completo por una clase, cules
deben ser accesibles slo mediante las operaciones de la clase y cules atributos son pblicos
y pueden ser modificados por cualquier otra clase. En forma similar, la visibilidad de las ope
raciones nos permite distinguir entre las operaciones que son parte de la interfaz de la clase y
aquellas que son mtodos de utilera a los que slo puede tener acceso la clase. En el caso de
clases abstractas y clases que se pretende que se refinen, tambin definimos atributos y mtodos
protegidos para uso nico de las subclases. La figura 7-15 muestra la especificacin refinada
de las clases Capa, E l e m e n t o C a p a , P o l i L i n e a y P u n t o despus de que se han asignado los
tipos, firmas y visibilidad.
Una vez que hemos especificado el tipo de cada atributo, la firma de cada operacin y su
visibilidad, nos enfocamos en la especificacin del comportamiento y los casos de frontera de
cada clase usando contratos.
www.FreeLibros.org
250 C apitulo 7 D i s e o d e objetos
Capa
- fetigueta: String
4Capa(etiqueta: String)
fobtenerContorno (cuadroLim
:Rectangle2D,
detalle:double):Enumeration
0
1
elementos
ElementoCapa
fetiqueta: String
fElementoCapa(polilinea
:PoliLinea)
fobtenerContorno (cuadroLim
:Rectangle2D,
detalle:double):Enumeration
1 p o l i l i n e a
PoliLinea
-fetiqueta: String
Punto
4-PoliLinea ()
-fobtenerPuntos () : Enumeration
- x , y :double
- e n N i vel es D et al l e:Set
-noEnNivelesDetalle: Set
r
+Punto(x, y:double)
fincluirEnNivel (nivel:double)
-fexcluirDeNivel (nivel:double)
puntos
*
Figura 7-15 Adicin de informacin de tipo al modelo de objetos de GIS (diagrama de clase UML). Slo
se muestran unas clases seleccionadas por brevedad.
7.4.3 Especificacin de restricciones
Durante este paso aadimos restricciones a las clases y operaciones para especificar con
mayor precisin su comportamiento y casos de frontera. Nuestro objetivo principal es eliminar
la mayor cantidad de ambigedad posible del modelo. Especificamos contratos de clase usando
tres tipos de restricciones. Los invariantes representan condiciones de los atributos de una clase
que siempre son ciertas. Las precondiciones representan condiciones que deben ser satisfechas
(por lo general, por quien llama) antes de llamar a una operacin dada. Las poscondiciones repre
sentan condiciones que estn garantizadas por quien fue llamado despus de que termina la
operacin. Como se describi en las secciones 7.3.3 y 7.3.4, podemos usar OCL [OMG, 1998]
para aadir restricciones a los modelos UML.
En el ejemplo JEWEL, el comportamiento ms complejo est asociado con el recorte y acer
camiento; en particular las operaciones o b t e n e r C o n t o r n o () de las clases Capa y E le m e n t o C a p a .
A continuacin desarrollamos restricciones para aclarar las operaciones o b t e n e r C o n t o r n o 0 ,
enfocndonos en el comportamiento asociado con los puntos compartidos. De manera ms con
creta, estamos interesados en especificar las siguientes restricciones.
1. Todos los puntos regresados por C a p a . o b t e n e r C o n t o r n o 0 estn dentro del cuadro
limitante especificado.
2. El resultado de C a p a . o b t e n e r C o n t o r n o 0 es la concatenacin de la invocacin de
E l e m e n t o C a p a . o b t e n e r C o n t o r n o () sobre sus elementos.
www.FreeLibros.org
Actividades del d i s e o d e objetos 251
3. A lo mucho, un Punto en el sistema representa una coordenada (x,y) dada.
4. Un nivel de d e t a l l e no puede ser parte de los conjuntos e n N i v e l e s D e t a l l e y
noEnNiveles D e t a l l e al mismo tiempo.
5. Para un nivel de d e t a l l e dado, El ementoCap a . o b te ne r Contorno 0 slo puede regresar
Punto que contengan el nivel d e t a l l e en su atributo de conjunto enNiveles Detai le.
6. Los conjuntos e n N i v e l e s D e t a l l e y n o E n N i v el es D et al l e slo pueden crecer a conse
cuencia de ElementoCapa. o bte ner Contor no (). En otras palabras, una vez que un nivel
de detalle est en alguno de esos conjuntos no puede ser eliminado.
Primero nos enfocamos en el recorte. Tomando un ElementoCapa dado, la enumeracin de los
puntos regresados por la operacin o b t e n e r C o n t o r n o (cuadroLim, d e t a l l e ) debe estar
dentro del rectngulo cuadroLim especificado. Adems, cualquier punto regresado por o b t e
n er Cont orno () debe estar asociado con ElementoCapa. Representamos esto usando una
poscondicin sobre la operacin obtenerContorno 0 de ElementoCapa. Observe que, debido a
que actualmente nos enfocamos en el recorte, ignoramos el parmetro d e t a l l e .
/ * R e s t r i c c i n 1 * /
context El ement oCapa::obt ene r Co nt or no ( c ua dr oLi m, d e t a l l e ) post:
r e s u l t a d o - > f o r A l l ( p :P u n t o | c u a d r o L i m . c o n t i e n e (p) and p u n t o s - > i n c l u y e ( p ) )
El campo r e s u l t a d o representa el resultado de la operacin obtenerContorno (). La construc
cin f o r A l l de OCL aplica la restriccin a todos los puntos de r e s u l t a d o . Por ltimo, la restriccin
expresa que todos los puntos de resultado deben estar contenidos en un rectngulo cuadroLim
pasado como parmetro y deben estar incluidos en la asociacin de agregacin p u n t o s de la
figura 7-15.
Luego definimos la operacin obtenerContorno () sobre una Capa como la concatenacin
de las enumeraciones regresadas por la operacin obtenerContorno () de ElementoCapa. En
OCL usamos la construccin i t r a t e sobre colecciones para avanzar por cada ElementoCapa y
recopilar su contomo en una sola enumeracin. La construccin i n c l u d i n g aade sus parmetros
a la coleccin. OCL aplana de manera automtica la coleccin resultante.
/ * R e s t r i c c i n 2 * /
context Capa: :obt e n e r Con t o r no( c u a dr o Li m, d e t a l l e ) post:
e l e m e n t o s - > i t e r a t e ( e c :El ement oCapa; r e s u l t a d o :Enume r a t i on|
r e s u l t a d o - > i n c l u d i n g ( e c . o b t e n e r C a p a ( c u a d r o L i m , d e t a l l e ) )
Luego nos enfocamos en las restricciones relacionadas con el acercamiento. Recuerde que aa
dimos atributos y operaciones a la clase Punto para representar puntos compartidos. Primero
especificamos la unicidad de Punto con un invariante aplicado a todas las instancias de Punto:
/ * R e s t r i c c i n 3 * /
context Punt o inv:
Pun t o. a l l l n s t a n c e s - > f o r A l l ( p l , p2 : Pu nt o |
( p l . x = p 2 . x and p l . y = p 2 . y ) i m p l i c a p l = p 2 )
www.FreeLibros.org
252 C apitulo 7 D i s e o d e objetos
Dejamos la derivacin de las tres ltimas restricciones como ejercicio al lector (vea el ejer
cicio 2).
Con estas seis restricciones describimos con ms precisin el comportamiento de las opera
ciones o b t e n e r C o n t o r n o () y su relacin con los atributos y operaciones de la clase P u n t o .
Observe que no hemos descrito en ninguna forma el algoritmo por el cual E l e m e n t o C a p a selec
ciona P u n t o en un nivel de detalle dado. Dejamos esta decisin a la actividad de implementacin
del diseo de objetos.
A continuacin describimos las excepciones que puede presentar cada operacin.
7.4.4 Especificacin de excepciones
Durante este paso especificamos restricciones que necesita satisfacer quien llama antes de
llamar una operacin. En otras palabras, especificamos condiciones que las operaciones detectan y
tratan como errores elevando una excepcin. Los lenguajes como Java y Ada tienen mecanismos
integrados para el manejo de excepciones. Otros lenguajes como el C y las primeras versiones de
C++ no soportan el manejo explcito de excepciones, y por eso los desarrolladores necesitan
establecer convenciones y mecanismos para el manejo de excepciones (por ejemplo, valores de
retomo o un subsistema especializado). Las condiciones excepcionales se asocian, por lo general,
con la violacin de precondiciones. En UML aadimos precondiciones OCL a las operaciones y
asociamos la precondicin con una dependencia hacia un objeto de excepcin.
En el ejemplo JEWEL (figura 7-16) especificamos que el parmetro c u a d r o L i m de la ope
racin C a p a . o b t e e r C o n t o r n o () debe tener anchura y altura positivas, y que el parmetro
detalle debe ser positivo. Asociamos las excepciones C u a d r o L i m i t a n t e C e r o y D e t a l l e C e r o
con cada condicin.
Capa
fatigue t a ; S t r i n q ____________________
-fCapa ( e t i q u e t a : S t r i n g )
+obteerContorno(cuadroLim
:Rectangle2D, c '
d e t a l l e : d o u b l e ) : E n u m e r a t i o n '
e x c e p c i n
CuadroLimitanteCero
^ "
precondicin ^
cuadroLim.anchura > 0 y
cuadroLim. altura > 0
precondicin ^
cfetalle > 0
"
e x c e p c i n
DetalleCero
Figura 7-16 Ejemplos de precondiciones y excepciones para la clase C a p a del G I S de JEWEL.
Las excepciones pueden encontrarse de manera sistemtica examinando cada parmetro de la
operacin y examinando los estados en los que puede ser invocada la operacin. Para cada parmetro
y conjunto de parmetros identificamos valores o combinaciones de valores que no deben aceptarse.
Por ejemplo, para el nivel de detalle rechazamos valores que no sean positivos debido a que el
parmetro de detalle representa un factor de multiplicacin. Un valor cero para el parmetro de
www.FreeLibros.org
Actividades del d i s e o d e objetos 253
detalle dara como resultado el colapso de todas las coordenadas en el origen. Un nivel de detalle
negativo dara como resultado una imagen invertida. Observe que el descubrimiento sistemtico de
todas las excepciones para todas las operaciones es un ejercicio que consume tiempo pero que es til.
Para los sistemas en tos cuales la confiabilidad no es un objetivo de diseo principal, la especificacin
de excepciones puede limitarse a la interaz pblica de los subsistemas.
Actividades para la seleccin de componentes
En este punto del diseo de objetos seleccionamos la plataforma de software y hardware
en la que se ejecutar el sistema. Esta plataforma incluye componentes hechos como los siste
mas de administracin de base de datos, marcos middleware, marcos de infraestructura o marcos
de aplicacin empresarial. El objetivo principal en la seleccin de componentes hechos es la
reutilizacin de la mayor cantidad de objetos posible, minimizando as la cantidad de objetos
personalizados que es necesario desarrollar. Es ms, un componente hecho proporciona, con fre
cuencia, una solucin ms confiable y eficiente que la que podra esperar producir cualquier
desarrollador en el contexto de un solo sistema. Una biblioteca de clases de interfaz, por ejem
plo, pone mucha atencin a un algoritmo de desplegado eficiente o a buenos tiempos de
respuesta. Adems, un componente hecho ha sido usado por mucho ms sistemas y usuarios y,
por tanto, es ms robusto. Sin embargo, los componentes hechos tienen un costo. Su propsito es
soportar una amplia variedad de sistemas y, en consecuencia, normalmente son complejos. El
uso de un componente hecho requiere una inversin en su aprendizaje y, a menudo, requiere
algn grado de personalizacin. El uso de componentes hechos es, por lo general, una mejor
alternativa que la construccin del sistema completo a partir de cero.
7.4.5 Identificacin y ajuste de bibliotecas de clase
Supongamos que seleccionamos las clases fundamentales Java (JFC, por sus siglas en
ingls) [JFC, 1999] como componente hecho para la realizacin del subsistema v i s u a l i z a c i n .
Necesitamos desplegar el mapa como una serie de polilneas y polgonos regresados por la ope
racin Capa. o b t e n e r Contorno (). Esto, por lo general, no es directo, ya que tenemos que re
conciliar la funcionalidad proporcionada por el GIS y las JFC para realizar los servicios de
v i s u a l i z a c i n . Por ejemplo, esto puede introducir la necesidad de objetos personalizados cuya
nica funcin es convertir datos de un subsistema hacia otro.
Para el desplegado de grficos, las JFC proporcionan varios componentes reutilizables para
la composicin de una interaz de usuario. Las JFC acomodan los componentes en una jerarqua
contenedora que restringe el orden en el que stos se dibujan. Las JFC trazan al ltimo el compo
nente que est ms cercano a la parte inferior de la jerarqua (por lo general, componentes atmi
cos) para que aparezcan por encima de todos los dems componentes. Un JFrame, tambin cono
cido como ventana principal, define un rea que es propiedad exclusiva de la aplicacin. Un JFrame
a menudo se compone de varios j P a n e l , donde cada uno es responsable de la capa de varios com
ponentes atmicos. Un J S c r o l l P a n e proporciona una vista desplazable de un componente.
Permite que un usuario vea un subconjunto de un componente que es demasiado grande para
desplegarlo por completo.
Para el subsistema v i s u a l i z a c i n de JEWEL (vea la figura 7-17) seleccionamos un JFrame
como contenedor de nivel superior, un J Toolbar y dos JButton para agrandamiento y achicamiento
y un J S c r o l l P a n e para el desplazamiento del mapa. Realizamos el mapa propiamente con la clase
reaMapa, la cual refina a J P a n e l y sobrepone la operacin p a i n t C o n t e n t s (). La nueva operacin
www.FreeLibros.org
254 C apitulo 7 D i s e o d e objetos
Figura 7-17 Componentes de las JFC para el subsistema v i s u a l i z a c i n de JEWEL (diagrama de
objetos UML). Las asociaciones indican la jerarqua contenedora usada para ordenar los componentes del
trazado. Usamos estereotipos para distinguir entre las clases de JEWEL y las proporcionadas por las JFC.
p a i n t C o n t e n t s () calcula el cuadro limitante visible a partir de atributos de J S cr o llP an e , recupera
listas de puntos de las clases Capa, las escala y las traza. La clase reaMapa tambin mantiene el nivel
de detalle actual. Las acciones asociadas con zoomin: j B u t t o n y zooirOut: JButton tienen acceso a
operaciones en reaMapa para incrementar y decrementar el nivel de detalle, respectivamente. Esto
activa la operacin r e p a i n t () de reaMapa, la cual refresca el desplegado del mapa.
Cuando examinamos los primitivos de trazado proporcionados por las JFC nos damos
cuenta que las JFC y el GIS representan las lneas en forma diferente. Por un lado, las opera
ciones d r a wP o l i g o n () y d r a w P o l y l i n e () de la clase G r a p h i c s aceptan dos arreglos de
coordenadas (uno para las coordenadas x de los puntos y el otro para las coordenadas y, vea la
figura 7 - 1 8 ) . Por otro lado, la operacin o b t e n e r C o n t o r n o 0 del GIS regresa una En u me r a t i o n
de P u n t o (vea la figura 7 - 1 6 ) . Hay dos enfoques para resolver esta falta de concordancia.
Podemos escribir un mtodo de utilera en la clase reaMapa para traducir entre las dos estruc
turas de datos diferentes o podemos pedirle a los desarrolladores responsables del GIS que
cambien la interfaz de la clase Capa.
/ / d e l paquete j a v a . a w t
c l a s s Graphics
I I . . .
void drawPolyline ( i n t [] x P o i n t s , i n t [ ] y P o i n t s , i n t nPoints) {...};
void drawPolygon( i n t [] x P o i n t s , i n t [ ] y P o i n t s , i n t nPoints) {_};
Figura 7 - 1 8 D e c l a r a c i n p a r a l a s o p e r a c i o n e s d r a w P o l y l i n e ( ) y d r a w P o l y g o n ( ) [ J F C , 1 9 9 9 ] .
www.FreeLibros.org
Actividades del d i s e o d e objetos 255
Debemos cambiar la API de la clase Capa si tenemos control sobre ella. Sin embargo, en el
caso general, con frecuencia es necesario escribir operaciones de unin y clases. Por ejemplo, si
el GIS tambin estuviera establecido con componentes hechos, no podramos cambiar su API.
Podemos usar el patrn Adaptador para resolver esta falta de concordancia (vea la seccin 6.4.4
en el captulo 6, Diseo del sistema).
7.4.6 Identificacin y ajuste de marcos de aplicacin
Un mar co de a p l i c a c i n es una aplicacin parcial reutilizable que puede especializarse para
producir aplicaciones personalizadas [Johnson et al., 1988]. A diferencia de las bibliotecas de
clase, los marcos estn orientados hacia tecnologas particulares, como el procesamiento de datos o
las comunicaciones celulares, o hacia dominios de aplicacin, como las interfaces de usuario o la
avinica en tiempo real. Los beneficios principales de los marcos de aplicacin son la reutilizacin
y la extensibilidad. La reutilizacin de los marcos se apoya en el conocimiento del dominio de apli
cacin y los esfuerzos anteriores de desarrolladores experimentados para evitar volver a crear y
validar soluciones recurrentes. Un marco de aplicacin mejora la extensibilidad proporcionando
m to d o s gancho, que son sobrepuestos por la aplicacin para extender el marco de aplicacin. Los
mtodos gancho desacoplan en forma sistemtica las interfaces y los comportamientos de un
dominio de aplicacin con respecto a las variaciones requeridas por una aplicacin en un contexto
particular. La extensibilidad de los marcos es esencial para asegurar la personalizacin oportuna de
nuevos servicios y caractersticas de la aplicacin.
Los marcos pueden clasificarse por su posicin en el proceso de desarrollo del software.
Los marcos de i nfraes tructura ayudan a simplificar el proceso de desarrollo de software.
Ejemplos de esto incluyen marcos para sistemas operativos [Campbell-Islam, 1993], depura
dores [Bruegge et al., 1993], tareas de comunicacin [Schmidt, 1997] y diseo de interfaces de
usuario [Weinand et a l , 1988]. Los marcos de infraestructura de sistema se usan en forma
interna dentro de un proceso de software y, por lo general, no se entregan al cliente.
Los m a r c o s m i d d l e w a r e se usan para integrar aplicaciones y componentes distribuidos
existentes. Ejemplos comunes incluyen las MFC y DCOM de Microsoft, RMI de Java,
WebObjects [Wilson y Ostrem, 1999], las implementaciones de CORBA [OMG, 1995] y
bases de datos transaccionales.
Los m a r c o s de a p l i c a c i n e m p r e s a r i a le s son especficos de la aplicacin, y se enfocan
en dominios como las telecomunicaciones, la avinica, el modelado ambiental [Bruegge y
Riedel, 1994], las manufacturas, la ingeniera financiera [Birrer, 1993] y las actividades de
negocios empresariales.
Los marcos de infraestructura y middleware son esenciales para crear en forma rpida sistemas
de software de alta calidad, pero por lo general no son solicitados por los clientes externos. Sin
embargo, los marcos empresariales soportan el desarrollo de aplicaciones de usuario final. En
consecuencia, la compra de marcos de infraestructura y middleware es ms efectiva en costo que
su construccin [Fayad y Hamu, 1997].
www.FreeLibros.org
256 C apitulo 7 D i s e o d e objetos
Los marcos tambin pueden clasificarse por las tcnicas que se usan para extenderlos.
Los m a r c o s de c aj a b l a n c a se apoyan en la herencia y el enlace dinmico para la
extensibilidad. La funcionalidad existente se extiende haciendo subclases con las clases
bsicas del marco y sobreponiendo mtodos gancho predefinidos, usando patrones como
el patrn de mtodo de plantilla [Gamma et al., 1994].
Los ma r co s de c aj a ne gr a soportan la extensibilidad definiendo interfaces para los
componentes que pueden enchufarse en el marco. La funcionalidad existente se reutiliza
mediante la definicin de componentes que se apegan a una interfaz particular e integrando
estos componentes con el marco usando delegacin.
Los marcos de caja blanca requieren un conocimiento ntimo de la estructura interna del mar
co. Los marcos de caja blanca producen sistemas que estn fuertemente acoplados con los detalles
especficos de las jerarquas de herencia del marco y, por tanto, los cambios del marco pueden
requerir que se vuelva a compilar la aplicacin. Los marcos de caja negra son ms fciles de usar
que los de caja blanca, debido a que se apoyan en la delegacin en vez de en la herencia. Sin
embargo, los marcos de caja negra son ms difciles de desarrollar, debido a que requieren la
definicin de interfaces y ganchos que anticipen un amplio rango de casos de uso potenciales.
Adems, es ms fcil extender y reconfigurar marcos de caja negra en forma dinmica, ya que
enfatizan las relaciones de objetos dinmicas en vez de las relaciones de clase estticas [Johnson
etaU 1988].
Los marcos se relacionan ntimamente con los patrones de diseo, las bibliotecas de clases
y los componentes.
P a t r o n e s de d i s e o f r en te a m a r c o s . La principal diferencia entre los marcos y los patrones
es que los marcos se enfocan en la reutilizacin de diseos, algoritmos e implementaciones
concretos en un lenguaje de programacin particular. Por el contrario, los patrones se enfocan en
la reutilizacin de un diseo abstracto y en pequeas colecciones de clases cooperativas. Los
marcos se enfocan en un dominio de aplicacin particular, mientras que los patrones de diseo
pueden ser vistos ms como bloques de construccin de marcos.
B i b l i o t e c a s de c l a s e f r en te a m a r c o s . Las clases en un marco cooperan para proporcionar un
esqueleto arquitectnico reutilizable para una familia de aplicaciones relacionadas. Por el con
trario, las bibliotecas de clases son menos especficas del dominio y proporcionan un alcance de
reutilizacin ms pequeo. Por ejemplo, los componentes de bibliotecas de clases, como las
clases para cadenas, nmeros complejos, arreglos y conjuntos de bits, pueden usarse a travs de
muchos dominios de aplicacin. Las bibliotecas de clases, por lo general, son pasivas; esto es,
no implementan ni restringen el flujo de control. Sin embargo, los marcos son activos; es decir,
controlan el flujo de control dentro de una aplicacin. En la prctica, los marcos y las bibliote
cas de clases son tecnologas complementarias. Por ejemplo, los marcos usan bibliotecas de
clases en forma interna, como las clases fundamentales, para simplificar el desarrollo del marco.
En forma similar, el cdigo especfico de la aplicacin, llamado por los manejadores de eventos
del marco, usan bibliotecas de clases para realizar tareas bsicas, como el procesamiento de
cadenas, administracin de archivos y anlisis numrico.
www.FreeLibros.org
Actividades del d i s e o d e objetos 257
C o m p o n e n t e s f r en te a m a r c o s . Los componentes son instancias de clases autocontenidas
que se conectan para formar aplicaciones completas. En trminos de reutilizacin, un compo
nente es una caja negra que define un conjunto de operaciones cohesivo que puede ser usado
basndose nicamente en el conocimiento de la sintaxis y semntica de su interfaz. Comparados
con los marcos, los componentes estn acoplados con menos fuerza e incluso pueden utilizarse
en el nivel de cdigo binario. Esto es, las aplicaciones pueden reutilizar los componentes sin
tener que hacer subclases a partir de clases base existentes. La ventaja es que las aplicaciones no
siempre tienen que volver a compilarse cuando cambian los componentes. La relacin entre
marcos y componentes no est predeterminada. Por un lado, pueden usarse los marcos para
desarro-llar componentes, donde la interfaz del componente proporciona un patrn de fachada
para la estructura de clases interna del marco. Por otro lado, los componentes pueden conectarse
a marcos de caja negra. En general, los marcos se usan para simplificar el desarrollo de software
de infraestructura y middleware, mientras que los componentes se usan para simplificar el desa
rrollo de software de aplicaciones de usuario final.
7 . 4 . 7 U n ejemplo de marco: WebObjects
WebObjects es un conjunto de marcos para el desarrollo de aplicaciones Web que tienen
acceso a datos existentes en bases de datos relacinales. WebObjects consta de dos marcos de
infraestructura. El marco WebObjects1 maneja la interaccin entre los navegadores Web y los
servidores Web. El marco de objetos empresarial (EOF, por sus siglas en ingls) maneja la
interaccin entre los servidores Web y las bases de datos relacinales. El EOF soporta adapta
dores de bases de datos que permiten que las aplicaciones se conecten con sistemas de admi
nistracin de bases de datos de vendedores particulares. Por ejemplo, el EOF proporciona
adaptadores para servidores Informix, Oracle y SyBase, y adaptadores apegados a ODBC para
bases de datos que ejecutan en la plataforma Windows. A continuacin nos concentramos en
el marco WebObjects. En [Wilson y Ostrem, 1999] podr encontrar ms informacin acerca
del EOF.
La figura 7-19 muestra un ejemplo de un sitio de edicin dinmico construido con
WebObjects. El WebBrowser origina una peticin HTTP en forma de un URL, la cual se enva
al Webserver. Si el Webserver detecta que la peticin es una pgina HTML esttica la pasa al
objeto s t a t i c HTML, el cual selecciona y enva la pgina de regreso al navegador Web como
respuesta. El navegador Web la presenta entonces ante el usuario. Si el Webserver detecta que
la peticin requiere una pgina HTML dinmica pasa la peticin al woAdaptor de WebObjects.
El woAdaptor empaca la peticin HTML entrante y la pasa al objeto WebObjects A p p l i c a
t i o n . Con base en Tmplate definidas por el desarrollador y datos relevantes recuperados de
R e l a t i o n a l D a t a b a s e , la We bO bjec ts A pplic at ion genera una pgina HTML de respuesta,
la cual se pasa mediante el woAdaptor hacia el Webserver. El Webserver enva luego la
pgina al WebBrowser, el cual la presenta ante el usuario.
1. Por desgracia, WebObjects" es el nombre tanto del ambiente de desarrollo completo como del marco Web. Cuando
nos referimos al marco siempre usamos la frase marco WebObjects. Cuando nos referimos al ambiente de desarrollo
simplemente usamos el trmino WebObjects.
www.FreeLibros.org
258 C apitulo 7 D i s e o d e objetos
tz p
WebBrowser
/
/
/
Webserver
StaticHTML
WDAdaptor -
WoRequest
WebObjectsApp1 i c a t i o n
Tmplate
WDRequest
EOF
RelationalDatabase
F i g u r a 7-19 Un ejemplo de un sitio dinmico con WebObjects (diagrama de componentes UML).
Una abstraccin clave proporcionada por el marco WebObjects es una extensin al proto
colo HTTP para manejar el estado. El HTTP es un protocolo de peticin y respuesta sin estados;
esto es, se formula una respuesta para cada peticin pero no se conserva ningn estado entre peti
ciones sucesivas. Sin embargo, en muchas aplicaciones basadas en Web es necesario mantener el
estado entre peticiones. Por ejemplo, en JEWEL tos clculos de emisiones pueden llevarse 30 das.
El usuario final debe poder supervisar y tener acceso al estado de los clculos de las emisiones
aunque vuelva a arrancar su navegador Web. Se han propuesto varias tcnicas para llevar cuenta de
la informacin de estado en aplicaciones Web, incluyendo URL generados en forma dinmica,
cookies y campos HTML ocultos. WebObjects proporciona las clases que se muestran en la figura
7-20 para lograr el mismo propsito.
La clase w oA pplica tion representa la aplicacin que est ejecutando en el Webserver,
esperando peticiones del WebBrowser asociado. Cada vez que el woAdaptor recibe una peticin
HTTP entrante se inicia un ciclo de peticiones y respuestas. El woAdaptor empaca esta peticin en
un objeto woRequest y lo pasa al objeto de aplicacin de la clase woApplication. Las peti
ciones siempre son activadas por un URL enviado por el WebBrowser. Un URL de nivel ms alto
representa una peticin especial y causa la creacin de una nueva instancia del tipo woSession.
La clase woSession encapsula el estado de una sesin individual, lo que permite el seguimiento
de diferentes usuarios, aun dentro de una sola aplicacin. Una woSession consta de uno o ms
wocomponent, los cuales representan una pgina Web reutilizable, o parte de una pgina Web
para desplegarla dentro de una sesin individual, wxomponent puede contener elementos dinmi
cos. Cuando una aplicacin tiene acceso a la base de datos, uno o ms de los elementos dinmicos
de un componente se llenan con informacin recuperada de la base de datos. El woses sionSt ore
proporciona persistencia para los objetos woSession: guarda sesiones en el servidor y las res
taura para la aplicacin cuando las solicitan.
www.FreeLibros.org
Actividades del d i s e o d e objetos 259
F i g u r a 7-20 Clases de administracin de estado de WebObjects. El protocolo HTTP no tiene estados
inherentes. Las Clases de administracin de estado permiten conservar informacin entre peticiones
individuales.
La esencia de la construccin de aplicaciones de WebObjects es refinar las clases woAppli ca
t i n , wosession y wocomponent e interceptar el flujo de peticiones enviadas y recibidas por ellas.
Los mtodos heredados de esas clases se sobreponen cuando el desarrollador necesita extender el
comportamiento predeterminado. El primer punto de control para la refinacin de objetos de tipo
woApplication es cuando se les construye. El ltimo punto de control es cuando termina el objeto
de aplicacin. Mediante la adicin de cdigo al constructor del objeto de aplicacin, o mediante la
sobreposicin del mtodo t e r m i n a t e O de woApplication, el desarrollador puede personalizar el
comportamiento de la aplicacin WebObjects como lo desee.
Una vez que se ha extendido el modelo de diseo de objetos con componentes hechos y sus
clases relacionadas reestructuramos el modelo para mejorar la reutilizabilidad y la extensibilidad.
Actividades de reestructuracin
Una vez que especificamos las interfaces de subsistemas, identificamos clases de solucin
adicionales, seleccionamos componentes y los adaptamos para que se ajusten a nuestra solucin,
necesitamos transformar el modelo de diseo de objetos hacia una representacin que est ms cer
cana a la mquina de destino. En esta seccin describimos tres actividades de reestructuracin:
Realizacin de asociaciones (seccin 7.4.8).
Revisin de la herencia para incrementar la reutilizacin (seccin 7.4.9).
Revisin de la herencia para eliminar dependencias de implementacin (seccin 7.4.10).
7.4.8 Realizacin de asociaciones
Las asociaciones son conceptos UML que indican colecciones de vnculos bidireccionales
entre dos o ms objetos. Sin embargo, los lenguajes de programacin orientados a objetos no pro
porcionan el concepto de asociacin. En vez de ello proporcionan referencias en donde un objeto
guarda una manija hacia otro objeto. Las referencias son unidireccionales y se realizan entre dos
objetos. Durante el diseo de objetos realizamos asociaciones desde el punto de vista de referencias,
www.FreeLibros.org
260 C apitulo 7 D i s e o d e objetos
tomando en cuenta la multiplicidad de las asociaciones y su direccin. Observe que muchas
herramientas de modelado UML realizan la transformacin de asociaciones hacia referencias en
forma automtica. Aunque una herramienta realice esta transformacin, sigue siendo importante que
los desarrolladores comprendan su fundamentacin, ya que tiene que ver con el cdigo generado.
A s o c i a c io n e s u n i d i r e c c i o n a l e s de un o a u n o . La asociacin ms simple es la de uno a uno. Por
ejemplo, AccinAcercamiento, el objeto de control que implementa el caso de uso Acercamiento,
tiene una asociacin de uno a uno con el reaMapa cuyo nivel de d e t a l l e modifica el objeto
AccinAcercamiento (figura 7-21). Adems, supongamos que esta asociacin es unidireccional;
esto es, un AccinAcercamiento tiene acceso al reaMapa correspondiente, pero un reaMapa no
necesita tener acceso al objeto AccinAcercamiento correspondiente. En este caso realizamos esta
asociacin usando una referencia desde AccinAcercamiento; esto es, un atributo de AccinAcer
camiento llamado mapaDestinode tipo reaMapa.
Modelo de diseo de objetos antes de la transformacin
AccinAcercamiento reaMapa
1 1
l
Modelo de diseo de objetos despus de la transformacin
AccinAcercamiento reaMapa
mapaDestino:AreaMapa
Figura 7-21 Realizacin de una asociacin unidireccional de uno a uno (diagrama de clase UML; la
flecha indica la transformacin del modelo de objetos).
La creacin de una asociacin entre AccinAcercamiento y reaMapa se traduce en la
especificacin del atributo mapaDestino para que haga referencia al objeto reaMapa correcto.
Debido a que cada objeto AccinAcercamiento est asociado exactamente con un reaMapa,
slo puede suceder un valor n u l o para el atributo mapaDestino cuando se est creando un
objeto AccinAcercamiento. En los dems casos, un mapaDestino nulo se considera un error.
A s o c i a c io n e s b i d i r e c c i o n a l e s de un o a u n o . Supongamos que modificamos la clase reaMapa
para que el usuario pueda hacer acercamientos simplemente haciendo clic en el mapa con los botones
izquierdo y derecho. En este caso, un reaMapa necesita acceder a su objeto AccinAcercamiento
correspondiente. Por consecuencia, la asociacin entre estos dos objetos necesita ser bidiieccional.
Aadimos el atributo acercamiento a reaMapa (figura 7-22). Sin embargo, esto no es suficiente:
mediante la adicin de un segundo atributo para realizar la asociacin introducimos redundancia
al modelo. Necesitamos asegurarnos que si un reaMapa dada tiene una referencia hacia un
AccinAcercamiento especfico, el AccinAcercamiento tenga una referencia hacia la misma
reaMapa. Para asegurar la consistencia cambiamos la visibilidad del atributo a privada y aadimos
dos mtodos a cada clase para acceder a ellas y modificarlas. asignarAccinAcercamiento 0 en
www.FreeLibros.org
Actividades del d i s e o d e objetos 261
reaMapa asigna el atributo acercamiento de su parmetro y luego llama a asignarMapaDes-
t i n o () de AccinAcercamiento para cambiar su atributo mapaDestino.2 Por ltimo, necesita
mos tratar la iniciacin de la asociacin y su destruccin llamando a asignarMapaDestinoO y
as ignarAccinAcercamiento () cuando se crean y destruyen los objetos reaMapa y Accin-
Acercamiento. Esto asegura que ambos atributos de referencia sean consistentes todo el tiempo.
Modelo de diseo de objetos antes de la transformacin
AccinAcercamiento reaMapa
1 1
Modelo de diseo de objetos despus
de la transformacin
AccinAcercamiento
-mapaDestino:reaMapa
-tobtenerMapaDestino ()
-tasignarMapaDestino (mapa)
I
A r e a M a p a
-acercamiento:Accin-
Acercamiento
+obtenerAccin-
Acercamiento()
+asignarAccin-
Acercamiento(accin)
c l a s s reaMapa extends J P a n e l {
p r i v a t e A c c i n A c e r c a m i e n t o a c e r c a m i e n t o ;
/ * Se o m i t e n o t r o s m t o d o s * /
void a s i g n a r A c c i n A c e r c a m i e n t o ( a c c i n : A c c i n A c e r c a m i e n t o ) {
i f ( a c e r c a m i e n t o != a c c i n ) {
a c e r c a m i e n t o = a c c i n ;
a c e r c a m i e n t o . a s i g n a r M a p a D e s t i n o ( t h i s ) ;
}
c l a s s A c c i n A c e r c a m i e n t o extends A b s t r a c t A c t i o n {
p r i v a t e reaMapa M a p a D e s t i n o ;
/ * Se o m i t e n o t r o s m t o d o s * /
void a s i g n a r M a p a D e s t i n o ( m a p a : r e a M a p a ) {
i f (Ma p aD es ti n o != mapa) {
M a pa Des ti no = mapa;
M a p a D e s t i n o . a s i g n a r A c c i n A c e r c a m i e n t o ( t h i s ) ;
F i g u r a 7-22 Realizacin de una asociacin bidireccional de uno a uno (diagrama de clase UML y
fragmentos Java; la flecha indica la transformacin del modelo de diseo de objetos).
2 Observe que los mtodos a s i g n a r A c c i n A c e r c a m i e n t o () y a s i g n a r M a p a D e s t i n o () necesitan revisar
primero si el atributo necesita modificarse antes de llamar al otro mtodo para que eviten una recursin infinita (vea
el cdigo en la figura 7-22).
www.FreeLibros.org
262 C apitulo 7 D i s e o d e objetos
La direccin de una asociacin a menudo puede cambiar durante el desarrollo del sistema.
Las asociaciones unidireccionales pueden realizarse de manera mucho ms simple. Las asocia
ciones bidireccionales son ms complejas e introducen dependencias mutuas entre clases. Por
ejemplo, en la figura 7-22 las dos clases, reaMapa y A c c i n A c e r c a m i e n t o , necesitan volver a
compilarse y probarse cuando cambiamos alguna de ellas. En el caso de una asociacin unidirec
cional de la clase A c c i n A c e r c a m i e n t o hacia la clase reaMapa, no necesitamos preocupamos
acerca de la clase reaMapa cuando cambiamos la clase A c c i n A c e r c a m i e n t o . Sin embargo, las
asociaciones bidireccionales son, a veces, necesarias en el caso de clases pares que necesitan traba
jar en forma muy estrecha. La seleccin entre una asociacin unidireccional o bidireccional es un
compromiso que tenemos que evaluar en el contexto de un par especfico de clases. Sin embargo,
para facilitar el compromiso podemos hacer de manera sistemtica que todos los atributos sean pri
vados y proporcionar las operaciones a s i g n a r A t r i b u t o () y o b t e n e r A t r i b u t o 0 para modificar
la referencia. Esto minimiza los cambios a las interfaces de clases cuando hacemos que una asocia
cin unidireccional sea bidireccional (y viceversa).
Asociaciones de uno a muchos. Las asociaciones de uno a muchos, a diferencia de las asocia
ciones de uno a uno, no pueden realizarse usando una sola referencia o un par de referencias. En
vez de ello, realizamos la parte de muchos usando una coleccin de referencias. Por ejemplo, la
clase Capa del GIS de JEWEL tiene una asociacin de uno a muchos con la clase E le m e n t o C a p a .
Debido a que E le m e n t o C a p a no tiene un orden especfico con respecto a Capa, y debido a que
E l e m e n t o C a p a puede ser parte, a lo sumo, de una Capa a la vez, usamos un conjunto de referencias
para modelar la parte muchos de la asociacin. Adems, decidimos realizar esta asociacin como
una asociacin bidireccional y, por tanto, aadimos los mtodos a a d i r E l e m e n t o O , e l i m i n a r -
E l e m e n t o (), o b t e n e r C a p a ( ) y a s i g n a r C a p a () a las clases Capa y E le m e n t o C a p a para actua
lizar los atributos e l e m e n t o s C a p a y c o n t e n i d o E n (vea la figura 7-23). Al igual que en el ejemplo
de uno a uno, es necesario iniciar y destruir la asociacin cuando se crean y destruyen los objetos
Capa y E le m e n t o C a p a .
Modelo de diseo de objetos antes de la transformacin
Capa ElementoCapa
1 *
Modelo de diseo de objetos despus de la transformacin
I
Capa ElementoCapa
-elementosCapa: Set -contenidoEn:Capa
+elementos()
+aadirElemento(ec)
+eleminarElemento(ec)
+obtenerCapa()
+asignarCapa(c)
Figura 7-23 Realizacin de una asociacin bidireccional de uno a muchos (diagrama de clase UML; la
flecha indica la transformacin del modelo de diseo de objetos).
www.FreeLibros.org
Actividades del d i s e o d e objetos 263
Observe que la coleccin del lado muchos de la asociacin depende de las restricciones de
la asociacin. Por ejemplo, si el ElementoCapa de una Capa necesita estar ordenado (por ejemplo,
para indicar el orden en que deben trazarse), necesitamos usar un A r r ay o un V ec t o r en vez de un
Set. En forma similar, si una asociacin est calificada usamos una Hasht able para guardar las
referencias.
A s o c i a c io n e s de m u c h o s a m u c h o s . En este caso, ambas clases terminales tienen atributos
que son colecciones de referencias y operaciones para mantener consistentes estas colecciones.
Por ejemplo, las clase P o l i L i n e a del GIS de JEWEL tiene una asociacin ordenada de muchos a
muchos con la clase Punto. Esta asociacin se realiza usando un atributo V ec t o r en cada clase,
el cual es modificado por las operaciones a a d i r P u n t o O , e l i m i n a r P u n t o O , aa
d i r P o l i l i n e a 0 y e l i m i n a r P o l i l i n e a 0 (vea la figura 7-24). Al igual que en el ejemplo ante
rior, estas operaciones aseguran que ambos V ec t o r sean consistentes. Sin embargo, observe que
la asociacin entre P o l i L i n e a y Punto debe ser unidireccional, tomando en cuenta que ninguna
de las operaciones de Punto necesita tener acceso a las P o l i L n e a que incluyen un Punto dado.
Podemos entonces eliminar el atributo p o l i l i n e a s y sus mtodos relacionados y, en este caso,
una asociacin unidireccional de muchos a muchos o una asociacin unidireccional de uno a
muchos llega a ser idntica en el nivel del diseo de objetos.
Modelo de diseo de objetos antes de la transformacin
PoliLinea
{ordenado}
Planto
* *
I
Modelo de diseo de objetos despus de la transformacin
PoliLinea Punto
-puntos:Vector - p o l i l i n e a s :Vector
+elementos() +elementos()
+aadirPunto(p)
+eliminarPunto(p)
4-aadirPolilinea (1)
+el iminarPolil inea(1)
Figura 7-24 Realizacin de una asociacin bidireccional de muchos a muchos (diagrama de clase UML;
la flecha indica la transformacin del modelo de diseo de objetos).
La s a s o c i a c i o n e s c o m o o b j e t o s s e p a r a d o s . En UML las asociaciones pueden estar asociadas
con una clase de asociacin que guarda los atributos y operaciones de la asociacin. Primero trans
formamos la clase de asociacin en un objeto separado y varias asociaciones binarias. Por ejemplo,
considere la asociacin Eje c u t a r S i m u l a c i n en JEWEL (figura 7-25). Una E j e cu ta rS im u l aci n
relaciona un objeto FuenteEmisin y un objeto ResultadoSimulacin. La clase de asociacin
E j e c u t a r S i m u l a c i n tambin guarda atributos especficos de la corrida, como la fecha en que
se cre, el usuario que ejecut la simulacin y el tiempo de CPU que se requiri para terminar la
www.FreeLibros.org
264 C apitulo 7 D i s e o d e objetos
Modelo de diseo de objetos antes de la transformacin
EjecutarSimulacin
fecha
autor
tiempoCPU
ob t e n e r P e r f i l ()
FuenteEmisin Hasu1 tadoSimu1 acin
* 1
Modelo de diseo de objetos despus de la transformacin
I
Figura 7-25 Transformacin de una clase de asociacin en un objeto y dos asociaciones binarias
(diagrama de clase UML; la flecha indica la transformacin del modelo de diseo de objetos). Una vez que
el modelo contiene slo asociaciones binarias, cada asociacin se realiza usando atributos de referencia y
colecciones de referencias.
simulacin. Primero convertimos la asociacin en un objeto, llamado E j e cu ta rS im u l aci n , y dos
asociaciones binarias entre el objeto E je c u t a r S i m u l a c i n y los dems objetos. Luego podemos
usar las tcnicas tratadas antes para convertir cada asociacin binaria en un conjunto de atributos
de referencia.
A s o c i a c io n e s ca li f i ca d a s . En este caso, uno o ambos extremos de la asociacin estn asociados
con una clave que se usa para diferenciar entre asociaciones. Las asociaciones calificadas se realizan
en la misma forma que las asociaciones uno a muchos y muchos a muchos, a excepcin del uso de un
objeto Hashtable en el extremo calificado (a diferencia de un Vector o un Set). Por ejemplo, con
sidere la asociacin entre Escenar io y E j e cuta rS im ul aci n en JEWEL (figura 7-26). Un Esce
n a r i o representa una situacin que estn investigando los usuarios (por ejemplo, una fuga en un reac
tor nuclear). Para cada Escenar io bs usuarios pueden crear varias EjecutarSimul aci n, usando
cada una un conjunto diferente de FuenteEmisin o un MxleloEmisin diferente. Tomando en
cuenta que EjecutarS imul aci n es costoso, los usuarios tambin reutilizan las ejecuciones a travs
de Escenar io similares. El extremo de la asociacin de Escenar io est calificado con un nombre
que permite al usuario distinguir entre varias E je c u t a r S i m u l a c i n con el mismo Escenar io.
www.FreeLibros.org
Actividades del d i s e o d e objetos 265
Modelo de diseo de objetos antes de la transformacin
E s c e n a r i o
-------------------------------------------- " U . . X
nombres im
E j e c u t a r S i m u l a c i n
Modelo de diseo de objetos despus de la transformacin
E s c e n a r i o E j e c u t a r S i m u l a c i n
- e j e c u c i o n e s : H a s h t a b l e - e s c e n a r i o s : V e c t o r
+ e l e m e n t o s () + e l e m e n t o s ()
+ a a d i r E j e c u c i n ( n o m b r e s i m , + a a d i r E s c e n a r i o -
e s : E j e c u t a r S i m u l a c i n ) ( e : E s c e n a r i o )
+ e l i m i n a r E j e c u c i n ( n o m b r e s i m , + e l i m i n a r E s c e n a r i o -
e s :E j e c u t a r S i m u l a c i n ) ( e : E s c e n a r i o )
Figura 7-26 Realizacin de una asociacin bidireccional calificada (diagrama de clase UML; la flecha
indica la transformacin del modelo de diseo de objetos).
Realizamos esta asociacin calificada creando un atributo e j e c u c i o n e s en E s ce n ar i o y un atri
buto e s c e n a r i o s en E j e cu ta rS im u l aci n . El atributo e j e c u c i o n e s es una H as h t ab le que est
indexada por el nombre de una E j e cu ta rS im u l aci n . Debido a que el nombre est guardado en la
Hashtable, una E je c u t a r S i m u l a c i n especfica puede tener varios nombres diferentes a travs
de Escenar io. El extremo E je c u t a r S i m u l a c i n se realiza, como antes, como un Vector en la
clase E j e cuta rS imul aci n.
7.4.9 Incremento de la reutilizacin
La herencia permite que los desarrolladores reutilicen el cdigo a travs de varias clases
similares. Por ejemplo, las JFC, al igual que la mayora de los juegos de herramientas de interfaz
de usuario, proporcionan cuatro tipos de botones:
Un botn oprimile ( j B u t t o n ) que activa una accin cuando el usuario final hace clic en
el botn.
Un botn de radio (JRadioButton) que permite que un usuario final seleccione una
opcin entre un conjunto de opciones.
Un cuadro de verificacin (jcheckBox) que permite que un usuario final active o desactive
una opcin.
Un concepto de men (JMenuitem) que activa una accin cuando se le selecciona en un
men desplegable o emergente.
Estos cuatro botones comparten un conjunto de atributos (por ejemplo, un rtulo, un icono) y un
comportamiento (por ejemplo, algo sucede cuando los selecciona el usuario final). Sin embargo,
el comportamiento de cada tipo de botn es ligeramente diferente. Para acomodar estas diferen
cias, y al mismo tiempo reutilizar la mayor cantidad de cdigo posible, las JFC introducen dos
clases abstractas, A b s t r a c t B u t t o n y JToggleButton, y organiza estos cuatro tipos de botones en
la jerarqua de herencia que se muestra en la figura 7-27. La clase A b s t r a c t B u t t o n define el com
portamiento compartido por todos los botones de las JFC. JToggleButton define el comporta
miento compartido por los dos botones de estado (es decir, JRadioButton y JCheckBox). www.FreeLibros.org
266 C apitulo 7 D i s e o d e objetos
Figura 7-27 Un ejemplo de reutilizacin de cdigo con herencia (diagrama de clase UML).
Hay dos ventajas principales en la utilizacin de una jerarqua de herencia bien diseada. La
primera es que se reutiliza ms cdigo, y esto conduce a menos redundancias y, por tanto, a menos
oportunidades para que haya defectos. La segunda es que el cdigo es extensible, incluyendo una
interfaz bien documentada para la creacin de especializaciones futuras (por ejemplo, nuevos tipos
de botones en el caso de las JFC). Sin embargo, la reutilizacin mediante herencia tiene un costo.
Los desarrolladores deben anticipar en forma correcta cul comportamiento deber compartirse y
cul ser refinado por la especializacin, a menudo sin conocer todas las especializaciones posi
bles. Adems, una vez que los desarrolladores definen una jerarqua de herencia y un paradigma
para la comparticin del cdigo, las interfaces de las clases abstractas se hacen cada vez ms rgi
das ante el cambio conforme cada vez ms clases cliente dependen de ellas. El diseo de objetos
representa la ltima oportunidad durante el desarrollo para revisar las jerarquas de herencia entre
objetos de aplicacin y de solucin. Cualquier cambio posterior en el proceso puede introducir
errores difciles de detectar e incrementa de manera considerable el costo del sistema.
Hay dos enfoques principales para el diseo de una jerarqua de herencia a fin de reutilizarla.
Primero, podemos examinar varias clases similares y abstraer su comportamiento comn. El ejem
plo A b s t r a c t B u t t o n de la figura 7-27 es un ejemplo de este enfoque. Segundo, podemos desa
coplar una clase cliente de un cambio anticipado introduciendo un nivel de abstraccin. La mayora
de los patrones de diseo [Gamma et al., 1994], incluyendo al patrn F b r i c a A b s t r a c t a que se
muestra a continuacin, usan herencia para protegerse contra un cambio anticipado.
Considere el problema de escribir una sola aplicacin que funcione con varios estilos de venta
nas (por ejemplo, Windows, Macintosh y Motif). Tomando una plataforma dada, el usuario trabaja
con un conjunto consistente de ventanas, barras de desplazamiento, botones y mens. La aplicacin
misma no debe saber o depender de un apariencia especfica. El p a t r n F b r ic a A b s t r a c t a (fi
gura 7-28) resuelve este problema proporcionando una clase abstracta para cada objeto que puede
ser sustituido (por ejemplo, VentanaAbst racta y BotnAbstracto) y proporcionando una interfaz
para la creacin de grupos de objetos (es decir, la F b r i c a A b s t r a c t a ) . Clases concretas imple-
mentan cada clase abstracta para cada fbrica. Por ejemplo, la clase BotnAbstracto est refinada
www.FreeLibros.org
Actividades del d i s e o d e objetos 267
F i g u r a 7-28 Patrn de diseo F b r i c a A b s t r a c t a (diagrama de clase UML, las dependencias representan
relaciones l l a m a ) . Este patrn de diseo usa herencia para soportar diferentes apariencias (por ejemplo,
Motif y Macintosh). Si se aade una nueva especializacin no es necesario cambiar al cliente.
por la clase BotnMac y la clase BotnMotif. La interfaz F b r i c a A b s t r a c t a proporciona
una operacin c r e a r B o t n ( ) para crear un botn. Una fbrica concreta implementa la interfaz
F b r i c a A b s t r a c t a para cada opcin. El mtodo F b r i c a M o t i f . c r e a r Botn () regresa un
BotnMotif, mientras que el mtodo F bricaMac.crearBot n () regresa un BotnMac. Observe
que ambos mtodos c r e a r B o t n ( ) tienen la misma interfaz para ambas especializaciones. En
consecuencia, quien llama slo accede a la interfaz F b r i c a A b s t r a c t a y las clases abstractas y,
por tanto, est escudado ante las implementaciones concretas. Adems, esto permite que en el
futuro se implementen nuevas fbricas (por ejemplo, FbricaBeOS y BotnBeOS) sin cambiar la
aplicacin.
7.4.10 Eliminacin de las dependencias de implementacin
En el modelado del sistema usamos relaciones de generalizacin para clasificar a los
objetos en jerarquas de generalizacin/especificacin. Esto nos permite diferenciar el com
portamiento comn del caso general con respecto al comportamiento que es especfico de los
objetos especializados. En un lenguaje de programacin orientado a objetos la generalizacin
se realiza mediante la herencia. Esto nos permite reutilizar los atributos y operaciones de
clases de ms alto nivel. Por un lado, la herencia, cuando se usa como mecanismo de generali
www.FreeLibros.org
268 C apitulo 7 D i s e o d e objetos
zacin, da como resultado menor cantidad de dependencias. Por ejemplo, en el patrn de diseo
F b r i c a A b s t r a c t a (figura 7-28), las dependencias entre la aplicacin y una apariencia espe
cfica se eliminan usando las clases abstractas F b r i c a A b s t r a c t a , B ot nAbs tra ct o y Ven-
t a n a A b s t r a c t a . Por otro lado, la herencia introduce dependencias a lo largo de la jerarqua.
Por ejemplo, las clases VentanaMotif y VentanaWindows estn fuertemente acopladas con
V e n t a n a A b s t r a c t a . En el caso de la generalizacin esto es aceptable, tomando en cuenta
que Ven t a n a A b s t r a c t a , VentanaMotif y VentanaMac son conceptos fuertemente relaciona
dos. Estas dependencias fuertes pueden llegar a ser un problema cuando se usa la herencia
para propsitos diferentes a la generalizacin. Considere el siguiente ejemplo.
Supongamos por un momento que Java no proporciona una abstraccin Set y que necesita
mos escribir una nuestra. Decidimos reutilizar la clase j a v a . u t i l . H a s h t a b l e para implemen-
tar una abstraccin de conjunto a la que llamaremos MiConjunto. La insercin de un elemento en
MiConjunto equivale a revisar si existe la clave correspondiente en la tabla y la creacin de
una entrada si es necesario. Revisar si un elemento est en Mi Conjunto equivale a revisar si una
entrada est asociada con la clave correspondiente (vea la figura 7-29, columna izquierda).
Dicha implementacin de un S e t nos permite reutilizar cdigo y nos proporciona el compor
tamiento deseado. Sin embargo, tambin nos proporciona comportamiento no deseado. Por ejem
plo, Hasht able implementa la operacin containsKey () para revisar si existe el objeto especifi
cado como una clave en la H as h t ab le y la operacin co n t ain s Va lu e ( ) para revisar si el objeto
especificado existe como una entrada. Estas dos operaciones son heredadas por Mi Conjunto.
Tomando en cuenta nuestra implementacin, la operacin co n t a i n s V a l u e () invocada sobre un
objeto MiConjunto siempre regresa n u i l , lo cual es contrario a lo esperado. Lo que sera peor,
un desarrollador que usara MiConjunto podra confundir con facilidad las operaciones c o n t a i n s ()
y co n t ain s Va lu e () e introducir una falla en el sistema que es difcil de detectar. Para tratar este
asunto podramos sobreponer todas las operaciones heredadas de Hasht able que no deben usarse
en MiConjunto. Esto conducira a una clase MiConjunto que sera difcil de comprender y reutilizar.
El problema fundamental en este ejemplo es que, aunque Hasht able proporciona comporta
miento que nos gustara reutilizar en la implementacin de Set, debido a que nos ahorrara tiempo, el
concepto S e t no es un refinamiento del concepto Hashtable. Por el contrario, la clase VentanaMac
del ejemplo F b r i c a A b s t r a c t a s es un refinamiento de la clase VentanaAbstracta.
Al uso de la herencia con el nico propsito de la reutilizacin del cdigo le llamamos heren
cia de impleme nt ac in . La herencia de implementacin permite que los desarrolladores reutilicen
cdigo haciendo con rapidez subclases de una clase existente y retinando su comportamiento. Un
S e t implementado por herencia de una H as h t ab le es un ejemplo de herencia de implementacin.
Por el contrario, a la clasificacin de conceptos en jerarquas de especializacin-generalizacin
se le llama he r en ci a de i nterfaz. La herencia de interfaz se usa para manejar la complejidad que se
presenta para gran nmero de conceptos relacionados. A la herencia de interfaz tambin se le llama
subtipeado y, en este caso, a la superclase se le llama su pe rt i po y a la subclase se le llama subtipo.
Por ejemplo, Real e i n t e g e r son subtipos de Number. reaMapa es un subtipo de JP anel.
Debe evitarse la herencia de implementacin. Aunque proporciona un mecanismo tentador
para la reutilizacin del cdigo, slo produce beneficios de corto plazo y da como resultado siste
mas que son difciles de modificar. La de l egac i n es una mejor alternativa, en vez de la herencia de
implementacin, si se puede reutilizar el cdigo. Se dice que una clase delega hacia otra clase si
implementa una operacin simplemente reenviando un mensaje a otra clase. La delegacin hace
www.FreeLibros.org
Actividades del d i s e o d e objetos 269
Modelo de diseo de objetos antes de la transformacin Modelo de diseo de objetos despus de la transformacin
/ * Implementacin de MiConjunto usando
herencia */
c l a s s MiConjunto a x t e n d s Hashtable {
/* Se omite e l c onstructor */
MiConjuntoO {
}
v o i d insert(Object element) {
i f (this.get(element) == nuil){
this.put(element, this);
}
}
boolean contains(Object element){
r e t u r n
(this.get(element)!=null);
}
/* Se omiten otros mtodos */
}
/* Implementacin de MiCon j unt o usando
delegacin */
c l a s s MiConjunto {
Hashtable table;
MiConjuntoO {
tabla = Hashtable();
}
v o i d insertar(Object elemento) {
i f (tabla.get(elemento)==null){
tabla.put(elemento,this);
}
}
boolean contiene(Object elemento) {
r e t u r n
(tabla.get(elemento) != nuil);
}
/ * Se omiten o tr o s mtodos */
F i g u r a 7-29 Un ejemplo de herencia de implementacin. La columna izquierda muestra una implemen
tacin cuestionable de MiCon junto usando herencia de implementacin. La columna derecha muestra una
implementacin mejorada usando delegacin (diagrama de clase UML y Java).
explcitas las dependencias entre la clase reutilizada y la nueva clase. La columna derecha de la
figura 7-29 muestra una implementacin de MiCon j u n t o usando delegacin en vez de herencia de
implementacin. Observe que la nica adicin significativa es el atributo tabla y su iniciacin en el
constructor MiCon j u n t o ().
Para una exposicin amplia de los intercambios relacionados con la herencia y la delega
cin el lector deber consultar [Meyer, 1997].
www.FreeLibros.org
270 C apitulo 7 D i s e o d e objetos
Actividades de optimizacin
La traduccin directa del modelo de anlisis da como resultado un modelo que con frecuen
cia es ineficiente. Durante el diseo de objetos optimizamos el modelo de objetos de acuerdo a
objetivos de diseo, como la minimizacin del tiempo de respuesta, tiempo de ejecucin o recursos
de memoria. En esta seccin describimos cuatro optimizaciones simples:
La adicin de asociaciones para la optimizacin de rutas de acceso.
La descomposicin de objetos en atributos.
El cacheo de resultados de clculos costosos.
El retraso de clculos costosos.
Cuando se aplican optimizaciones, los desarrolladores deben establecer un equilibrio entre la efi
ciencia y la claridad. Las optimizaciones incrementan la eficiencia del sistema, pero tambin hacen
que sea ms compleja y difcil la comprensin de los modelos del sistema.
7.4.11 Revisin de las rutas de acceso
Una fuente comn del desempeo ineficiente del sistema es el recorrido repetido de asocia
ciones mltiples cuando se tiene acceso a la informacin que se necesita. Para identificar las
rutas de acceso ineficientes los diseadores de objetos deben hacerse las siguientes preguntas
[Rumbaugh et al., 1991]:
Para c ada ope r a ci n: Con cunta frecuencia se llama a la operacin? Cules asociacio
nes tiene que recorrer la operacin para obtener la informacin que necesita? Las operaciones
frecuentes no deben requerir muchos recorridos, sino que deben tener una conexin directa
entre el objeto que consulta y el objeto consultado. Si falta esa conexin directa deber
aadirse una asociacin adicional entre esos dos objetos.
P ara c a d a a s o c i a c i n : Si tiene una asociacin de muchos en uno o ambos lados, se
necesita la multiplicidad? Con cunta frecuencia est involucrado el lado muchos de
una asociacin en una bsqueda? Si esto es frecuente el diseador de objetos deber tratar
de reducir muchos a uno. Si no se puede, deber ordenarse o indexarse el lado
muchos para mejorar el tiempo de acceso?
En proyectos de interfaz y reingeniera, las estimaciones para la frecuencia de las rutas de acceso
pueden derivarse del sistema heredado. En proyectos de ingeniera greenfield (es decir, sistemas
que se desarrollan a partir de cero y que no se pretende que reemplacen a un sistema heredado)
es ms difcil estimar la frecuencia de las rutas de acceso. En este caso no deben aadirse aso
ciaciones redundantes antes de que un anlisis dinmico del sistema completo, por ejemplo,
durante las pruebas del sistema, haya determinado cules asociaciones participan en los cuellos
de botella del desempeo.
Otra fuente del desempeo ineficiente del sistema es el modelado excesivo. Durante el
anlisis se identifican muchas clases que no tienen comportamiento interesante. En este caso los
diseadores de objetos deben preguntarse:
www.FreeLibros.org
Actividades del d i s e o d e objetos 271
P a r a c a d a a t r ib ut o: Cules operaciones usan el atributo? Son a s i g n a r () y o b t e n e r ()
las nicas operaciones que se realizan sobre ese atributo? Si es as, en realidad pertenece
este atributo a este objeto o debe movrsele al objeto que lo llama?
El examen sistemtico del modelo de objetos usando las preguntas anteriores debe conducir a
un modelo con asociaciones redundantes seleccionadas, con menos asociaciones de muchos
a muchos ineficientes y menos clases.
7.4.12 Descomposicin de objetos: conversin de objetos en atributos
Durante el anlisis los desarrolladores identifican muchas clases que estn asociadas con
conceptos de dominio. Durante el diseo del sistema y el diseo de objetos se reestructura y
optimiza el modelo de objetos, y a menudo deja a algunas de estas clases con slo unos cuantos
atributos y poco comportamiento. Tales clases, cuando se asocian slo con otra clase, pueden
descomponerse hacia un atributo, reduciendo, por tanto, la complejidad general del modelo.
Considere, por ejemplo, un modelo de objetos que incluye P er s o n a identificadas por un
objeto S eg u r o S o c i al . Puede ser que se hayan identificado dos clases durante el anlisis. Cada
P ersona est asociada con una clase S eg u r o S o c i al , la cual guarda una cadena de ID nico que
identifica a la Persona. El modelado adicional no revela ningn comportamiento adicional del
objeto SeguroSocial. Adems, ninguna otra clase tiene asociaciones con la clase SeguroSocial.
En este caso, la clase Segur oSocial debe descomponerse en un atributo de la clase Persona (vea
la figura 7-30).
Modelo de diseo d e objetos despus de la transformacin
P e r s o n a
NSS: S t r i n g
F i g u r a 7-30 Representaciones alternas de un identificador nico para una Persona (diagramas de clase
UML).
www.FreeLibros.org
272 C apitulo 7 D i s e o d e objetos
La decisin de descomponer clases no siempre es obvia. En el caso de un sistema de segu
ridad social, la clase S eg u r o S o c i a l puede tener mucho ms comportamiento, como rutinas
especializadas para la generacin de nuevos nmeros basados en fechas de nacimiento y la ubi
cacin de la inscripcin original. En general, los desarrolladores debern retrasar las decisiones
de descomposicin hasta el inicio de la implementacin cuando se tienen claras las responsabili
dades de cada clase.
7.4.13 C acheo de resultados de clculos costosos
Con frecuencia los clculos costosos slo necesitan realizarse una vez, debido a que los
valores con los que se realiza el clculo no cambian o lo hacen despacio. En tales casos se puede
cachear el resultado del clculo como un atributo privado. Considere, por ejemplo, la operacin
Capa. o b te n er C o n to r n o (). Supongamos que todos los ElementoCapa se definen una sola vez
como parte de la configuracin del sistema y no cambian durante la ejecucin. Entonces, el vec
tor de Punto regresado por la operacin Ca p a. obtene r Contor noO siempre es el mismo para
un cuadroLim y d e t a l l e dados. Adems, los usuarios finales tienen la tendencia a enfocarse en
una cantidad limitada de puntos alrededor del mapa conforme se enfocan en una ciudad o re
gin especfica. Tomando en cuenta estas observaciones, una optimizacin simple es aadir un
atributo privado puntosCacheados a la clase Capa, el cual recuerda el resultado de la operacin
obtenerCon t o r n o 0 para un par dado de cuadroLim y d e t a l l e . Luego la operacin o b t e n e r -
ContornoO revisa primero el atributo puntosCacheados y si lo encuentra regresa el V ector
Punto correspondiente, y en caso contrario llama a la operacin o b t e ner Contor noO sobre
cada ElementoCapa contenido. Observe que este enfoque incluye un intercambio: por un lado
mejoramos el tiempo de respuesta para la operacin o b t e n e r Con t o r n o 0 , pero por el otro con
sumimos espacio de memoria guardando informacin redundante.
7.4.14 Retraso de clculos costosos
Un enfoque alterno para los clculos costosos es retrasarlos lo ms posible. Por ejemplo,
considere un objeto que representa a una imagen guardada como un archivo. La carga desde el
archivo de todos los pixeles que constituyen la imagen es costosa. Sin embargo, los datos de la
imagen no necesitan cargarse sino hasta que se vaya a desplegar la imagen. Podemos realizar esta
optimizacin usando un pa t r n A p ode rad o [Gamma et al., 1994]. Un objeto Apoderadolmagen
toma el lugar de imagen y proporciona la misma interfaz que el objeto imagen (figura 7-31). Las
operaciones simples (como anchura () y a l t u r a 0 ) son manejadas por Apoderadolmagen. Sin
embargo, cuando se necesita trazar la imagen, Apoderadolmagen carga los datos desde el disco y
crea un objeto imagenReal. Si el cliente no llama a la operacin t r a z a r () no se crea el objeto
imagenReal, ahorrando, por tanto, mucho tiempo de clculos. Las clases llamadoras slo acceden
al Apoderadolmagen y a la ImagenReal mediante la interfaz de imagen.
www.FreeLibros.org
Administracin del d i s e o d e objetos 273
Modelo de diseo de objetos antes de la transformacin
Imagen
ncnb rearchivo: String
datos: by te []_________
anchura()
altura ()
trazar()
I
Modelo de diseo de objetos despus de la transformacin
Imagen
n c x n b r e a r c h i v o : S t r i n g
anchura()
altura ()
trazar ()
ApodoradoImagen
imagen
ImagenReal
1 0. .1
nombrearchivo
datos:byt e []
:String
anchura()
anchura()
altura ()
altura ()
trazar ()
trazar ()
F i g u r a 7-31 Retraso de clculos costosos usando un patrn Apoderado (diagrama de clase UML).
7.5 Administracin del diseo de objetos
En esta seccin tratamos los asuntos de administracin relacionados con el diseo de objetos.
Hay dos retos administrativos principales durante el diseo de objetos:
Incremento en la complejidad de la comunicacin. La cantidad de participantes involucrados
durante esta fase del desarrollo se incrementa en forma dramtica. Los modelos de diseo de
objetos y el cdigo son el resultado de la colaboracin de muchas personas. La adminis
tracin necesita asegurarse que las decisiones entre los desarrolladores se tomen en forma
consistente con los objetivos del proyecto.
Consistencia con decisiones y documentos anteriores. Los desarrolladores a menudo no
aprecian por completo las consecuencias de las decisiones del anlisis y diseo del sistema
antes del diseo de objetos. Cuando detallan y refinan el modelo de diseo de objetos los
desarrolladores pueden cuestionarse algunas de estas decisiones y volverlas a evaluar a la
luz de las lecciones aprendidas. El reto de la administracin es mantener un registro de
estas decisiones revisadas y asegurarse que todos los documentos reflejen el estado actual
del desarrollo.
www.FreeLibros.org
274 C apitulo 7 D i s e o d e objetos
En la seccin 7.5.1 tratamos el documento de diseo de objetos, su desarrollo y mantenimiento y
su relacin con otros documentos. En la seccin 7.5.2 describimos los papeles asociados con el
diseo de objetos.
7.5.1 Documentacin del diseo de objetos
El diseo de objetos se documenta en el Documento de diseo de objetos (ODD, por sus
siglas en ingls). Describe los compromisos del diseo de objetos tomados por los desarrolladores,
los lincamientos que siguieron para las interfaces de subsistemas, la descomposicin de subsiste
mas en paquetes y clases y las interfaces de clases. El ODD se usa para intercambiar la infor
macin de interfaz entre equipos y como una referencia durante las pruebas. La audiencia del ODD
incluye a los arquitectos del sistema (es decir, los desarrolladores que participaron en el diseo del
sistema), los desarrolladores que implementan cada subsistema y quienes hacen las pruebas.
El ODD permite que los desarrolladores comprendan el subsistema lo bastante bien como
para que puedan usarlo. Adems, una buena especificacin de interfaz permite que otros desarro
lladores implementen las clases en forma concurrente. En general, una especificacin de interfaz
debe satisfacer los siguientes criterios [Liskov, 1986]:
Restrictividad. Una especificacin debe ser lo suficientemente precisa para excluir imple-
mentaciones no deseadas. Las precondiciones y poscondiciones que especifican casos de
frontera son una forma para lograr especificaciones restrictivas.
Generalidad. Sin embargo, una especificacin no debe restringir su implementacin. Esto
permite que los desarrolladores desarrollen y sustituyan implementaciones ms eficientes
o elegantes que tal vez no se pensaron cuando se especific el subsistema.
Claridad. Los desarrolladores deben comprender una especificacin con facilidad y sin
ambigedades. Sin importar cun restrictiva y general sea una especificacin, es intil si es
difcil de comprender. Determinados comportamientos se describen con ms facilidad en
lenguaje natural, mientras que los casos de frontera pueden describirse con restricciones y
excepciones.
Hay tres enfoques principales para documentar el diseo de objetos.
ODD autocontenido generado a partir del modelo. El primer enfoque es documentar el
modelo de diseo de objetos en la misma forma en que documentamos el modelo de anlisis
o el modelo de diseo del sistema: escribimos y mantenemos un modelo UML usando una
herramienta y generamos el documento en forma automtica. Este documento duplicar
cualquier objeto de aplicacin identificado durante el anlisis. Las desventajas de esta
solucin incluyen la redundancia con el Documento de anlisis de requerimientos (RAD,
por sus siglas en ingls) y un alto nivel de esfuerzo para mantener la consistencia con el
RAD. Adems, el ODD duplica informacin en el cdigo fuente y requiere un alto nivel de
esfuerzo cada vez que cambia el cdigo. Esto conduce a menudo a un RAD y a un ODD que
no son precisos o que estn caducos.
El ODD como extensin del RAD. El segundo enfoque es tratar al modelo de diseo de
objetos como una extensin del modelo de anlisis. En otras palabras, se considera al
www.FreeLibros.org
Administracin del d i s e o d e objetos 275
diseo de objetos como el conjunto de objetos de aplicacin aumentado con los objetos de
solucin. La ventaja de esta solucin es que se facilita el mantenimiento de la consistencia
entre el RAD y el ODD a consecuencia de la reduccin de la redundancia. Las desventajas
de esta solucin incluyen la contaminacin del RAD con informacin que es irrelevante
para el cliente y el usuario. Adems, el diseo de objetos rara vez es tan simple como la
identificacin de objetos de solucin adicionales. Con frecuencia los objetos de aplicacin
se cambian o transforman para acomodar objetivos de diseo o asuntos de eficiencia.
ODD incrustado en el cdigo fuente. El tercer enfoque es incrustar el ODD en el cdigo
fuente. Al igual que en el primer enfoque, primero representamos al ODD usando una
herramienta de modelado (vea la figura 7-32). Una vez que el ODD llega a ser estable
usamos la herramienta de modelado para generar los stubs de clase. Describimos cada
interfaz de clase usando comentarios etiquetados que distinguen entre los comentarios del
cdigo fuente y las descripciones de diseo de objetos. Luego podemos generar el ODD
usando una herramienta que analice el cdigo fuente y extraiga la informacin relevante
(por ejemplo, Javadoc [Javadoc, 1999a]). Una vez que el modelo de diseo de objetos est
documentado en el cdigo abandonamos el modelo de diseo de objetos original. La ventaja de
este enfoque es que es ms fcil mantener la consistencia entre el modelo de diseo de objetos
y el cdigo fuente: cuando se hacen cambios al cdigo fuente es necesario actualizar los
comentarios etiquetados y volver generar el ODD. En esta seccin examinamos este enfoque.
El asunto fundamental es el mantenimiento de la consistencia entre dos modelos y el cdigo fuente.
De manera ideal, queremos mantener el modelo de anlisis, el modelo de diseo de objetos y el
cdigo fuente usando una sola herramienta. Entonces tos objetos se describiran una sola vez y la
consistencia entre la documentacin, tos stubs y el cdigo se mantendra en forma automtica.
Sin embargo, al momento presente las herramientas de modelado UML proporcionan
facilidades para la generacin de un documento a partir de un modelo o stubs de clase a partir de
un modelo. La ayuda para la generacin de documentacin puede usarse, por ejemplo, para generar
el RAD a partir del modelo de anlisis (figura 7-32). La ayuda para la generacin de stubs de
clase (llamada ingeniera hacia delante) puede usarse en el enfoque de ODD autocontenido para
generar las interfaces de clase y stubs para cada mtodo.
Algunas herramientas de modelado proporcionan ayudas para la ingeniera inversa, esto
es, volver a crear un modelo UML a partir del cdigo fuente. Tales ayudas son tiles para la
creacin del modelo de objetos a partir de cdigo heredado. Sin embargo, requieren mucho pro
cesamiento manual, ya que la herramienta no puede volver a crear asociaciones bidireccionales
basada slo en los atributos de referencia.
En la actualidad el soporte de las herramientas se queda corto en el mantenimiento de
dependencias de dos vas, en particular entre el modelo de anlisis y el cdigo fuente. Algunas
herramientas, como Rationale Rose [Rational, 1998], tratan de realizar esta funcionalidad incrus
tando informacin acerca de las asociaciones y otras construcciones UML en los comentarios del
cdigo fuente. Aunque esto permita que la herramienta recupere los cambios sintcticos del cdigo
fuente, los desarrolladores todava tienen que actualizar las descripciones del modelo para que
reflejen los cambios. Debido a que los desarrolladores necesitan diferentes herramientas para
cambiar el cdigo fuente y el modelo, por lo general el modelo queda atrasado.
Hasta que las herramientas de modelado proporcionen un mejor soporte para el manteni
miento de la consistencia entre los modelos de objetos y el cdigo fuente, encontramos que la
www.FreeLibros.org
276 C apitulo 7 D i s e o d e objetos
Documento de
a n l i s i s
>
RAD
Diseo del sistema
Descomposicin en
subsistemas
Matas u o bjetivos
de diseo
C
Diseo de objetos
I
Modelo de diseo
de objetos i n i c i a l
C
Generacin de stubs
de cl as e
)
Stubs de cl as e
i n i c i a l e s
C
Implementacin
i
Cdigo comentado
Documentar diseo
de objetos
ODD
Figura 7-32 Enfoque ODD incrustado. Los stubs de clase se generan a partir del modelo de diseo de
objetos. Luego el modelo de diseo de objetos se documenta como comentarios etiquetados en el cdigo
fuente. El modelo de diseo de objetos original se abandona y, en vez de ello, el ODD se genera a partir del
cdigo fuente usando una herramienta como Javadoc (diagrama de actividad UML).
generacin del ODD a partir del cdigo fuente y el enfoque del RAD sobre el dominio de la apli
cacin es lo ms prctico. Reduce la cantidad de informacin redundante que es necesario man
tener y ubica la informacin del diseo de objetos en donde est ms accesible; esto es, en el
cdigo fuente. La consistencia entre el cdigo fuente y el modelo de anlisis todava necesita
mantenerse en forma manual. Sin embargo, esta tarea es ms fcil, debido a que son menos los
cambios del cdigo que tienen un impacto en el modelo de anlisis que los que tienen un
impacto en el modelo de diseo de objetos.
www.FreeLibros.org
La siguiente es una plantilla de ejemplo para un ODD generado:
Administracin del d i s e o d e objetos 277
Documento de diseo de objetos
1. Introduccin
1.1 Intercambios del diseo de objetos
1.2 Lincamientos para la documentacin de interfaces
1.3 Definiciones, siglas y abreviaturas
1.4 Referencias
2. Paquetes
3. Interfaces de clases
Glosario
La primera seccin del ODD es una introduccin del documento. Describe los compromisos gene
rales de los desarrolladores (por ejemplo, comprar o construir, espacio de memoria frente a tiempo
de respuesta), lincamientos y convenciones (por ejemplo, convenciones de denominacin, casos de
frontera, mecanismos para el manejo de excepciones) y un panorama del documento.
Los lincamientos para la documentacin de interfaces y convenciones de codificacin son
el nico factor ms importante que puede mejorar la comunicacin entre desarrolladores durante el
diseo de objetos. Esto incluye una lista de reglas que deben seguir los desarrolladores cuando di
sean y nombran interfaces. A continuacin se dan unos ejemplos de tales convenciones.
A las clases se les nombra con nombres en singular.
A los mtodos se les nombra con frases verbales, y a los campos y parmetros con frases
nominativas.
El estado de error se regresa slo mediante una excepcin y no con un valor de retomo.
Las colecciones y contenedores tienen un mtodo e l e m e n t o s ! ) que regresa una
Enumeration.
Las Enumeration regresadas por los mtodos elementos 0 son robustas ante la eliminacin
de elementos.
Tales convenciones ayudan a que los desarrolladores diseen interfaces de manera consistente,
aunque muchos desarrolladores contribuyan a la especificacin de la interfaz. Adems, al hacer
explcitas esas convenciones antes del diseo de objetos se facilita que los desarrolladores las
sigan. En general, estas convenciones no deben evolucionar durante el proyecto.
La segunda seccin del ODD, Paquetes, describe la descomposicin de subsistemas en
paquetes y la organizacin de archivos del cdigo. Esto incluye un panorama de cada paquete,
sus dependencias con otros paquetes y su uso esperado.
La tercera seccin, Interfaces de clases, describe a las clases y sus interfaces pblicas.
Esto incluye un panorama de cada clase, sus dependencias con otras clases y paquetes, sus atri
butos pblicos, sus operaciones y las excepciones que pueden presentar.
La versin inicial del ODD puede escribirse tan pronto como sea estable la descomposicin
en subsistemas. El ODD se actualiza cada vez que se dispone de nuevas interfaces o se revisan las
existentes. Aunque un subsistema todava no sea funcional, tener una interfaz en cdigo fuente per
www.FreeLibros.org
278 C apitulo 7 D i s e o d e objetos
mite que los desarrolladores codifiquen con mayor facilidad a los subsistemas dependientes y se
comuniquen sin ambigedades. Por lo general, en esta etapa los desarrolladores descubren
parmetros faltantes y nuevos casos de frontera. El desarrollo del ODD es diferente con respecto a
otros documentos, ya que estn involucrados ms participantes y el documento se revisa con
mayor frecuencia. Para acomodar una alta tasa de cambio y muchos desarrolladores, pueden gene
rarse las secciones 2 y 3 con una herramienta a partir de los comentarios del cdigo fuente.
En Java esto puede hacerse con Javadoc, una herramienta que genera pginas Web a partir de
comentarios de cdigo fuente. Los desarrolladores comentan las interfaces y declaraciones de clase
con comentarios etiquetados. Por ejemplo, la figura 7-33 muestra la especificacin de interfaz para
la clase Capa del ejemplo JEWEL. El comentario de encabezado en el archivo describe el propsito
de la clase Capa, sus autores, su versin actual y referencias cruzadas hacia clases relacionadas.
Javadoc utiliza las etiquetas @see para crear referencias cruzadas entre clases. Despus del comen
tario de encabezado estn las declaraciones de clase y de mtodos. Cada comentario de mtodo
contiene una breve descripcin del propsito del mtodo, sus parmetros y el resultado que
regresa. Cuando se usan restricciones tambin se incluyen las precondiciones y poscondiciones en
el encabezado del mtodo. La primera frase del comentario y los comentarios etiquetados son
extrados y formateados por Javadoc. El mantenimiento del material para el ODD con el cdigo
fiiente permite que los desarrolladores mantengan consistencia de manera ms fcil y rpida. Esto
es esencial cuando estn involucradas varias personas.
Para cualquier sistema de tamao til, el ODD representa una gran cantidad de informacin
que puede traducirse en varios cientos o miles de pginas de documentacin. Adems, el ODD
evoluciona con rapidez durante el diseo de objetos y su integracin, conforme los desarrolladores
comprenden mejor las necesidades de los dems subsistemas y encuentran fallas en sus especifica
ciones. Por estas razones, todas las versiones del ODD deben estar disponibles en forma elec
trnica, por ejemplo, como un conjunto de pginas Web. Adems, los diferentes componentes del
ODD deben ser puestos bajo la administracin de la configuracin y sincronizados con sus archi
vos de cdigo fuente correspondientes. En el captulo 10, Administracin de la configuracin del
software, describimos con mayor detalle los problemas de la administracin de la configuracin.
7.5.2 Asignacin de responsabilidades
El diseo de objetos se caracteriza por una gran cantidad de participantes que tienen acceso y
modifican una gran cantidad de informacin. Para asegurar que los cambios a las interfaces se
documenten y comuniquen en forma ordenada, varios papeles colaboran para controlar, comunicar
e implementar los cambios. Estos incluyen a los miembros del equipo de arquitectura que son
responsables del diseo del sistema y de las interfaces de subsistemas, a los coordinadores que
son responsables de la comunicacin entre equipos y a los gerentes de configuracin que son
responsables del seguimiento de los cambios.
A continuacin se presentan los papeles principales del diseo de objetos.
El arquitecto principal desarrolla los lincamientos y convenciones de codificacin antes de
que comience el diseo de objetos. Al igual que muchas convenciones, el conjunto actual
de convenciones no es tan importante como el compromiso de todos los arquitectos y
desarrolladores para usar esas convenciones. El arquitecto principal tambin es responsable
de asegurar la consistencia con las decisiones anteriores documentadas en el SDD y el RAD.
www.FreeLibros.org
Administracin del d i s e o d e objetos 279
/ * La c l a s e Capa e s un contenedor de ElementoCapa, y cada uno
* r e p r es e n t a a un polgono o a una p o l i l i n e a .
* Por ejemplo, JEWEL t i e n e , p o r l o g e n e r a l , una capa de caminos,
* una capa de agua, una capa p o l t i c a y una capa de e m i s i o n e s .
* Oauthor John Smith
* @versin 0.1
* Osee ElementoCapa
* Osee Punto
*/
c l a s s Capa {
/ * Se omiten l a s v a r i a b l e s miembro, l o s c o n s t r u c t o r e s y o t r o s mtodos * /
Enumeration elementos ()
/ * La operacin obtenerContorno regresa una enumeration de puntos
* que r e presentan a l o s elementos de l a s capas en un n i v e l
*
de d e t a l l e e s p e c i f i c a d o . La operacin s l o regresa l o s puntos
*
contenidos dent ro d el r e ct n g u l o cuadroLim.
*
Oparam cuadroLim El rectngulo l i m i t a n t e en coordenadas u n i v e r s a l e s
*
Oparam d e t a l l e El n i v e l de d e t a l l e (nmeros grandes s i g n i f i c a
ms d e t a l l e )
*
Oreturn Una enumeration de puntos en coordenadas u n i v e r s a l e s .
*
Gthrows DetalleCero
*
Qthrows CuadroLimitanteCero
*
@pre d e t a l l e > 0 . 0 and cuadroLim.anchura > 0 . 0 and
cuadroLim.altura > 0.0
*
Qpost f o r a l l ElementoCapa ec en t h i s . e l e m e n t o s () 1
*
f o r a l l Punto p en e c . p u n t o s () \
*
r e s u l t a d o . c o n t i e n e (p)
*/
Enumeration obtenerContorno (Rectangle2D cuadroLim, double d e t a l l e ) {_.};
/ * Se omiten o t r o s mtodos * /
Figura 7-33 Descripcin de interfaz de la clase Capa usando comentarios etiquetados Javadoc (fragmento
Java).
Los coordinadores de arquitectura documentan las interfaces de los sistemas pblicos
de los que son responsables. Esto conduce a un primer borrador del ODD que utilizan
los desarrolladores. Los coordinadores de arquitectura tambin negocian los cambios a las
interfaces pblicas cuando es necesario. A menudo, el asunto no es de consenso sino de
comunicacin: los desarrolladores que dependen de la interfaz pueden agradecer el
cambio si se les notifica primero. Los coordinadores de arquitectura y el arquitecto
principal forman el equipo de arquitectura.
Los diseadores de objetos retinan y detallan la especificacin de la interfaz de la clase o
subsistema que implementan.
El gerente de configuracin de un subsistema libera los cambios a las interfaces y al
ODD una vez que se encuentran disponibles. El gerente de configuracin tambin lleva
cuenta de la relacin entre el cdigo fuente y las revisiones del ODD.
www.FreeLibros.org
280 C apitulo 7 D i s e o d e objetos
Los escritores tcnicos del equipo de documentacin pulen la versin final del ODD.
Ellos aseguran que el documento sea consistente desde un punto de vista estructural y de
contenido. Tambin revisan que se apegue a los lincamientos.
Al igual que en el diseo del sistema, el equipo de arquitectura es la fuerza integradora del diseo
de objetos. El equipo de arquitectura asegura que los cambios sean consistentes con los objetivos
del proyecto. El equipo de documentacin, incluyendo a los escritores tcnicos, asegura que los
cambios sean consistentes con los lincamientos y convenciones.
7.6 Ejercicios
1. Considere las clases P o l i L i n e a , P olgono y Punto de la figura 7-14. Escriba las
siguientes restricciones en OCL:
Un Polgono est compuesto por una secuencia de al menos tres Punto.
Un Polgono est compuesto por una secuencia de Punto que comienza y termina
en el mismo Punto.
Los Punto regresados por el mtodo o b t e n e r P u n t o s (cuadroLim) de un Polgono
estn dentro del rectngulo cuadroLim.
2. Considere las clases Capa, ElementoCapa, P o l i L i n e a y Punto de la figura 7-15. Escriba
en OCL las restricciones que se encuentran a continuacin. Observe que las dos ltimas
restricciones requieren el uso del operador OCL f o r A l l sobre las colecciones.
Un nivel de d e t a l l e no puede ser parte en forma simultnea de los conjuntos
e n N i v e l e s D e t a l l e y n o E n N i v el es D et al l e de un Punto.
Para un nivel de d e t a l l e dado, ElementoCapa.obtenerContornoO slo puede
regresar Punto que contengan el nivel de detalle en su atributo de conjunto
e n N i v e l e s D e t a l l e .
Los conjuntos e n N i v e l e s D e t a l l e y n o E n N i v el es D et al l e slo pueden crecer a
consecuencia de ElementoCapa.obtenerCont ornoO. En otras palabras, una vez
que un nivel de detalle est en alguno de esos conjuntos ya no puede eliminarse.
3. Considere la clase P u n t o de las figuras 7-14 y 7-15. Suponga que estamos evaluando
un diseo alterno en el que un objeto global, llamado T a b l a D e t a l l e , lleva cuenta de
cules Punto han sido incluidos o excluidos de un nivel de detalle dado (en vez de que cada
Punto tenga un atributo e n N i v e l e s D e t a l l e y noEnNivelesDetalle). Esto se realiza
mediante dos asociaciones entre T a b l a D e t a l l e y Punto, las cuales estn indexadas por
n i v e l D e t a l l e (vea la figura 7-34). Escriba restricciones OCL que especifiquen que, a
un n i v e l D e t a l l e dado, una T a b l a D e t a l l e slo puede tener un vnculo hacia un Punto
dado (es decir, una T a b l a D e t a l l e no puede tener en forma simultnea una asociacin
in c l u y e P u n t o y otra ex c luye Punto para un Punto y n i v e l D e t a l l e dados).
4. Usando las transformaciones descritas en las secciones 7.4.8 a 7.4.10, reestructure el
modelo de diseo de objetos de la figura 7-34.
5. El clculo en forma incremental de tos atributos e n N i v e l e s D e t a l l e y noEnNivelesDetalle
(fe la clase Punto que se muestra en la figura 7-14 es una optimizacin. Usando tos trminos
qje presentamos en la seccin 7.4, nombre el tipo de optimizacin que se realiza.
www.FreeLibros.org
Ejercicios 281
TablaDetalle n iv e l D e t a l l e
0. . 1 incluyePunto
0- 1 excluye Punto
*
n iv e l D e t a l l e
Punto
x, y
Figura 7-34 Tabl aDetalle es un objeto global que lleva cuenta de cules Punto han sido incluidos o
excluidos de un n i v e l D e t a l l e especificado. Esta es una alternativa para los conjuntos enNivelesDetalle
y noEnNivelesDetalle que se muestran en la figura 7-14.
6. Discuta las ventajas relativas de la clase Punto del ejercicio 3 contra la clase Punto de la
figura 7-14 con respecto a los puntos de vista de tiempo de respuesta y espacio de memoria.
7. Suponga que est usando un marco de aplicacin en vez del GIS que describimos en la
seccin 7 . 4 . El marco de aplicacin GIS proporciona un mtodo o b t e n e r C o n t o r n o 0 que
regresa una E n u m e r a t i o n de PuntoGiS para representar una P o l i L n e a . El mtodo
d r a w P o l y l i n e () de las JFC toma como parmetros dos arreglos de coordenadas y un
entero que indica la cantidad de puntos de la P o l y l i n e (figura 7 - 1 8 ) . Cul patrn de
diseo usara para resolver esta falta de concordancia de interfaces? Trace un diagrama
de clase UML para ilustrar la solucin.
8. Usted es el desarrollador responsable del mtodo o b t e n e r C o n t o r n o 0 de la clase Capa de
la figura 7 - 1 5 . Encuentra que la versin actual de o b t e n e r C o n t o r n o O no excluye en
forma adecuada a las P o l i L i n e a que consisten de un solo P u n t o (a consecuencia del
recorte). Usted repara el error. A quines debe notificarlo?
9. Usted es el desarrollador responsable del mtodo o b te n er C o n to r n o O de la clase Capa de
la figura 7-15. Cambia el mtodo para representar n i v e l D e t a l l e (que est guardado en
e n N i v e l e s D e t a l l e o no E n N iv el es D et all e) usando un entero positivo en vez de un
nmero de punto flotante. A quines debe notificarlo?
10. Por qu es difcil mantener la consistencia entre el modelo de anlisis y el modelo de
diseo de objetos? Ilustre su punto de vista con un cambio al modelo de diseo de objetos.
Referencias
[Birrer, 1993] E T. Birrer, "Frameworks in the financial engineering domain: An experience report",
ECOOP'93 Proceedings, Lecture Notes in Computer Science, No. 707, 1993.
[Bruegge e t al., 1993] B. Bruegge, T. Gottschalk, y B. Luo, A framework for dynamic program analyzers,
OOPSLA93, (Object-Oriented Programming Systems, Languages, and Applications),
pgs. 65-82, Washington, DC, septiembre de 1993.
[Bruegge y Riedel, 1994] B. Bruegge y E. Riedel. A geographic environmental modeling system: Towards an
object-oriented framework", Proceedings o f the European Conference on
Object-Oriented Programming (ECOOP-94), Bologna, Italia, Lecture Notes in
Computer Science, Springer Verlag, Berln, julio de 1994.
www.FreeLibros.org
[FayadyHamu, 1997]
[Gamma et al., 1994]
[Hom, 1992]
[Huei et al., 1995]
[iContract]
[Javadoc, 1999a]
[Javadoc, 1999b]
[JFC, 1999]
[Johnson e t al., 1988]
[Kompanek et al., 19%]
[Liskov, 1986]
[Meyer, 1997]
[OMG, 1995]
[OMG, 1998]
[Rational, 1998]
[Rumbaugh et al., 1991]
[Schmidt, 1997]
[Szyperski, 1998]
[Weinand et al^ 1988]
[Wilson y Ostrem, 1999]
282
[Bruegge et al., 1995] B. Bruegge, E. Riedel, G. McRae y T. Russel, GEMS: An environmental modeling
system", IEEE Journal f or Compulational Science and Engineering, pgs. 55-68,
septiembre de 1995.
M. E. Fayad y D. S. Hamu, Object-Oriented enterprise frameworks: Make vs. buy
dscisions and guidelines for selection , The Communications ofACM, 1997.
E. Gamma, R. Helm, R. Johnson y J. Vlissides, Design Patterns: Elements ofReusable
Object-Oriented Software. Addison-Wesley, Reading, MA, 1994.
R Hom. Constraint patterns as a basis for object-oriented programming,
Proceedings o f the OOPSLA '92, Vancouver, Canad, 1992.
H Huei, R. Johnson y R. Engel, A framework for network protocol software ,
Proceedings o f OOPSLA, Austin, TX, octubre de 1995.
Java Design by Contract Tool, http://wwwjeliable-svstems.com/tools/iContract/
iCgntract.htm.
Sun Microsystems, Javadoc homepage, http://java.sun.com/products/jdk/javadoc/.
Sun Microsystems, How to write doc comments for Javadoc , http://java.sun.com/
products/jdk/javadoc/wri tingdoccomments.html.
Java Foundation Classes, JDK Documentation. JavaSoft, 1999.
R. Johnson y B. Foote, Designing reusable classes , Journal o f Object-Oriented
Programming, 1988, vol. l,No. 5, pgs. 22-35.
A. Kompanek, A. Houghton, H. Karatassos, A. Wetmore y B. Bruegge, JEWEL: A
dstributed system for emissions modeling", Conference f or Air and Waste
Management, Nashville, TN, junio de 19%.
B. Liskov y J. Guttag, Abstraction and Specification in Program Development.
McGraw-Hill, Nueva York, 1986.
Bertrand Meyer, Object-Oriented Software Construction, 2a ed. Prentice Hall, Upper
SaddleRiver, 1997.
Object Management Group, The Common Object Request Broker: Architecture and
Specification. Wiley, Nueva York, 1995.
Object Management Group, OMG Unified Modeling Language Specification.
Framingham, MA, 1998, http://www.omg.org.
Rational Software Corp., Rationale Rose 98: Using Rose. Cupertino, CA, 1998.
J. Rumbaugh, M. Blaha, W. Premerlani, F. Eddy y W. Lorensen. Object-Oriented
Modeling and Design. Prentice Hall, Englewood Cliffs, NJ, 1991.
D. C. Schmidt, Applying design patterns and frameworks to develop object-oriented
communication software , Handbook o f Programming Languages, Vol. 1, Peter Salus
(ed.), MacMillan Computer, 1997.
G Szyperski, Component Software: Beyond Object-Oriented Programming, ACM
Press, Nueva York, Addison-Wesley, 1998.
A. Weinand, E. Gamma y R. Marty. ET++ - An object-oriented application
framework in C++. In Object-Oriented Programming Systems, Languages, and
Applications Conference Proceedings, San Diego, CA, septiembre de 1988.
G. Wilson y J. Ostrem, WebObjectsDevelopers Guide, Apple, Cupertino, CA, 1998.
C apitulo 7 D i s e o d e objetos
www.FreeLibros.org
PARTE m
Mango del cambio
www.FreeLibros.org
81 Introduccin: un ejemplo del jamn 286
8 2 Un panorama de la fimdammtadn 287
&3 Concepto de la fundamentacin 290
8.3.1 Control de trfico centralizado 290
8.3.2 Definicin de la cuestin: problemas 291
8.3.3 Exploracin del espacio de solucin: propuestas 293
8.3.4 Evaluacin del espacio de solucin: criterios y argumentos 293
8.3.5 Descomposicin del espacio de solucin: resoluciones 295
8.3.6 Implementacin de resoluciones: conceptos de accin 297
8.3.7 Ejemplos de modelos y sistemas basados en problemas 298
8 4 Actividades de la fundamentacin; de los problemas
alas decisiones 300
8.4.1 Diseo del sistema CTC 301
8.4.2 Captura de la fundamentacin en las reuniones 303
8.4.3 Captura asincrona de la fundamentacin 310
8.4.4 Captura de la fundamentacin cuando se tratan los cambios 311
8.4.5 Reconstruccin de las fundamentaciones 315
&5 Administracin de la fundamentacin 317
8.5.1 Documentacin de la fundamentacin 317
8.5.2 Asignacin de responsabilidades 319
8.5.3 Heurstica para la comunicacin acerca de la fundamentacin 321
8.5.4 Modelado y negociacin de problemas 321
8.5.5 Estrategias para la resolucin de conflictos 323
8 6 Ejercidos 324
Referencias 325
284
www.FreeLibros.org
Administracin de
la fundamentacin
L a descripcin [de l a motocicleta] debe cubrir e l "qu de la
motocicleta desde e l punto de vista d e sus componentes, el
"cmo del motor desde e l p unt o d e vista de sus funciones.
S e necesitara con urgencia un anlisis d e "dnde e n fo rm a
d e ilustracin y tambin un anlisis de "por q u " en f o r m a de
principios de ingeniera q ue dan lugar a esta conformacin
particular de partes.
Robert Pirsig, en Zen and the Art ofMotorcycle Maintenance
I - i a fundamentacin es la justificacin de las decisiones. Los modelos que hemos descrito
hasta ahora representan el sistema. Los modelos de fundamentacin representan el razonamiento
que conduce al sistema, incluyendo su funcionalidad y su implementacin. La fundamentacin
es esencial en dos reas: apoya la toma de decisiones y apoya la captura del conocimiento. La
fundamentacin incluye:
Los asuntos que se trataron
Las alternativas que se consideraron
Las decisiones que se tomaron para resolver los asuntos
Los criterios que se usaron para guiar las decisiones
El debate que sostuvieron los desarrolladores para llegar a una decisin
En el contexto de la toma de decisiones, la fundamentacin mejora la calidad de las decisiones
haciendo explcitos los elementos de la decisin, como los criterios, prioridades y argumentos.
En el contexto de la captura del conocimiento, la fundamentacin es la informacin ms impor
tante del proceso de desarrollo cuando se hacen cambios al sistema. Por ejemplo, cuando se
aade funcionalidad al sistema, la fundamentacin permite que los desarrolladores tengan pistas
sobre las decisiones que necesitan revisar y cules alternativas ya se han evaluado. Cuando se
asigna nuevo personal al proyecto, los nuevos desarrolladores pueden familiarizarse con las deci
siones anteriores teniendo acceso a la fundamentacin del sistema.
Por desgracia, la fundamentacin tambin es la informacin ms compleja que generan los
desarrolladores y, por tanto, la ms difcil de mantener y actualizar. Adems, la captura de las
razones representa una inversin inicial con dividendos a largo plazo. En este captulo describimos
el modelado de problemas, una representacin para la fundamentacin del modelado. Luego
describimos las actividades de creacin, mantenimiento y acceso a tos modelos de fimdamentacin.
Concluimos el captulo describiendo los problemas administrativos relacionados con el manejo
de la fundamentacin, como el apoyo para las decisiones y la negociacin.
285
www.FreeLibros.org
286 C apitulo 8 Administracin d e la fundamentacin
Los modelos del sistema son abstracciones de lo que hace ste. El modelo de anlisis de requeri
mientos, incluyendo el modelo de casos de uso, el modelo de clases y los diagramas de secuencia
(vea el captulo 4, Obtencin de requerimientos, y el captulo 5, Anlisis), representa el compor
tamiento del sistema desde el punto de vista del usuario. El modelo de diseo del sistema (vea el
captulo 6, Diseo del sistema) representa al sistema desde el punto de vista de subsistemas,
objetivos de diseo, nodos de hardware, almacenes de datos, control de acceso, etctera. El modelo
de fundamentacin representa la razn por la que un sistema dado est estructurado y se comporta
en la forma en que lo hace.1Por qu debemos capturar el porqu? Considere el siguiente ejemplo:2
8.1 Introduccin: un ejemplo del jamn
Mara le pregunta a Juan, su esposo, por qu siempre corta ambos extremos del jamn antes de ponerlo en
el homo. Juan le responde que est siguiendo la receta de su madre y que siempre ha visto que le corta los
extremos al jamn. En realidad nunca se haba preguntado po r qu lo hace, pero cree que es parte de la
receta. Mara, intrigada por la respuesta, llama a su suegra para saber ms acerca de esta receta de jamn.
Ana, la madre de Juan, le proporciona ms detalles sobre el corte del jamn, pero ninguna justificacin
culinaria: le dice que siempre le ha recortado casi una pulgada a cada extremo, como lo haca su madre,
suponiendo que tiene algo que ver para mejorar el sabor.
Mara contina su investigacin y llama a Luisa, la abuela de Juan. Al principio Luisa se sorprende
mucho: ella no le corta los extremos al jamn y no puede imaginarse e n qu forma esta prctica
mejorara el sabor. Despus de discutirlo mucho, Luisa recuerda al fin que, cuando Ana era una niita,
acostumbraba cocinar en una estufa ms angosta a la que no le caban los trozos de carne de tamao
estndar. Para resolver este problema acostumbraba cortar casi una pulgada de cada extremo del jamn.
Dej de hacerlo cuando tuvo una estufa ms ancha.
Los desarrolladores y los cocineros son buenos para la diseminacin de nuevas prcticas y tcni
cas. Sin embargo, por lo general se pierden las razones que hay tras esas prcticas, dificultando
su mejora conforme cambia el contexto de aplicacin. El error Y2K es un ejemplo de esto: en los
aos sesenta y setenta los costos de la memoria hicieron que los desarrolladores representaran la
informacin en la forma ms compacta posible. Por esta razn, con frecuencia se representaba
al ao con dos caracteres en vez de cuatro (por ejemplo, 1998 se representaba como 98).
La suposicin de los desarrolladores fue que el software slo se utilizara durante unos cuantos
aos. Las operaciones aritmticas sobre los aos asuman que todas las fechas eran del mismo
siglo. Por desgracia para el software que realizaba esta aritmtica con aos de dos dgitos, esta
abreviatura dej de funcionar al final del siglo. Por ejemplo, al calcular la edad de una persona
nacida en 1949, en 2001 se le considera con una edad de 01 - 49 = -48 aos. La prctica de
codificar aos con dos dgitos se hizo estndar, aunque los precios de la memoria cayeran en
1. Desde una perspectiva histrica, gran parte de la investigacin acerca de la fundamentacin se ha enfocado en el diseo
y, por tanto, en la literatura se usa con ms frecuencia el trmino fundamentacin del diseo. En vez de ello, usamos el
trmino fundamentacin para evitar confusiones y enfatizar que los modelos de fundamentacin pueden usarse durante
todas las fases del desarrollo.
2. Ejemplo inverosmil adaptado para este captulo, se desconoce al autor original.
www.FreeLibros.org
Un panorama d e la fundamentacin 287
forma considerable y se aproximara el ao 2000. Adems, los nuevos sistemas necesitaban ser
compatibles hacia atrs con los antiguos. Por estas razones, muchos sistemas distribuidos en
fechas tan recientes como 1990 todava tenan errores Y2K.
Los modelos de fundamentacin permiten que los desarrolladores y los cocineros aborden el
cambio, como estufes ms grandes o memorias ms baratas. La captura de la justificacin de las deci
siones modela en forma efectiva las dependencias entre las suposiciones iniciales y las decisiones.
Cuando cambian las suposiciones se pueden revisar las decisiones. En este captulo describimos
tcnicas para capturar, mantener y te na acceso a los modelos de fundamentacin. En este captulo:
Proporcionamos un panorama general de las actividades relacionadas con los modelos de
fundamentacin (seccin 8.2).
Describimos el modelado de problemas, la tcnica que usamos para representar la fun
damentacin (seccin 8.3).
Detallamos las actividades necesarias para la creacin y acceso a los modelos de fun
damentacin (seccin 8.4).
Describimos los problemas administrativos relacionados con el mantenimiento de los
modelos de fundamentacin (seccin 8.5).
Primero definamos el concepto de modelo de fundamentacin.
8.2 Un panorama de la fundamentacin
Una fundamentacin es la motivacin que hay detrs de una decisin. De manera ms especfica,
incluye:
Problemas. A cada decisin corresponde un problema que necesita ser resuelto para que
contine el desarrollo. Una parte importante de la fundamentacin es una descripcin del
problema especfico que se est resolviendo. Los problemas por lo general se formulan
como preguntas: Cmo debe cocinarse un jamn? Cmo deben representarse los aos?
Alternativas. Las alternativas son soluciones posibles que pueden resolver el problema
que se est considerando. Esto incluye alternativas que se exploraron y se descartaron
porque no satisfacan uno o ms criterios. Por ejemplo, comprar una estufa ms grande
cuesta demasiado; la representacin de aos con un nmero binario de 16 bits requiere
demasiado procesamiento.
Criterios. Los criterios son cualidades deseables que debe satisfacer la solucin seleccionada.
Por ejemplo, una receta para jamn debe ser realizable en equipo de cocina estndar. En los
aos sesenta los desarrolladores minimizaron el espacio de memoria. Durante el anlisis de
requerimientos, los criterios son requerimientos no funcionales y restricciones (por ejemplo,
utililidad, cantidad de errores de entrada al da). Durante el diseo del sistema, los criterios
son objetivos de diseo (por ejemplo, confiabilidad, tiempo de respuesta). Durante la
administracin del proyecto, los criterios son los objetivos y compromisos de administracin
(por ejemplo, entrega a tiempo frente a calidad).
Argumentacin. Las decisiones al cocinar y al desarrollar software no son algortmicas. Los
cocineros y los desarrolladores descubra problemas, prueban soluciones y argumentan sobre
sus beneficios relativos. Slo hasta despus de muchas discusiones se llega a un consenso
o se impone una decisin. Esta argumentacin se da sobre todos los aspectos del proceso de
decisin, incluyendo criterios, justificaciones, alternativas exploradas y compromisos.
www.FreeLibros.org
288 C apitulo 8 Administracin d e la fundamentacin
Decisiones. Una decisin es la resolucin de un problema que representa la alternativa selec
cionada de acuerdo al criterio que se us para la evaluacin y justificacin de la seleccin. El
corte de una pulgada a cada extremo del jamn y la representacin de los aos con dos dgitos
son decisiones. Las decisiones ya estn capturadas en los modelos del sistema que desarrolla
mos durante el anlisis de requerimientos y el diseo del sistema. Adems, muchas decisiones
toman sin explorar alternativas o sin examinar tos problemas correspondientes.
Tomamos decisiones a todo lo largo del proceso de desarrollo y, por tanto, podemos usar los
modelos de fundamentacin durante cualquier actividad de desarrollo:
Durante la obtencin de requerimientos y el anlisis de requerimientos tomamos decisiones
acerca de la funcionalidad del sistema, a menudo junto con el cliente. Las decisiones estn
motivadas por las necesidades del usuario o de la organizacin. La justificacin de esas
decisiones es til para la creacin de casos de prueba durante la integracin del sistema y
la aceptacin del usuario.
Durante el diseo del sistema seleccionamos objetivos de diseo y diseamos la descom
posicin en subsistemas. Por ejemplo, cuando identificamos objetivos de diseo con fre
cuencia basamos nuestra decisin en requerimientos no funcionales. La captura de la firn-
damentacin de estas decisiones nos permite trazar las dependencias entre los objetivos
de diseo y los requerimientos no funcionales. Esto nos permite revisar los objetivos de
diseo cuando cambian los requerimientos.
Durante la administracin del proyecto hacemos suposiciones acerca de los riesgos relativos
presentes en el proceso de desarrollo. Es ms probable que comencemos las tareas de
desarrollo relacionadas con un componente recin liberado en vez de hacerlo con uno maduro.
La captura de la justificacin que hay tras los riesgos y planes de reserva nos permite un
mejor manejo cuando esos riesgos se convierten en problemas reales.
Durante la integracin y las pruebas descubrimos faltas de concordancia entre los sub
sistemas. Al tener acceso a la fundamentacin de esos subsistemas a menudo podemos
determinar cul cambio o suposicin introdujo la falta de concordancia y corregir la situacin
con un impacto mnimo en el resto del sistema.
El mantenimiento de la fundamentacin es una inversin de recursos para manejar el cambio:
capturamos informacin ahora para facilitar despus la revisin de las decisiones cuando
suceden los cambios. La cantidad de recursos que estemos dispuestos a invertir depende del tipo
de proyecto.
Si estamos construyendo un sistema complejo para un solo cliente es muy probable que
revisemos y mejoremos el sistema varias veces durante un largo tiempo. En este caso puede ser
que el mismo cliente requiera que se registre la fundamentacin. Si se est construyendo un pro
totipo conceptual para un nuevo producto, es muy probable que se deseche el prototipo una vez
que se aprueba y comienza a realizar el desarrollo del producto. Si desviamos recursos de desa
rrollo para registrar la fundamentacin corremos el riesgo de retrasar la demostracin del pro
totipo y enfrentar la cancelacin del proyecto. En este caso no registramos la fundamentacin,
debido a que el beneficio de esta inversin sera mnimo.
www.FreeLibros.org
Un panorama d e la fundamentacin 2 8 9
En trminos ms generales, distinguimos cuatro niveles de captura de la fundamentacin:
C ap t ur a de fun da m e nt a c i n no explcita. Los recursos se gastan slo en el desarrollo. La
documentacin se enfoca slo en los modelos del sistema. La informacin de la fundamen
tacin est presente nicamente en la memoria de los desarrolladores y en los registros de
comunicacin, como los mensajes de correo electrnico, memorandos y faxes.
R e c o n s t r u c c i n de l a f u n d a m e n t a c i n . Se gastan recursos en la recuperacin de la fun
damentacin del diseo durante el esfuerzo de documentacin. El criterio de diseo y la
motivacin que est detrs de las decisiones arquitectnicas principales se integra con los
modelos del sistema correspondientes. Las alternativas y argumentaciones descartadas no
se capturan en forma explcita.
Captura de f un da m e nt a c i n . Se hace un gran esfuerzo en la captura de la fundamentacin
conforme se toman las decisiones. La informacin sobre la fundamentacin se documenta
como un modelo separado y con referencias cruzadas hacia los dems documentos. Por
ejemplo, la motivacin para el modelo de anlisis de requerimientos se captura en el Docu
mento de fundamentacin del anlisis de requerimientos (RARD, por sus siglas en ingls),
complementando al Documento de anlisis de requerimientos (RAD, por sus siglas en
ingls). En forma similar, la motivacin para el diseo del sistema se captura en el Docu
mento de fundamentacin del diseo del sistema (SDRD, por sus siglas en ingls).
I n t e g r a c i n de l a f u n d a m e n t a c i n . El modelo de fundamentacin llega a ser el modelo
central que usan los desarrolladores. La fundamentacin producida durante diferentes
fases se integra en una base de informacin viva y consultable. Los cambios al sistema de
informacin suceden primero en la base de informacin como una discusin seguida por
una o ms decisiones. Los modelos del sistema representan la suma de las decisiones cap
turadas en la base de informacin.
En los dos primeros niveles de captura de la fundamentacin, Captura de fundamentacin
no explcita y Reconstruccin de la fundamentacin, nos apoyamos en la memoria de los desa
rrolladores para capturar y almacenar la fundamentacin. En los dos ltimos niveles. Captura de
fundamentacin e Integracin de la fundamentacin, invertimos recursos para la construccin
de una memoria corporativa que es independiente de los desarrolladores. El compromiso entre
estos dos extremos es la inversin de recursos durante las primeras fases del desarrollo. En este
captulo nos enfocamos en los dos ltimos niveles de captura de fundamentacin.
Adems de los beneficios a largo plazo, el mantenimiento de la fundamentacin tambin
tiene efectos positivos a corto plazo: hacer explcita la fundamentacin de una decisin nos per
mite comprender mejor el criterio que siguen los dems. Tambin nos motiva a tomar decisiones
racionales en vez de emocionales. Cuando menos, nos ayuda a distinguir cules decisiones se
evaluaron con cuidado y cules se tomaron bajo presin y a la carrera.
Los modelos de fundamentacin representan un cuerpo de informacin ms grande y que
cambia con mayor rapidez que los modelos del sistema. Esto introduce problemas relacionados
con la complejidad y el cambio, como hemos visto antes. Por tanto, podemos aplicar las mismas
tcnicas de modelado para manejar la complejidad y el cambio. Luego describimos la manera en
que representamos las razones con modelos de asuntos.
www.FreeLibros.org
2 9 0 C apitulo 8 Administracin d e la fundamentacin
En esta seccin describimos los modelos de problemas, la representacin que usamos para la fun-
damentacin. El modelado de problemas se basa en la suposicin de que el diseo sucede como
una actividad dialctica durante la cual los desarrolladores resuelven un problema argumentando
las ventajas y desventajas de diferentes alternativas. Luego podemos capturar la fundamentacin
modelando el argumento que conduce a las decisiones de desarrollo. Representamos:
Una pregunta o problema de diseo como un nodo de problema (seccin 8.3.2).
Soluciones alternas al problema como nodos de propuesta (seccin 8.3.3).
Ventajas y desventajas de diferentes alternativas usando nodos de argumento (seccin 8.3.4).
Decisiones que tomamos para resolver un problema como un nodo de resolucin (seccin
8.3.5).
En la seccin 8.3.7 analizamos varias representaciones de problemas que tienen trascendencia
histrica. Pero primero hablemos del control de trfico centralizado, el dominio para los ejem
plos de este captulo.
8.3.1 C ontrol de trfico centralizado
Los sistemas de control de trfico centralizados (CTC, por sus siglas en ingls) permiten que
tos despachadores de trenes supervisen y dirijan los trenes desde lejos. Las vas de tren estn divi
didas en circuitos de va contiguos que representan la unidad ms pequea que puede supervisar un
despachador. Las seales y otros dispositivos aseguran que, a lo sumo, slo un tren pueda ocupar
un circuito de va en cualquier momento. Cuando un tren entra a un circuito de va, un sensor
detecta su presencia y aparece la identificacin del tren en el monitor del despachador. El
despachador opera cambios de va para dirigir los trenes. El sistema permite que un despachador
planee una ruta completa alineando una secuencia de cambios de va en la posicin correspondiente.
Al conjunto de circuitos de va controlados por un solo despachador se le llama seccin de va.
La figura 8-1 es una versin simplificada de una interfaz de usuario de un CTC. Los circuitos de
va estn representados por lneas. Los cambios de va estn representados por la interseccin de tres
lneas. Las seales estn representadas por iconos que indican si una seal est abierta (es decir, per
mitiendo el paso del tren) o cerrada (es decir, impidiendo el paso del tren). Los cambios de va, trenes
y seales estn numerados para su referencia en los comandos emitidos por el despachador. En la
figura 8-1 las seales estn numeradas S i a S 4 , tos cambios de va estn numerados c v i y C V2, y los
trenes estn numerados T 1 2 9 1 y T 1 5 1 5 . Las computadoras que estn cerca de la va, llamadas esta
ciones del camino, aseguran que el estado de un grupo de cambios de va y seales no presenten un
riesgo para la seguridad. Por ejemplo, una estacin del camino que controla los dispositivos de la
figura 8-1 asegura que las seales opuestas s i y S 2 no puedan estar abiertas al mismo tiempo. Las es
taciones del camino estn diseadas de tal forma que el estado del dispositivo que controlan sea se
guro en caso de falla. A tal equipo se le llama a prueba de fallas. Los sistemas CTC se comunican con
las estaciones del camino para modificar el estado de las vas cuando despachan trenes. Los sistemas
CTC son, por lo general, altamente funcionales, pero no necesitan ser a prueba de fallas, tomando en
cuenta que la seguridad de los trenes est garantizada por las estaciones del camino.
En los aos sesenta los sistemas CTC teman un tablero de desplegado personalizado que
contema focos que mostraban el estado de los circuitos de va. Los cambios de va y seales
estaban controlados por medio de un tablero de entrada con muchos botones oprimi bles e inte-
8.3 C onceptos de la fundamentacin
www.FreeLibros.org
C oncept os d e la fundamentacin 291
Trenes
Fi gur a 8-1 Un ejemplo de un desplegado de seccin de v a CTC (simplificado para este ejemplo).
rruptores de dos posiciones. En los setenta los CRT reemplazaron a los tableros personalizados y
proporcionaron a los despachadores informacin ms detallada en menos espacio. En fechas ms
recientes se han introducido los sistemas de control de trfico basados en estaciones de trabajo,
proporcionando la posibilidad de una interfaz de usuario ms refinada para los despachadores y
la capacidad para distribuir el procesamiento entre varias computadoras.
Los sistemas de control de trfico centralizados necesitan tener una disponibilidad muy alta.
Aunque los sistemas de control de trfico no son esenciales para la vida (la seguridad est asegurada
por las estaciones del camino), una falla del sistema puede dar lugar a una gran desorganizacin del
trfico en las vas controladas, dando como resultado prdidas econmicas considerables. En
consecuencia, la transicin hacia nuevas tecnologas, como pasar de una mainffame a un ambiente
de estaciones de trabajo o de una interfaz textual a una interfaz de usuario grfica, necesita eva
luarse con cuidado y hacerse mucho ms despacio que para otros sistemas. El control de trfico
es un dominio en el cual la captura de la fundamentacin es esencial y, por tanto, sirve como
base para los ejemplos de este captulo.
Tratemos a continuacin la manera en que se usan los modelos de problemas para repre
sentar la fundamentacin.
8.3.2 Definicin de la cuestin: problemas
Un p r o b l e m a representa una dificultad concreta, como un requerimiento, un diseo o un
inconveniente administrativo. Qu tan pronto se le debe notificar a un despachador e l retraso
de un tren? Cmo deben guardarse los datos persistentes? Cul tecnologa presenta el mayor
riesgo? Con mucha frecuencia los problemas representan dificultades que no tienen una solu
cin correcta nica y que no pueden resolverse de manera algortmica. Los problemas se resuel
ven, por lo general, mediante discusiones y negociaciones.
En UML representamos a los problemas con instancias de la clase Problema. Los Problema
tienen un atributo tema que resume al problema, un atributo descripcin que describe el problema
con mayor detalle y hace referencia a material de apoyo, y un atributo estado que indica si el pro
blema ha sido resuelto o no. El estado de un problema es abierto si no se ha resuelto y c errado en
caso contrario. Un problema cerrado puede volverse a abrir si se necesita revisarlo. Por convencin
damos un nombre corto a cada problema, como r e t r a s o t r e n ? : Problema para hacer referencia a
l. Por ejemplo, la figura 8-2 muestra los tres problemas que dimos como ejemplo en el prrafo anterior.
www.FreeLibros.org
292 C apitulo 8 Administracin d e la fundamentacin
.almacenamiento?: Problema
r i e s g o t e c n o l o g a ? : Problema
retraso t r e n ? ; Problema Qu tan pronto debe notificarse al despachador el retraso de un tren?
a l m a c e n a mie n t o ? Cmo deben guardarse los datos persistentes?
; Probl ema
r i e s g o - t e c n g l og i a ? Qu tecnologa presenta el mayor riesgo?
; Probl e ma
F i g u r a 8-2 Un ejemplo de problemas (diagrama de objetos UML).
Los problemas que se plantean durante el desarrollo a menudo estn relacionados. Por
ejemplo, los problemas pueden descomponerse en subproblemas ms pequeos. Cules son
los requerimientos de tiempo de respuesta en el sistema de control de trfico? incluye Qu tan
pronto se debe notificar a un despachador el retraso de un tren? El desarrollo del sistema com
pleto puede formularse como un solo problema: qu sistema de control de trfico debemos cons
truir?, que puede descomponerse en varios subproblemas. Los problemas tambin pueden plantearse
por decisiones tomadas en otros problemas. Por ejemplo, la decisin de cachear datos en un
nodo local plantea el problema del mantenimiento de la consistencia entre las copias de los datos
centrales y los cacheados. A tales problemas se les llama problemas consecuentes.
Considere el sistema de control de trfico centralizado que describimos antes. Supongamos
que estamos examinando la transicin de un sistema mainframe a un sistema basado en computado
ras de escritorio. En el sistema futuro cada despachador tendr una mquina de escritorio indivi
dual que se comunica con un servidor, el cual administra la comunicacin con los dispositivos de
campo. Durante la discusin del diseo se plantean dos problemas de interfaz: cmo deben darse
los comandos al sistema? y cmo deben mostrarse los circuitos de va ante el despachador? La
figura 8-3 muestra estos dos problemas representados con un diagrama de objetos UML.
Un problema slo debe enfocarse en la dificultad y no en las alternativas posibles para resol
verlo. Una convencin que favorece esto es redactar los problemas como preguntas. Para reforzar
este concepto, tambin incluimos signos de interrogacin en el nombre del problema. La informacin
acerca de las alternativas posibles para resolver un problema se capturan mediante propuestas, las
cuales trataremos a continuacin.
..des p leg a d o ?; P roblema .e n t r a d a ? ; Problema
e n t r a d a? ; Probl ema Cmo deben darse los comandos al sistema?
desp l e gadQ? ; P roblema Cmo deben mostrarse los circuitos de va ante el despachador?
Figura 8 - 3 P r o b l e m a s d e i n t e r f a z C T C ( d i a g r a m a d e o b j e t o s U M L ) .
www.FreeLibros.org
C oncept os d e la fundamentacin 293
8.3.3 Exploracin del espacio de solucin: propuestas
Una propuesta representa una respuesta candidata para un problema. No es necesario
notificarle al despachador es una propuesta para el asunto qu tan pronto se le debe notificar a
un despachador el retraso de un tren? Una propuesta no necesita ser una respuesta vlida o
buena para el asunto que trata de resolver. Esto permite que los desarrolladores exploren en
forma amplia el espacio de solucin. Con frecuencia, en la lluvia de ideas la propuesta de una
solucin imperfecta hace que se generen nuevas ideas y soluciones que, tal vez, de otra forma no
se hubieran pensado. Pueden traslaparse diferentes propuestas que tratan el mismo tema. Por
ejemplo, las propuestas sobre el tema cmo guardar los datos persistentes? podran incluir
Usar una base de datos relacional y Usar una base de datos relacional para los datos estructu
rados y archivos planos para las imgenes. Las propuestas se usan para representar la solucin
al problema y tambin para las alternativas descartadas.
Una propuesta puede tratar uno o varios problemas. Por ejemplo, Usar una arquitectura
modelo/vista/despachador puede tratar Cmo separar los objetos de interfaz de los objetos de
entidad? y Cmo mantener consistencia a travs de varias vistas? Las propuestas tambin
pueden activar nuevos problemas. Por ejemplo, en respuesta al problema Cmo minimizar las
fugas de memoria?, la propuesta Usar recoleccin de basura puede activar el problema con
secuente Cmo minimizar la degradacin del tiempo de respuesta debida a la administracin
de la memoria? Cuando tratamos un problema necesitamos aseguramos que tambin se traten
todos los problemas consecuentes asociados con las propuestas seleccionadas.
En UML representamos las propuestas como instancias de la clase Propuesta. Las Pro
puesta, al igual que los Problema, tienen un atributo tema y otro de sc r i p cin . Por conven
cin, a las propuestas les damos un nombre corto y las redactamos como enunciados que
comienzan con un verbo. Las Propuesta estn relacionadas con los Problema que resuelven
con una asociacin r e s u e l t o por. Los Problema estn relacionados con las Propuesta que
activan con una asociacin p l a nte a .
Cuando se discuten los problemas de interfaz, en nuestro sistema de control de trfico cen
tralizado consideramos dos propuestas, una interfaz apuntarYClic, que permite que los circuitos
de vas se representen en forma grfica, y una interfaz basadaEnTexto en la cual las secciones de
va se representan con caracteres especiales. La propuesta basadaEnTexto plantea un problema
consecuente respecto a cul emulacin de terminal usar. La figura 8-4 muestra la adicin de las dos
propuestas y el problema consecuente.
Una propuesta slo debe contener informacin relacionada con la solucin, no sobre su
valor, ventajas y desventajas. Los criterios y argumentos que describimos a continuacin se usan
para este propsito.
8.3.4 Evaluacin del espacio de solucin: criterios y argumentos
Un criterio es una cualidad deseable que deben tener las propuestas que resuelven un pro
blema especfico. Los objetivos de diseo, como el tiempo de respuesta o la confiabilidad, son cri
terios usados para resolver problemas de diseo. Los objetivos de administracin, como el costo
mnimo o riesgo mnimo, son criterios que se usan en la solucin de problemas administrativos. Un
conjunto de criterios indica las dimensiones en que necesita valorarse cada propuesta. Se dice que
una propuesta que satisface un criterio se valora positivamente en ese criterio. En forma similar,
se dice que una propuesta que no satisface un criterio se valora negativamente en ese criterio. Los
criterios pueden compartirse entre varios problemas.
www.FreeLibros.org
294 C apitulo 8 Administracin d e la fundamentacin
a p u n t a r Y C l i c : P r o p u e s t a La interfaz para el despachador puede realizarse con una interfaz de
apuntar y hacer clic.
ba sa d a En T ax t o j Pr Qpu o g . t a La pantalla usada por el despachador puede ser de slo texto con
caracteres grficos para representar los segmentos de va.
t e r m i n a l ? ; P r o b l e m a Cul emulacin de terminal deber usarse para el desplegado?
F i g u r a 8-4 Un ejemplo de propuestas y problema consecuente (diagrama de objetos UML). Las P r o p u e s t a
y el P r o b l e m a consecuente se resaltan en negritas.
En UML representamos los criterios como instancias de la clase C r i t e r i o . Un C r i t e r i o ,
al igual que P r o b l e m a y P r o p u e s t a , tiene un atributo t e m a y uno d e s c r i p c i n . El atributo
t e m a siempre se redacta en forma positiva; esto es, deber establecer la cualidad que debe maximi-
zar la propuesta. Rpido, responsivo y barato son buenos atributos de t e m a . Costo y tiempo no
lo son. Un C r i t e r i o se asocia con P r o p u e s t a mediante asociaciones v a l o r a c i n . Las asocia
ciones valoracin tienen un atributo de valor que indica si la valoracin es positiva o negativa, y
un atributo de peso que indica la fuerza de la propuesta con respecto al criterio. Por convencin,
aadimos el signo $ al final del nombre del criterio para enfatizar que los criterios son medi
ciones de bondad y no deben confundirse con argumentos o asuntos.
Mientras evaluamos la interfaz de nuestro sistema de control de trfico centralizado identifi
camos dos criterios: disponibilidad, que representa al requerimiento no funcional de maximizar el
tiempo en que est disponible el sistema, y usabilidad, que representa (en este caso) el requeri
miento no funcional de minimizar el tiempo para la emisin de comandos vlidos (vea la figura
8-5). Estos criterios estn tomados a partir de los requerimientos no funcionales del sistema.
Valoramos ambas propuestas segn estos criterios. Decidimos que la interfaz de apuntar y hacer
clic tiene una valoracin negativa en el criterio de disponibilidad, ya que al ser ms compleja que la
interfaz de texto presenta una mayor probabilidad de errores. Sin embargo, decidimos que la inter
faz de apuntar y hacer clic es ms utilizable que la interfaz textual, debido a una seleccin de
comandos y entrada de datos ms fciles. Observe que el conjunto de asociaciones que vinculan
las propuestas y el criterio en la figura 8-5 representan un compromiso: cada propuesta maximiza
uno de los dos criterios, y el asunto es decidir cul criterio tiene una prioridad ms alta.
Un argumento es una opinin expresada por una persona que est de acuerdo o en desa
cuerdo con una propuesta, un criterio o una valoracin. Los argumentos capturan el debate que
lleva a la exploracin del espacio de solucin, define la bondad de las medidas y, a final de cuen-
www.FreeLibros.org
C oncept os d e la fundamentacin 295
^ gpoxTibil .i4^ $j_Cri_t^.ri o El sistema de control de trfico debe tener una disponibilidad de 99%
por lo menos.
us.ab i l i d a d $ ; iC r i t e r i o El tiempo para dar comandos debe ser inferior a 2 segundos.
Fi gur a 8-5 Un ejemplo de criterios y valoraciones (diagrama de objetos UML). Los C r i t e r i o se resaltan
en negritas. Una valoracin negativa est indicada por una asociacin etiquetada f a l l a , mientras que las
valoraciones positivas estn indicadas con una asociacin etiquetada s a t i s f a c e .
tas, conduce a una decisin. En UML representamos los argumentos con instancias de la clase
A r g u m e n to , que incluye los atributos t e m a y d e s c r i p c i n . Los argumentos se relacionan con la
entidad que deliberan con una asociacin a p o y a d o p o r o s e o p o n e a.
Mientras se discute la prioridad relativa de los criterios de disponibilidad y usabilidad,
decidimos que cualquier beneficio del aspecto de usabilidad sera desplazado por una disponibili
dad reducida del sistema. Capturamos esto creando un argumento que apoya el criterio de dis
ponibilidad (vea la figura 8-6). Observe que un argumento puede apoyar a un nodo y oponerse a
otro de manera simultnea.
Cuando seleccionamos criterios, valoramos propuestas y argumentamos acerca de ellas,
evaluamos el espacio de diseo. El siguiente paso es usar esta evaluacin para llegar al cierre y
solucionar el problema.
8.3.5 Descomposicin del espacio de solucin: resoluciones
Una resolucin representa la alternativa seleccionada para cerrar un problema. Una resolu
cin representa una decisin que tiene impacto en uno de los modelos del sistema o en el modelo
de tarea. Una resolucin puede basarse en varias propuestas y resume la justificacin que conduce
a la decisin. En UML representamos las resoluciones con una instancia de la clase R e s o l u
c i n , que incluye atributos de te m a , d e s c r i p c i n , j u s t i f i c a c i n y e s t a d o . Una R e s o l u c i n
puede relacionarse con P r o p u e s t a s mediante asociaciones b a s a d a E n . Una R e s o l u c i n tiene
exactamente una asociacin r e s u e l v e hacia el P r o b l e m a que resuelve.
El atributo e s t a d o de una R e s o l u c i n indica si la R e s o l u c i n todava es relevante o no.
Cuando la R e s o l u c i n se vincula con su problema correspondiente su estado se establece como
www.FreeLibros.org
296 C apitulo 8 Administracin d e la fundamentacin
F g i m e r o L a D i s p o n i b i 1 i d a d ! Es mucho ms complejo implementar las interfaces de apuntar y
.A r g u m e n t o hacer clic que las interfaces basadas en texto. Tambin son ms
difciles de probar, ya que la cantidad de acciones disponibles
ante el despachador es mucho mayor. La interfaz de apuntar y
hacer clic tiene el riesgo de introducir errores fatales en el sistema
que anularan cualquier beneficio de usabilidad que pudiera
proporcionar la interfaz.
F i g u r a 8-6 Un ejemplo de argumento (diagrama de objetos UML). El Argumento se resalta en negritas.
a c t i v o , y el e s t a d o del Problema correspondiente se cambia a c e r r a d o . Si se vuelve a abrir
el Problema, el e s t a d o del Problema se cambia a a b i e r t o y el e s t a d o de la Re s o l u c i n se
cambia a o b s o l e t o . Un Problema cerrado tiene exactamente una Re s o lu c i n activa y cual
quier cantidad de Re s o lu c i n obsoletas.
Para finalizar el problema de la interfaz de control de trfico, seleccionamos un desplegado
basado en texto y una interfaz de teclado como base para la interfaz de usuario. Esta decisin
est motivada por tratar al criterio de disponibilidad como ms importante que el de usabilidad:
una interfaz basada en texto dar como resultado cdigo de interfaz de usuario ms simple y ms
confiable a costa de un poco de usabilidad. El despachador no podr ver tantos datos al mismo
tiempo y no podr dar comandos tan rpido como sera con una interfaz de apuntar y hacer clic.
Creamos un nodo de resolucin que contiene la justificacin de la decisin y creamos vnculos
entre la resolucin y los dos problemas que resuelve (vea la figura 8-7).
La adicin de una resolucin a un modelo de problema concluye, efectivamente, la discu
sin del problema correspondiente. Ya que el desarrollo es iterativo, a veces es necesario volver
a abrir un problema y volver a evaluar las alternativas competitivas. Sin embargo, al final del
desarrollo la mayora de los problemas deben estar cerrados, o listados en la documentacin
como problemas conocidos.
www.FreeLibros.org
C oncept os d e la fundamentacin 297
b a sadaEnT e xt o ytq c l a d o ; Rq 3 P.i u c j 6n Seleccionamos un desplegado basado en texto y una entrada
por teclado para la interfaz de usuario de control de trafico.
La emulacin de terminal debe proporcionar caracteres que
permitan el trazado de circuitos de va en modo texto.
Esta decisin est motivada por la relativa simplicidad y
confiabilidad de las interfaces basadas en texto, comparadas
con las interfaces de apuntar y hacer clic. Estamos conscientes
de que esta decisin tiene el costo de menos usabilidad, ya que
se pueden presentar menos datos al despachador y la emisin
de comandos ser ms lenta y ms propensa a errores.
Fi gur a 8-7 Un ejemplo de un problema cerrado (diagrama de objetos UML). La R e s o l u c i n se resalta
en negritas.
8.3.6 Implementacin de resoluciones: conceptos de accin
Una resolucin se implementa desde el punto de vista de uno o ms conceptos de accin.
A una persona se le asigna un concepto de accin, el cual es una tarea con una fecha de termina
cin. Los conceptos de accin no son parte de la fundamentacin por s mismos, sino que son
parte del modelo de tarea (vea el captulo 11, Administracin del proyecto). Los conceptos de
accin se describen aqu debido a que estn muy integrados con el modelo de problemas.
En UML representamos un concepto de accin con una instancia de la clase C o n c e p t o A c c i n .
La clase C o n c e p t o A c c i n tiene los atributos t e m a , d e s c r i p c i n , p r o p i e t a r i o , f e c h a T e r m i -
n a c i n y e s t a d o . El p r o p i e t a r i o es la persona responsable de la terminacin del C o n c e p t o -
A c c i n . El e s t a d o de un C o n c e p t o A c c i n puede ser p o r H a c e r , n o F a c t i b l e , e n P r o c e s o o r e a
l i z a d o . Una R e s o l u c i n se asocia con los C o n c e p t o A c c i n con un vnculo e s i m p l e m e n t a d a
p o r . La figura 8-8 representa tos C o n c e p t o A c c i n generados despus de la resolucin de la figura 8-7.
www.FreeLibros.org
298 C apitulo 8 Administracin d e la fundamentacin
i c fcm l l z i EaBBifiaDCflgfcQlkfig l P Para Alicia. Actualizar el SDD para que refleje la resolucin
b a s a d aE n Te x t o Y T ec la c lo .
A n v e s t i q ar T er m : C o n c e p t o A c c i n Para David. Investigar las diferentes emulaciones de terminal y
sus ventajas para el desplegado de S e c c i n V i a .
F i g u r a 8-8 Un ejemplo de implementacin de una r esolucin (diagrama de obj et o s UML). Los
C o n c e p t o A c c i n se resaltan e n negritas.
La notacin de problemas que describimos y su integracin con el modelo de tarea es la
notacin de modelado que usamos para representar la fundamentacin. En la literatura se han
propuesto otros modelos de problemas para representar la fundamentacin. Luego investigare
mos en forma breve esos otros modelos.
8.3.7 Ejemplos de modelos y sistemas basados en problemas
La captura de la fundamentacin fue propuesta originalmente por Kunz y Rittel. Desde
entonces se han diseado y evaluado diferentes modelos en el contexto de la ingeniera de software
y otras disciplinas de la ingeniera. Aqu comparamos de modo breve tres de ellas, IBIS (siglas
en ingls de sistema de informacin basado en problemas [Kunz y Rittel, 1970]), DRL (siglas en
ingls de lenguaje de representacin de decisiones [Lee, 1990]) y QOC (siglas en ingls de pregun
tas, opciones y criterios [MacLean et al., 1991 ]).
Sistema de informacin basado en problemas
El IBIS incluye un modelo de problemas y un mtodo de diseo para el tratamiento de
problemas mal estructurados u horrorosos (en oposicin a los dciles). Un problema h or r oros o
se define como un problema que no puede resolverse en forma algortmica, sino que tiene que
resolverse mediante discusin y debate.
El modelo de problemas IBIS (figura 8-9) tiene tres nodos (Problemas, P o s i c i o n e s y
Argumentos) relacionados por varios tipos de vnculos (apoya, s e qpone a, reemplaza, responde a,
g e n e r a l i z a , c u e s t i o n a y s u g i e r e ) . Cada Problema describe una dificultad de diseo bajo consi
deracin. Los desarrolladores proponen soluciones al problema creando nodos P osici n (similares a
tos nodos Propuesta que se describieron en la seccin 8.3.3). Mientras se generan las alternativas los
desarrolladores argumentan acerca de su valor con nodos Argumento. Los Argumento pueden apoyar
una P o s i ci n uoponerse a una Posicin. Observe que el mismo nodo puede aplicarse a varias posi
ciones. El modelo IBIS no incluy originalmente C r i t e r i o ni Resolucin.
IBIS fiie soportado por una herramienta de hipertexto (gIBIS [Conklin y Burgess-Yakemovic,
1991]) y se us para capturar la fundamentacin durante reuniones frente a frente. Proporcion las
bases para la mayora de los modelos de problemas subsiguientes, incluyendo DRL y QOC, que
tratamos a continuacin.
www.FreeLibros.org
C oncept os d e la fundamentacin 299
apoya
Fi gur a 8-9 El modelo IBIS (diagrama de clase UML).
Lenguaje de representacin de decisiones
El lenguaje de representacin de decisiones DRL trata de capturar la fun da m e nt a c i n de
l as d e c is ion es de un diseo [Lee, 1990]. La fundamentacin de una decisin es definida por Lee
como la representacin de los elementos cualitativos de la toma de decisiones, incluyendo las alter
nativas que se han considerado, su evaluacin, los argumentos que condujeron a esas evaluaciones
y los criterios usados en esas evaluaciones. El DRL est apoyado por SYBIL, una herramienta que
permite que el usuario lleve cuenta de las dependencias entre los elementos de la fundamentacin
cuando revisa las evaluaciones. El DRL aumenta el modelo IBIS original aadiendo nodos para
capturar los Objetivo de diseo y los Procedimiento. El DRL ve la construccin de la funda-
mentacin como una tarea comparable con el diseo del artefacto mismo. El DRL se resume en la
figura 8-10. Las principales desventajas del DRL son su complejidad (siete tipos de nodos y 15
tipos de vnculos) y el esfuerzo empleado en la estructuracin de la fundamentacin capturada.
es una buena a l t e r n a t i v a para
Alt er na ti va
Problema de
decisin
Cfojetivo
F i g u r a 8 - 1 0 L e n g u a j e d e r e p r e s e n t a c i n d e d e c i s i o n e s ( d i a g r a m a d e c l a s e U M L ) .
www.FreeLibros.org
300 C apitulo 8 Administracin d e la fundamentacin
Preguntas, opciones y criterios (QOC) es otro aumento al IBIS. Las Pregunta representan
problemas de diseo a resolver (Problema en los modelos de problemas que presentamos). Opcin
son las respuestas posibles a las Pregunta ( P r o p u es t a en nuestro modelo). Las Opcin pueden
activar otras P r e g u n t a c o n s e c u e n t e . Las Opcin se valoran en forma positiva y negativa
respecto a C r i t e r i o , que son medidas de bondad relativas definidas por los desarrolladores. Tam
bin, los Argumento pueden apoyar o retar cualquier Pregunta, Capcin, C r i t e r i o o relacin
entre ellos. Los Argumento tambin pueden apoyar y retar a otro Argumento. La figura 8-11 mues
tra el modelo QOC.
PreguntaSy opciones y criterios (QOC)
F i g u r a 8-11 Modelo preguntas, opciones, criterios (diagrama de clase UML).
QOC e IBIS difieren en el nivel de proceso. Por un lado, el propsito de IBIS ha sido cap
turar la argumentacin de diseo conforme sucede (por ejemplo, se uso gIBIS para capturar la
informacin generada durante las reuniones de diseo). Por otro lado, las estructuras QOC se cons
truyen como un acto de reflexin sobre el estado actual del diseo. Esta separacin conceptual de
las fases de construccin y argumentacin del proceso de diseo enfatiza la elaboracin y estructu
racin sistemtica de la fundamentacin, en vez de capturarlas como un efecto secundario de la
deliberacin. La fundamentacin, desde la perspectiva del QOC, es una descripcin del espacio de
diseo explorado por los desarrolladores. Desde la perspectiva de IBIS, la fundamentacin es un
registro histrico del anlisis que conduce a un diseo especfico. En la prctica, ambos enfoques
pueden aplicarse para capturar suficiente fundamentacin. A continuacin describimos las activi
dades relacionadas con la captura y mantenimiento de la fundamentacin.
8.4 Actividades de la fundamentacin: de l o s problemas a l a s decisiones
El mantenimiento de la fundamentacin ayuda a los desarrolladores a manejar el cambio. Mediante
la captura de la justificacin de las decisiones pueden revisar con ms facilidad las decisiones
importantes cuando cambian los requerimientos del usuario o el ambiente de destino. Sin embargo,
para que los modelos de fundamentacin sean tiles necesitan estar capturados, estructurados y
tenerse un acceso fcil a ellos. En esta seccin describimos estas actividades, incluyendo:
www.FreeLibros.org
Actividades d e la fundamentacin: d e l o s problemas a la s d ec i s i o n es 301
La captura de la fundamentacin durante las reuniones de diseo (seccin 8.4.2).
La revisin de los modelos de fundamentacin con aclaraciones subsiguientes (seccin 8.4.3).
La captura de fundamentacin adicional durante las revisiones (seccin 8.4.4).
La reconstruccin de la fundamentacin que no se captur (seccin 8.4.5).
La informacin ms crtica sobre la fimdamentacin se genera durante el diseo del sistema: las deci
siones que se toman durante el diseo del sistema pueden tener un impacto en cada uno de los
subsistemas, y su revisin es costosa, en especial cuando se hace tardamente en el proceso de diseo.
Adems, por lo general es compleja la fundamentacin que hay tras la descomposicin en subsiste
mas, ya que abarca muchos asuntos diferentes, como la asignacin del hardware, el almacenamiento
persistente, el control de acceso, el flujo de control global y las condiciones de frontera.
Por esta razn, en este captulo nos enfocamos en el diseo del sistema. Sin embargo,
observe que el mantenimiento de la fundamentacin puede realizarse en forma similar a lo largo
del desarrollo, desde la obtencin de requerimientos hasta las pruebas en campo. Ilustramos las
actividades de la fundamentacin con problemas del diseo del sistema CTC, un sistema de con
trol de trfico centralizado para trenes de carga. A continuacin describimos el modelo de diseo
del sistema actual del CTC.
8.4.1 Diseo del sistema C TC
Considere el sistema CTC que describimos en la seccin 8.3.1. Estamos en el proceso de
reingeniera de un sistema heredado, reemplazando una computadora mainffame con una red
de estaciones de trabajo. Tambin estamos mejorando el sistema con cosas como la adicin de
control de acceso y un mayor enfoque en la seguridad y la usabilidad. Estamos en medio del
diseo del sistema. Hasta ahora, a partir de los requerimientos no funcionales hemos identificado
varios objetivos de diseo (ordenados en forma descendente de acuerdo con la prioridad):
D i s p o n i b i l id a d . El sistema debe fallar menos de una vez al mes y recobrarse por completo
en diez minutos despus de una falla.
S e g ur i da d . Ninguna entidad que est fuera del cuarto de control debe poder tener acceso
al estado de las vas controladas o manipular ninguno de sus dispositivos.
Us abilidad. Una vez que est entrenado, un despachador no debe dar ms de dos comandos
errneos al da.
Asignamos un nodo cliente por despachador. Dos nodos servidores redundantes mantienen
el estado global del sistema (vea la figura 8-12). Los servidores tambin son responsables del
almacenamiento persistente. Los datos se guardan en archivos planos que pueden copiarse fuera
de lnea e importarse hacia una base de datos para procesamiento fuera de lnea. La comuni
cacin con los dispositivos en las vas se realiza mediante mdems manejados por una mquina
dedicada. Un middleware soporta dos tipos de comunicaciones entre subsistemas: invocacin de
mtodo para el manejo de peticiones y notificacin de cambio de estado para informar a los sub
sistemas de los cambios de estado. Cada subsistema se suscribe a los eventos en que est intere
sado. En el presente, debemos tratar los problemas de control de acceso y definir los mecanis
mos que impiden que los despachadores manipulen el trabajo de los dems despachadores. En
las secciones siguientes describimos la manera en que se debate y resuelve el asunto del control
de acceso mientras se captura su fimdamentacin.
www.FreeLibros.org
302 C apitulo 8 Administracin d e la fundamentacin
czp
d z i
Subsi stamalU
sary i dQrgri nc i pgl-L
S e r v i d o r C T C
I SybsistamgVig
i
Sub s i s temaAlma-
cenamie n t o
m?damsyi3jCQn3yntoM>dam5
diontoDospachador A cada despachador se le asigna un nodo C l i e n t e D e s p a c h a d o r que ejecuta
la interfaz de usuario del sistema.
ServidorCTC
Con j un toMdems
A d m i n i s t r a d o r M d e m s
SubsistemaAlmace-
namiento
SubsistemaVia
SabsistemalU
Un S e r v i d o r C TC es responsable del mantenimiento del estado del sistema.
Transmite comandos del despachador hacia los dispositivos de campo y recibe
informacin de campo pormedio del nodo Con juntoMdems. Un ServidorCTC
tambin es responsable del almacenamiento del estado persistente (por ejemplo,
direcciones de dispositivos, nombres de dispositivos, las asignaciones d e los
despachadores, horarios de trenes). Se usan dos ServidorCTC, uno principal y un
respaldo vivo, para incrementar la disponibilidad.
El Conj un toMdems administra los mdems que se utilizan pa r a la comu
nicacin con los dispositivos de campo.
El Adminis tradorMdems e s responsable de la conexin con los dispositivos
de campo y de la transmisin de los comandos de campo.
El Su b s is temaA lma ce namiento es responsable del mantenimiento del estado
persistente.
El S u b s is t e m a V ia es responsable del mantenimiento del estado de las vas,
conforme se reciben desde el campo las noticias de los cambios de estado, y de la
emisin de comandos para los dispositivos mediante el AdministradorMdems,
con base en los comandos en el nivel usuario recibidos del Subs is temaI U .
El S u b s i s t e m a l U es responsable de la recepcin de comandos y del desplegado
del estado de las vas ante el despachador. El S u b s i s t e m a l U controla la validez
de los comandos del despachador antes de pasarlos al ServidorCTC.
F i g u r a 8-12 Descomposicin en subsistemas del CTC (diagrama de organizacin UML). El estado del
sistema e s mantenido por el s e r v i d o r P r i n c i p a l . Un r e s p a l d o V i v o del servidor principal est en espera
por si falla el s e r v i d o r P r i n c i p a l . El s e r v i d o r P r i n c i p a l enva comandos y recibe transiciones de
estado de las vas por medio del conjuntoMdems.
www.FreeLibros.org
Actividades d e la fundamentacin: d e l o s problemas a la s d ec i s i o n es 303
8.4.2 C aptura de la fundamentacin en las reuniones
Las reuniones permiten que los desarrolladores presenten, negocien y resuelvan problemas
frente a frente. La presencia fsica de los desarrolladores respectivos involucrados en la discusin
es importante al aadir los beneficios de la comunicacin no verbal: permite que las personas
valoren las posiciones relativas de cada cual y los compromisos que estn dispuestos a aceptar. En
forma alterna, es difcil la negociacin y toma de decisiones mediante correo electrnico, por ejem
plo, ya que pueden suceder tergiversaciones. Por tanto, las reuniones frente a frente son un punto
de inicio natural para la captura de la fundamentacin.
En el captulo 3, Comunicacin de proyectos, describimos procedimientos para la organiza
cin y captura de reuniones con minutas y agendas. Una agenda enviada antes de la reunin
describe el estado y los puntos a tratar. La reunin se registra en minutas que se distribuyen poco
despus de la reunin. Usando los conceptos de modelado de problemas que describimos en la sec
cin 8.3, escribimos una agenda desde el punto de vista de los problemas que necesitan discutirse y
resolverse. Establecemos el objetivo de la reunin como llegar a una solucin de estos proble
mas y cualquier subproblema relacionado que se plantee en la discusin. Estructuramos las minu
tas de la reunin en funcin de propuestas que se exploraron durante la reunin, criterios a i los
que se estuvo de acuerdo y argumentos que usamos para apoyar o rechazar propuestas. Captura
mos las decisiones como resoluciones y conceptos de accin que establecen resoluciones. Durante
la reunin revisamos el estado desde el punto de vista de los conceptos de accin que se produjeron
en las reuniones anteriores.
Por ejemplo, considere el problema del control de acceso del sistema CTC. Necesitamos
organizar una reunin del equipo de arquitectura, que incluye a los desarrolladores responsables
del SubsistemalU, el SubsistemaSeguimiento y el S e r v i c i o N o t i f i ca c i n. Alicia, la mode
radora del equipo de arquitectura, enva la agenda que se muestra en la figura 8-13.
Durante la reunin revisamos el concepto de accin (CA[ 1]: investigar el modelo de con
trol de acceso del middleware) generado en la reunin de arquitectura anterior. El middleware
proporciona bloques bsicos para la autentificacin y cifrado, pero no introduce ninguna otra
restriccin en el modelo de acceso. Los problemas PR[l ] y p r [2] se resuelven con rapidez con
conocimiento del dominio: un despachador puede ver todas las SeccinVia, pero slo puede
manipular los dispositivos de su Seccin v a. Sin embargo, el problema PR[3] (cmo debe
integrarse e l control de acceso con las SeccinVia Se rvicioNot i f i e acin?) es ms difcil e
inicia un debate.
www.FreeLibros.org
3 0 4 C apitulo 8 Administracin d e la fundamentacin
AGENDA: Integracin del control de a cceso y la notificacin
Cundo y dnde Papel
Fecha: 13/09 Moderador principal: Alicia
Inicio: 4:30 p.m. Tomador de tiempo: David
Terminacin: 5:30 p.m. Secretario de actas: Eduardo
Lugar: Edificio Saln: 3420
de trenes
1. Propsito
Se ha terminado la primera revisin de la correspondencia entre hardware y software y el diseo del
almacenamiento persistente. Necesita definirse el modelo de control de acceso y su integracin con los
subsistemas actuales, como el S e r v i c i o N o t i f i c a c i n y el S u b s i s t e m a V i a .
2. Resultado deseado
Resolver los problemas acerca de la integracin del control de acceso con la notificacin.
3. Compartir la informacin [tiempo asignado: 15 minutos]
CA [ l ] : David: Investigar el modelo de control d e acceso proporcionado por el middleware.
4. Discusin [tiempo asignado: 35 minutos]
pr [ l ] : Un despachador puede ver las S e c c i n V i a de los dems despachadores?
pr [2 ] : Un despachador puede modificar las S e c c i n V i a de otro despachador?
PR [ 3 ] : Cmo debe integrarse el control de acceso con las S e c c i n V i a y el S e r v i c i o N o t i f i c a c i n ?
5. Cierre [tiempo asignado: 5 minutos]
Revisar y asignar nuevos conceptos de accin.
Crtica de la reunin.
Figura 8-13 Agenda para la discusin del control de acceso del CTC.
David, el desarrollador responsable del S e r v i c i o N o t i f i c a c i n propone que se integre el
control de acceso con la S e c c i n V i a (vea la figura 8-14). La S e c c i n V i a mantendra una lista
de acceso de los D e s p a c h a d o r que pueden examinar o modificar la S e c c i n V i a dada. Los even
tos tambin se organizaran por S e c c i n V i a . Para que se le notifique acerca de los eventos en
una S e c c i n V i a , un subsistema necesitara suscribirse a la S e c c i n V i a del S e r v i c i o N o t i -
f i c a c i n . El S e r v i c i o N o t i f i c a c i n revisara luego con la S e c c i n V i a dada para ver si el
despachador actual tiene, al menos, acceso de lectura.
www.FreeLibros.org
Actividades d e la fundamentacin: d e l o s problemas a la s d ec i s i o n es 305
1: suscripcinAEvontosCambioEstado(svl291)
S e r v i d Notificacin El S e r v i c i o N o t i f i c a c i n transmite los cambios de estado de una
S e c c i n V a . Para recibir noticias de l S e r v i c i o N o t i f i c a c i n , un
subsistema necesita suscribirse a una S e c c i n V i a . Slo los subsistemas
que tienen acceso a una S e c c i n V i a dada pueden suscribirse a los eventos
generados por una S e c c i n V i a . El acceso est determinado por la llamada
a la operacin e s A c c e s i b l e () de la S e c c i n V i a .
Sistema
SeccinVia
ClientelU
El S i s t e m a e s responsable de l seguimiento c on seguridad de qu i n es
el despachador actual con base en la informacin proporcionada por el
C l i e n t e l U . La S e c c i n V i a examina las credenciales del despachador
actual con la operacin q u i n E s ( ) .
Una S e c c i n V i a consiste e n un conjunto de C i r c u i t o V i a contiguos y sus
D i s p o s i t i v o asociados. El acceso se controla en el nivel de S e c c i n V i a
con una lista de acceso.
El C l i e n t e l U es responsable del desplegado de S e c c i n V i a y de la entrada
de comandos para cambiar el estado de S e c c i n V i a .
Fi gur a 8-14 Propuesta p [ l ] : el acceso es controlado por el objeto S e c c i n V i a con una lista de acceso.
El S e r v i c i o N o t i f i c a c i n consulta a la S e c c i n V i a para determinar si un subsistema puede recibir
noticias acerca de una S e c c i n V i a dada (diagrama de colaboracin UML).
Alicia, la desarrolladora responsable del S u b s i s t e m a V i a , que incluye la clase S e c
c i n V a , propone que se invierta la dependencia entre S e c c i n V i a y S e r v i c i o N o t i f i -
c a c i n ( v e a la figura 8-15). En esta propuesta, el C l i e n t e l U slo podra interactuar con
la clase S e c c i n V i a , incluso cuando se suscribe a los eventos. El C l i e n t e l U llamara al
mtodo S u s c r i b i r s e A E v e n t o s () de S e c c i n V a , el cual realizara las revisiones de control de
acceso y luego llamara a S u s c r i b i r s e A E s t a d o C a m b i o E v e n t o s 0 en el S e r v i c i o N o t i f i -
c a c i n . Entonces el C l i e n t e l U no tendra acceso directo al S e r v i c i o N o t i f i c a c i n . Esto
tiene la ventaja de centralizar todas las operaciones protegidas en una clase y centralizar las
revisiones de control de acceso. Adems, en ese caso la S e c c i n V a podra desuscribir a los
C l i e n t e l U cuando se modifique la lista de acceso.
www.FreeLibros.org
306 C apitulo 8 Administracin d e la fundamentacin
ServicioNotificacin El ServicioNotif icacin transmite los cambios de estado de una
SeccinVia. Para recibir noticias del ServicioNotificacin, un
subsistema necesita suscribirse a una SeccinVia. El ServicioNotificacin
slo es accesible para la clase SeccinVia, la cual controla el acceso.
SeccinVia Una SeccinVia consiste de un conjunto de CircuitoVia contiguos y sus
Dispositivo asociados. El acceso se controla en el nivel SeccinVia.
Para recibir noticias de cambios de estado, un subsistema necesita llamar a
la operacin suscribirAEventos() de la clase SeccinVia. La SeccinVia
revisa el acceso antes de llamar al mtodo suscripcinAEventosSeccinVa()
del ServicioNotificacin.
Figura 8-15 Propuesta P [ 2 ] : El Clien teiu se suscribe a los eventos de la seccin de va mediante
la operacin suscribirAEventos () de SeccinVia. La SeccinVia revisa el acceso y luego llama a la
operacin suscribirAEventosSeccinVia() de ServicioNotificacin. El ServicioNotificacin
no es accesible para la clase Clien te IU (diagrama de colaboracin UML, las diferencias con respecto a la figura
8-14 se muestran en cursivas).
Eduardo observa que a cada uno de los despachadores se le permite ver las SeccinVia de
los dems despachadores y, por tanto, slo necesitan controlarse las modificaciones al estado.
Suponiendo que todas las modificaciones se realizan por medio de invocaciones a mtodo y que
el S e r v i c i o N o t i f i c a c i n slo se usa para la difusin de los cambios, no es necesario que el
S e r v i c i o N o t i f i c a c i n est integrado con el control de acceso. En este caso se podra usar un
refinamiento de la propuesta inicial de David (vea la figura 8-16).
El equipo de arquitectura decide usar la propuesta de Eduardo debido a su simplicidad.
Eduardo produce las minutas de reunin cronolgicas que se muestran en la figura 8-17.
www.FreeLibros.org
Actividades d e la fundamentacin: d e l o s problemas a la s d ec i s i o n es 307
1: s u s c r i p c i n A E v e n t o s C a m b i o E s t a d o ( s v l 2 9 1 )
S e r v i c i o N o t i f i c a c i n El S e r v i c i o N o t i f i c a c i n transmite los cambios de estado de una
S e c c i n V i a . Para recibir noticias del S e r v i c i o N o t i f i c a c i n , un
subsistema necesita suscribirse a una S e c c i n V i a . Sie4os-subsistemas
Fi gur a 8-16 Propuesta p [3] : El acceso a las operaciones que modifican a S e c c i n V i a est controlado
por el objeto S e c c i n V i a con una lista de acceso. El S e r v i c i o N o t i f i c a c i n no necesita ser parte del
control de acceso, debido a que cada uno de los despachadores puede ver los cambios de estado (diagrama
de colaboracin UML, lo eliminado de la figura 8-14 se resalta con e urswas-laehaas)-.
MINUTA C R O N O L G I C A: Integracin del control de a cceso y la notificacin
Cundo y dnde Papel
Fecha: 13/09 Moderador principal: Alicia
Inicio: 4:30 p.m. Tomador de tiempo: David
Terminacin: 6:00 p.m. Secretario de actas: Eduardo
Lugar: Edificio de trenes Saln: 3420
1. Propsito
Se ha terminado la primera revisin de la correspondencia entre hardware y software y e l diseo del
almacenamiento persistente. Necesita definirse el modelo de control de acceso y su integracin con los
subsistemas actuales, y en particular necesitan definirse el S e r v i c i o N o t i f i c a c i n y el Su b s is t e m a V ia .
2. Resultado deseado
Resolver los asuntos acerca de la integracin del control de acceso con la notificacin.
3. Compartir la informacin
CA [ l ] : David: Investigar el modelo de control de acceso proporcionado por el middleware.
Estado: El middleware soporta una autentificacin y cifrado fuertes. No introduce ninguna restriccin
en el modelo de acceso. Se puede implementar cualquier poltica de acceso en el lado servidor.
F i g u r a 8 - 1 7 M i n u t a s c r o n o l g i c a s d e l a d i s c u s i n d e l c o n t r o l d e a c c e s o d e l C T C .
www.FreeLibros.org
308 C apitulo 8 Administracin d e la fundamentacin
4. Discusin
pr [ l ] : Un despachador puede ver las S e c c i n V i a de los dems despachadores?
Zo: S.
E d u a r d o : En la especificacin del CTC.
PR [2 ] : Un despachador puede modificar las S e c c i n V i a de otro despachador?
Z o : No. Slo el despachador asignado a la S e c c i n V i a puede manipular los dispositivos de la
seccin. Hay que tomar en cuenta que el despachador puede reasignarse en forma dinmica.
E d u a r d o : Tambin en la especificacin del CTC.
PR [ 3] : Cmo debe integrarse el control de acceso con las Se c ci nVi a y el S e r v i c i o N o t i f i c a c i n ?
D a v i d : La S e c c i n V i a mantiene una lista de acceso. El S e r v i c i o N o t i f i c a c i n
pregunta a la S e c c i n V i a quin tiene acceso.
A l i c i a : Es probable que debamos invertir la dependencia entre S e c c i n V i a y
S e r v i c i o N o t i f i c a c i n . En vez de ello, el C l i e n t e i U solicita la suscripcin a la
S e c c i n V i a , y sta revisa el acceso y luego llama al S e r v i c i o N o t i f i c a c i n . De
esta forma todos los mtodos protegidos estn e n un solo lugar.
D a v i d : De esta forma la S e c c i n V i a tambin puede cancelar la suscripcin a los despachadores
cuando se les quita el acceso.
E duar do: Oye, no se necesita control de acceso en el S e r v i c i o N o t i f i c a c i n : los despachadores
pueden ver todas las S e c c i n V i a . Mientras no se use el S i s t e m a N o t i f i c a c i n
para cambiar el estado de S e c c i n V i a no hay necesidad de restringir las suscripciones.
A l i c i a : Pero si se piensa en el control de acceso sobre la notificacin sera ms general.
E duar do: Pero ms complejo. Separemos simplemente el control de acceso y la notificacin en
este momento y revisemos el problema si cambian los requerimientos.
A l i c i a : Est bien. Me encargar de revisar la API del S u b s i s t e m a V i a .
5. Ci er r e
CA [2 ] : Alicia: Disear el control de acceso para el S u b s i s t e m a V i a con base e n la autentificacin y
cifrado proporcionados por el middleware.
F i g u r a 8-17 Minutas cronolgicas de la discusin del control de acceso del CTC.
Eduardo produce las minutas de la figura 8-17 insertando en la agenda la discusin que es
relevante para los diferentes asuntos. Sin embargo, la discusin se registra como una lista cro
nolgica de enunciados hechos por los participantes. La mayoa de estos enunciados mezcla
la presentacin de una alternativa con la argumentacin en contra de otra alternativa. Para
aclarar las minutas, Eduardo las reestructura despus de la reunin con modelos de problemas
(figura 8-18).
Los resultados importantes de la reunin de control de acceso son:
Los Despachador pueden ver todas las SeccinVia, pero slo modifican las que tienen
asignadas.
Se usa una lista de acceso asociada con las SeccinVia para el control de acceso.
El S e r v i c i o N o t i f i c a c i n no est integrado con el control de acceso, debido a que los
cambios de estado pueden ser vistos por cualquier Despachador.
www.FreeLibros.org
Actividades d e la fundamentacin: d e l o s problemas a la s d e c i s i o n e s 309
MINUTA E S T R U C T U R AD A: Integracin del control de a c c e s o y la notificacin
Cundo y dnde Papel
Fecha: 13/09 Moderador principal: Alicia
Inicio: 4:30 p.m. Tomador de tiempo: David
Terminacin: 6:00 p.m. Secretario de actas: Eduardo
Lugar: Edificio de trenes Saln: 3420
1. Propsito
Se ha terminado la primera revisin de la correspondencia entre hardware y software y el diseo del
almacenamiento persistente. Necesita definirse el modelo de control de acceso y su integracin con los
subsistemas actuales, y en particular necesitan definirse el S e r v ici o No t ifi ca ci n y el SubsistemaVia.
2. Resultado deseado
Resolver los problemas acerca de la integracin del control de acceso con la notificacin.
3. Compartir la informacin
CA[ l ] : David: Investigar el modelo de control de acceso proporcionado por el middleware.
Estado: El middleware soporta una autentificacin y cifrado tuertes. No introduce ninguna restriccin
en el modelo de acceso. Puede implementarse cualquier poltica de acceso en el lado servidor.
4. Discusin
pr [ l ] : Un despachador puede ver las SeccinVia de los dems despachadores?
R [ l ] : S (derivado de una especificacin del CTC y confirmado por Zo, una usuaria de pruebas).
pr [2 ] : Un despachador puede modificar las SeccinVia de otro despachador?
R [2 ] : No. Slo el despachador asignado a la SeccinVia puede manipular los dispositivos
de la seccin. Hay que tomar en cuenta que el despachador puede reasignarse en forma
dinmica (derivado de una especificacin del CTC y confirmado por Zo).
ER [3] : Cmo debe integrarse el control de acceso con las SeccinVia y el S er vici oNot ifi cacin?
p [ 3. l ] : La SeccinVia mantiene una lista de acceso de quienes pueden examinar o modificar
el estado de la SeccinVia. Para suscribirse a los eventos un subsistema enva una
peticin al S e r v i c i o N o t i f i c a c i n , el cual a su vez enva una peticin a la
SeccinVia para revisar el acceso.
P [ 3 . 2 ] : Las SeccinVia alojan todas las operaciones protegidas. El C l i en t el U solicita la
suscripcin a los eventos de la SeccinVia enviando una peticin a la SeccinVia, y
sta revisa el acceso y luego enva una peticin al S e r v i c i o N o t i f i c a c i n . AR[3.1]
para p [ 3 . 2 ] : El control de acceso y las operaciones protegidas estn centralizadas en
una sola clase.
p [ 3.3] : No es necesario restringir el acceso a la suscripcin de eventos. El C l i en t el U solicita la
suscripcin de manera directa al S er v i c i o N o t i f i c a c i n . El S er v i c i o N o t i f i c a c i n
no necesita revisar el acceso.
ar [ 3.2 ] para P [ 3.3] : Los despachadores pueden ver el estado de cualquier
SeccinVia (vea R[l]).
AR[3.3] p ar a P[3-3] : Simplicidad.
R[3] : P[3-3] . Vea el concepto de accin CA[2] .
5. Cierre
CA[2] : Alicia: Disear el control de acceso para el SubsistemaVia con base en la autentificacin y
cifrado proporcionados por el middleware y la resolucin R[3 ] tratada en esta minuta.
F i g u r a 8 - 1 8 M i n u t a s e s t r u c t u r a d a s d e l a d i s c u s i n d e c o n t r o l d e a c c e s o d e C T C .
www.FreeLibros.org
310 C apitulo 8 Administracin d e la fundamentacin
Enfocndonos en el modelo de problemas, tambin hemos capturado que:
Se investig la integracin del S e r v i c i o N o t i f i c a c i n con el control de acceso.
La centralizacin de todos los mtodos protegidos en la clase Seccin Via fue un principio
aceptable.
Estas dos ltimas partes de la informacin es informacin de fundamentacin y, por lo general,
no se considera importante. Sin embargo, ste es el tipo de informacin que el secretario de actas
captura y estructura para facilitar cambios futuros.
8.4.3 C aptura asincrona de la fundamentacin
Las discusiones de las reuniones se apoyan en informacin del contexto. Cuando se inicia
la reunin, la mayora de los participantes ya tienen una cantidad considerable de informacin
acerca del sistema, su propsito pretendido y su diseo. El moderador de la reunin se enfoca,
por lo general, en un pequeo conjunto de problemas que necesitan resolverse. Por ejemplo, en
la reunin que presentamos en la seccin anterior, todos los participantes saban el propsito y
funcionalidad del sistema CTC, sus objetivos de diseo y la descomposicin actual en subsiste
mas. La minuta de esta reunin slo registra los problemas que estn a discusin y, por tanto, no
contiene mucha o ninguna informacin antecedente. Por desgracia, esta informacin se pierde
con el tiempo y las minutas de reunin se hacen obsoletas con rapidez.
Podemos usar el modelado de problemas para resolver esta dificultad. En el captulo 3,
Comunicacin de proyectos, describimos el uso de groupware, como grupos de noticias o Lotus
Notes, para apoyar la comunicacin asincrona. Al integrar la preparacin y el registro de la reunin
con la comunicacin asincrona podemos capturar informacin contextual adicional.
En el ejemplo del CTC, supongamos que Mara, la desarrolladora responsable del Sub
s i s t e m a IU, no pudo asistir a la reunin de control de acceso. Ella lee la agenda y la minuta de la
reunin, las cuales se colocaron en el grupo de noticias dedicado al equipo de arquitectura.
Aunque comprende el resultado de la reunin, la discusin acerca del S e r v i c i o N o t i f i c a c i n
requiere aclaraciones: el argumento ar[3.2 ] para la propuesta P [ 3 . 3 ] dice que, debido a que los
Despachador pueden ver cada una de las Seccin Via, todos los eventos pueden ser visibles y,
por tanto, no hay necesidad de controlar el acceso a los eventos. Esto implica que el S e r v i c i o -
N o t i f i c a c i n se usa slo para notificar los cambios de estado a los dems subsistemas. En otras
palabras, SeccinVia no cambia su estado a consecuencia de los eventos generados por los
dems subsistemas. Mara quiere confirmar que esta suposicin es correcta y, en consecuencia,
plantea un asunto al grupo de noticias (figura 8-19). Tambin propone que no se permita que el
S e r v i c i o V a se suscriba a cualquier evento para asegurar un control de acceso adecuado.
El seguimiento de las minutas de reunin permite que los desarrolladores capturen ms del
contexto que rodea al diseo. En consecuencia, se capturan ms razones e informacin ms clara.
El uso del mismo modelo de problemas, tanto para las reuniones como para las discusiones en
lnea, nos permite integrar toda la informacin de la fundamentacin. Aunque esto puede hacerse
con una tecnologa mnima, como los grupos de noticias, la representacin del modelo de pro
blemas, las agendas y minutas de reunin y los mensajes relacionados pueden integrarse en una
www.FreeLibros.org
Actividades d e la fundamentacin: d e l o s problemas a la s d ec i s i o n es 311
Cirupo do n o t i c i a s : etc.arquitectura.discusin
Tema:
PR[1]: Un despachador puede ver las SeccinVia de los dems despachadores?
PR[2]: Un despachador puede modificar las SeccinVia de otro despachador?
PR[3]: Cmo debe implementarse el control de acceso con las SeccinVia
y el ServicioNotificacin?
P [3.1]: Las SeccinVia mantienen una lista de acceso.
P[3.2]: Las SeccinVia tienen operaciones de suscripcin.
+AR[3.1]:Extensibilidad.
+AR[3.2]:Centraliza todas las operaciones protegidas.
P [3.3]: El ServicioNotificacin no es parte del acceso.
+AR[3.3]:Los despachadores pueden ver todas las SeccinVia.
+AR[3.4]:Simplicidad.
De: Mara
Grupo d e n o t i c i a s : etc.arquitectura.discusin
Tema: Problema consecuente: No debe usarse la notificacin para las peticiones?
Focha: martes 15 de septiembre, 13:12:48 -0400
PR[4] respondiendo a AR[3.3]: para las listas de acceso frente a capacidades
> Los despachadores pueden ver todas las SeccinVia y, por tanto, deben poder
> ver todos los eventos.
Esto asume que la SeccinVia no depende de los eventos para cambiar su estado y
que los eventos slo se usan para informar a los dems subsistemas acerca de los
cambios de estado. Para efectos de robustez, debemos impedir que el ServicioVa
se suscriba a algn evento?
Figura 8-19 Ejemplo de un asunto consecuente enviado en forma asincrona (envo a grupo de noticias).
Mara, una desarrolladora que no asisti a la reunin, solicita aclaraciones. Esto conduce al envo de un
asunto adicional y la captura de ms razones.
herramienta groupware, como una base de datos Lotus Notes personalizada o una base de asun
tos multiusuario alojada en un sitio Web (vea el ejemplo en la figura 8-20).
Una vez que se instituyen procedimientos para la organizacin y registro de la fundamentacin
en las reuniones, y se les expande con groupware, pdanos capturar gran cantidad de la fundamen
tacin. El siguiente reto es mantener actualizada esta informacin conforme suceden los cambios.
8.4.4 C aptura de la fundamentacin cuando se tratan los cambios
Los modelos de razones nos ayudan a manejar el cambio. Por desgracia, la fundamentacin
misma est sujeta a cambios cuando revisamos las decisiones. Cuando diseamos una solucin en
respuesta a un cambio de requerimientos, por ejemplo, vemos la fundamentacin anterior para
valorar cules decisiones necesitan revisarse y disear un cambio. No slo necesitamos capturar la
fundamentacin para el cambio y su solucin, sino que tambin necesitamos relacionarlas con
las razones anteriores.
Por ejemplo, supongamos que en el sistema CTC cambian los requerimientos del control
de acceso. Antes se permita que los Despachador vieran todas las SeccinVia. El cliente nos
informa que, a menos que se especifique con anterioridad, los Despachador slo podrn ver las
SeccinVia colindantes. En respuesta a este cambio necesitamos modificar el diseo del control
Focha:
14/09
14/09
14/09
14/09
14/09
14/09
14/09
14/09
14/09
14/09
www.FreeLibros.org
312 C apitulo 8 Administracin d e la fundamentacin
N e t s c a p e : CTC A r e h i t e c t u r e D i s c u s s By T h re a d
discussion
By Cetegofy
By IImead
_J _l _J
swToptc NewTSsue New Agenda
A
New Topk
To p i c
00
(Altee
P NoficationService s n o t p a r t of access f Ed Jones 28.06)
m. Dispacters can see all TrackSgctons (Efl tenes 2806)
pro: Simplicitv f Ed Jones 28.06)
28 06 99 (O pen) I: Can a dispatcher m o d i f y another di spatchers Trac kSec ti ops "
(Alice Parfceri
28.06.99 ( O p e n ) . I . Ho y s h o ul d a c c e s s c o n t r o l b e . i n t e g r a t e d v i t h T r M k Se.cti o iis
a nd N o t j f i c a o n S e r v j e e ? (A l i c e P a r k e r )
29 06 99 (Qpfin)_L_fiflSSfluenlimeJ_ S h o i _ n o k f G M o n _ n o t b e j i s M J f i r
r e q u e s t s ? ( M a r y A n n )
Figura 8-20 Un ejemplo de base de datos de problemas (plantilla de base de datos IBIS LN en Domino
Lotus Notes). Los desarrolladores pueden tener acceso y colocar problemas, propuestas, argumentos y
resoluciones con formularios Web.
de acceso y organizar una reunin con el equipo de arquitectura. En particular, necesitamos buscar
la fundamentacin anterior asociada con el control de acceso. Alicia, la moderadora principal del
equipo de arquitectura, plantea la agenda que se muestra en la figura 8-21.
Durante la reunin David presenta la fundamentacin tratada en reuniones anteriores y en
el grupo de noticias de arquitectura. El equipo de arquitectura observa que ya no es vlida la
suposicin de que todos los subsistemas pueden ver los eventos: al despachador slo se le debe
permitir que vea los eventos relacionados con las SeccinVia colindantes. La propuesta P[2,
14/09] (vea la figura 8-15) parece ser la mejor solucin bajo los nuevos requerimientos, ya que
todas las operaciones protegidas pueden centralizarse en la clase SeccinVia. Por desgracia,
la implementacin ya ha avanzado y los desarrolladores quieren minimizar los cambios al
cdigo. En vez de ello, Alicia propone que se seleccione la propuesta P[l, 14/09) (vea la figura
8-14): el C l i e n t e l U permanece sin cambio, ya que no necesitan cambiar las interfaces de las
clases SeccinVia y S e r v i c i o N o t i f i c a c i n . Slo necesita cambiar S e r v i c i o N o t i f i c a c i n
en forma tal que enve peticiones a S eccinVia para revisar el acceso del despachador actual.
Para revocar los privilegios del despachador cuando cambie una lista de acceso, la SeccinVia
enva una peticin al S e r v i c i o N o t i f i c a c i n para que desuscriba al Despachador. Esto intro
duce una dependencia circular entre SeccinVia y S e r v i c i o N o t i f i c a c i n , pero minimiza las
modificaciones al cdigo existente.
El equipo de arquitectura selecciona esta solucin. Eduardo produce las minutas estructura
das que se muestran en la figura 8-22 (las minutas cronolgicas no se muestran por brevedad).
www.FreeLibros.org
Actividades d e la fundamentacin: d e l o s problemas a la s d ec i s i o n es 313
AGE N D A: Revisin del control de acceso, l o s despachadores s l o pueden acceder a las v a s
contiguas.
Cundo y dnde Papel
Fecha: 13/10 Moderador principal: Alicia
Inicio: 4:30 p.m. Tomador de tiempo: David
Terminacin: 5:30 p.m. Secretario de actas: Eduardo
Lugar: Edificio de seales Saln: 2300
1. Propsito
El cliente solicit que los despachadores puedan tener acceso a las S e c c i n V i a contiguas.
2. Resultado deseado
Resolver los problemas del control de acceso relacionados con este cambio de requerimientos.
3. Compartir la informacin (tiempo asignado: 15 minutos]
CA [ l ] : David: Recuperar la fundamentacin del control de acceso.
4. Discusin (tiempo asignado: 35 minutos]
pr [ l ] : Cmo debe revisarse el control de acceso con base en los requerimientos de vas contiguas?
5. Cierre (tiempo asignado: 5 minutos]
Revisar y asignar nuevos conceptos de accin.
Crtica de la reunin.
Fi gur a 8-21 Agenda para la revisin del control de acceso del CTC.
MINUTA E S T R U C T U R AD A: Revisin del control de acceso, l o s despachadores s l o pueden tener
acceso a l a s v a s contiguas.
Cundo y dnde Papel
Fecha: 13/10 Moderador principal: Alicia
Inicio: 4:30 p.m. Tomador de tiempo: David
Terminacin: 5:30 p.m. Secretario de actas: Eduardo
Lugar: Edificio de seales Saln: 2300
1. Propsito
El cliente solicit que los despachadores puedan tener acceso a las S e c c i n V i a contiguas.
2. Resultado deseado
Resolver los problemas del control de acceso relacionados con este cambio de requerimientos.
3. Compartir la informacin
CA [ l ] : David: Recuperar la fundamentacin del control de acceso.
Resultado: se recuperaron los problemas PR[1, 1 3 / 0 9 ] y PR[2, 1 5 / 0 9 ] :
P R [ 1 , 13/09]: Cmo debe integrarse e l control d e acceso con l as SeccinVia y e l ServicioNotificacin?
(minuta del 14/09).
Fi gur a 8-22 Minutas estructuradas para la revisin del control de acceso del CTC. Las cursivas indican la
fundamentacin que se recuper para el propsito de esta reunin.
www.FreeLibros.org
314 C apitulo 8 Administracin d e la fundamentacin
P[3.]: La SeccinVia mantiene una lista de acceso sobre quines pueden examinar o modificar
el estado de la SeccinVia. Para suscribirse a los eventos, un subsistema enva una
peticin al ServicioNotificacin, el cual a su vez enva una peticin a la SeccinVia
para revisar el acceso.
P[3.2]: Las SeccinVia alojan todas las operaciones protegidas. El ClientelU solicita la
suscripcin a los eventos de la SeccinVia enviando una peticin a la SeccinVia y
sta revisa el acceso y luego enva una peticin al ServicioNotificacin.
AR[3.1] para P[3.2]: Extensibilidad.
AR[3.2] para P[3.2]: El control de acceso y las operaciones protegidas estn
centralizadas en una sola clase.
P[3.3]: No es necesario restringir el acceso a la suscripcin de eventos. El ClientelU solicita
la suscripcin en forma directa al ServicioNotificacin. El ServicioNotificacin no
necesita revisar el acceso.
AR[3.3] para P[3.3]: Los despachadores pueden examinar el estado de cualquier
SeccinVia (vea R[l]>.
AR[3.4] para P[3.3]: Simplicidad.
R[3J: P[3.3]. Vea el concepto de accin CA[2].
PR[2, 15/09]: No deber usarse la notificacin para las peticiones? (del envi de Mara a las noticias
el 15/09).
R[2J: La notificacin slo deber usarse para informar los cambios de estado. Las
SeccinVia, y ms generalmente el Subsistema Va, no deber cambiar su estado
con base en eventos.
4. Discusin
pr [ l ] : Cmo debe revisarse el control de acceso con base en los requerimientos de vas contiguas?
p [ l . l ] : Las operaciones protegidas, incluyendo la suscripcin, centralizadas en S e c c i n V i a
c o m o e n P [ 3 . 2 , 1 3 / 0 9 ] .
A [ l . l ] contra P [ l . l ] : Esto requiere que todos los subsistemas se suscriban a los eventos
d e notificacin a modificarse, debido a que la operacin de suscripcin se mueve del
S e r v i c i o N o t i f i c a c i n hacia la S e c c i n V i a .
P [ l . 2 ] : El S e r v i c i o N o t i f i c a c i n enva peticiones a S e c c i n V i a para revisar el acceso.
S e c c i n V i a enva peticiones a S e r v i c i o N o t i f i c a c i n para desuscribir a los
despachadores a los que se les ha revocado el acceso. P [ 3 . l , 1 3 / 0 9 ]
AR [ l . 2 ] para P [ l . 2 ] : Cambios mnimos a la implementacin existente.
ar [ l . 3 ] contra P [ l . 2 ] : Dependencia circular.
R [ l ] : P [ 1 . 2 ] , vea CA[2] y ca[ 3 ] .
5. Cierre
CA [ 2 ] : Alicia: Cambiar S e c c i n V i a para que desuscriba a los despachadores cuando se
revocan sus derechos.
CA [ 3 ] : David: Modificar S e r v i c i o N o t i f i c a c i n para revisar el acceso con S e c c i n V i a
cuando se suscriba un nuevo subsistema.
Figura 8-22 Minutas estructuradas para la revisin del control de acceso del CTC. Las cursivas indican la
fundamentacin que se recuper para el propsito de esta reunin.
Las minutas que se muestran en la figura 8-22 sirven para dos propsitos: para registrar la
fundamentacin del nuevo cambio y para relacionarlo con las fundamentaciones anteriores. Esto se
logra citando las fundamentaciones anteriores que se usaron para revisar la decisin del control de
www.FreeLibros.org
Actividades d e la fundamentacin: d e l o s problemas a la s d ec i s i o n es 315
acceso. Adems, estas nuevas minutas se envan al grupo de noticias de arquitectura y son discuti
das por los dems desarrolladores que no pudieron asistir a la reunin, completando de esta forma
el ciclo de registro y aclaracin de la informacin de la fundamentacin. En el caso en que se use
groupware, la nueva fimdamentacin puede relacionarse con las mdamentaciones anteriores con
un hipervnculo, facilitando a los desarrolladores la navegacin hacia la informacin relacionada.
Observe que, aunque se use una base de problemas para mantener y dar seguimiento a los
problemas abiertos, esta base de informacin puede crecer con rapidez hacia un gran caos no
estructurado. Adems, algunos problemas no se registran, ya que no todos los problemas se dis
cuten en reuniones. Muchos se discuten y resuelven de manera informal en charlas de pasillo.
Por tanto, es necesario reconstruir las fundamentaciones faltantes del sistema e integrarlas con
las fundamentaciones anteriores. Trataremos esto en la siguiente seccin.
8.4.5 Reconstruccin de las fundamentaciones
La reconstruccin de las fundamentaciones es un mtodo diferente para la captura de las
fundamentaciones del sistema. En vez de capturar las decisiones y su justificacin conforme
suceden, las fundamentaciones se reconstruyen en forma sistemtica a partir del modelo del
sistema, el registro de comunicaciones y la memoria de los desarrolladores. Con este mtodo se
capturan y estructuran de manera ms sistemtica las fundamentaciones. Se invierten menos
recursos durante las primeras fases del proceso, permitiendo, por tanto, que los desarrolladores
lleguen ms rpido a una solucin. Adems, la separacin de la actividad de diseo con respecto
a la captura de la fundamentacin permite que los desarrolladores regresen y critiquen sus dise
os en forma ms objetiva. Sin embargo, la reconstruccin de las fundamentaciones se enfoca en
la solucin seleccionada y no captura las alternativas descartadas y su discusin. Por ejemplo,
supongamos que no capturamos la fundamentacin del control de acceso en el CTC y que la
nica informacin que tenemos es la del modelo de diseo del sistema (figura 8-23).
[...]
4. Control de a c c e s o
El acceso en el CTC est controlado en el nivel de las SeccinVia: El Despachador que est asignado
a una SeccinVia puede modificar su estado; esto es, abrir y cerrar seales y cambios de va y
modificar otros dispositivos. Adems, el Despachador puede examinar el estado de las SeccinVia
contiguas sin modificarles su estado. Esto es necesario para que el Despachador observe los Tren que
estn a punto de entrar en la SeccinVia controlada.
El control de acceso se implementa con una lista de acceso mantenida por la SeccinVia. La lista de
acceso contiene la identidad del Despachador que puede modificar la SeccinVia (es decir, escritor) y
la identidad del cespachador que puede ver el estado de la SeccinVia (es decir, lector). Para efectos
de generalizacin, la lista de acceso se implementa de tal forma que puede incluir a varios lectores y
varios escritores. La SeccinVia revisa la lista de acceso en cada operacin que modifica o consulta el
estado de la SeccinVia.
Cuando los subsistemas se suscriben a los eventos, el ServicioNotificacin enva una peticin a la
SeccinVia para revisar el acceso. La SeccinVia enva una peticin al ServicioNotificacin
para cancelar la suscripcin a los despachadores que se les revoca el acceso.
El diagrama de colaboracin de la figura 8-14 muestra esta solucin.
[...]
F i g u r a 8 - 2 3 F r a g m e n t o d e l d o c u m e n t o d e l d i s e o d e l s i s t e m a , s e c c i n d e l c o n t r o l d e a c c e s o .
www.FreeLibros.org
316 C apitulo 8 Administracin d e la fundamentacin
PR [ 1 ] : Cmo debe i n te g r a r s e el c ontr ol de acceso de S e c c i n V i a con la notificacin?
El acceso en el CTC est controlado en el nivel de las SeccinVia: El Despachador que est asignado
a una SeccinVia puede modificar su estado; esto es, abrir y cerrar seales y cambios de va y
modificar otros dispositivos. Adems, el Despachador puede examinar el estado de las SeccinVia
contiguas sin modificarles su estado. Esto es necesario para que el Despachador observe los Tren que
estn a punto de entrar en la SeccinVia controlada.
P [ 1 ] : La clase S e c c i n V i a controla todas
las modificaciones de estado y el acceso a la
suscripcin de notificacin.
El control de acceso se implementa con una lista de
acceso en SeccinVia. Laclase SeccinVia
revisa el acceso de quien llama para cada operacin
que examina o modifica el estado. En particular,
el que llama se suscribe a la notificacin de eventos
llamando a mtodos de SeccinVia, que a su vez
pasa la peticin al ServicioNotificacin
cuando se otorga el acceso. Esta solucin se ilustra
en la figura 8-15.
A favor:
Solucin central: todos los mtodos protegidos
relacionados con la SeccinVia estn en un
solo lugar.
P [ 2 ] : L a clase S e c c i n V i a controla
todas l as modificaciones de estado, el
S e r v i c i o N o t i f i c a c i n controla la
suscripcin.
Es similar a P [ l ], excepto que quien llama solicita
la suscripcin a eventos en forma directa al
ServicioNotificacin, que revisa el acceso
con la SeccinVia antes de otorgar la suscripcin.
Esta solucin se ilustra en la figura 8-14.
A favor:
El acceso es independiente de la interfaz: las
interfaces de ServicioNotificacin y
SeccinVia son iguales, como si no hubiera
control de acceso (argumento heredado).
En contra:
Dependencia circular entre
ServicioNotificacin y SeccinVia:
la SeccinVia llama a operaciones de
ServicioNotificacin para generar
eventos, y los mtodos de suscripcin del
ServicioNotificacin llaman a opera
ciones de la SeccinVia para revisar el acceso.
R [ 1 ]
P[2]. P[ l ] habra sido una mejor solucin, pero el control de acceso no se aplicaba a la notificacin.
Para minimizar la reconstruccin del cdigo y el diseo se seleccion P [ 2 ].
F i g u r a 8-24 La fundamentacin reconstruida para la notificacin del problema del control de acceso del CTC.
Queremos recuperar la fundamentacin del diseo del sistema para revisarla y documen
tarla. Decidimos organizar cada problema como una tabla con dos columnas, la izquierda para
las propuestas y la derecha para sus argumentos correspondientes. En la figura 8-24 recupera
mos la fundamentacin para la integracin del control de acceso con notificacin. Identificamos
dos soluciones posibles: P[ l ] , en la cual la clase SeccinVia exporta todas las operaciones
cuyo acceso est controlado, incluyendo la suscripcin a las notificaciones, y P [2], en la cual el
S e r v i c i o N o t i f i c a c i n delega la revisin del control de acceso a la SeccinVia. Luego, en la
www.FreeLibros.org
Administracin d e la fundamentacin 317
columna derecha enumeramos las ventajas y desventajas de cada solucin y en la parte inferior
de la tabla resumimos la justificacin de la decisin como una resolucin.
Cuesta menos trabajo capturar una fundamentacin reconstruida, como la de la figura 8-24,
que las actividades que describimos con anterioridad. Sin embargo, es ms difcil capturar las alter
nativas descartadas y las razones para tales elecciones, en especial cuando las decisiones se revisan
a lo largo del tiempo. En la figura 8-24 la resolucin establece que no se seleccion la mejor pro
puesta y pudimos recordar las razones para esta decisin no ptima (es decir, que ya se haba ter
minado una buena cantidad de cdigo antes de esta decisin y queramos minimizar la reelabora
cin del cdigo). En forma alternativa, la reconstruccin de la fundamentacin es una herramienta
efectiva para la revisin por la identificacin de decisiones que son inconsistentes con los objetivos
de diseo del proyecto. Adems, aunque las decisiones revisadas no se examinen en una etapa pos
terior del proyecto, este conocimiento puede beneficiar a los nuevos desarrolladores asignados al
proyecto o a los desarrolladores que revisen el sistema en iteraciones posteriores.
El balance entre la captura, el mantenimiento y la reconstruccin de la fundamentacin difie
re para cada proyecto y es necesario administrarlo con cuidado. Es relativamente frecuente ver que
los esfuerzos de captura de fundamentaciones acumulan enormes cantidades de informacin
que es intil o que no es accesible con facilidad para los desarrolladores que deben beneficiarse
con esa informacin. A continuacin nos enfocamos en los asuntos de administracin.
8.5 Administracin de la fundamentacin
En esta seccin describimos los problemas relacionados con las actividades de administracin
de la fundamentacin. El registro de las justificaciones para las decisiones de diseo se ve, con
frecuencia, como una intrusin de la administracin en el trabajo de los desarrolladores y, por
tanto, las tcnicas de la fundamentacin encuentran resistencia por parte de los desarrolladores y
a menudo degeneran en un proceso burocrtico. Las tcnicas de la fundamentacin necesitan
administrarse con cuidado para que sean tiles. En esta seccin describimos la manera de:
Escribir documentos acerca de la fundamentacin (seccin 8.5.1).
Asignar responsabilidades para la captura y mantenimiento de los modelos de fundamentacin
(seccin 8.5.2).
Comunicar acerca de los modelos de fundamentacin (seccin 8.5.3).
Usar los problemas para negociar (seccin 8.5.4).
Resolver conflictos (seccin 8.5.5).
Igual que antes, continuamos enfocndonos en la actividad de diseo del sistema. Sin embargo,
observe que estas tcnicas pueden aplicarse de manera uniforme a todo el desarrollo.
8.5.1 Documentacin de la fundamentacin
Cuando la fundamentacin est capturada y documentada de manera explcita, queda
mejor descrita en documentos separados de los documentos del modelo del sistema. Por ejem
plo, la fundamentacin que hay detrs de las decisiones del anlisis de requerimientos se acre
dita en el documento de fundamentacin del anlisis de requerimientos (RARD, por sus siglas en
ingls), que complementa al documento de anlisis de requerimientos (RAD, por sus siglas
www.FreeLibros.org
318 C apitulo 8 Administracin d e la fundamentacin
en ingls). En forma similar, la fundamentacin que hay detrs de las decisiones del diseo del
sistema se acredita en el documento de fundamentacin del diseo del sistema (SDRD, por sus
siglas en ingls), que complementa al documento de diseo del sistema (SDD, por sus siglas en
ingls). En esta seccin nos enfocamos en el SDRD, ya que el diseo del sistema es la actividad
que ms se beneficia con la captura de la fundamentacin. La figura 8-25 es un ejemplo de una
plantilla para SDRD.
La audiencia del SDRD es la misma que la del SDD: el SDRD lo usan los desarrolladores
cuando revisan las decisiones, los revisores cuando revisan el sistema y los nuevos desarrollado-
res cuando se les asigna al proyecto. Las actividades especficas para las que est orientado el
documento de fundamentacin se describen en la primera seccin del documento. Un documento
que se enfoca en la justificacin del sistema para los revisores puede contener slo las propues
tas y argumentos relevantes para las resoluciones seleccionadas. Un documento que captura la
mayor parte posible del contexto del diseo puede contener, adems, todas las alternativas des
cartadas y sus evaluaciones. La primera seccin tambin repite los objetivos de diseo que se
seleccionaron al inicio del diseo del sistema. Estos representan los criterios que usan los desa
rrolladores para evaluar soluciones alternas.
Las siguientes dos secciones se componen de una lista de problemas, formateados de la misma
manera que el problema del control de acceso que describimos con anterioridad en la figura 8-24. La
lista de problemas puede constituir la justificacin sistemtica del diseo, o ser tan slo una coleccin
de problemas capturados en el curso del diseo del sistema. Los problemas pueden relacionarse entre
s con subproblemas y referencias a problemas consecuentes. Por ltimo, en este documento pueden
insertarse apuntadores hacia el SDD en las secciones relevantes para facilitar la navegacin.
Documento de fundamentacin del diseo del sistema.
1. Introduccin
1.1 Propsito del documento
1.2 Objetivos del diseo
1.3 Definiciones, siglas y abreviaturas
1.4 Referencias
1.5 Panorama
2 Fundamentacin para la arquitectura de software actual
3. Fundamentacin para la arquitectura de software propuesta
3.1 Panorama
3.2 Fundamentacin para la descomposicin e n subsistemas
3.3 Fundamentacin para la correspondencia entre hardware y software
3.4 Fundamentacin para la administracin de datos persistentes
3.5 Fundamentacin para el control del acceso y la seguridad
3.6 Fundamentacin para el control del software global
3.7 Fundamentacin para las condiciones de frontera
Glosario
Figura 8-25 U n e j e m p l o d e p l a n t i l l a p a r a e l S D R D .
www.FreeLibros.org
Administracin d e la fundamentacin 319
La segunda seccin del SDRD describe la fundamentacin para el sistema que se est
reemplazando. Si no hay sistema anterior, esta seccin puede sustituirse con la fundamentacin
para sistemas similares. El propsito de esta seccin es hacer explcitas las fundamentadones
anteriores que se han explorado y los problemas que deben observar los desarrolladores.
La tercera seccin del SDRD describe la fundamentacin del nuevo sistema. En forma
paralela a la estructura del SDD, esta seccin se divide en siete subsecciones:
Panorama presenta una vista a ojo de pjaro de esta seccin, incluyendo un resumen de los
problemas ms crticos que se trataron durante el diseo del sistema.
Fundamentacin para la descomposicin en subsistemas justifica la descomposicin en
subsistemas seleccionada. Cmo minimiza el acoplamiento? Cmo incrementa la coherencia?
Cmo satisface los objetivos de diseo que se establecieron en la primera seccin? Desde
un punto de vista ms general, aqu se enumera cualquier problema que haya tenido un
impacto en la descomposicin en subsistemas.
Fundamentacin para la correspondencia entre hardware y software justifica la configuracin
de hardware seleccionada, la asignacin de subsistemas a los nodos y los problemas del cdigo
heredado.
Fundamentacin para la administracin de datos persistentes justifica la seleccin del meca
nismo de almacenamiento de datos. Por qu se seleccionaron archivos planos o base de datos
relacional o base de datos orientada a objetos? Cules criterios de diseo condujeron a esta
decisin? Cules otros problemas debe manejar el componente de almacenamiento?
Fundamentacin para el control de acceso y la seguridad justifica la implementacin
del control de acceso seleccionado. Por qu se seleccionaron las listas de acceso o las
capacidades? Cmo se integra el control de acceso con otros sistemas para la distribucin
de informacin, como el middleware o el subsistema de notificacin? El problema del
control de acceso para el CTC se incluira en esta seccin.
Fundamentacin para el control del software global justifica el mecanismo de control
seleccionado. Cules componentes heredados restringieron el control del software? Hubo
componentes heredados incompatibles? Cmo se manej esto?
Fundamentacin para las condiciones de frontera justifica cada condicin de frontera y su
manejo. Por qu revisa el sistema la consistencia de la base de datos al arranque? Por
qu el sistema da un aviso a los Despachador 10 minutos antes de apagarse (en vez de 20
minutos o dos horas)?
H SDRD deber escribirse al mismo tiempo que el SDD y revisarse cada vez que se revise el SDD.
Esto asegura que ambos documentos sean consistentes y motiva a tos desarrolladores para que hagan
explcita la fundamentacin. El SDRD no slo deber revisarse cuando se cambia el diseo, sino tam
bin cuando se encuentra que felta fundamentacin (por ejemplo, durante las revisiones).
8.5.2 Asignacin de responsabilidades
La asignacin de responsabilidades para la captura y el mantenimiento de la fundamentacin
es la decisin administrativa ms crtica para que sean tiles los modelos de fundamentacin. El
mantenimiento de la fundamentacin puede percibirse con facilidad como un proceso burocrtico
www.FreeLibros.org
320 C apitulo 8 Administracin d e la fundamentacin
intruso mediante el cual los desarrolladores necesitan justificar todas las decisiones. En vez de ello,
una pequea cantidad de personas que tenga acceso a la informacin de todos los desarrolladores,
como los borradores de documentos de diseo y grupos de noticias de los desarrolladores, debe
mantener los modelos de fimdamentacin. Este pequeo grupo de personas, al convertirse en el
historiador del sistema, llega a ser til para los dems desarrolladores cuando proporciona infor
macin sobre la fimdamentacin y, por tanto, crea un incentivo en los desarrolladores para que les
proporcionen informacin. A continuacin se tienen los papeles principales relacionados con el
mantenimiento del modelo de razones:
El secretario de a c t as registra la fimdamentacin en las reuniones. Esto incluye el registro
cronolgico de declaraciones durante las reuniones y su reestructuracin con los problemas
despus de la reunin (vea la seccin 8.4.2).
El editor de f undamentacin recolecta y organiza la informacin relacionada con la fimda
mentacin. Esto incluye la obtencin de las minutas de reunin del secretario de actas, de
bs reportes de evaluacin de prototipos y tecnologa de los desarrolladores y de los borradores
de todos los modelos del sistema y documentos de diseo de los escritores tcnicos. El
editor de fimdamentacin impone una sobrecarga mnima sobre tos desarrolladores y escri
tores, realizando el papel de estructuracin e indexado. Los desarrolladores no necesitan
proporcionar informacin estructurada como los modelos de problemas, sino que el editor de
fimdamentacin construye un ndice de todos tos problemas.
El r e v i s o r examina las fundamentaciones capturadas por el editor de fundamentacin e
identifica brechas que necesiten reconstruirse. Luego el revisor recolecta la informacin
relevante de los registros de comunicaciones y, si es necesario, de los desarrolladores. ste
no debe ser un papel administrativo o de aseguramiento de la calidad: el revisor debe bene
ficiar en forma directa a los desarrolladores para que pueda recopilar informacin vlida.
Este papel puede combinarse con el de editor de fundamentacin.
El tamao del proyecto determina la cantidad de secretarios de actas, editores de fimdamentacin
y revisores. Puede usarse la siguiente heurstica para la asignacin de estos papeles:
Un se c re t a ri o de a c t as po r equipo. Las reuniones se organizan, por lo general, por equipo
(fe subsistema o por equipo de funcionalidad cruzada. Un desarrollador de cada equipo puede
funcionar como secretario de actas, distribuyendo por tanto este papel consumidor de tiempo
a lo largo de todo el proyecto.
U n e d i t o r de f u n d a m e n t a c i n por p r o y e ct o . El papel de editor de fundamentacin para
un proyecto es un papel de tiempo completo. A diferencia del papel del secretario de actas,
que puede ser rotatorio, el papel del editor de fimdamentacin requiere consistencia y debe
asignarse a una sola persona. En proyectos pequeos puede asignarse este papel al arquitecto
del sistema (vea el captulo 6, Diseo del sistema).
I n c r e m e n t a r l a c a n t i d a d de r e v i s o r e s d e s p u s de la e n t r eg a . Cuando el sistema se
entrega y disminuye la cantidad de desarrolladores necesarios de manera directa para el
proyecto, debern asignarse algunos desarrolladores al papel de revisores para recuperar y
organizar la mayor cantidad de informacin posible. La informacin de la fundamentacin
todava es recuperable de la memoria de los desarrolladores, pero desaparece con rapidez
cuando los desarrolladores pasan a otros proyectos.
www.FreeLibros.org
Administracin d e la fundamentacin 321
8.5.3 Heurstica para la comunicacin acerca de la fundamentacin
Una gran parte de la comunicacin es informacin sobre la fundamentacin, ya que los argu
mentos son, por definicin, la fundamentacin (vea la seccin 8.2). Los desarrolladores argumentan
acerca de los objetivos del diseo, si un problema es relevante o no, el beneficio de varias solucio
nes y su evaluacin. La fundamentacin constituye un cuerpo de informacin grande y complejo,
por lo general ms grande que el sistema mismo. Adems, con frecuencia la comunicacin sucede
en foros pequeos, por ejemplo, en una reunin de equipo o una conversacin junto a la cafetera.
El reto de la comunicacin acerca de la fundamentacin es hacer accesible esta informacin a
todas las partes involucradas sin causar una sobrecarga de informacin. En este captulo nos enfo
camos en tcnicas para la captura y estructuracin de la fundamentacin, como el uso de un modelo
de problemas en las minutas, conversaciones complementarias y documentacin de la fundamen
tacin. Adems, pueden usarse las siguientes heursticas para incrementar la estructura de la funda-
mentacin y facilitar la navegacin por ellas:
Nombre l os p r obl e mas e n f o r ma c o nsistente. Los problemas debern nombrarse en forma
consistente y nica en todas las minutas, grupos de noticias, mensajes de correo electrnico
y documentos. Los problemas pueden tener un nmero (por ejemplo, 1291) y un nombre
corto (por ejemplo, el problema del acceso y notificacin) para facilitar su referencia.
C e n t r a l i c e l o s p r o b l e m a s . Aunque los problemas se discutirn en muchos contextos,
motive que un contexto (por ejemplo, un grupo de noticias o una base de problemas) sea el
depsito central de problemas. Esta base de problemas debe mantenerla el editor de funda-
mentacin, pero puede usarla y ampliarla cualquier desarrollador. Esto permite que los
desarrolladores busquen informacin con rapidez.
Haga referencias cruzadas de pr oblemas y e lementos del sistema. La mayora de los pro
blemas se aplican a elementos especficos de los modelos del sistema (por ejemplo, un caso de
uso, un objeto, un subsistema). Saber a cul elemento del modelo se aplica un problema es
pecfico es directo. Sin embargo, saber cules problemas se aplican a un elemento del modelo
especfico es una cuestin mucho ms difcil. Para facilitar este tipo de consulta, los problemas
debern asociarse al elemento del modelo aplicable cuando se plantean los problemas.
A d m in is t r e e l c a m bi o . La fundamentacin evoluciona conforme lo hacen los modelos.
Por tanto, la administracin de la configuracin debe aplicarse en forma consistente a la
fundamentacin y los documentos, as como se aplica a los modelos del sistema.
La captura y estructuracin de la fundamentacin no slo mejora la comunicacin acerca de la
fundamentacin, sino que tambin facilita la comunicacin acerca de los modelos del sistema.
La integracin de la fundamentacin y la informacin del sistema permite que los desarrolladores
mantengan en mejor forma ambos tipos de informacin.
8.5.4 Modelado y negociacin de problemas
Las decisiones ms importantes en el desarrollo son resultado de la negociacin. Diferentes
partes que representan intereses diferentes, y a veces conflictivos, llegan a un consenso sobre algn
aspecto del sistema. El anlisis de requerimientos incluye la negociacin de la funcionalidad con el
cliente. El diseo del sistema incluye la negociacin de las interfaces de subsistemas entre desarrolla
dores. La integracin incluye la resolucin de conflictos entre desarrolladores. Usamos el modelado de
problemas para representar la informacin intercambiada durante esas negociaciones para capturar la
fundamentacin. Tambin pdanos usar el modelado de problemas para facilitar las negociaciones.
www.FreeLibros.org
322 C apitulo 8 Administracin d e la fundamentacin
La negociacin tradicional, que consiste en negociar posiciones, con frecuencia consume
tiempo y es ineficiente, en especial cuando las partes negociadoras sostienen posiciones incompati
bles. Se desperdician esfuerzos en la defensa de la posicin personal, citando todas sus ventajas,
mientras que la parte opositora desperdicia esfuerzos denigrando la posicin del otro citando todas
sus desventajas. La negociacin avanza a pequeos pasos hacia un consenso o termina en una
solucin arbitraria sobre el asunto negociable. Adems, esto puede suceder aun cuando las partes
negociadoras tengan intereses compatibles: cuando se defienden posiciones las personas tienen
mucho mayor problema para evolucionar o cambiar su posicin sin prdida de credibilidad. El
mtodo de negociacin Harvard [Fischer et al., 1991] aborda estos puntos retirando el foco de
las posiciones. A continuacin presentamos varios puntos importantes del mtodo Harvard
redactados desde el punto de vista del modelado de problemas:
S e p a r e a l o s d e s a r r o l l a d o r e s de l a s p r o p u e s t a s . Los desarrolladores pueden desper
diciar muchos recursos desarrollando una propuesta especfica (es decir, una posicin), a
un punto tal que la crtica de la propuesta se toma como una crtica personal hacia el desa-
rrollador. Se debe separar a los desarrolladores y a las propuestas para facilitar la evolucin
o rechazo de una propuesta. Esto puede lograrse haciendo que varios desarrolladores tra
bajen en la misma propuesta o haciendo que todas las partes involucradas participen en el
desarrollo de todas las propuestas. La separacin del trabajo de diseo y la implemen
tacin puede facilitar an ms esta distincin. Al asegurarse que la negociacin se d antes
que la implementacin, y antes de que se hayan comprometido recursos considerables, los
desarrolladores pueden hacer que las propuestas evolucionen hacia cosas con las que todos
puedan vivir.
E n f q u e s e e n l os c r i t e r i o s y no e n l as p r o p u e s t a s . Como se dijo antes, la mayora de los
argumentos pueden trazarse hasta los criterios, a menudo implcitos, que se usan para la
evaluacin. Una vez que se tiene en su lugar un conjunto de criterios aceptados, la evalua
cin y seleccin de propuestas es mucho menos controvertida. Adems, los criterios estn
mucho menos sujetos a cambios que los dems factores del producto. Llegar a un acuerdo
pronto sobre los criterios tambin facilita la revisin de las decisiones.
Tome e n c u e n t a t o d o s l os c r i t e r i o s e n ve z de m a x i m iz a r u n o s o l o . Diferentes criterios
reflejan los intereses de partes diferentes. Los criterios de desempeo estn motivados, por
lo general, por preocupaciones de usabilidad. Los criterios de modificabilidad estn moti
vados por preocupaciones de mantenimiento. Aunque algn criterio se considere con mayor
prioridad que los dems, la optimizacin nicamente de estos criterios de alta prioridad
pone en riesgo que se dejen fuera de la negociacin a una o ms partes.
La visin del desarrollo como una negociacin responde a los aspectos sociales del desarrollo.
Los desarrolladores son personas que, adems de sus opiniones tcnicas, pueden tener una pers
pectiva emocional sobre soluciones diferentes. Esto puede influir en sus relaciones con los dems
desarrolladores (y a veces interferir con ellas) conforme se presentan los conflictos. El uso del
modelado de problemas para capturar la fundamentacin y dirigir las decisiones puede integrar y
mejorar los aspectos tcnicos y sociales del desarrollo.
www.FreeLibros.org
Administracin d e la fundamentacin 323
8.5.5 Estrategias para la resolucin de conflictos
En ocasiones los participantes en el proyecto no obtienen un consenso mediante la negocia
cin. En tales casos, es esencial que se cuente con estrategias para la resolucin de conflictos a fin de
manejar la situacin. Las peores decisiones de diseo son las que no se toman a causa de falta de con
senso o por la ausencia de estrategias para la resolucin de conflictos. Esto retrasa las decisiones
esenciales hasta muy tarde en el desarrollo, dando como resultado altos costos de rediseo y registro.
Son posibles muchas estrategias diferentes para la resolucin de conflictos. Por ejemplo,
considere las cinco estrategias siguientes:
La m a y o r a gana. En caso de conflicto, un voto mayoritario puede eliminar el bloqueo y
resolver la decisin. Varias herramientas de colaboracin permiten que los usuarios asignen
peso a diferentes argumentos en el modelo de problemas y, por tanto, calculen con una
frmula aritmtica cul propuesta debe seleccionarse [Purvis etal., 1996]. Esto asume que
las opiniones de cada uno de los participantes tiene la misma importancia y que, desde el
punto de vista estadstico, el grupo toma decisiones correctas.
El p r o p i e t a r i o ti en e l a l t i m a p a l a b r a . En esta estrategia, el propietario de un asunto (la
persona que lo plante) es responsable de decidir el resultado. Esto supone que el propietario
tiene el inters ms grande en el asunto.
La g e r e n c i a s i e m p r e e s t e n l o c o r r e c t o . Una estrategia alternativa es apoyarse en la
jerarqua de la organizacin. Si un grupo no puede llegar al consenso, el gerente del grupo
impone una decisin basado en los argumentos. Esto asume que el gerente es capaz de
comprender los argumentos y tomar los compromisos adecuados.
Los expertos siempre tienen l a razn. En esta estrategia un experto externo, ajeno al debate,
valora la situacin y aconseja el mejor curso de accin. Por ejemplo, durante el anlisis de
requerimientos se puede entrevistar a un usuario de pruebas para evaluar las propuestas dife
rentes sobre un problema. Por desgracia, tal experto tiene un conocimiento limitado de las
dems decisiones del sistema o, de manera ms general, del contexto del diseo.
El t i e m p o de c id e . Conforme un problema se deja sin resolver, el tiempo llega a ser una
presin y obliga a una decisin. Adems, los problemas controvertidos pueden llegar a ser
ms fciles de resolver conforme se toman otras decisiones y se definen otros aspectos del
sistema. El peligro de esta estrategia es que conduce a decisiones que optimizan criterios a
corto plazo (como la facilidad de la implementacin) y no toman en cuenta los criterios
a largo plazo (como la modificabilidad y el mantenimiento).
Las estrategias La mayora gana y El propietario tiene la ltima palabra no funcionan bien. Ambas
producen resultados inconsistentes (multiplicidad de tomadores de decisiones) y decisiones que no
estn bien apoyadas por el resto de los participantes. Las estrategias La gerencia siempre est en lo
correcto y Los expertos siempre tienen la razn conducen a mejores decisiones tcnicas y a mejor
consenso cuando el gerente y el experto tienen suficiente conocimiento. La estrategia El tiempo
decide es una retirada, aunque una que puede dar como resultado una costosa repeticin del trabajo.
En la prctica, primero tratamos de llegar a un consenso, y en el caso de la falta de consenso,
recurrimos a una estrategia de experto o gerente. Si falla la estrategia del experto o gerente dejamos
que el tiempo decida o lo resolvemos por voto obligatorio de la mayora.
www.FreeLibros.org
324 C apitulo 8 Administracin d e la fundamentacin
1. A continuacin se tiene un fragmento de un documento de sistema para un sistema de
administracin de accidentes. Es una descripcin, en lenguaje natural, de la fundamentacin
para que una base de datos relacional sea el almacenamiento permanente. Modele esta
fundamentacin con problemas, propuestas, argumentos, criterios y resoluciones, como se
defini en la seccin 8.3.
8.6 Ejercicios
Un asunto fundamental en el diseo de bases de datos fue la realizacin del motor de la base de
datos. Los requerimientos no funcionales iniciales del subsistema de base de datos insisten en el uso
de una base de datos orientada a objetos para la mquina subyacente. Otras opciones posibles
incluyen el uso de una base de datos relacional, un sistema de archivos o una combinacin de las
otras opciones. Una base de datos orientada a objetos tiene la ventaja de poder manejar relaciones de
datos complejas y se apega por completo a las palabras de moda. Por otro lado, las bases de datos
0 0 pueden ser demasiado lentas para grandes volmenes de datos o accesos muy frecuentes.
Adems, los productos existentes no se integran bien con CORBA, debido a que el protocolo no
soporta caractersticas especficas del lenguaje de programacin, como las asociaciones Java. El uso
de una base de datos relacional proporciona un motor ms robusto con caractersticas de desempeo
ms altas y una gran experiencia y herramientas para trabajar con ella. Adems, el modelo de datos
relacional se integra muy bien con CORBA. Por lo que se refiere a las desventajas, este modelo no
soporta con facilidad las relaciones de datos complejas. La tercera opcin se propuso para manejar
tipos de datos especficos que se escriben una vez y se leen con poca frecuencia. Este tipo de datos
(incluyendo lecturas de sensor y salidas de control) tiene menos relaciones con poca complejidad y
debe archivarse durante largos periodos de tiempo. Los archivos proporcionan una solucin de
archivado fcil y pueden manejar grandes cantidades de datos. En forma alternativa, habr que
escribir cualquier cdigo a partir de cero, incluyendo la sealizacin del acceso. Decidimos usar
slo una base de datos relacional, basados en el requerimiento de usar CORBA y a la luz de la
simplicidad relativa de las relaciones entre los datos persistentes del sistema.
2. En la seccin 8.3 examinamos un problema relacionado con el control del acceso y la
notificacin en el sistema CTC. Seleccione un problema similar que pueda suceder en el
desarrollo y el CTC y clmelo con propuestas, criterios y argumentos relevantes, justificando
una resolucin. Los ejemplos de estos problemas incluyen:
Cmo puede mantenerse la consistencia entre s e r v i d o r P r i n c i p a l y respaldoVivo?
Cmo debe detectarse la falla del s e r v i d o r P r i n c i p a l e implementarse el
cambio subsiguiente al respaldoVivo?
3. Est desarrollando una herramienta CASE usando UML como notacin principal y est
considerando la integracin de la fundamentacin en la herramienta. Describa la manera
en que un desarrollador puede asociar problemas a diferentes elementos del modelo. Trace
un diagrama de clase sobre el modelo de problemas y sus asociaciones con los elementos
del modelo.
4. Considere la misma herramienta CASE del ejercicio 3. Est considerando la generacin de
un documento de fundamentacin a partir del modelo. Describa la correspondencia entre
clases, problemas y las secciones del documento de fundamentacin.
5. Est integrando un sistema para el reporte de errores con una herramienta de administracin
de configuracin para dar seguimiento a los reportes de errores, resolucin de errores,
peticin de caractersticas y mejoras. Est considerando un modelo de problemas para la
www.FreeLibros.org
p r c i d o s 325
integracin de estas herramientas. Trace un diagrama de clase del modelo de problemas, la
discusin correspondiente, la administracin de la configuracin y los elementos para el
reporte de errores.
Referencias
[Boehm et al., 1995]
[Buckingham Shum y Hammond, 1994]
[Conklin y Burgess-Yakemovic, 1991]
[Dutoit et al., 19%]
[Fischer ef a/., 1991]
[Kunz y Rittel, 1970]
[Lee, 1990]
[Lee, 1997]
[MacLean et al^ 1991]
[Moran y Carroll, 19%]
[Potts et al., 1988]
[Potts et al., 1994]
[Potts, 19%]
[Purvis et al., 19%]
[Shipman et al., 1997]
B. Boehm, P. Bose, E. Horowitz y M.J. Lee, 'Software requirements
negotiation and renegotiation aids: A theory-W based spiral approach",
Proceedings o f the ICSE-17, Seattle, 1995.
S. Buckingham Shum y N. Hammond, Argumentation-based design rationale:
What use at what cost?" International Journal o f Human-Computer Studies,
Vol. 40, pgs. 603 -652, 1994.
J. Conklin y K. C. Burgess-Yakemovic, A process-oriented approach to
design rationale , Human-Computer Interaction,Vol. 6, pgs. 357-391, 1991.
A. H. Dutoit, B. Bruegge y R. F. Coyne, The use o f a n issue-based model
in a team-based software engineering course", Conference Proceedings o f
Sofhvare Engineering: Education and Practice (SEEP% ). Dunedin, NZ,
enero de 1996.
R Fisher, W. Ury y B. Patton, Gettingto Yes: NegotiatingAgreement Without
Givingln, 2a ed. Penguin Books, Nueva York, 1991.
W. Kunz y H. Rittel, Issues a s elements o f information systems , Working
Paper No. 131, Institut fr Grundlagen der Plannung, Universitt Stuttgart,
Alemania, 1970.
J. Lee, A qualitative decisin management system , Artificial Intelligence at
M1T: Expanding Frontiers. P.H Winston & S. Shellard (eds.) MIT Press,
Cambridge, MA, Vol. l,pgs. 104-133, 1990.
J. Lee, Design rationale systems: Understanding the issues", IEEE Expert,
mayo-junio de 1997.
A. MacLean, R. M. Young, V. Bellotti yT. Moran, Questions, options, and
criteria: Elements o f design space analysis , Human-Computer nteraction,
\fol. 6, pgs. 201-250, 1991.
T. P. Moran & J. M. Carroll (eds.), Design Rationale: Concepts, Techniques,
and Use. Lawrence Erlbaum Associates, Mahwah, NJ, 19%.
C. Potts y G. Bruns, Recording the reasons for design decisions",
Proceedings o f the lOth International Conference on Sofhvare Engineering,
pgs. 418-427, 1988.
C. Potts, K. Takahashi y A. I. Antn, Inquiry-based requirements analysis",
IEEE Sofhvare, Vol. 11, no. 2, pgs. 21-32, 1994.
C. Potts, Supporting software design: Integrating design methods and design
rationale , Design Rationale: Concepts, Techniques, and Use. T.P. Moran &
J.M. Carroll (eds.) Lawrence Erlbaum Associates, Mahwah, NJ, 19%.
M. Purvis, M. Purvis y P. Jones, A group collaboration tool for software
engineering projects , Conference proceedings o f Sofhvare Engineering:
Education and Practice (SEEP'96). Dunedin, NZ, enero de 1996.
F.M. Shipman III y R.J. McCall, Integrating different perspectives on design
rationale: Supporting the emergence o f design rationale from design
communication , Artificial Intelligence in Engineering Design, Analysis, and
Manufacturing, Vol. 11, no. 2, 1997.
www.FreeLibros.org
9
9.1 Introduccin 328
9.2 Un panorama de las pruebas 330
9.2.1 Tcnicas de control de calidad 331
9.2.2 Tcnicas para evitar defectos 331
9.2.3 Tcnicas para la deteccin de defectos 333
9.2.4 Tcnicas para la tolerancia de defectos 334
9.3 Concepto de las pruebas 336
9.3.1 Defectos, errores y fallas 337
9.3.2 Casos de prueba 340
9.3.3 Stubs y manejadores de pruebas 342
9.3.4 Correcciones 343
9.4 Actividades de las pruebas 344
9.4.1 Inspeccin de componentes 344
9.4.2 Prueba unitaria 345
9.4.3 Pruebas de integracin 352
9.4.4 Pruebas del sistema 358
9.5 Administracin de las pruebas 363
9.5.1 Planeacin de las pruebas 363
9.5.2 Documentacin de las pruebas 365
9.5.3 Asignacin de responsabilidades 367
9.6 Ejercicios 368
Referencias 369
326
www.FreeLibros.org
9
Pruebas
Se ha concluido el software.
Ahora slo estamos tratando de que funcione.
Declaracin hecha en una revisin conjunta
del programa ejecutivo STARS E-8A FSD
I - i a s pruebas son el proceso de encontrar diferencias entre el comportamiento esperado, espe
cificado por los modelos del sistema, y el comportamiento observado del sistema. Las pruebas
unitarias encuentran diferencias entre el modelo de diseo de objetos y sus componentes corres
pondientes. Las pruebas estructurales encuentran diferencias entre el modelo del diseo del
sistema y un subconjunto de subsistemas integrados. Las pruebas funcionales encuentran dife
rencias entre el modelo de caso de uso y el sistema. Por ltimo, las pruebas de desempeo en
cuentran diferencias entre los requerimientos no funcionales y el desempeo real del sistema.
Cuando se encuentran diferencias, los desarrolladores identifican el defecto que causa la falla
observada y modifican el sistema para corregirlo. En otros casos se identifica al modelo como
causa de la diferencia y se actualiza ste para que refleje el estado del sistema.
Desde el punto de vista del modelado, las pruebas son un intento de falsificacin del sis
tema con respecto a los modelos del sistema. El objetivo es disear pruebas que manifiesten los
defectos que hay en el sistema y que revelen los problemas. Esta actividad es contraria a todas
las dems actividades que describimos en los captulos anteriores: anlisis, diseo, implemen
tacin, comunicacin y negociacin son actividades constructivas. Sin embargo, las pruebas
estn orientadas al quebrantamiento del sistema. En consecuencia, las pruebas las realizan, por
lo general, desarrolladores que no estuvieron involucrados en la construccin del sistema.
En este captulo, primero motivamos la importancia de las pruebas. Proporcionamos una
visin de conjunto de las actividades de las pruebas, describimos con mayor detalle los concep
tos de defecto, error, falla y prueba, y luego describimos las actividades de prueba que dan como
resultado el plan, diseo y ejecucin de las mismas. Concluimos este captulo tratando proble
mas administrativos relacionados con las pruebas.
327
www.FreeLibros.org
328 C apitulo 9 Pruebas
Las pruebas son el proceso de anlisis de un sistema, o componente de un sistema, para detectar
las diferencias entre el comportamiento especificado (requerido) y el observado (existente). Por
desgracia, es imposible probar por completo un sistema no trivial. En primer lugar, las pruebas
no son determinantes. En segundo, es necesario realizar las pruebas bajo restricciones de tiempo
y presupuesto. En consecuencia, los sistemas se entregan sin estar probados por completo, lo
que conduce a defectos que son descubiertos por los usuarios finales.
El primer lanzamiento del transbordador espacial Columbia en 1981, por ejemplo, se can
cel a causa de un problema que no se detect durante el desarrollo. Se encontr que el pro
blema fue provocado por un cambio hecho dos aos antes por un programador, quien, por error,
cambi un factor de retraso de 50 a 80 milisegundos. Esto aadi la probabilidad de 1/67 de que
fallara el lanzamiento de cualquier transbordador espacial. Por desgracia, a pesar de miles de
horas de pruebas despus de que se hizo el cambio, no se descubri el defecto en la fase de prue
bas. Durante el lanzamiento real el defecto caus un problema de sincronizacin en las cinco
computadoras a bordo del transbordador que dio lugar a la decisin de abortar el lanzamiento. El
siguiente es un fragmento de un artculo de Richard Feynman que describe los retos de las prue
bas del transbordador espacial.
9.1 Introduccin
En un total de casi 250,000 segundos de operacin, los motores haban fallado en forma seria tal vez 16
veces. Los ingenieros pusieron mucha atencin e n esas fallas y trataron de remediarlas lo ms pronto
posible. Esto se hace mediante estudios de prueba en aparatos especiales diseados en forma experi
mental para la falla en cuestin, mediante una inspeccin cuidadosa del motor buscando pistas su geren
tes (como grietas) y mediante estudios y anlisis considerables...
La forma usual en que se prueban tales motores (para aeronaves civiles o militares) puede llamarse
prueba de componentes del sistema o de abajo hacia arriba. Primero necesitan comprenderse por com
pleto las propiedades y limitaciones de los materiales que se usan (para las hojas de las turbinas, por
ejemplo), y comienzan las pruebas en aparatos experimentales para determinarlas. Con este conocimiento
se disean y prueban de manera individual partes componentes ms grandes (como los cojinetes). Con
forme se observan deficiencias y errores de diseo se corrigen y verifican con ms pruebas. Debido a
que se prueba un componente a la vez, estas pruebas y modificaciones no son excesivamente caras. Por
ltimo, hay muchas probabilidades de que las modificaciones al motor para resolver las ltimas dificul
tades no sean muy difciles de realizar, porque la mayora de los problemas serios ya se han descubierto
y resuelto en las etapas anteriores, menos caras, del proceso.
El motor principal del transbordador espacial se manej de manera diferente, podramos decir que de
arriba hacia abajo. El motor se dise y ensambl de una vez con relativamente muy pocos estudios pr e
liminares detallados del material y sus componentes. Luego, cuando se encuentran problemas en los
cojinetes, hojas de turbina, tubos de enfriamiento, etc., es ms difcil y caro descubrir la causa y hacer
cambios. Por ejemplo, se encontraron grietas e n las hojas de turbina de la turbobomba de oxgeno a alta
presin. Son causadas por fallas en el material, por el efecto de la atmsfera de oxgeno sobre las
propiedades del material, po r los esfuerzos trmicos del arranque o el apagado, por la vibracin y esfuerzo
de mantenerse funcionando o principalmente por alguna resonancia a determinadas velocidades, etctera?
Qu tanto puede funcionar desde que se inicia la grieta hasta la falla y qu tanto depende del nivel de
potencia? El uso del motor terminado como banco de prueba para resolver estas preguntas es excesiva
mente caro. No quiere perderse un motor completo para saber cundo y cmo sucede una falla.
www.FreeLibros.org
Introduccin 329
No obstante, e s esencial un conocimiento preciso de esta informacin para adquirir confianza en la con
fiabilidad del motor que se usa. Sin una comprensin detallada no puede lograrse la confianza. Una des
ventaja adicional del mtodo de arriba hacia abajo es que, si se consigue la comprensin de un defecto,
puede ser imposible imple mentar una correccin simple, como una nueva forma para la carcasa de la
turbina, sin redisear todo el motor.
El motor principal del transbordador espacial es una mquina extraordinaria. Tiene una relacin peso-
potencia mucho mayor que cualquier motor anterior. Est construido al lmite, o ms all, de experien
cias de ingeniera anteriores. Por tanto, como era de esperarse, aparecieron muchos tipos diferentes de
imperfecciones y dificultades. Por desgracia, debido a que se construy de arriba hacia abajo, son
difciles de encontrar y componer. No se obtuvo el propsito de diseo de un tiempo de vida de encen
didos equivalentes a 55 misiones (27,000 segundos de operacin, ya sea en una misin de 500 segundos
o e n un banco de pruebas). El motor ahora requiere mantenimiento muy frecuente y el reemplazo de
partes importantes, como las turbobombas, cojinetes, carcasas de hojas metlicas, etc. La turbobomba
de combustible de alta presin tiene que reemplazarse cada tres o cuatro misiones equivalentes (aunque
puede ser que para ahora ya se haya corregido) y la turbobomba de oxgeno de alta presin cada cinco o
seis. Esto es, cuando mucho, 10% de la especificacin original.
El artculo de Feynman1 nos da una idea de los problemas asociados con la prueba de
sistemas complejos. Aunque el transbordador espacial es un sistema de hardware y software
complejo en extremo, los retos de las pruebas son los mismos para cualquier sistema complejo.
A menudo se han visto las pruebas como un trabajo que pueden realizar los principiantes.
Los gerentes querrn asignar a los nuevos miembros al equipo de pruebas, debido a que las per
sonas con experiencia detestan las pruebas o porque se les necesita para los trabajos ms impor
tantes de anlisis y diseo. Por desgracia, tal actitud conduce a muchos problemas. Para probar
un sistema en forma efectiva, quien hace la prueba debe tener una comprensin detallada del
sistema completo, que va desde las decisiones de requerimientos hasta las del diseo del sistema
y los problemas de implementacin. Quien hace la prueba tambin debe tener conocimientos
sobre las tcnicas de pruebas, y aplicarlas en forma eficaz y eficiente para cumplir con las
restricciones de tiempo, presupuesto y calidad.
Este captulo est organizado de la manera siguiente: en la seccin 9.2 revisamos las prue
bas y mostramos su relacin con otros mtodos para el aseguramiento de la calidad. En la seccin
9.3 definimos con mayor detalle los elementos del modelo relacionados con las pruebas, inclu
yendo los defectos, su manifestacin y su relacin con las pruebas. En la seccin 9.4 describimos
las actividades de prueba que se encuentran en el proceso de desarrollo. Primero describimos las
pruebas unitarias, que se enfocan en la localizacin de fallas en un solo componente. Luego
describimos las pruebas de integracin y del sistema, que se enfocan en la localizacin de
fallas en combinaciones de componentes y en el sistema completo, respectivamente. Tambin
1. Feynman [Feynman, 1988] escribi el artculo cuando era miembro de la comisin presidencial que investigaba la
explosin del transbordador espacial Challenger en enero de 1985. Se rastre la causa del accidente hasta una
erosin de los anillos O en los cohetes secundarios slidos. Adems de los problemas de pruebas del motor principal
dsl transbordador y los cohetes secundarios slidos, el artculo menciona el fenmeno del cambio gradual de los cri
terios de aceptacin de pruebas y los problemas resultantes de la falta de comunicacin entre la administracin y los
cfesarrolladores que se encuentra, por lo general, en las organizaciones jerrquicas.
www.FreeLibros.org
330 C apitulo 9 Pruebas
describimos las actividades de prueba que se enfocan en los requerimientos no funcionales,
como las pruebas de desempeo y las pruebas de fortaleza. Concluimos la seccin 9.4 con las
actividades de prueba de campo y de instalacin. En la seccin 9.5 tratamos los problemas
administrativos relacionados con las pruebas.
9.2 Un panorama de l a s pruebas
La confiabilidad es una medida del xito con que el comportamiento de un sistema se apega a la
especificacin de su comportamiento. La confiabilidad del software es la probabilidad de que
un sistema de software no causar la falla del sistema durante un tiempo especificado bajo con
diciones especificadas [IEEE Std. 982-1989]. La falla es cualquier desviacin del comportamiento
observado con respecto al especificado. Un error significa que el sistema est en un estado tal
que el procesamiento adicional del sistema conducir a una falla, lo cual causa que el sistema se
desve del comportamiento pretendido. Un defecto es la causa mecnica o algortmica de un
error. El objetivo de las pruebas es maximizar la cantidad de defectos descubiertos, lo cual luego
permite que los desarrolladores los corrijan e incrementen la confiabilidad del sistema.
Definimos las pruebas como el intento sistemtico de localizar errores en forma planeada
en el software implementado. Esta definicin contrasta con otra usada por lo comn que dice
que las pruebas son el proceso de demostrar que no hay errores presentes. La distincin entre
estas dos definiciones es importante. Nuestra definicin no significa que simplemente demostra
mos que el programa hace lo que pretende hacer. El objetivo explcito de las pruebas es demos
trar la presencia de defectos. Nuestra definicin implica que usted, el desarrollador, est deseoso
de desmantelar cosas. La mayora de las actividades del proceso de desarrollo son constructivas:
durante el anlisis, diseo e implementacin los objetos y relaciones se identifican, refinan y se
hacen corresponder con un ambiente de computadora.
Las pruebas requieren una manera de pensar diferente en la que los desarrolladores tratan
de detectar defectos en el sistema; esto es, diferencias entre la realidad y los requerimientos. A
muchos desarrolladores se les dificulta. Una razn es la forma en que se usa la palabra xito
durante las pruebas. Muchos gerentes de proyecto dicen que un caso de prueba es exitoso si no
encuentran ningn error; esto es, usan la segunda definicin de las pruebas durante el desarrollo.
Sin embargo, debido a que exitoso denota un logro y no exitoso significa algo indeseable,
no deben usarse as estas palabras durante las pruebas.
En este captulo tratamos a las pruebas como una actividad basada en la falsificacin de
los modelos del sistema, la cual se basa en la falsificacin de Popper de las teoras cientficas
[Popper, 1992]. De acuerdo con Popper, cuando se prueba una teora cientfica, el objetivo es
disear experimentos que falsifiquen la teora subyacente. Si los experimentos no pueden romper
la teora, se fortalece nuestra confianza en ella y se le adopta (hasta que al final se le falsifica).
En forma similar, en la prueba de software el objetivo es identificar errores en el sistema de soft
ware (falsificar la teora). Si ninguna de las pruebas puede falsificar el comportamiento del
sistema de software con respecto a los requerimientos, est listo para entregarse.
En otras palabras, un sistema de software se lanza cuando los intentos de falsificacin
(pruebas) han incrementado la confiabilidad del software, asegurando una mayor confianza en
que el sistema de software haga lo que se supone que debe hacer.
www.FreeLibros.org
Un panorama d e l a s pruebas
9.2.1 Tcnicas de control de calidad
Hay muchas tcnicas para incrementar la confiabilidad de un sistema de software. La figu
ra 9-1 se enfoca en tres clases de tcnicas para evitar los defectos, detectarlos y tolerarlos. Las
tcnicas para evitar defectos tratan de detectar errores en forma estadstica; esto es, sin apoyarse
en la ejecucin de ninguno de los modelos del sistema, en particular el modelo de cdigo. Las
tcnicas para la deteccin de defectos, como la depuracin y las pruebas, son experimentos no
controlados y controlados, respectivamente, que se usan durante el proceso de desarrollo para
identificar errores y encontrar los defectos subyacentes antes de lanzarse el sistema. Las tcnicas
de tolerancia de defectos suponen que puede lanzarse un sistema con errores y que las fallas del
sistema pueden manejarse recuperndose de ellas en el momento de la ejecucin.
9.2.2 Tcnicas para evitar defectos
La evitacin de defectos trata de impedir la ocurrencia de errores y fallas encontrando
defectos en el sistema antes de lanzarlo. Las tcnicas para evitar defectos incluyen:
Desarrollo de metodologas
Administracin de la configuracin
Tcnicas de verificacin
Revisiones
El desarrollo de metodologas evita los defectos proporcionando tcnicas que minimizan
la introduccin de defectos en los modelos del sistema y en el cdigo. Tales tcnicas incluyen la
representacin, sin ambigedades, de los requerimientos, el uso de abstraccin y encapsulamiento
de datos, la minimizacin del acoplamiento entre subsistemas y la maximizacin de la coheren
cia entre subsistemas, la definicin temprana de las interfaces de subsistemas y la captura de la
informacin de las razones para las actividades de mantenimiento. En los captulos 4 a 7 des
cribimos estas tcnicas. La suposicin de la mayora de estas tcnicas es que el sistema contiene
menos defectos si se maneja la complejidad con enfoques basados en modelos.
La administracin de la configuracin evita los defectos causados por cambios sin disci
plina en los modelos del sistema. Por ejemplo, es un error comn cambiar una interfaz de subsis
tema sin notificarlo a todos los desarrolladores de los componentes que lo llaman. La adminis
tracin de la configuracin puede asegurar que si los modelos de anlisis y el cdigo se estn
volviendo inconsistentes entre s se les notificar a los analistas e implementadores. La suposi
cin que hay tras la administracin de la configuracin es que el sistema contiene mucho menos
defectos si se controla el cambio.
La verificacin trata de encontrar defectos antes de cualquier ejecucin del sistema. La
verificacin es posible en casos especficos, como la verificacin del kemel de un sistema operativo
pequeo [Walker et al., 1980]. Sin embargo, la verificacin tiene sus lmites. No est en un estado
lo bastante maduro como para que pueda aplicarse para asegurar la calidad de grandes sistemas
complejos. Adems, supone que los requerimientos son correctos, lo cual rara vez sucede: supon
gamos que necesitamos verificar una operacin y que conocemos las condiciones previas y pos
teriores de la operacin. Si podemos verificar que la operacin proporciona una transformacin tal
que antes de la ejecucin de la operacin la condicin previa es cierta y que despus de la
www.FreeLibros.org
332 C apitulo 9 Pruebas
E vi ta r
defectos
Control Deteccin
de calidad \ de defectos
<
Matodologia
de d es ar r o l l o
Admini s tracin
de l a
configuracin
V e r if i c a c i n
Revisin
Depuracin
Depuracin
para
correccin
Depuracin
del desempeo
Pruebas
Prueba de
componentes
Prueba de
integracin
Prueba
del sistema
F i g u r a 9-1 Taxonoma de las actividades del control de calidad (diagrama de clase UML).
ejecucin se mantiene la condicin posterior, entonces la operacin est implementada en forma
correcta; esto es, est verificada. Sin embargo, a veces olvidamos partes importantes de la condicin
previa o de la posterior. Por ejemplo, puede ser que las condiciones posteriores no establezcan
que el tren debe permanecer en el suelo mientras pasa de la va 1 a la va 2. Por ltimo, la veri
ficacin slo aborda los defectos algortmicos: no puede manejar los defectos mecnicos de la
mquina virtual. Para la verificacin debemos suponer que la mquina virtual sobre la que eje
cuta el sistema est ejecutando en forma correcta y no cambia durante la prueba.
Una revisin es la inspeccin manual de algunos o todos los aspectos del sistema sin eje
cutar, de hecho, el sistema. Hay dos tipos de revisiones: ensayo e inspeccin. En un ensayo de
www.FreeLibros.org
Un panorama d e l a s pruebas 333
cdigo el desarrollador presenta de modo informal la API, el cdigo y la documentacin aso
ciada de los componentes ante el equipo de revisin. ste hace comentarios sobre la correspon
dencia entre los diseos de anlisis y objetos y el cdigo usando casos de uso y escenarios de la
fase de anlisis. Una inspeccin es similar a un ensayo, pero la presentacin de la unidad es
formal. De hecho, en una inspeccin de cdigo no se permite que el desarrollador presente
los artefactos (modelo, cdigo y documentacin). Esto lo hace el equipo de revisin, el cual es
responsable de la revisin de la interfaz y el cdigo del componente contra los requerimientos.
Tambin revisa que los algoritmos sean eficientes con respecto a los requerimientos no funcio
nales. Por ltimo, revisa los comentarios acerca del cdigo y los compara con el cdigo mismo
para encontrar comentarios imprecisos e incompletos. El desarrollador slo est presente cuan
do la revisin necesita aclaraciones acerca de la definicin y uso de las estructuras de datos o
algoritmos.
Los revisores de cdigo han probado ser muy efectivos en la deteccin de errores. En
algunos experimentos, hasta 85% de todos los defectos identificados se han encontrado en las
revisiones [Fagan, 1976], [Jones, 1977].
9.2.3 Tcnicas para la deteccin de defectos
Las tcnicas para la deteccin de defectos ayudan a encontrar defectos en los sistemas
pero no tratan de recuperar las fallas que causan. En general, las tcnicas para la deteccin de
defectos se aplican durante el desarrollo, pero en algunos casos tambin se usan despus del lan
zamiento del sistema. Las cajas negras de los aviones que registran los ltimos minutos de un
vuelo antes de estrellarse son un ejemplo de una tcnica para deteccin de defectos. Distingui
mos dos tipos de tcnicas para la deteccin de defectos: la depuracin y las pruebas.
La depuracin asume que los defectos pueden encontrarse iniciando a partir de una falla
no planeada. El desarrollador mueve al sistema a travs de una sucesin de estados hasta que a
final de cuentas llega al estado errneo y lo identifica. Una vez que se ha identificado este estado
es necesario determinar el defecto algortmico o mecnico que lo causa. Hay dos tipos de depu
racin: el objetivo de la depuracin para correccin es encontrar cualquier desviacin entre los
requerimientos no funcionales observados y los especificados. La depuracin dei desempeo
trata la desviacin entre los requerimientos no funcionales observados y los especificados, como
el tiempo de respuesta.
La prueba es una tcnica de deteccin de defectos que trata de crear fallas o errores en
forma planeada. Esto permite que el desarrollador detecte fallas en el sistema antes de que sea
lanzado al cliente. Observe que esta definicin de prueba implica que una prueba satisfactoria
es la que identifica errores. Usaremos esta definicin a lo largo de las fases del desarrollo. Otra
definicin de la prueba que se usa con frecuencia es que demuestra que no se presentan
errores. Usaremos esta definicin slo despus del desarrollo del sistema, cuando tratemos
de demostrar que el sistema entregado satisface los requerimientos funcionales y los no fun
cionales.
Si usramos esta definicin todo el tiempo tenderamos a seleccionar datos de prueba
que tuvieran una probabilidad muy baja de causar que fallara el programa. Por otro lado, si el
objetivo es demostrar que un programa tiene errores, tendemos a buscar datos de prueba con una
alta probabilidad de localizacin de errores. La caracterstica de un buen modelo de prueba
es que contiene casos de prueba que identifican errores. Debe probarse cada entrada que se
le pueda dar al sistema, ya que de no hacerlo hay probabilidades de que no se detecten los
www.FreeLibros.org
334 C apitulo 9 Pruebas
defectos. Por desgracia, tal enfoque requiere tiempos de prueba largos en extremo, incluso para
sistemas pequeos.
La figura 9-2 muestra un resumen de las actividades de prueba:
Las pruebas unitarias tratan de encontrar defectos en los objetos participantes o en los
subsistemas, o en ambos, con respecto a los casos de uso del modelo de casos de uso.
Las pruebas de integracin son las actividades relacionadas con la localizacin de defec
tos cuando se prueban juntos componentes que se han probado de manera individual; por
ejemplo, los subsistemas descritos en la descomposicin en subsistemas, mientras se eje
cutan los casos de uso y escenarios del RAD.
Las pruebas de estructura del sistema son la culminacin de las pruebas de inte
gracin que involucran a todos tos componentes del sistema. Las pruebas de integra
cin y de estructura explotan el conocimiento del SDD usando una estrategia descrita
en el Plan de pruebas (TP, por sus siglas en ingls).
Las pruebas de sistema prueban todos los componentes juntos, vistos como un solo
sistema, para identificar errores con respecto a los escenarios del enunciado del problema
y a los objetivos de los requerimientos y del diseo identificados en el anlisis y el diseo
del sistema, respectivamente:
Las pruebas funcionales prueban los requerimientos del RAD y, si se tiene dispo
nible, del manual de usuario.
Las pruebas del desempeo revisan los requerimientos no funcionales y objetivos
de diseo adicionales del SDD. Observe que los desarrolladores realizan las pruebas
funcionales y de desempeo.
Las pruebas de aceptacin y de instalacin revisan los requerimientos contra el
acuerdo del proyecto y deben ser realizadas por el cliente, con apoyo de los desarro
lladores si es necesario.
9.2.4 Tcnicas para la tolerancia de defectos
Si no podemos impedir los errores debemos aceptar el hecho de que el sistema lanzado
contendr defectos que darn lugar a fallas. La tolerancia de defectos es la recuperacin de una
falla mientras el sistema est ejecutando. Permite que un sistema se recupere de la falla de un
componente pasando la informacin del estado errneo de regreso a los componentes que llama
ron, suponiendo que alguno de ellos sepa qu hacer en este caso. Los sistemas de bases de datos
proporcionan transacciones atmicas para recuperarse de una falla durante una secuencia de
acciones que necesitan hacerse todas o ninguna. La redundancia modular est sustentada en la
suposicin de que las fallas del sistema se basan, por lo general, en fallas de componentes. Los
sistemas con redundancia modular se construyen asignando ms de un componente para que
realice la misma operacin. Las cinco computadoras a bordo del transbordador espacial son un
ejemplo de un sistema modular redundante. El sistema puede continuar aunque falle un compo
nente, debido a que los dems componentes todava estn realizando la funcionalidad requerida.
El tratamiento de las tcnicas de tolerancia de defectos es importante para los sistemas muy con
fiables, pero rebasa el alcance de este libro. Una cobertura excelente del tema la proporcionan
[Siewiorek y Swarz, 1992].
www.FreeLibros.org
Un panorama d e l a s pruebas
Figura 9-2 Actividades de prueba y sus productos de trabajo relacionados (diagrama d e actividad UML).
Los carriles indican quin ejecuta la prueba.
www.FreeLibros.org
336 C apitulo 9 Pruebas
En esta seccin presentamos los elementos del modelo usado durante las pruebas (figura 9-3):
Un componente es una parte del sistema que puede aislarse para la prueba. Un compo
nente puede ser un objeto, un grupo de objetos o uno o ms subsistemas.
Un defecto es un error de diseo o codificacin que puede causar un comportamiento
anormal de un componente.
Un error es la manifestacin de un defecto durante la ejecucin del sistema.
Una falla es una desviacin entre la especificacin de un componente y su compor
tamiento. Una falla es producida por uno o ms errores.
Un caso de prueba es un conjunto de entradas y resultados esperados que ejercita a un
componente con el propsito de causar fallas y detectar defectos.
Un stub de prueba es una implementacin parcial de componentes de los cuales depende
el componente probado. Un manejador de pruebas es una implementacin parcial de un
componente que depende del componente probado. Los stubs y manejadores de pruebas
permiten que los componentes se aslen del resto del sistema para las pruebas.
Una correccin es un cambio a un componente. El propsito de una correccin es reparar
un defecto. Tome en cuenta que la correccin puede introducir nuevos defectos [Brooks,
1975].
9.3 C oncepto de las pruebas
es causado por es causado por
F i g u r a 9-3 Elementos del modelo usado durante las pruebas (diagrama de clase UML).
www.FreeLibros.org
C oncepto d e la s pruebas 337
9.3.1 Defectos, errores y fallas
Con la comprensin inicial de los trminos de las definiciones de la seccin 9.3, veamos la
figura 9-4.
Figura 9-4 Un ejemplo de un defecto.
Qu vemos? La figura 9-4 muestra un par de vas que no estn alineadas. Si imaginamos
un tren corriendo sobre la va, ste se descarrilara (falla). Sin embargo, la figura no presenta, de
hecho, una falla ni un error ni un defecto. No muestra una falla debido a que no se ha especifi
cado el comportamiento esperado y tampoco hay un comportamiento observado. La figura 9-4
tampoco muestra un error, debido a que eso significara que el sistema est en un estado cuyo
procesamiento adicional conducir a una falla. Aqu slo vemos vas y no se muestra ningn tren
en movimiento. Para hablar sobre errores y fallas necesitamos comparar el comportamiento
deseado (descrito en el caso de uso en el RAD) con el comportamiento observado (descrito en el
caso de prueba). Supongamos que tenemos un caso de uso con un tren movindose desde la va
superior izquierda hacia la inferior derecha (figura 9-5).
Nombre del caso de uso Mane j a r T r e n
Actor participante O p e r a d o r T r e n
Condicin inicial El O p e r a d o r T r e n oprime el botn ArrancarTren e n el panel de control.
Flujo de eventos 1. El tren comienza a moverse sobre la va 1.
2. El tren pasa a la va 2.
Condicin final El tren est corriendo sobre la va 2.
Requerimientos especiales Ninguno.
Figura 9-5 C a s o d e u s o M a n e j a r T r e n q u e e s p e c i f i c a e l c o m p o r t a m i e n t o e s p e r a d o d e l t r e n .
www.FreeLibros.org
338 C apitulo 9 Pruebas
Manej a r T r e n
ht t p ;//www!2 , i n , tum , f l e / T r g i n S y s t e m / t e s t - Ci s e s / t e s t l
Operacin continua del motor durante 5 segundos.
La prueba pasa si el tren se mueve durante 5 segundos y cubre la longitud
de al menos dos vas.
1. Se llama al mtodo A r r a n c a r T r e n () mediante un manejador de
prueba A r r a n c a r T r e n (contenido en el mismo directorio que la prueba
Manej a r T r e n ) .
2. La direccin del viaje y su duracin se leen desde un archivo de entrada
ht t p ; //www!2 , i n , tuni, d g / T r a i n $ y $ t g m / t e 9 t - C^? e g / i n p y t
3. Si la depuracin est puesta a CIERTO el caso de prueba enviar los
siguientes mensajes de sistema Entra a va n, sale de va n para cada n,
donde n e s el nmero de la va actual.
Procedimiento de prueba La prueba se inicia haciendo doble clic en el caso de prueba en la ubicacin
especificada. La prueba ejecutar sin intervencin adicional hasta que ter
mine. La prueba no deber durar ms de 7 segundos.
Requerimientos especiales Se necesita el stub de prueba Mo t o r para la implementacin de la va.
Figura 9-6 El caso de prueba Ma ne j a r T r e n para el caso de uso descrito en la figura 9-5.
Luego podemos continuar para derivar un caso de prueba que mueva al tren desde el estado
descrito en la condicin inicial del caso de uso hasta un estado en donde se descarrile, precisa
mente cuando salga de la va superior (figura 9-6).
En otras palabras, cuando ejecutemos este caso de prueba podremos demostrar que el
sistema contiene un defecto. Tome en cuenta que el estado actual de la figura 9-7 es errneo,
pero no muestra una falla.
La falta de alineacin de las vas puede ser resultado de una mala comunicacin entre los
equipos de desarrollo (cada va tiene que ser colocada en su posicin por un equipo) o debido a
una implementacin errnea de la especificacin por parte de alguno de los equipos (figura 9-8).
Estos son ejemplos de defectos algortmicos. Es probable que usted ya est familiarizado con
muchos otros defectos algortmicos que se introducen durante la fase de implementacin. Por
ejemplo, salir muy pronto del ciclo, salir muy tarde del ciclo, probar la condicin equivo
cada, olvidar la inicializacin de una variable son todos defectos algortmicos especficos de la
implementacin. Los defectos algortmicos tambin pueden suceder durante el anlisis y diseo
del sistema. Los problemas de tensiones y sobrecargas, por ejemplo, son defectos algortmicos
especficos del diseo que conducen a fallas cuando las estructuras de datos se llenan ms all de
su capacidad especificada. Los errores de produccin y desempeo son posibles cuando un
sistema no se desempea a la velocidad especificada por los requerimientos no funcionales.
Identificador del caso
de prueba
Ubicacin de la prueba
Caracterstica a probar
Criterio pasa o falla de
la caracterstica
Medios de control
Datos
www.FreeLibros.org
C oncepto d e la s pruebas 339
Figura 9-8 U n d e f e c t o p u e d e t e n e r u n a c a u s a a l g o r t m i c a .
www.FreeLibros.org
340 C apitulo 9 Pruebas
Figura 9-9 Un defecto puede tener una causa mecnica, como un sismo.
Aunque las vas estuvieran implementadas de acuerdo con la especificacin del RAD,
podran desalinearse durante la operacin diaria, por ejemplo, si hubiera un sismo que moviera
el suelo subyacente (figura 9-9).
Un error en la mquina virtual de un sistema de software es otro ejemplo de una falla
mecnica: aunque los desarrolladores hubieran hecho la implementacin correcta, es decir,
hubieran hecho en forma correcta la correspondencia entre el modelo de objetos y el cdigo, el
comportamiento observado todava puede desviarse con respecto al especificado. En los proyec
tos de ingeniera concurrentes, por ejemplo, donde se desarrolla el hardware en paralelo con el
software, no podemos hacer siempre la suposicin de que la mquina virtual ejecuta como se
especific. Otros ejemplos de fallas mecnicas son las fallas de corriente. Observe la relatividad
de los trminos defecto y falla con respecto a un componente particular del sistema: la falla
en un componente del sistema (el sistema de corriente elctrica) es el defecto mecnico que
puede conducir a una falla en otro componente del sistema (el sistema de software).
9.3.2 C asos de prueba
Un c a s o de p r u e b a es un conjunto de datos de entrada y resultados esperados que ejer
citan a un componente con el propsito de causar fallas y detectar defectos. Un caso de prueba
tiene cinco atributos: nombre, u b i c a c i n , e n t r a d a , o r c u l o y b i t c o r a (tabla 9-1). El nombre
del caso de prueba permite que quien hace la prueba distinga entre casos de prueba diferentes. Una
heurstica para nombrar a los casos de prueba es derivar el nombre a partir del requerimiento que
se est probando o del componente que est a prueba. Por ejemplo, si se est probando un caso
de uso D ep s i to (), tal vez quiera nombrar al caso de prueba Prueba_Depsito. Si un caso de
prueba involucra a dos componentes A y B, un buen nombre sera Prueba_AB. El atributo
www.FreeLibros.org
C oncepto d e la s pruebas
Tabla 9-1 A t r i b u t o s d e l a c l a s e C a s o P r u e b a .
341
Atributos Descripcin
nombre Nombre del caso de prueba
u b i c a c i n
Nombre de ruta completo del ejecutable
e n t r a d a Datos de entrada o comandos
o r c u l o Resultados esperados de la prueba contra los que
se compara la salida de la prueba
b i t c o r a Salida producida por la prueba
u b i c a c i n describe dnde puede encontrarse al caso de prueba. Debe ser un nombre de ruta o
un URL hacia el ejecutable del programa de prueba y sus datos de entrada.
La e n t r a d a describe el conjunto de datos de entrada o comandos a dar por el actor del
caso de prueba (que puede ser la persona que hace la prueba o un manejador de la prueba). El
comportamiento esperado del caso de prueba es la secuencia de datos de salida o comandos que
debe producir una ejecucin correcta de la prueba. El comportamiento esperado lo describe el
atributo o r c u l o . La b i t c o r a es un conjunto de correlaciones con indicaciones de tiempo del
comportamiento observado contra el esperado para varias corridas de prueba.
Una vez que se han identificado y descrito los casos de prueba se identifican las relaciones
entre ellos. Se usan la agregacin y las asociaciones p r e c e d e para describir las relaciones entre
los casos de prueba. La agregacin se usa cuando un caso de prueba puede descomponerse en un
conjunto de subpruebas. Dos casos de prueba estn relacionados con la asociacin p r e c e d e
cuando un caso de prueba debe preceder a otro.
La figura 9-10 muestra un modelo de prueba donde PruebaA debe preceder a PruebaB y
PruebaC. Por ejemplo, PruebaA consiste en PruebaAl y PruebaA2, lo que significa que una vez que
se han realizado PruebaAl y PruebaA2 ya se ha probado PruebaA y no hay una prueba separada
para PruebaA. Un buen modelo de prueba tiene la menor cantidad de asociaciones posibles, debido
a que las pruebas que no estn asociadas entre ellas pueden ejecutarse en forma independiente.
Esto permite que quien hace la prueba la agilice, si se dispone de los recursos necesarios para la
Figura 9-10 Modelo de prueba con casos de prueba. La PruebaA consiste en dos pruebas, P r u e b a A l y
PruebaA2. PruebaB y PruebaC pueden probarse de manera independiente, pero slo despus de que se
haya realizado PruebaA.
www.FreeLibros.org
342 C apitulo 9 Pruebas
prueba. En la figura 9-10, PruebaB y PruebaC pueden probarse en paralelo, debido a que no hay
ninguna relacin entre ellas.
Los casos de prueba se clasifican en pruebas de caja negra y de caja blanca, dependiendo
del aspecto del modelo del sistema que se prueba. Las p r u e b a s d e c a j a n e g r a se enfocan en el
comportamiento de entrada/salida del componente. Las pruebas de caja negra no manejan los
aspectos internos del componente ni el comportamiento o estructura de los componentes. Las
p r u e b a s de c a j a b l a n c a se enfocan en la estructura interna del componente. Una prueba de caja
blanca se asegura que, sin importar el comportamiento de entrada/salida particular, se pruebe
cada estado del modelo dinmico del objeto y cada interaccin entre los objetos. En consecuen
cia, las pruebas de caja blanca van ms all que las de caja negra. De hecho, la mayora de las
pruebas de caja blanca requieren datos de entrada que no pueden derivarse slo a partir de una
descripcin de los requerimientos funcionales. Las pruebas unitarias combinan ambas tcnicas:
las de caja negra para probar la funcionalidad del componente y las de caja blanca para probar
los aspectos estructurales y dinmicos del componente.
9.3.3 Stubs y manejadores de pruebas
La ejecucin de casos de prueba sobre componentes solos o combinaciones de componentes
requiere que el componente a probar se asle del resto del sistema. Los manejadores y stubs de
prueba se usan para sustituir las partes faltantes del sistema. Un m a n e j a d o r de pr ue ba simula la
parte del sistema que llama al componente a probar. Un manejador de prueba pasa al componente
las entradas de prueba identificadas en el anlisis del caso de prueba y muestra los resultados.
Un stub de p r u e b a simula a los componentes que son llamados por el componente a
probar. El stub de prueba debe proporcionar la misma API que el mtodo del componente simu
lado, y debe regresar un valor que se apegue al tipo de resultado regresado por el tipo de firma
del mtodo. Tome en cuenta que debe haber congruencia entre las interfaces de todos los compo
nentes. Si cambia la interfaz de un componente tambin deben cambiar los manejadores y stubs
de prueba correspondientes.
Puede usarse el patrn Puente para la implementacin de los stubs de prueba. La figura 9-11
muestra un patrn Puente donde un subsistema i n t e r f a z de u s u a r i o accede al subsistema
Base de da t o s que todava no est listo para la prueba. Al separar la interfaz de Base de datos
Figura 9-11 Uso del patrn de diseo Puente para hacer la interfaz de un componente que todava no se
ha terminado, o que no se conoce o no se tiene disponible durante la prueba de otro componente (diagrama
de clase UML).
www.FreeLibros.org
C oncepto d e la s pruebas 343
de la implementacin de Base de datos podemos proporcionar primero un stub de prueba que
responda a las peticiones y despus reemplazarlo con la implementacin real del subsistema Base
de datos. Observe que el uso del patrn Puente permite el reemplazo del stub por el componente
llamado una vez que est probado sin tener que volver a compilar el componente que llama.
La implementacin de los stubs de prueba es una tarea no trivial. No es suficiente escribir
un stub de prueba que tan slo escriba un mensaje que diga que se llam al stub de prueba. En la
mayora de las situaciones, cuando un componente A llama al componente B, A est esperando
que B realice algn trabajo, el que luego es regresado como un conjunto de parmetros de
resultado. Si el stub de prueba no simula este comportamiento fallar A, no a causa de un defecto
de A sino debido a que el stub de prueba no simula en forma correcta a B.
Pero no siempre es suficiente proporcionar un valor de retomo. Por ejemplo, si un stub de
prueba regresa siempre el mismo valor, puede ser que no regrese el valor esperado por el compo
nente que llama en un escenario particular. Esto puede producir resultados confusos y hasta puede
dar lugar a la falla del componente que llama, aunque est implementado en forma correcta. A
menudo hay un compromiso entre implementar stubs de prueba precisos y sustituir los stubs de
prueba por el componente real.
9.3.4 C orrecciones
Una vez que se han ejecutado las pruebas y se han detectado las fallas, los desarrolladores
cambian el componente para eliminar los defectos sospechosos. Una c o r r e c c i n es un cambio a
un componente con el propsito de reparar un defecto. Las correcciones pueden ir desde una
simple modificacin de un solo componente hasta el rediseo completo de una estructura de
datos o un subsistema. En todos los casos existe una probabilidad alta de que el desarrollador
introduzca nuevos defectos en el componente revisado [Brooks, 1975]. Pueden usarse varias
tcnicas para manejar estos defectos:
El seguimiento del problema incluye la documentacin de cada falla, error y defecto detec
tado, su correccin y las revisiones de los componentes involucrados en el cambio. Junto
con la administracin de la configuracin, el seguimiento de problemas permite que los
desarrolladores estrechen la bsqueda de nuevos defectos. En el captulo 10, Administra
cin de la configuracin del software, describimos con mayor detalle la administracin de
la configuracin.
Las pruebas de regresin incluyen volver a ejecutar todas las pruebas anteriores despus del
cambio. Esto asegura que no se haya afectado la funcionalidad que operaba antes de la
correccin. Las pruebas de regresin son importantes en los mtodos orientados a objetos,
los cuales piden un proceso de desarrollo iterativo. Esto requiere que las pruebas se inicien
pronto y que las series de prueba se mantengan conforme evoluciona el diseo. Por desgracia,
las pruebas de regresin son costosas, en especial cuando parte de las pruebas no est auto
matizada. En la siguiente seccin describimos con mayor detalle las pruebas de regresin.
El mantenimiento de la fundamentacin incluye la documentacin de la fundamentacin
de los cambios y su relacin con la fundamentacin del componente revisado. El manteni
miento de la fundamentacin permite que los desarrolladores eviten la introduccin de
nuevos defectos inspeccionando las suposiciones que se usaron para construir el componente.
En el captulo 8, Administracin de la fundamentacin, describimos el mantenimiento de
la fundamentacin.
www.FreeLibros.org
344 C apitulo 9 Pruebas
A continuacin describimos con mayor detalle las actividades de las pruebas que conducen a la
creacin de los casos de prueba, su ejecucin y el desarrollo de correcciones.
9.4 Actividades de l a s pruebas
En esta seccin describimos las actividades de las pruebas, las cuales incluyen:
I n s p e c c i n d e c o m p o n e n t e s , que encuentran defectos en componentes individuales
mediante la inspeccin manual de su cdigo fuente.
P r u e b a s un i ta r i a s , que encuentran defectos aislando un componente individual usando
stubsy manejadores de prueba y ejercitando al componente usando un caso de prueba.
P r u e b a s de i n t e g r a c i n , que encuentran defectos integrando varios componentes.
P ru eb as de l sistema, que se enfocan en el sistema completo, sus requerimientos funcionales
y no funcionales y su ambiente de destino.
9.4.1 Inspeccin de componentes
Las inspecciones encuentran defectos en un componente revisando su cdigo fuente en
una reunin formal. Las inspecciones pueden realizarse antes o despus de la prueba unitaria. El
primer proceso de inspeccin estructurado fue el mtodo de inspeccin de Michael Fagan [Fagan,
1976]. La inspeccin la realiza un equipo de desarrolladores, incluyendo al autor del compo
nente, un moderador que facilita el proceso y uno o ms revisores que encuentran defectos en el
componente. El mtodo de inspeccin de Fagan consta de cinco pasos:
P a no r a m a . El autor del componente presenta en forma breve el propsito y alcance del
componente y los objetivos de la inspeccin.
P r e p a r a c i n . Los revisores se familiarizan con la implementacin del componente.
R e u n i n de i n s p e c c i n . Un lector parafrasea el cdigo fuente del componente y el equipo
de inspeccin plantea problemas relacionados con el componente. Un moderador mantiene
la reunin en el tema.
R e p a r a c i n . El autor revisa el componente.
S e g u i m i e n t o . El moderador revisa la calidad de la reparacin y determina si es necesario
volver a inspeccionar el componente.
Los pasos crticos de este proceso son la fase de preparacin y la reunin de inspeccin.
Durante la fase de preparacin los revisores se familiarizan con el cdigo fuente y todava
no se enfocan en la localizacin de defectos. Durante la reunin de inspeccin el lector
parafrasea el cdigo fuente; esto es, lee cada enunciado de cdigo y explica lo que debe hacer el
enunciado. Entonces los revisores plantean asuntos si creen que hay un defecto. La mayor parte
del tiempo se dedica a debatir si est presente o no un defecto, pero en este momento no se
exploran las soluciones para reparar el defecto. Durante la fase de panorama de la inspeccin el
autor establece los objetivos de la inspeccin. Adems de encontrar defectos, tambin puede
pedirse a los revisores que busquen desviaciones con respecto a los estndares de codificacin o
ineficiencias.
www.FreeLibros.org
Actividades d e la s pruebas 345
Las inspecciones de Fagan se perciben, por lo general, como consumidoras de tiempo
debido a lo largo de la fase de preparacin y la reunin de inspeccin. La efectividad de una
revisin tambin depende de la preparacin de los revisores. David Pamas propuso un proceso
de inspeccin revisado, la revisin del diseo activa, en donde no hay reunin de inspeccin que
incluya a todos los miembros del equipo de inspeccin [Pamas y Weiss, 1985]. En vez de ello,
se les pide a los revisores que encuentren fallas durante la fase de preparacin. Al final de la fase
de preparacin cada revisor llena un cuestionario que prueba su comprensin del componente.
Luego el autor se rene en forma individual con cada revisor para recolectar la retroalimenta-
cin sobre el componente.
Las inspecciones de Fagan y las revisiones de diseo activas han mostrado ser ms efecti
vas que las pruebas para descubrir defectos. Tanto las pruebas como las inspecciones se usan en
proyectos donde es crtica la seguridad, ya que tienden a encontrar diferentes tipos de defectos.
9.4.2 Prueba unitaria
La prueba unitaria se enfoca en los bloques de construccin del sistema de software; esto
es, los objetos y subsistemas. Hay tres motivaciones tras el enfoque en los componentes. Primero,
la prueba unitaria reduce la complejidad de las actividades de prueba generales, permitindonos
enfocamos en unidades ms pequeas del sistema. Segundo, la prueba unitaria facilita resaltar y
corregir defectos, ya que estn involucrados pocos componentes. Tercero, la prueba unitaria per
mite el paralelismo en las actividades de prueba; esto es, cada componente puede probarse en
forma independiente de los dems.
Los candidatos especficos para las pruebas unitarias se escogen del modelo de objetos y
la descomposicin en subsistemas del sistema. En principio, deben probarse todos los objetos
desarrollados durante el proceso de desarrollo, pero no siempre es posible por razones de tiempo
y presupuesto. El conjunto mnimo de objetos a probar debe ser el de aquellos que participan en
los casos de uso. Los subsistemas deben probarse despus de que se han probado de manera
individual cada uno de los objetos y clases que estn en el subsistema.
Los subsistemas existentes, que se reutilizan o compran, deben tratarse como componentes
con estructura interna desconocida. Esto se aplica, en particular, a subsistemas comerciales, en
los que no se conoce la estructura interna o no est a disposicin del desarrollador.
Se han inventado muchas tcnicas para la prueba unitaria. A continuacin describimos las
ms importantes: prueba de equivalencia, prueba de frontera, prueba de ruta y prueba basada en
estado.
Prueba de equivalencia
La p r ue ba de equi v a l en ci a es una tcnica de prueba de caja negra que minimiza la cantidad
de casos de prueba. Las entradas posibles se reparten en clases de equivalencia y se selecciona
un caso de prueba para cada clase. La suposicin de la prueba de equivalencia es que los siste
mas se comportan, por lo general, en forma similar para todos los miembros de una clase. Para
probar el comportamiento asociado con una clase de equivalencia slo necesitamos probar a un
miembro de la clase. La prueba de equivalencia consiste en dos pasos: identificacin de las clases
de equivalencia y seleccin de las entradas de prueba. Se usan los siguientes criterios para deter
minar las clases de equivalencia.
www.FreeLibros.org
346 C apitulo 9 Pruebas
Cobertura. Cada entrada posible pertenece a una de las clases de equivalencia.
In co n ex i n. Ninguna entrada pertenece a ms de una clase de equivalencia.
R e p r e s e n t a c i n . Si la ejecucin muestra un error cuando se usa como entrada un miem
bro particular de una clase de equivalencia, el mismo error puede detectarse usando como
entrada a cualquier otro miembro de la clase.
Para cada clase de equivalencia se seleccionan, al menos, dos partes de datos: una entrada tpica,
que ejercita el caso comn, y una entrada invlida que ejercita las capacidades del componente
para el manejo de excepciones. Despus de que se han identificado todas las clases de equiva
lencia tiene que identificarse una entrada de prueba para cada clase que cubra la clase de
equivalencia. Si hay una posibilidad de que no todos los elementos de la clase de equivalencia
estn cubiertos por la entrada de prueba, la clase de equivalencia debe dividirse en clases de
equivalencia ms pequeas y deben identificarse entradas de prueba para cada una de las nuevas
clases.
Por ejemplo, considere un mtodo que regresa la cantidad de das de un mes dando el mes
y el ao (vea la figura 9-12). El mes y el ao se especifican como enteros. Por convencin, 1 repre
senta el mes de enero, 2 el de febrero y as en forma sucesiva. El rango de entradas vlidas para
el ao es desde 0 hasta intMax.
c l a s s MiCalendarioGregoriano {
p u b l i c s t a t i c int obtenerNumDasEnMes (int mes, int ao) {_.}
}
Figura 9-12 Interfaz para un mtodo que calcula el nmero de das de un mes dado (Java). El mtodo
obtenerNumDiasEnMes () toma dos parmetros, un mes y un ao, especificados como enteros.
Encontramos tres clases de equivalencia para el parmetro mes: meses con 31 das (es decir,
1, 3, 5, 7, 8, 10, 12), meses con 30 das (es decir, 4, 6, 9, l l ) y febrero, que puede tener 28 o 29
das. Los enteros no positivos y los enteros mayores a 12 son valores invlidos para los parmetros
de mes. En forma similar, encontramos dos clases de equivalencia para el ao: aos bisiestos y
no bisiestos. Por la especificacin, los enteros negativos son valores invlidos para el ao. Primero
seleccionamos un valor vlido para cada parmetro y clase de equivalencia (por ejemplo, febrero,
junio, julio, 1901 y 1904). Tomando en cuenta que el valor de retomo del mtodo obtenerNum
DiasEnMes () depende de ambos parmetros, combinamos estos valores para probar por interac
cin, dando como resultado las seis clases de equivalencia que se muestran en la tabla 9-2.
Prueba de frontera
La pr u e b a de f r o n t e r a es un caso especial de la prueba de equivalencia y se enfoca en las
condiciones de frontera de las clases de equivalencia. En vez de seleccionar cualquier elemento
de la clase de equivalencia, la prueba de frontera requiere que los elementos se seleccionen de
los extremos de la clase de equivalencia. La suposicin que hay tras la prueba de frontera es
www.FreeLibros.org
Actividades d e la s pruebas 3 4 7
Tabla 9-2 Clases de equivalencia y entradas vlidas seleccionadas para la prueba del mtodo
obtenerNumDiasEnMes().
C lase de equivalencia Valor para la entrada de mes Valor para la entrada de ao
Meses con 31 das, aos no bisiestos 7 (julio) 1901
Meses con 31 das, aos bisiestos 7 (julio) 1904
Meses con 30 das, aos no bisiestos 6 (junio) 1901
Meses con 30 das, aos bisiestos 6 (junio) 1904
Meses con 28 o 29 das, aos no
bisiestos
2 (febrero) 1901
Meses con 28 o 29 das, aos bisiestos 2 (febrero) 1904
que los desarrolladores a menudo olvidan los casos especiales en la frontera de las clases de
equivalencia (por ejemplo, 0, cadenas vacas, ao 2000).
En nuestro ejemplo, el mes de febrero presenta varios casos de frontera. En general, los
aos que son mltiplos de 4 son aos bisiestos. Sin embargo, los aos que son mltiplos de 100
no son aos bisiestos, a menos que tambin sean mltiplos de 400. Por ejemplo, 2000 es un ao
bisiesto, pero 1900 no lo fue. Los aos 1900 y 2000 son buenos casos de frontera que debemos
probar. Otros casos de frontera incluyen los meses 0 y 13, que son las fronteras de la clase de
equivalencia invlida. La tabla 9-3 muestra los casos de frontera adicionales que seleccionamos
para el mtodo obtenerNumDiasEnMes O .
Tabla 9-3 Casos de frontera adicionales seleccionados para el mtodo obtenerNumDiasEnMes ().
C lase de equivalencia Valor para la entrada de mes
Valor para la entrada de
ao
Aos bisiestos divisibles entre 400 2 (febrero) 2000
Aos no bisiestos divisibles entre 100 2 (febrero) 1900
Meses no positivos invlidos
0 1291
Meses positivos invlidos
13 1315
Una desventaja de las pruebas de la clase de equivalencia y de frontera es que estas
tcnicas no exploran combinaciones de datos de entrada de prueba. En muchos casos, un pro
grama falla debido a que una combinacin de determinados valores causa el error. Las pruebas
de causa-efecto atacan este problema estableciendo relaciones lgicas entre la entrada y las sali
das o entradas y transformaciones. A las entradas se les llama causas y a la salida o las transfor
maciones se les llama efectos. La tcnica se basa en la premisa de que el comportamiento de
entrada/salida puede transformarse hacia una funcin booleana. Para detalles sobre esta tcnica
y otra llamada suposicin del error deber consultarse la literatura sobre las pruebas (por
ejemplo, [Myers, 1979]).
www.FreeLibros.org
348 C apitulo 9 Pruebas
Prueba de ruta
La prueba de r ut a es una tcnica de prueba de caja blanca que identifica fallas en la imple-
mentacin del componente. La suposicin que hay tras la prueba de ruta es que ejercitando todas
las rutas posibles del cdigo, al menos una vez, la mayora de los defectos producir fallas. La
identificacin de las rutas requiere conocimiento del cdigo fuente y las estructuras de datos.
El punto inicial para la prueba de ruta es el diagrama de flujo. Un diagrama de flujo consiste
en nodos que representan bloques ejecutables y asociaciones que representan el flujo de control.
Un bloque bsico est formado por varias instrucciones entre dos decisiones. Un diagrama de
flujo puede construirse a partir del cdigo de un componente estableciendo la correspondencia
de las instrucciones de decisin (por ejemplo, instrucciones if, ciclos while) con las lneas de nodos.
Las instrucciones entre cada punto de decisin (por ejemplo, bloque then, bloque else) se hacen
corresponda con otros nodos. Las asociaciones entre cada nodo representan relaciones de preceden
cia. La figura 9-14 muestra una implementacin de ejemplo del mtodo cbtenerNumDiasEnMes 0 .
La figura 9-13 muestra el diagrama de flujo correspondiente como un diagrama de actividad UML.
En este ejemplo modelamos los puntos de decisin con ramificaciones UML, los bloques con
estados de accin UML y el flujo de control con transiciones UML.
Figura 9-13 Diagrama de flujo equivalente para la implementacin del mtodo obtenerNumDiasEnMes ()
de la figura 9-14 (diagrama de actividad UML).
www.FreeLibros.org
Actividades d e la s pruebas 349
p u b l i c c l a s s MesFueraDeRango e x t o n d s Exception {.};
p u b l i c c l a s s AoFueraDeRango a x t e n d s Exception {.};
c l a s s MiCalendarioGregoriano {
p u b l i c s t a t i c boolean esAoBisiesto (int ao) {
boolean bisiesto;
i f (ao%4) {
bisiesto = true;
} e l s e {
bisiesto = false;
}
r o t u r n bisiesto;
}
p u b l i c s t a t i c int obtenerNumDiasEnMes(int mes, int ao)
t h r o w s MesFueraDeRango, AoFueraDeRango {
int numDias;
i f (ao < 1 ) {
th ro w new AoFueraDeRango(ao);
}
i f (mes == 1 || mes = 3 1 1 mes == 5 |I mes == 7 ||
mes ==1 0 || mes = = 12) {
numDias = 32;
}
e l s e i f (mes = 4 || mes == 6 || mes == 9 || mes ==11) {
numDias = 30;
}
e l s e i f (mes = = 2) {
i f (esAoBisiesto(ao)) {
numDias = 29;
}
e l s e {
numDias = 28;
}
}
e l s e {
th ro w new MesFueraDeRango(mes);
}
r e t u r n numDias;
}
}
Figura 9-14 Un ejemplo de una implementacin (defectuosa) de mtodo obtenerNumDiasEnMes () (Java).
La prueba de ruta completa consiste en la designacin de casos de prueba de forma tal que
cada transicin del diagrama de actividades se recorra al menos una vez. Esto se logra exami
nando la condicin asociada con cada punto de ramificacin y seleccionando una entrada para la
rama c i e r t o y otra para la rama f a l s o . Por ejemplo, examinando el primer punto de ramifi
cacin de la figura 9-13 seleccionamos dos entradas: ao = 0 (debido a que ao < 1 es cierto)
www.FreeLibros.org
350 C apitulo 9 Pruebas
y a o = 1901 (debido a que a o < 1 es falso). Luego repetimos el proceso para la segunda
rama y seleccionamos las entradas mes = l y m e s = 2. La entrada ( a o = 0, mes = 1) pro
duce la ruta { l a n z a l }. La entrada ( ao = 1901, mes = 1) produce una segunda ruta completa
{n = 32 r e t u r n } , que descubre uno de los defectos del mtodo obtenerNumDiasEnMes().
Repitiendo este proceso para cada nodo generamos los casos de prueba y las rutas que se mues
tran en la tabla 9-4.
Tabla 9-4 Casos de prueba y su ruta correspondiente para el diagrama de actividad que se muestra en la
figura 9-13.
C a s o d e prueba Ruta
(ao = 0, mes = 1 ) {lanzal}
(ao = 1901, mes = 1) {n=32 return}
(ao = 1901, mes = 2) {n=28 return}
(ao = 1904, mes = 2) {n=29 return}
(ao = 1901, mes = 4) {n=30 return}
(ao = 1901, mes = 0) {lanza2}
Podemos construir en forma similar el diagrama para el mtodo e s A o B i s i e s t o () y derivar
casos de prueba para ejercitar el nico punto de ramificacin de este mtodo (figura 9-15).
Observe que el caso de prueba ( ao = 1 9 0 1 , mes = 2 ) del mtodo obtenerNumDiasEnMes O
ya ejercita una de las rutas del mtodo e s A o B i s i e s t o (). Construyendo pruebas en forma
sistemtica para cubrir todas las rutas de todos los mtodos podemos manejar la complejidad
asociada con una gran cantidad de mtodos.
Usando la teora de grficas puede mostrarse que la cantidad mnima de pruebas necesarias
para cubrir todos los bordes es igual a la cantidad de rutas independientes que hay a lo largo
de la grfica [McCabe, 1976]. Esto se define como la complejidad ciclomtica cc del diagrama de
flujo, que es:
CC = cantidad de bordes - cantidad de nodos + 2
donde la cantidad de nodos es la cantidad de ramas y estados de accin y la cantidad de bordes es
la cantidad de transiciones en el diagrama de actividad. La complejidad ciclomtica del mtodo
obtenerNumDiasEnMes O es 6, que es tambin la cantidad de casos de prueba que encontramos
en la tabla 9-4. En forma similar, la complejidad ciclomtica del mtodo e s A o B i s i e s t o O y el
nmero de casos de prueba derivados es 2.
Comparando los casos de prueba que derivamos de las clases de equivalencia (tabla 9-2) y
los casos de frontera (tabla 9-3) con los casos de prueba que derivamos del diagrama de flujo
(tabla 9-4 y figura 9-15) pueden observarse varias diferencias. En ambos casos probamos el
mtodo en forma extensa para los casos que involucran al mes de febrero. Sin embargo, debido a
que la implementacin de esAoBisiesto O no toma en cuenta los aos divisibles entre 100, la
prueba de ruta no gener ningn caso de prueba para esta clase de equivalencia.
www.FreeLibros.org
Actividades d e la s pruebas 351
C a s o de prueba Ruta
ao = 1901, mes = 2 b i s i e s t o = retorno f a l s o
ao = 1904, mes=2 bisiesto = retorno cierto
F i g ur a 9-15 Diagrama de flujo equivalente para la implementacin (defectuosa) del mtodo esAo-
Bisiesto () de la figura 9-14 (diagrama de actividad UML) y pruebas derivadas. La prueba en cursivas es
redundante con una prueba que derivamos del mtodo obtenerNumDiasEnMes ().
La tcnica de prueba de ruta fue desarrollada para los lenguajes imperativos. Los len
guajes orientados a objetos introducen varias dificultades cuando se usa la prueba de ruta:
Po li m o r fi s mo . El polimorfismo permite que los mensajes se unan a diferentes mtodos
basados en la clase del destino. Aunque esto permite que los desarrolladores reutilicen
cdigo a lo largo de una mayor cantidad de clases, tambin introduce ms casos a probar.
Se deben identificar y probar todas las uniones posibles.
M t o d o s m s c o r t o s . Los mtodos en los lenguajes orientados a objetos tienden a ser ms
cortos que los procedimientos y funciones de los lenguajes imperativos. Esto disminuye la
probabilidad de defectos de flujo de control, que pueden descubrirse usando la tcnica de
prueba de ruta. En vez de ello, los algoritmos se implementan a lo largo de varios mto
dos, los cuales estn distribuidos a lo largo de una mayor cantidad de objetos y necesitan
probarse juntos.
En general, la prueba de ruta y los mtodos de caja blanca slo pueden detectar defectos que
se encuentran al ejercitar una ruta del programa, como la instruccin defectuosa numDas = 32.
Los mtodos de prueba de caja blanca no pueden detectar omisiones, como la falla para manejar
el ao 1900 que no es bisiesto. La prueba de ruta tambin est fuertemente basada en la estructura
de control del programa: los defectos asociados con la violacin de invariantes de estructuras de
datos, como el acceso a un arreglo ms all de sus lmites, no se tratan de manera explcita. Sin
www.FreeLibros.org
352 C apitulo 9 Pruebas
embargo, ningn mtodo de prueba que no sea la prueba exhaustiva puede garantizar el descu
brimiento de todos los defectos. En nuestro ejemplo, ni la prueba de equivalencia ni el mtodo
de prueba de ruta descubre el defecto asociado con el mes de agosto.
Pruebas basadas en estado
Los lenguajes orientados a objetos introducen la oportunidad de nuevos tipos de defectos
en los sistemas orientados a objetos. El polimorfismo, la unin dinmica y la distribucin de la
funcionalidad a lo largo de gran cantidad de mtodos ms pequeos puede reducir la efectividad
de las tcnicas estticas, como la inspeccin [Binder, 1994].
Las p r u e b a s b a s a d a s e n e s t a d o [Tumer y Robson, 1993] son una tcnica de prueba
reciente que se enfoca en los sistemas orientados a objetos. La mayora de las tcnicas de prueba se
enfocan en la seleccin de varias entradas de prueba para un estado dado del sistema, ejercitando a
un componente o un sistema, y comparando el estado resultante del sistema contra el estado
esperado. En el contexto de una clase, las pruebas basadas en estado consisten en la derivacin
de casos de prueba a partir del diagrama de estado UML para la clase. Para cada estado se deriva
un conjunto representativo de estmulos para cada transicin (similar a la prueba de equivalen
cia). Luego se implementan y prueban los atributos de la clase despus de haber aplicado cada
estmulo para asegurarse que la clase ha alcanzado el estado especificado.
Por ejemplo, la figura 9-16 muestra un diagrama de estado y sus pruebas asociadas para el
Reloj2B que describimos en el captulo 2, Modelado con UML. Especifica cules estmulos cam
bian al reloj desde el estado de alto nivel MedirTiempo al estado de alto nivel Aj ustarHora. No
muestra los estados de bajo nivel del reloj cuando cambia la fecha y hora, ya sea a causa de
acciones del usuario o por el transcurso del tiempo. Las entradas de prueba de la figura 9-16 se
generaron de tal forma que cada transicin se recorra al menos una vez. Despus de cada entrada,
el cdigo de implementacin revisa para ver si el reloj est en el estado predicho y, en caso con
trario, reporta una falla. Observe que algunas transiciones (por ejemplo, la transicin 3) se recorren
varias veces conforme se necesita poner al reloj de vuelta al estado Aj ustarHora (por ejemplo,
para probar las transiciones 4, 5 y 6). Slo se muestran los primeros ocho estmulos. No se gene
raron las entradas de prueba para el estado BateraAgotada.
En la actualidad las pruebas basadas en estado presentan varias dificultades. Debido a que
el estado de una clase est encapsulado, las secuencias de prueba deben incluir secuencias para
poner a las clases en el estado deseado antes de que se puedan probar las transiciones. Las prue
bas basadas en estado tambin requieren la implementacin de los atributos de clase. Aunque las
pruebas basadas en atributos en la actualidad no son parte de la prctica, prometen llegar a ser
una tcnica de prueba efectiva para los sistemas orientados a objetos una vez que se proporcione
la automatizacin adecuada.
9.4.3 Pruebas de integracin
Las pruebas unitarias se enfocan en componentes individuales. El desarrollador descubre
defectos usando las pruebas de equivalencia, de frontera, de ruta y otros mtodos. Una vez que
se han eliminado los defectos de cada componente y los casos de prueba no revelan ningn
defecto nuevo, los componentes estn listos para su integracin en subsistemas ms grandes. En
este punto todava es probable que los componentes contengan defectos, ya que los stubs y
manejadores usados durante las pruebas unitarias slo son aproximaciones de los componentes
www.FreeLibros.org
Actividades d e la s pruebas
Estmulo
Conjunto vaco
Oprimir botn izquierdo
Oprimir ambos botones al mismo
tiempo
Esperar 2 minutos
Oprimir ambos botones al mismo
tiempo
Oprimir ambos botones al mismo
tiempo
Oprimir ambos botones al mismo
tiempo
Transicin probada
1. Transicin inicial
2 .
3.
4. ExcesoTiempo
3. Pone al sistema en el estado
AjustarHora para probar la
siguiente transicin.
5.
3. Pone al sistema en el estado
AjustarHora para probar la
siguiente transicin.
Estado resultante predicho
MedirTiempo
MedirTiempo
AjustarHora
MedirTiempo
AjustarHora
AjustarHora->
MedirTiempo
AjustarHora
Oprimir botn izquierdo 6. Ciclo de regreso a MedirTiempo MedirTiempo
Figura 9-16 Diagrama de estado UML y pruebas resultantes para la funcin de ajustar la hora de Reloj2B.
Slo se muestran los primeros ocho estmulos.
que simulan. Adems, las pruebas unitarias no revelan defectos asociados con las interfaces de
componentes que resultan de suposiciones invlidas cuando se llama a estas interfaces.
Las pruebas de int e g ra c i n detectan defectos que no se han descubierto durante las pruebas
unitarias enfocndose en pequeos grupos de componentes. Dos o ms componentes se integran
y prueban, y despus de que las pruebas ya no detectan ningn nuevo defecto se aaden com
ponentes adicionales al grupo. Este procedimiento permite la prueba de partes cada vez ms
www.FreeLibros.org
354 C apitulo 9 Pruebas
complejas del sistema, manteniendo relativamente pequea la ubicacin de los defectos poten
ciales (es decir, el componente aadido ms recientemente es, por lo general, el que activa los
defectos descubiertos ms recientemente).
El desarrollo de subs y manejadores de prueba para una prueba de integracin sistemtica
consume tiempo. Sin embargo, el orden en que se prueban los componentes puede influir en el
esfuerzo total requerido por la prueba de integracin. Un ordenamiento cuidadoso de los compo
nentes puede reducir los recursos totales necesarios para la prueba de integracin total. En esta
seccin nos enfocamos en diferentes estrategias de pruebas de integracin para el ordenamiento
de los componentes a probar.
Estrategias para las pruebas de integracin
Se han ideado varios enfoques para implementar una estrategia de pruebas de integracin:
Pruebas de gran explosin
Pruebas de abajo hacia arriba
Pruebas de arriba hacia abajo
Pruebas de emparedado
Cada una de estas estrategias se ha ideado originalmente suponiendo que la descomposicin del
sistema es jerrquica, donde cada uno de los componentes pertenece a capas jerrquicas ordena
das con respecto a la asociacin Llama. Sin embargo, estas estrategias pueden adaptarse
con facilidad a descomposiciones no jerrquicas de sistemas. La figura 9-17 muestra una
descomposicin jerrquica del sistema que usaremos para tratar estas estrategias de pruebas de
integracin.
La estrategia de las p r u e b a s d e g r a n e x p l o s i n asume que todos los componentes se
prueban primero en forma individual y luego juntos como un solo sistema. La ventaja es que no
se necesitan stubs o manejadores de prueba adicionales. Aunque esta estrategia parece simple, la
prueba de gran explosin es cara: si una prueba descubre una falla es difcil sealar el compo
nente especfico (o combinacin de componentes) responsable de la falla. Adems, es imposible
distinguir las fallas de la interfaz con respecto a las fallas internas del componente.
La estrategia de p r u e b a s d e aba j o h a c i a a r r i b a prueba primero de manera individual a
cada componente de la capa inferior y luego los integra con componentes de la siguiente capa
superior. Si dos componentes se prueban juntos a esto le llamamos una pr ue ba d o b l e. A la prueba
de tres componentes juntos le llamamos p r u e b a t r i p l e y a la de cuatro pr u e b a c u d r u p l e . Esto
se repite hasta que se combinan todos los componentes de todas las capas. Se usan manejadores
de prueba para simular los componentes de las capas superiores que todava no se han integrado.
Observe que no se necesitan stubs de prueba durante las pruebas de abajo hacia arriba.
La estrategia de p r ue ba s de ar ri ba hac ia a baj o prueba primero en forma unitaria los com
ponentes de la capa superior y luego integra los componentes de la siguiente capa hacia abajo.
Cuando se han probado juntos todos los componentes de la nueva capa se selecciona la siguiente
capa. De nuevo, las pruebas aaden de manera incremental un componente tras otro. Esto se repite
hasta que se han combinado e involucrado todas las capas en la prueba. Los stubs de prueba se
usan para simular a los componentes de las capas inferiores que todava no se han integrado.
Observe que no se necesitan manejadores de prueba durante las pruebas de arriba hacia abajo.
www.FreeLibros.org
Actividades d e la s pruebas
Figura 9-17 Ejemplo de una descomposicin jerrquica del sistema con tres capas (diagrama de clase UML,
las capas estn representadas con paquetes).
La ventaja de las pruebas de abajo hacia arriba es que pueden localizarse con ms facilidad
los defectos de interfaz: cuando los desarrolladores sustituyen un manejador de prueba con un
componente de nivel superior tienen un modelo claro de la manera en que funciona el componente
de nivel inferior y las suposiciones incrustadas en su interfaz. Si el componente de nivel superior
viola las suposiciones del nivel inferior, es ms probable que los desarrolladores lo encuentran con
rapidez. La desventaja de la prueba de abajo hacia arriba es que prueba al ltimo los subsistemas
ms importantes, a saber, los componentes de la interfaz de usuario. Primero, los defectos que se
encuentran en la capa superior a menudo pueden conducir a cambios en la descomposicin en sub
sistemas o en las interfaces de subsistemas de las capas inferiores, invalidando las pruebas ante
riores. Segundo, las pruebas de la capa superior pueden derivarse del modelo de requerimientos y,
por tanto, son ms efectivas para la localizacin de defectos que son visibles ante el usuario.
La ventaja de las pruebas desde arriba hacia abajo es que comienzan con los componentes
de la interfaz de usuario. El mismo conjunto de pruebas derivadas de los requerimientos puede
usarse en las pruebas de conjuntos de subsistemas cada vez ms complejos. La desventaja de las
pruebas de arriba hacia abajo es que el desarrollo de stubs de prueba es consumidor de tiempo y
propenso a errores. Por lo general, se requiere una gran cantidad de stubs para probar sistemas
no triviales, en especial cuando el nivel ms bajo de la descomposicin del sistema implementa
muchos mtodos.
La figura 9-18 ilustra la combinacin posible de subsistemas que puede usarse durante las
pruebas de integracin. Usando una estrategia de abajo hacia arriba se prueban primero de ma
nera unitaria los subsistemas E, F y G, luego se ejecuta la prueba triple B, E, F y la prueba doble
www.FreeLibros.org
356 C apitulo 9 Pruebas
Pruebas dobles
A,B; A.C; A,D
Prueba cudruple
A,C,D
^ Neurgl (G)
\ /
Prueba doble
D,G
Figura 9-18 Cobertura de pruebas de la prueba de integracin. El caso de prueba mostrado cubre todas las
dependencias posibles en la descomposicin en subsistemas.
D y G, y as en forma sucesiva. Usando una estrategia de arriba hacia abajo se prueba en forma
unitaria el subsistema A, luego se ejecutan las pruebas dobles A,B, A,C y A,D, luego la prueba
cudruple A,B,C,D y as en forma sucesiva. Ambas estrategias cubren la misma cantidad de
dependencias de subsistemas pero las ejercitan en orden diferente.
La estrategia de p r u e b a s de e m p a r e d a d o combina las estrategias de arriba hacia abajo y
de abajo hacia arriba, tratando de usar lo mejor de ambas. Durante las pruebas de emparedado
quien prueba debe poder reformular o hacer que corresponda la descomposicin en subsistemas
en tres capas, una capa de destino (la carne), una capa encima de la capa de destino (el pan de
encima) y una capa debajo de la capa de destino (el pan de abajo). Usando la capa de destino
como foco de atencin, ahora pueden realizarse en paralelo las pruebas de arriba hacia abajo y de
abajo hacia arriba. Las pruebas de integracin de arriba hacia abajo se realizan probando de ma
nera incremental la capa superior con los componentes de la capa de destino, y las pruebas de
abajo hacia arriba se usan para probar en forma incremental la capa inferior con los componentes
de la capa de destino. En consecuencia, no necesitan escribirse los stubs y manejadores de prueba
para las capas superior e inferior, debido a que usan los componentes actuales de la capa de destino.
Observe que esto tambin permite probar pronto los componentes de la interfaz de usuario.
Hay un problema en las pruebas de emparedado: no prueban por completo a los componentes
individuales de la capa de destino antes de la integracin. Por ejemplo, las pruebas de empare
dado que se muestran en la figura 9-19 no prueban en forma unitaria al componente C de la capa
de destino.
www.FreeLibros.org
Actividades d e la s pruebas 357
Figura 9-19 Estrategia de pruebas de emparedado (diagrama de actividad UML). Ninguno de los
componentes de la capa de destino (es decir, B, C, D) se prueba en forma unitaria.
La estrategia de p r u e b a s de e m p a r e d a d o m o d i f i c a d a s prueba las tres capas en forma
individual antes de combinarlas en pruebas incremntales entre ellas. Las pruebas de capas indi
viduales constan de un grupo de tres pruebas:
Una prueba de la capa superior con stubs para la capa de destino.
Una prueba de la capa de destino con manejadores y stubs que reemplazan a las capas
superior e inferior.
Una prueba de la capa inferior con un manejador para la capa de destino.
Las pruebas de capas combinadas constan de dos pruebas:
La capa superior accede a la capa de destino (esta prueba puede reutilizar las pruebas de la
capa de destino de las pruebas de capa individuales, reemplazando a los manejadores con
componentes de la capa superior).
La capa de destino tiene acceso a la capa inferior (esta prueba puede reutilizar las pruebas
de la capa de destino de las pruebas de capa individuales, reemplazando al stub con com
ponentes de la capa inferior).
La ventaja de las pruebas de emparedado modificadas es que muchas actividades de prueba
pueden realizarse en paralelo, como lo indican los diagramas de actividad de las figuras 9-19 y
9-20. La desventaja de las pruebas de emparedado modificadas es la necesidad de stubs y mane
jadores de prueba adicionales. En trminos generales, las pruebas de emparedado modificadas
conducen a un tiempo de prueba general significativamente ms corto cuando se les compara
con las pruebas de arriba hacia abajo o de abajo hacia arriba.
www.FreeLibros.org
358 C apitulo 9 Pruebas
Figura 9-20 Un ejemplo de la estrategia de pruebas de emparedado modificadas (diagrama de actividad
UML). Los componentes de la capa de destino se prueban en forma unitaria antes de integrarlos con las capa
superior e inferior.
9.4.4 Pruebas del sistema
Las pruebas unitarias y de integracin se enfocan en encontrar defectos en componentes
individuales y en las interfaces entre los componentes. Una vez que se han integrado los compo
nentes, las pruebas del sistema aseguran que el sistema completo se apegue a los requerimientos
funcionales y no funcionales del sistema. Hay varias actividades de prueba del sistema que se
realizan:
P r u e b a f un ci o na l . Prueba de los requerimientos funcionales (del RAD).
P r u e b a de de s e m pe o . Prueba de los requerimientos no funcionales (del SDD).
P r u e b a p i l o t o . Prueba de la funcionalidad comn entre un grupo seleccionado de usuarios
finales en el ambiente de destino.
P r u e b a d e a c e p t a c i n . Pruebas de usabilidad, funcional y de desempeo realizadas por el
cliente en el ambiente de desarrollo contra criterios de aceptacin (del acuerdo del proyecto).
www.FreeLibros.org
Actividades d e la s pruebas 359
P r u e b a de i n s t a l a c i n . Pruebas de usabilidad, funcional y de desempeo realizadas por el
cliente en el ambiente de destino. Si el sistema se instala slo en un pequeo conjunto
seleccionado de clientes, se le llama prueba beta.
Prueba funcional
La prueba funcional, a la que tambin se llama prueba de requerimientos, encuentra dife
rencias entre los requerimientos funcionales y el sistema. La prueba del sistema es una tcnica de
caja negra: los casos de prueba se derivan del modelo de casos de uso. En sistemas con requeri
mientos funcionales complejos no es posible, por lo general, probar todos los casos de uso para
todas las entradas vlidas e invlidas. El objetivo de quien prueba es seleccionar las pruebas que
son relevantes para el usuario y que tienen una alta probabilidad de descubrir fallas. Tome en
cuenta que la prueba funcional es diferente a la prueba de usabilidad (descrita en el captulo 4,
Obtencin de requerimientos) que tambin se enfoca en el modelo de casos de uso. La prueba fun
cional encuentra diferencias entre el modelo de casos de uso y la expectativa del usuario sobre el
sistema.
Para identificar las pruebas funcionales inspeccionamos el modelo de casos de uso e iden
tificamos instancias de casos de uso que es probable que causen fallas. Esto se logra usando
tcnicas de caja negra similares a las pruebas de equivalencia y de frontera (seccin 9.4.2). Los
casos de prueba deben ejercitar los casos de uso comunes y excepcionales. Por ejemplo, consi
dere el modelo de casos de uso para un distribuidor de boletos del ferrocarril subterrneo (vea la
figura 9-21). La funcionalidad del caso comn est modelada por el caso ComprarBoleto,
describiendo los pasos necesarios para que un P a s a j e r o compre en forma satisfactoria un
boleto. Los casos de uso Ex ceso Tiempo, Ca ncelacin, Fuera D e s e r v i c i o y SinCambio des
criben varias condiciones excepcionales que resultan del estado del distribuidor o de acciones
del P a s a j e r o .
Pasajero
/ \
ExcesoTiempo
e x t i e n d e /
Cancelacin
e x t i e n d e v
SinCambio FueraDeServicio
Figura 9-21 U n e j e m p l o d e u n m o d e l o d e c a s o d e u s o p a r a u n d i s t r i b u i d o r d e b o l e t o s d e t r e n s u b t e r r n e o
( d i a g r a m a d e c a s o d e u s o U M L ) .
www.FreeLibros.org
360 C apitulo 9 Pruebas
La figura 9-22 muestra el caso de uso ComprarBoleto que describe la interaccin normal
entre el actor P a s a j e r o y el D i s t r i b u i d o r . Observamos que es probable que fallen tres
caractersticas del D i s t r i b u i d o r y deben probarse:
1. El P a s a j e r o puede oprimir varios botones de zona antes de insertar dinero y, en ese caso,
el D i s t r i b u i d o r debe desplegar la cantidad de la ltima zona.
2. El P a s a j e r o puede seleccionar otro botn de zona despus de insertar dinero y, en ese
caso, el D i s t r i b u i d o r debe regresar todo el dinero insertado por el P as a j er o .
3. El P a s a j e r o puede insertar ms dinero del necesario y, en ese caso, el D i s t r i b u i d o r
debe regresar el cambio correcto.
Nombre del caso de uso
Condicin inicial
Flujo de eventos
Condicin final
C o m p r a r B o l e to
El P a s a j e r o e st parado enfrente del D i s t r i b u i d o r de boletos.
El P a s a j e r o tiene suficiente dinero para comprar el boleto.
1. El Pa sa j e r o selecciona la cantidad de zonas a viajar. Si el P a s a j e r o
oprime varios botones de zona, e l D i s t r i b u i d o r slo considera el
ltimo botn oprimido.
2. El D i s t r i b u i d o r muestra la cantidad a pagar.
3. El P a s a j e r o inserta dinero.
4. Si el P a s a j e r o selecciona una nueva zona antes de insertar sufi
ciente dinero, el D i s t r i b u i d o r regresa todas las monedas y billetes
insertados por el P a s a j e r o .
5. Si el P a s a j e r o inserta ms dinero que la cantidad a pagar, el
D i s t r i b u i d o r regresa el cambio excedente.
6. El D i s t r i b u i d o r emite el boleto.
7. El P a s a j e r o toma el cambio y el boleto.
El P a s a j e r o tiene el boleto seleccionado.
Figura 9-22 Un ejemplo del caso de us o del modelo de l c as o de uso del distribuidor de boletos:
C o m p r a r B o l e t o .
La figura 9-23 muestra el caso de uso ComprarBoleto_CasoComn, que ejercita estas tres
caractersticas. Observe que el flujo de eventos describe las entradas al sistema (estmulos que
enva el P a s a j e r o al D i s t r i b u i d o r ) y las salidas deseadas (respuestas correctas del D i s t r i
buidor ). Tambin pueden derivarse casos de prueba similares para los casos de uso excepcionales
SinCambio, Fuera D e s e r v i c i o , ExcesoTiempo y Cancelacin.
Los casos de prueba como ComprarBoleto_CasoComn se derivan para todos los casos de
uso, incluyendo aquellos que representan comportamiento excepcional. Los casos de prueba
estn asociados con los casos de uso de los que se derivan, facilitando la actualizacin de los
casos de prueba cuando se modifican los casos de uso.
www.FreeLibros.org
Actividades d e la s pruebas 361
Nombre del caso de prueba
Condicin inicial
Flujo de eventos
Condicin final
ComprarBoleto_CasoComn
El P a s a j e r o est parado enfrente del D i s t r i b u i d o r de boletos.
El P a s a j e r o tiene dos billetes de $5 y tres monedas de 10 centavos.
1. El P a s a j e r o oprime en sucesin los botones de zona 2, 4 , 1 y 2.
2. El D i s t r i b u i d o r debe desplegar en sucesin $1.25, $2.25, $0.75 y
$1.25.
3. El P a s a j e r o inserta un billete de $5.
4. El D i s t r i b u i d o r regresa tres billetes de $ 1y tres monedas de 25
centavos, y emite un boleto para la zona 2.
5. El P a s a j e r o repite los pasos 1 a 4 usando su segundo billete de $5.
6. El P a s a j e r o repite los pasos 1 a 3 usando cuatro monedas de 25
centavos y tres monedas de 10 centavos. El D i s t r i b u i d o r emite un
boleto de la zona 2 y regresa una moneda de 5 centavos.
7. El P a s a j e r o selecciona la zona 1e inserta un billete de $1. El
D i s t r i b u i d o r emite un boleto de la zona 1 y regresa una moneda
de 25 centavos.
8. El Pa sa j e r o selecciona la zona 4 e inserta dos billetes de $1 y una
moneda de 25 centavos. El D i s t r i b u i d o r emite un boleto de zona 4.
9. El Pa sa j e r o selecciona la zona 4. El D i s t r i b u i d o r muestra $2.25.
El P a s a j e r o inserta un billete de $1 y una moneda de 5 centavos y
selecciona la zona 2. El D i s t r i b u i d o r regresa el billete de $ 1 y la
moneda de 5 centavos y despliega $1.25.
El P a s a j e r o tiene tres boletos de la zona 2, un boleto de la zona 1 y un
boleto de la zona 4.
Figura 9-23 Un ejemplo de un caso de prueba derivado del caso de uso C o m p r ar Bo l e to .
Pruebas de desempeo
Las pruebas de desempeo encuentran diferencias entre los objetivos de diseo seleccio
nados durante el diseo del sistema y el sistema. Debido a que los objetivos de diseo se derivan
de los requerimientos no funcionales, los casos de prueba pueden derivarse del SDD o del RAD.
Durante la prueba de desempeo se realizan las siguientes pruebas.
Las p r u e b a s d e e s f u e r z o revisan si el sistema puede responder a muchas peticiones
simultneas. Por ejemplo, si se requiere que un sistema de informacin para vendedores de
automviles tenga interfaz con 6,000 vendedores, la prueba de esfuerzo evala la manera
en que se desempea el sistema con ms de 6,000 usuarios simultneos.
Las p r u e b a s de v o l u m e n tratan de encontrar defectos asociados con grandes cantidades
de datos, como los lmites estticos impuestos por la estructura de datos o algoritmos de
alta complejidad o alta fragmentacin de disco.
www.FreeLibros.org
362 C apitulo 9 Pruebas
Las pr ue ba s de se g ur i da d tratan de encontrar fallas de seguridad en el sistema. Hay pocos
mtodos sistemticos para la localizacin de defectos de seguridad. Por lo general esta
prueba la realizan equipos tigre que tratan de introducirse al sistema usando su experiencia
y conocimiento de las fallas de seguridad tpicas.
Las p r u e b a s de t e m p o r i z a c i n tratan de encontrar comportamientos que violan las
restricciones de temporizacin descritas por los requerimientos no funcionales.
Las p r u e b a s de r e c u p e r a c i n evalan la habilidad del sistema para recuperarse de errores
como la falta de disponibilidad de recursos, una falla de hardware o una falla de red.
Despus de que se han realizado todas las pruebas funcionales y de desempeo y no se han
detectado fallas durante estas pruebas, se dice que el sistema ha sido validado.
Prueba piloto
Durante la p r u e b a p i l o t o , tambin llamada p r u e b a de c a m p o , se instala el sistema y lo
utiliza un conjunto de usuarios seleccionado. Los usuarios ejercitan el sistema como si se hubiera
instalado en forma permanente. A los usuarios no se les dan lincamientos explcitos o escenarios
de prueba. Las pruebas piloto son tiles cuando se construye un sistema sin un conjunto espe
cfico de requerimientos o sin un cliente especfico en mente. En este caso se invita a un grupo
de personas para que usen el sistema durante un tiempo limitado y se da su retroalimentacin a
los desarrolladores.
Una p r u e b a a l f a es una prueba piloto en la que los usuarios ejercitan al sistema en el
ambiente de desarrollo. En una pr u e b a b e t a una cantidad limitada de usuarios finales realiza la
prueba de aceptacin en el ambiente de destino. La diferencia entre las pruebas de usabilidad y
las pruebas alfa o beta es que no se observa y registra el comportamiento individual del usuario
final. En consecuencia, las pruebas beta no prueban los requerimientos de usabilidad de manera
tan profunda como lo hacen las pruebas de usabilidad. Para los sistemas interactivos, en donde
la facilidad de uso es un requerimiento, las pruebas de usabilidad no pueden ser reemplazadas
con una prueba beta.
Internet ha facilitado mucho la distribucin del software. En consecuencia, las pruebas beta
cada vez son ms comunes. De hecho, algunas compaas las usan ahora como el mtodo princi
pal para la prueba de sistema de su software. Debido a que el proceso de descarga es responsa
bilidad del usuario final, y no de los desarrolladores, el costo de distribucin del software experi
mental ha disminuido en gran medida. En consecuencia, la restriccin de la cantidad de probadores
beta a un grupo pequeo tambin es cosa del pasado. El nuevo paradigma de prueba beta propor
ciona el software a cualquiera que est interesado en probarlo. De hecho, algunas compaas
cobran a sus usuarios para hacer pruebas beta de su software!
Pruebas de aceptacin
Hay tres formas en que el cliente evala un sistema durante la prueba de aceptacin. En la
pr u e b a p a t r n el cliente prepara un conjunto de casos de prueba que representa condiciones
tpicas bajo las cuales debe operar el sistema. Las pruebas patrn pueden realizarse con usuarios
reales o con un equipo de prueba especial que ejercita las funciones del sistema, pero es impor
tante que quienes prueben estn familiarizados con los requerimientos funcionales y no funciona
les para que puedan evaluar el sistema.
www.FreeLibros.org
Administracin d e l a s pruebas 363
Otro tipo de prueba de aceptacin del sistema se usa en los proyectos de reingeniera cuando
el nuevo sistema reemplaza a uno existente. En las p r u e b a s c o m p e t i d o r a s se prueba el nuevo
sistema contra un sistema existente o un producto competidor. En las pr u e b a s d e s o m b r a , una
forma de pruebas de comparacin, se ejecutan en paralelo los sistemas nuevo y heredado y se
comparan sus salidas.
Despus de las pruebas de aceptacin el cliente reporta al gerente del proyecto cules reque
rimientos no se satisfacen. Las pruebas de aceptacin tambin dan la oportunidad de un dilogo
entre los desarrolladores y el cliente acerca de las condiciones que han cambiado y cules
requerimientos tienen que aadirse, modificarse o eliminarse a causa de los cambios. Si tienen
que cambiarse los requerimientos, los cambios debern reportarse en las minutas para la revisin
de aceptacin del cliente y debern formar la base para otra iteracin del proceso del ciclo de
vida del software. Si el cliente queda satisfecho el sistema se acepta, quiz condicionado a una
lista de cambios registrados en las minutas de la prueba de aceptacin.
Pruebas de instalacin
Despus de que se acepta el sistema se le instala en el ambiente de destino. Un buen plan
de pruebas del sistema permite la reconfiguracin fcil del sistema del ambiente de desarrollo al
ambiente de destino. El resultado deseado de la prueba de instalacin es que el sistema instalado
maneje en forma adecuada todos los requerimientos.
En la mayora de las situaciones las pruebas de instalacin repiten los casos de prueba que
se ejecutaron durante las pruebas de funcin y desempeo en el ambiente de destino. Algunos
requerimientos no pueden ejecutarse en el ambiente de desarrollo debido a que requieren recur
sos especficos del destino. Para probar estos requerimientos tienen que disearse y realizarse
casos de prueba adicionales como parte de la prueba de instalacin. Una vez que el cliente est
satisfecho con los resultados de la prueba de instalacin, se ha terminado la prueba del sistema y
se entrega de manera formal, quedando listo para su operacin.
9.5 Administracin de l a s pruebas
En las secciones anteriores mostramos la manera en que se usan tcnicas de prueba diferentes
para maximizar la cantidad de defectos descubiertos. En esta seccin describimos la manera de
administrar las actividades de prueba para minimizar los recursos necesarios. Muchas activida
des de prueba suceden casi al final del proyecto cuando se estn agotando los recursos y cuando
se incrementa la presin de la entrega. Con frecuencia hay que sopesar compromisos entre los
defectos que necesitan repararse antes de la entrega y los que pueden repararse en una revisin
subsiguiente del sistema. Sin embargo, a final de cuentas los desarrolladores deben detectar y
reparar una cantidad de defectos suficiente para que el sistema satisfaga los requerimientos fun
cionales y no funcionales en una amplitud aceptable por el cliente.
Primero describimos la planeacin de las actividades de prueba (seccin 9.5.1). Luego
describimos el plan de pruebas que documenta las actividades de las pruebas (seccin 9.5.2).
Luego describimos los papeles asignados durante las pruebas (seccin 9.5.3).
9.5.1 Planeacin de las pruebas
Los desarrolladores pueden reducir el costo de las pruebas y el tiempo transcurrido necesario
para su terminacin mediante una planeacin cuidadosa. Dos elementos clave son comenzar
pronto la seleccin de los casos de prueba y hacer las pruebas en forma paralela.
www.FreeLibros.org
364 C apitulo 9 Pruebas
Los desarrolladores responsables de las pruebas pueden disear casos de prueba tan pronto
como son estables los modelos que validan. Las pruebas funcionales pueden desarrollarse cuando
se terminan los casos de uso. Las pruebas unitarias de subsistemas pueden desarrollarse cuando se
definen sus interfaces. Del mismo modo, los stubs y manejadores de pruebas pueden desarro
llarse cuando son estables las interfaces de componentes. El rpido desarrollo de pruebas per
mite que se inicie la ejecucin de las pruebas tan pronto como se dispone de los componentes.
Adems, tomando en cuenta que las pruebas de desarrollo requieren un examen cuidadoso de
los modelos que estn bajo validacin, los desarrolladores pueden encontrar defectos en los
modelos incluso antes de que se construya el sistema. Sin embargo, tome en cuenta que las prue
bas de desarrollo tempranas introducen un problema de mantenimiento: es necesario actualizar
los casos de prueba, manejadores y stubs cada vez que cambian los modelos del sistema.
El segundo elemento clave para el acortamiento del tiempo de pruebas es realizar las activi
dades de prueba en forma paralela: todas las pruebas de componentes pueden realizarse en forma
paralela, las pruebas dobles de componentes en los que no se descubren defectos pueden iniciarse
mientras se reparan otros componentes. Por ejemplo, la prueba cudruple A3,C,D de la figura 9-24
puede realizarse tan pronto como las pruebas dobles A,B, A,C, A,D no dan ninguna falla. Estas prue
bas dobles, a su vez, pueden realizarse tan pronto como se termine la prueba unitaria de A. La prueba
cudruple A,B,C,D puede realizarse en paralelo con la prueba doble D,G y la prueba triple B,E,F,
aunque las pruebas E, F o G descubran fallas y retrasen el resto de las pruebas.
Prueba A, B
[5 Id
Nov. 14 Nov. 15
Prueba A Prueba A, C Prueba A, B, C, D
1 Id
l
6 I d " ^10 I d
Nov. 13 Nov. 14 Nov. 14 Nov. 15 / ' I Nov. 15 Nov. 16
Prueba A, D
7 Id
Nov. 14 Nov. 15
Prueba G Prueba D, G
2 Id 8 I d
Nov. 13 Nov. 14 Nov. 14 Nov. 15
Prueba F
3 Id
Nov. 13 Nov. 14
Prueba E
4 Id
Nov. 13 Nov. 14
Prueba B, E, F
9 Id
Nov. 14 Nov. 15
R-uebaA,B,C,D,E(FfG
11 Id
Nov. 16 Nov. 17
Figura 9-24 Ejemplo de una grfica PERT para una calendarizacin de las pruebas de emparedado que se
muestran en la figura 9-19.
www.FreeLibros.org
Administracin d e l a s pruebas 365
Las actividades de las pruebas se documentan en cuatro tipos de documentos, Plan de
pruebas, Especificaciones de casos de prueba, Reportes de incidentes de pruebas y Reporte
de resumen de pruebas :2
P l a n de p r u e b a s . El plan de pruebas se enfoca en los aspectos administrativos de las
pruebas. Documenta el alcance, enfoque, recursos y calendarizacin de las actividades
de pruebas. En este documento se identifican los requerimientos y componentes a probar.
E s p e c i f ic a c i o n e s de ca s o s de pr u e b a . Cada prueba se documenta con una especificacin
de caso de prueba. Este documento contiene las entradas, manejadores, stubs y salidas
esperadas de las pruebas. Este documento tambin contiene las tareas a realizar.
R e p o r t e s de i n c i d e n t e s de pr ue ba s . Cada ejecucin de cada prueba se documenta en un
Reporte de incidentes de la prueba. Se registran los resultados reales de las pruebas y las
diferencias con respecto a la salida esperada.
Reporte de r es um en de pruebas . Este documento lista todas las fallas que se descubrieron
durante las pruebas y que necesitan investigarse. A partir del Reporte de resumen de pruebas
los desarrolladores analizan y asignan prioridad a cada falla y planean los cambios al
sistema y los modelos. Estos cambios, a su vez, pueden activar nuevos casos de prueba y
nuevas ejecuciones de pruebas.
El Plan de pruebas (TP, por sus siglas en ingls) y las Especificaciones de casos de prueba (TCS,
por sus siglas en ingls) se escriben al inicio del proceso, tan pronto como se termina la pla
neacin de las pruebas y cada caso de prueba. Estos documentos estn bajo la administracin de
la configuracin y se actualizan conforme cambian los modelos del sistema. El siguiente es un
esquema para un Plan de pruebas:
9.5.2 Documentacin de las pruebas
Plan de pruebas
1. Introduccin
2. Relacin con otros documentos
3. Panorama del sistema
4. Caractersticas a probar y que no se prueban
5. Criterios de aprobacin o falla
6. Enfoque
7. Suspensin y reanudacin
8. Materiales para la prueba (requerimientos de hardware y software)
9. Casos de prueba
10. Calendario de pruebas
La seccin 1 del plan de pruebas describe los objetivos y alcance de las pruebas. El objetivo es
proporcionar un marco que puedan usar los gerentes y quienes hacen la prueba para planear y
eje-cutar las pruebas necesarias a tiempo y con efectividad en el costo.
2. Los documentos descritos en esta seccin se basan en el estndar IEEE 829 sobre la documentacin de pruebas. Debe
tomarse en cuenta que hemos omitido determinadas secciones y documentos (por ejemplo, el Reporte de transmisin
efe conceptos de prueba) por simplicidad. Consulte el estndar para una descripcin completa de estos documentos
[IEEE Std. 829-1991].
www.FreeLibros.org
366 C apitulo 9 Pruebas
La seccin 2 explica la relacin del plan de pruebas con los dems documentos produci
dos durante el esfuerzo de desarrollo, como el RAD, el SDD y el ODD. Explica la manera en
que se relacionan todas las pruebas con los requerimientos funcionales y no funcionales, y tam
bin con el diseo del sistema establecido en los documentos respectivos. Si es necesario, esta
seccin presenta un esquema de denominacin para establecer la correspondencia entre los
requerimientos y las pruebas.
La seccin 3 proporciona un panorama del sistema en trminos de los componentes que se
prueban durante la prueba unitaria. En esta seccin se define la granularidad de los componentes
y sus dependencias. Esta seccin se enfoca en los aspectos estructurales de las pruebas.
La seccin 4 identifica todas las caractersticas y combinaciones de caractersticas a probar.
Tambin describe todas las caractersticas que no se van a probar y las razones para no hacerlo.
Esta seccin se enfoca en los aspectos funcionales de las pruebas.
La seccin 5 especifica los criterios generales para aprobar o fallar las pruebas que se tra
tan en este plan. Se complementan con los criterios de aprobacin o falla de la especificacin de
diseo de las pruebas. Tome en cuenta que falla en la terminologa estndar del IEEE significa
prueba satisfactoria en nuestra terminologa.
La seccin 6 describe el enfoque general del proceso de pruebas. Trata las razones para la
estrategia de integracin de pruebas seleccionada. A menudo se necesitan estrategias diferentes
para probar diferentes partes del sistema. Puede usarse un diagrama de clase UML para ilustrar las
dependencias entre las pruebas individuales y su involucramiento en las pruebas de integracin.
La seccin 7 especifica los criterios para la suspensin de pruebas de los conceptos de
prueba asociados con el plan. Tambin especifica las actividades de prueba que deben repetirse
cuando se reanudan las pruebas.
La seccin 8 identifica los recursos que se necesitan para las pruebas. Estos deben incluir las
caractersticas fsicas de los medios necesarios, incluyendo el hardware, software, herramientas
de prueba especiales y otras necesidades de las pruebas (espacio de oficina, etc.) para apoyar las
pruebas.
La seccin 9, la parte medular del plan de pruebas, lista los casos de prueba que se usan duran
te las pruebas. Cada caso de prueba se describe con detalle en un documento aparte de Especificacin
del caso de prueba. Cada ejecucin de estas pruebas se documentar en un Reporte de incidentes de
la prueba. Ms adelante en esta seccin describimos con mayor detalle estos documentos.
La seccin 10 del plan de pruebas cubre las responsabilidades, personal y necesidades de
entrenamiento, riesgos y contingencias y el calendario de pruebas.
El siguiente es un esquema de una Especificacin del caso de prueba:
Especificacin del c a s o de prueba
1. Identificador de la especificacin del caso de prueba
2. Conceptos a probar
3. Especificaciones de entrada
4. Especificaciones de salida
5. Necesidades ambientales
6. Requerimientos procedurales especiales
7. Dependencias entre casos
www.FreeLibros.org
Administracin d e l a s pruebas 367
El identificador de la Especificacin del caso de prueba es el nombre del caso de prueba, y se
usa para distinguirlo con respecto a otros casos de prueba. Las convenciones, como la denomi
nacin de los casos de prueba a partir de las caractersticas del componente a probar, permiten
que los desarrolladores se refieran con ms facilidad a los casos de prueba. La seccin 2 del TCS
lista los componentes a probar y las caractersticas que se ejercitan. La seccin 3 lista las entradas
requeridas para los casos de prueba. La seccin 4 lista la salida esperada. Esta salida se calcula
en forma manual o con un sistema competitivo (como un sistema heredado que se est reempla
zando). La seccin 5 lista la plataforma de hardware y software necesaria para ejecutar las prue
bas, incluyendo los manejadores y stubs de prueba. La seccin 6 lista cualquier restriccin nece
saria para ejecutar la prueba, como temporizacin, carga o intervencin del operador. La seccin
7 lista las dependencias con respecto a otros casos de prueba.
El Reporte de incidentes de la prueba lista los resultados actuales de la prueba y las fallas
que se experimentaron. La descripcin de los resultados debe incluir cules caractersticas se
demostraron y si se satisficieron. Si se experiment una falla, el reporte de anlisis de la prueba
debe contener informacin suficiente para permitir que se repita la falla. Las fallas de todos los
Reportes de incidentes de la prueba se recopilan y listan en el Reporte de resumen de las pruebas,
y luego son analizadas y priorizadas por los desarrolladores.
Tome en cuenta que el estndar IEEE [IEEE Std. 829-1991] para la documentacin de prue
bas de software usa un esquema un poco diferente que es ms adecuado para organizaciones y
sistemas ms grandes. La seccin 10, por ejemplo, es tratada en varias secciones en el estndar
(responsabilidades, personal y necesidades de entrenamiento, calendarizacin, riesgos y contin
gencias).
9.5.3 Asignacin de responsabilidades
Las pruebas requieren que los desarrolladores encuentren defectos en los componentes del
sistema. Esto se lleva a cabo mejor cuando realiza las pruebas un desarrollador que no est
involucrado en el desarrollo del componente que se va a probar, que est menos reticente a
romper el componente que se va a probar y que tenga ms probabilidades de encontrar ambi
gedades en la especificacin del componente.
Para los requerimientos de calidad rigurosos, un equipo aparte dedicado al control de
calidad es el nico responsable de las pruebas. Al equipo de pruebas se le proporcionan los
modelos del sistema, el cdigo fuente y el sistema para desarrollar y ejecutar los casos de
prueba. Los Reportes de incidentes de las pruebas y los Reportes de resumen de pruebas se
envan de vuelta a los equipos de subsistemas para su anlisis y posible revisin del sistema.
Luego el equipo de revisin vuelve a probar el sistema revisado, no slo para comprobar si
se corrigieron las fallas originales sino tambin para asegurarse que no se hayan insertado
nuevos defectos en el sistema.
Para sistemas que no tiene requerimientos de calidad rigurosos, los equipos de subsistemas
pueden duplicarse como equipos de pruebas para los componentes desarrollados por otros equi
pos de subsistemas. El equipo de arquitectura puede definir los estndares para los procedimien
tos de prueba, manejadores y stubs, y tambin puede comportarse como el equipo de pruebas de
integracin. Pueden usarse los mismos documentos para la comunicacin entre los equipos
de subsistemas.
www.FreeLibros.org
368 C apitulo 9 Pruebas
1. Corrija los defectos de los mtodos es A o B i s i e s t o 0 y obtenerNumDasEnMes () de la
figura 9-14 y genere casos de prueba usando los mtodos de prueba de ruta. Son diferen
tes los casos de prueba que encuentra con respecto a los de las figuras 9-14 y 9-15? Por
qu? Los casos de prueba que encontr descubriran los defectos que corrigi?
2. Genere cdigo Java equivalente para el diagrama de grfica de estado del caso de uso Aj us
tarHor a del Retoj2B (figura 9-16). Use la prueba de equivalencia, la prueba de frontera y la
prueba de ruta para generar casos de prueba para el cdigo que acaba de generar. Cmo
se comparan estos casos con los generados usando pruebas basadas en estado?
3. Construya el diagrama de grfica de estado correspondiente al caso de uso ComprarBoleto
de la figura 9-22. Genere casos de prueba basados en el diagrama de grfica de estado
usando la tcnica de prueba basada en estado. Discuta la cantidad de casos de prueba y las
diferencias con el caso de prueba de la figura 9-23.
4. Discuta el uso de otros patrones de diseo para implementar un stub en vez del patrn
Puente que se muestra en la figura 9-11. Por ejemplo, cules son las ventajas de usar un
patrn Apoderado en vez de un Puente? Cules son las desventajas?
5. Aplique la ingeniera de software y la terminologa de pruebas de este captulo a los siguien
tes trminos usados en el artculo de Feynman mencionado en la introduccin:
Qu es una grieta?
Qu es una iniciacin de grieta?
Qu es alta confiabilidad del motor?
Qu es un propsito de diseo?
Qu es una misin equivalente?
Qu significa 10% de la especificacin original?
Cmo usa Feynman el trmino verificacin cuando dice que conforme se obser
van deficiencias y errores de diseo se corrigen y verifican con ms pruebas?
6. Dada la siguiente descomposicin en subsistemas:
9.6 Ejercicios
www.FreeLibros.org
p r c i d o s 369
comente el plan de pruebas usado por el gerente del proyecto:
Qu decisiones se tomaron? Por qu? Cules son las ventajas y desventajas de este plan de
pruebas particular?
Referencias
Pezier, 1990]
[Binder, 1994]
[Brooks, 1975]
[Fagan, 1976]
[Feynman, 1988]
B. Bezier, Software Testing Techniques, 2a. ed., Van Nostrand, Nueva York, 1990.
R. V. Binder, Testing object-oriented systems: A status report", American Programmer,
abril de 1994.
F. P. Brooks, Ihe Mythical Man Month, Addison-Wesley, Reading, MA, 1975.
M. Fagan, Design and code inspections to reduce errors in program development , IBM
tystems Journal, vol. 15, nm. 3, 1976.
R. P. Feynman, "Personal observations on the reliability o f the Shuttle, Rogis Commission,
The Presidential Commission on the Space Shuttle Challenger Accident Report. Washington,
DC, junio de 1986. Tambin en http://www.virtualschool.edu/mon7 SocialConstruction/
[IEEE Std. 829-1991]
[IEEE Std. 982-1989]
[IEEE, 1997]
[Jones, 1977]
[McCabe, 1976]
[Myers, 1979]
[Pamas y Weiss, 1985]
[Pfleeger, 1991]
[Popper, 1992]
[Siewiorek y Swarz, 1992]
[Turner y Robson, 1993]
[Walker et al^ 1980]
IEEE Standard fo r Software Test Documentation, IEEE Standards Board, marzo de 1991, en
[IEEE 1997].
IEEE Guide f or the Use o f IEEE Standard Dictionary o f Measures to Produce Reliable
Software, IEEE Standards Board, julio de 1989, en [IEEE 1997].
IEEE Standards Collection Software Engineering, Piscataway, NJ, 1997.
T. C. Jones, Programmer Quality and Programmer Productivity, IBM TR-02.764, 1977.
T. McCabe, A Software Complexity Measure , IEEE TYansactions on Software
Engineering, vol. 2, nm. 12, diciembre de 1976.
G J. Myers, The Art o f Software Testing, Wiley, Nueva York, 1979.
D. L. Pamas y D. M. Wfeiss, Active design reviews: principies and practice , Proceedings of
the Eight International Conference on Software Engineering, agosto de 1985, pgs. 132-136.
S. L. Pfleeger, Software Engineering: The Production o f Quality Sojhvare, 2a. ed.,
Macmillan, 1991.
K. Popper, Objective Knowledge: An Evolutionary Approach. Clarendon, Oxford, 1992.
D. P. Siewiorek y R. S. Swarz, Reliable Computer Systems: Design and Evaluadon, 2a. ed.,
Digital, Burlington, MA, 1992.
C. D. Turner y D. J. Robson, The state-based testing of object-oriented programs,
Conference on Software Maintenance, septiembre de 1993, pgs. 302-310.
B. J. Walker, R. A. Kemmerer y G. J. Popek, Specification and verification of the UCLA
Unix security kemel", Communications o f the ACM, vol. 23, nm. 2, 1980, pgs. 118-131.
www.FreeLibros.org
10
10.1 Introduccin: un ejemplo de aeronave 372
10.2 Un panorama de la administracin de la configuracin 374
10.3 Conceptos de la administracin de la configuracin 375
10.3.1 Artculos de configuracin y agregados AC 376
10.3.2 Versiones y configuraciones 377
10.3.3 Peticiones de cambio 378
10.3.4 Promociones y lanzamientos 378
10.3.5 Depsitos y espacios de trabajo 379
10.3.6 Esquemas de identificacin de versiones 379
10.3.7 Cambios y conjuntos de cambio 382
10.3.8 Herramientas para la administracin de la configuracin 383
10.4 Actividades de la administracin de la configuracin
10.4.1 Identificacin de los artculos de configuracin
384
y agregados AC 387
10.4.2 Administracin de la promocin 389
10.4.3 Administracin de los lanzamientos 390
10.4.4 Administracin de las ramas 393
10.4.5 Administracin de las variantes 397
10.4.6 Administracin del cambio 400
10.5 Gestin de la administracin de la configuracin 401
10.5.1 Documentacin de la administracin de la configuracin
10.5.2 Asignacin de las responsabilidades de la administracin
401
de la configuracin
10.5.3 Planeacin de las actividades de la administracin
402
de la configuracin 403
10.6 Ejercicios 403
Referencias 404
370
www.FreeLibros.org
10
Administracin
de la configuracin
del software
Quienes quieran repetir el pasado deben controlar la
enseanza de la historia.
Frank Herbert, en Chapterhouse: Dune
I j 1cambio se extiende por todo el proceso de desarrollo: los requerimientos cambian cuando
los desarrolladores mejoran su comprensin del dominio de aplicacin, el diseo del sistema
cambia con nueva tecnologa y objetivos de diseo, el diseo de objetos cambia con la identifi
cacin de objetos de solucin y la implementacin cambia conforme se descubren y se reparan
los defectos. Estos cambios pueden tener un impacto en cada uno de los productos de trabajo,
desde los modelos del sistema hasta el cdigo fuente y la documentacin. La administracin de
la configuracin del software es el proceso de controlar y supervisar el cambio de los productos
de trabajo. Una vez que se define una lnea bsica, la administracin de la configuracin del soft
ware minimiza los riesgos asociados con los cambios definiendo un proceso formal de aproba
cin y seguimiento de los cambios.
En este captulo describimos las siguientes actividades:
La identificacin de los artculos de configuracin es el modelado del sistema como un
conjunto de componentes en evolucin.
La administracin de promociones es la creacin de versiones para los dems desarrolla
dores.
La administracin de lanzamientos es la creacin de versiones para el cliente y los
usuarios.
La administracin de ramas es la administracin del desarrollo concurrente.
La administracin de variantes es la administracin de las versiones que se pretende que
coexistan.
La administracin de cambios es el manejo, aprobacin y seguimiento de las peticiones de
cambio.
Concluimos este captulo tratando los asuntos de la administracin de proyectos relacionados
con la administracin de la configuracin del software.
371
www.FreeLibros.org
372 C apitulo 10 Administracin d e la conf iguracin del software
10.1 Introduccin: un ejemplo de aeronave
Las aeronaves de pasajeros son una de las hazaas de ingeniera ms complejas intentadas por
una corporacin privada. Por un lado, las aeronaves de pasajeros necesitan ser seguras y confiables.
Por el otro, necesitan ser econmicas. A diferencia de los trenes o los automviles, los sistemas de
aeronaves no pueden simplemente apagarse cuando sucede una falla. A diferencia de la NASA, las
aerolneas necesitan obtener ganancias y pagar dividendos a sus accionistas. Estos requerimien
tos dan como resultado diseos muy complejos que incluyen muchas redundancias y sistemas de
diagnstico. Un Boeing 747, por ejemplo, est compuesto por ms de seis millones de partes. Para
desarrollar y mantener sistemas tan complejos, y al mismo tiempo seguir siendo competitivos
desde el punto de vista econmico, los fabricantes de aeronaves extienden la vida de un modelo
mejorando incrementalmente el mismo diseo. El Boeing 747, por ejemplo, se lanz por primera
vez en 1967 y sigue estando en produccin al momento en que esto se escribe. Ha tenido cuatro
revisiones mayores; la ltima, el 747-400, lanzada en 1988. Otro enfoque para el manejo de la
gran complejidad de una aeronave es la reutilizacin de la mayor cantidad posible de partes y
subsistemas en todos los modelos de aeronaves. Considere el siguiente ejemplo.
Ai r b u s A 320
En 1988, Airbus Industries, un consorcio de industrias aeronuticas europeas, lanz el A320, el primer avin
de pasajeros de vuelo por programa alambrado. Los pilotos controlan el avin como un jet de combate F16
usando un pequeo bastn que se encuentra a su lado. Los impulsos digitales se transmiten luego a una
computadora que los inteipreta y los pasa a los controles de las alas y la cola. A diferencia de los controles
hidrulicos, el control computarizado permite proteccin de envoltura, que impide que el piloto se exceda
de determinados parmetros, como las velocidades mnima y mxima, el ngulo de ataque mximo y valores
G mximos. El A320 tiene 150 asientos y est destinado para rutas de corto y mediano alcance.
A321 y A319
El xito comercial del A320 permiti que Airbus trabajara en dos aeronaves derivadas, el A319, una
versin ms pequea con 124 asientos, y el A321, una versin ms grande con 185 asientos. El cambio
de la longitud de un diseo bsico para obtener una nueva aeronave ha sido una prctica estndar en la
industria. Esto permite que el fabricante ahorre costo y tiempo apoyndose en un diseo existente.
Tambin ahorra costos de operacin para las aerolneas, ya que slo necesitan mantener un lote de
partes de repuesto. Sin embargo, en este caso Airbus llev el concepto ms lejos asegurando que las tres
aeronaves tuvieran los mismos controles de cabina y las mismas caractersticas de manejo. El A321, por
ejemplo, tiene alerones ranurados y controles de alas ligeramente modificados para hacer que el avin
se sienta como el A320, aunque el A321 sea ms largo. En consecuencia, cualquier piloto certificado
para alguna de las aeronaves puede volar las otras dos. Esto da como resultado ahorros en costo para los
operadores de aerolneas, quienes necesitan entrenar a los pilotos slo una vez, compartir simuladores
de vuelo, partes de repuesto y cuadrillas de mantenimiento para las tres versiones.
A330 y A340
Llevando la filosofa an ms lejos, Airbus puso mucho cuidado en las caractersticas de manejo del
A330 y el A340. Estas dos aeronaves, construidas para los mercados de largo alcance y ultra largo alcance,
pueden transportar el doble de pasajeros que el A320 hasta tres veces ms lejos. Tienen la misma
disposicin de cabina y sistema de vuelo por programa alambrado. Los pilotos entrenados para la
familia A320 pueden volar el A330 o el A340 con un reentrenamiento mnimo, reduciendo an ms los
costos de operacin de la aerolnea. En comparacin, las caractersticas de manejo de un 737 (comparable
con el A319) son muy diferentes de las del 747 (comparable con la versin ms grande del A340).
www.FreeLibros.org
Introduccin: un ejemplo d e aeronave 373
Los refinamientos incremntales y la reutilizacin de subsistemas no se logran sin problemas.
Cada cambio que se hace a una sola aeronave necesita ser evaluado de manera minuciosa en el
contexto de las otras dos. Por ejemplo, si decidimos instalar una planta de energa nueva ms efi
ciente en el A320, necesitaramos evaluar si la misma planta de energa tambin puede usarse en
el A319 y el A321 para conservar la ventaja de compartir partes en los tres modelos. Luego
necesitamos evaluar si el manejo de cada aeronave cambia en forma significativa, ya que, en ese
caso, tal vez necesitemos modificar el software del control computa rizado para que tome esto en
cuenta. Si no fuera as, sera necesario volver a entrenar y certificar a todos los pilotos que vuelan
el A320, sin mencionar la prdida de una plataforma y un programa de entrenamiento comunes
para las tres aeronaves. Luego se necesitara que la autoridad gubernamental (por ejemplo, la
Agencia de Aviacin Federal en Estados Unidos, las Autoridades de Aviacin Conjuntas en la Unin
Europea) volviera a certificar la aeronave modificada para que pudieran decidir sobre la seguridad
de la misma y si se necesitan nuevos procedimientos de mantenimiento o entrenamiento de pilotos.
Por ltimo, necesitara documentarse con cuidado el estado de cada aeronave individual para que
se reemplazaran las partes correctas. En resumen, es necesario identificar y rechazar cualquier
cambio que pudiera amenazar la seguridad de la aeronave, su eficiencia o la movilidad de los
pilotos entre aeronaves. Estos problemas requieren que los fabricantes de aeronaves y los opera
dores sigan procedimientos complejos de control de versiones y cambios.
El desarrollo de sistemas de software, aunque por lo general no es tan complejo como una
aeronave de pasajeros, tambin sufre problemas similares. Los sistemas de software tienen un
ciclo de vida largo para permitir la recuperacin de la inversin inicial: por ejemplo, muchos
sistemas Unix todava contienen cdigo que se remonta a los setenta. Los sistemas de software
pueden existir en diferentes variantes; por ejemplo, hay versiones de sistemas operativos Unix
que ejecutan en mainframes y tambin en PC caseras y computadoras Macintosh. Los cambios
de mantenimiento a sistemas de software existentes y en ejecucin necesitan controlarse y eva
luarse en forma meticulosa para asegurar un determinado nivel de confiabilidad: por ejemplo, la
introduccin de la divisa Euro, un simple cambio de escala, ha tenido un impacto muy visible y
considerable en muchos sistemas de software financieros y de negocios por todo el mundo. Por
ltimo, los sistemas de software evolucionan mucho ms rpido que las aeronaves, lo que requiere
que los desarrolladores sigan el cambio, sus suposiciones y su impacto.
La administracin de la configuracin permite que los desarrolladores y fabricantes de
aeronaves manejen el cambio. La primera funcin de la administracin de la configuracin es la
identificacin de los artculos de configuracin. Cules subsistemas tienen probabilidad de
cambio? Cules interfaces de subsistemas no deben cambiar? Cada subsistema que tiene proba
bilidades de cambiar se modela como un artculo de configuracin y se etiqueta su estado con un
nmero de versin. El software de vuelo por programa alambrado del A320 es un artculo de
configuracin. El manejador de dispositivo para un puerto serial es un artculo de configuracin
para un sistema operativo Unix.
La segunda funcin de la administracin de la configuracin es administrar el cambio
mediante un proceso formal. Una peticin de cambio primero se registra, luego se analiza, y se
acepta si es consistente con los objetivos del proyecto. Una peticin de cambio para una aeronave
es un reporte grueso que enumera todos los subsistemas y contratistas implicados en el cambio.
Una peticin de cambio para un sistema de software simple puede ser tan slo un correo electr
nico que solicita una nueva caracterstica. Luego se aprueba o rechaza el cambio, dependiendo
del impacto previsto del cambio sobre el sistema general.
www.FreeLibros.org
374 C apitulo 10 Administracin d e la conf iguracin del software
ft>r ltimo, la tercera funcin de la administracin de la configuracin es registrar suficiente
informacin de estado sobre cada versin de cada artculo de configuracin y sus dependencias.
Viendo el libro de mantenimiento de un A320 y el nmero de versin de sus subsistemas, un inge
niero de mantenimiento puede decir cules subsistemas necesitan reemplazarse o mejorarse. Viendo
la versin ms reciente de un manejador de dispositivo de puerto serial, sus mejoras y los cambios
desde la ltima versin, podemos determinar si debemos mejorar hacia un nuevo manejador o no.
La administracin de la configuracin del software se ha tratado en forma tradicional como
un tema de mantenimiento. Sin embargo, se ha hecho difusa la distincin entre desarrollo y man
tenimiento y, con frecuencia, se introduce tempranamente la administracin de la configuracin
en el proceso. En este captulo nos enfocamos sobre todo en las primeras fases de la adminis
tracin de la configuracin y tratamos su uso durante el mantenimiento en forma breve. Pero
primero definimos de manera ms formal el concepto de administracin de la configuracin.
10.2 Un panorama de la administracin de la configuracin
La a d m i n i s t r a c i n d e l a c o n f i g u r a c i n d e l s o f t w a r e (a la que mencionaremos de aqu en
adelante simplemente como administracin de la configuracin) es la disciplina de administrar y
controlar los cambios en la evolucin de los sistemas de software [IEEE Std. 1042-1987]. Los
sistemas de administracin de la configuracin automatizan la identificacin de versiones, su
almacenamiento y recuperacin, y soportan la contabilizacin del estado. La administracin de
la configuracin incluye las siguientes actividades:
I d e n t if i c a c i n de i os a r t c u l o s de c o n f i g u r a c i n . Se identifican y etiquetan los compo
nentes del sistema y sus productos de trabajo y versiones en forma nica. Los desarrolla
dores identifican los artculos de configuracin despus del Acuerdo del proyecto (seccin
11.4.5), una vez que se han acordado los principales productos a entregar y componentes
del sistema. Los desarrolladores crean versiones y artculos de configuracin adicionales
conforme evoluciona el sistema.
C o n t r o l de l c a m b i o . Se controlan los cambios al sistema y las versiones para los usuarios
para asegurar la consistencia con los objetivos del proyecto. El control del cambio puede
ser realizado por los desarrolladores, los gerentes o un comit de control, dependiendo del
nivel de calidad requerido y la tasa de cambios.
C o n t a b i l i z a c i n de l e s t a d o . Se registra el estado de los componentes individuales, pro
ductos de trabajo y peticiones de cambio. Esto permite a los desarrolladores distinguir con
ms facilidad entre versiones y dar seguimiento a los problemas relacionados con los cam
bios. Esto tambin permite que la gerencia d seguimiento al estado del proyecto.
Auditora. Las versiones seleccionadas para entrega se validan para asegurar la suficiencia,
consistencia y calidad del producto. El equipo de control de calidad realiza la auditora.
Adems, tambin se consideran muchas veces parte de la administracin de la configuracin las
siguientes actividades [Dart, 1991].
A d m in is t ra c i n de la c o ns t r uc ci n . La mayora de los sistemas de administracin de la
configuracin permiten la construccin automtica del sistema conforme los desarrolladores
crean nuevas versiones de los componentes. El sistema de administracin de la configu
racin tiene suficiente conocimiento del sistema para minimizar la cantidad de recom
pilacin. Tambin puede ser capaz de combinar diferentes versiones de los componentes
www.FreeLibros.org
C o n ce pt o s d e la administracin d e la configuracin 375
para construir diferentes variantes del sistema (por ejemplo, para diferentes sistemas opera
tivos y plataformas de hardware).
A d m i n i s t r a c i n de pr o c es o s . Adems del control del cambio, los proyectos pueden tener
polticas acerca de la creacin y documentacin de versiones. Una de estas polticas puede
ser que slo forme parte de una versin el cdigo sintcticamente correcto. Otra poltica
puede ser que las construcciones se intenten (y tengan xito) cada semana. Por ltimo, el
proceso de administracin de la configuracin incluye polticas para la notificacin a desa
rrolladores relevantes cuando se crean nuevas versiones o cuando falla una construccin.
Algunos sistemas de administracin de la configuracin permiten que los desarrolladores
automaticen tales flujos de trabajo.
Por tradicin se ha visto la administracin de la configuracin como una disciplina administra
tiva que ayuda a los gerentes de proyecto en las actividades de control del cambio, contabiliza-
cin del estado y auditora ([Bersoff et al., 1980] e [IEEE Std. 1042-1987]). Sin embargo, en
fechas ms recientes, tambin se ha visto la administracin de la configuracin como una disci
plina de apoyo al desarrollo, ayudando a los desarrolladores a manejar la complejidad asociada
con gran cantidad de cambios, componentes y variantes [Babich, 1986]. En este captulo nos
enfocamos con mayor detalle en esta ltima perspectiva y slo tratamos en forma breve las acti
vidades de control del cambio y contabilizacin del estado.
En nuestra opinin, la administracin de la configuracin se extiende por todo el ciclo de
vida del software. Comienza con la identificacin de los artculos de configuracin despus
de que se han definido los productos a entregar y los componentes principales del sistema. Con
tina a lo largo del desarrollo conforme los desarrolladores crean versiones de los productos de
trabajo durante el anlisis, diseo del sistema, diseo de objetos e implementacin. Junto con la
administracin de la fundamentacin (vea el captulo 8, Administracin de la fundamentacin),
la administracin de la configuracin es la principal herramienta de que disponen los desarro
lladores para manejar el cambio.
A continuacin nos centraremos con ms detalle en los conceptos de la administracin de
la configuracin.
10.3 C once ptos de la administracin de la configuracin
En esta seccin presentamos los conceptos principales de la administracin de la configuracin
(figura 10-1). Con tanta frecuencia como sea posible, usaremos la misma terminologa utilizada en
los lincamientos de la IEEE sobre la administracin de la configuracin [IEEE Std. 1042-1987]:
Un a r t c u l o de c o n f i g u r a c i n (llamado ArC para abreviar) es un producto de trabajo o un
fragmento de software que se trata como una sola entidad para efectos de la adminis
tracin de la configuracin. Un conjunto de artculos de configuracin se define como un
a g r e g a d o de a d m i n i s t r a c i n de l a c o n f i g u r a c i n (llamado agregado AC para abreviar).
El software del vuelo por programa alambrado del A320 es un artculo de configuracin. El
A320 es un agregado AC. El manejador de dispositivo de puerto serial es un artculo de
configuracin. El sistema operativo Linux es un agregado AC.
Una p e t i c i n de c a m b i o es un reporte formal, hecho por un usuario o un desarrollador,
que solicita una modificacin a un artculo de configuracin. Por ejemplo, la Propuesta de
cambio de ingeniera [MIL Std. 480], el formulario estndar de peticin de cambio del
www.FreeLibros.org
376 C apitulo 10 Administracin d e la conf iguracin del software
gobierno de Estados Unidos, es de siete pginas. Una peticin de cambio informal puede
ser un mensaje de correo electrnico en lnea.
Una v e r s i n identifica el estado de un artculo de configuracin o de una configuracin en
un momento bien definido. Para un agregado AC dado, a un conjunto de versiones consis
tente de sus artculos de configuracin se le define como una co nf i g ur a ci n. Puede verse
una configuracin como una versin de un agregado AC.
Una p r o m o c i n es una versin que se ha puesto a disposicin de los dems desarrolla
dores del proyecto. Un l a n z a m ie n t o es una versin que se ha puesto a disposicin de los
clientes o usuarios.
Un d e p s i t o es una biblioteca de lanzamientos. Un e s p a c i o de t r a b a j o es una biblioteca
de promociones.
Figura 10-1 Conceptos de la administracin de la configuracin (diagrama de clase UML).
10.3.1 Artculos de configuracin y agregados AC
Un a r t c u l o d e c o n f i g u r a c i n es un producto de trabajo, o un componente de un producto
de trabajo, que est bajo la administracin de la configuracin, y para estos efectos se le trata
como una sola entidad. Por ejemplo, el software de vuelo por programa alambrado del A320 es
un artculo de configuracin (vea la figura 10-2). Durante una mejora se reemplaza el software
completo. El software de vuelo por programa alambrado no puede dividirse en componentes
ms pequeos que puedan instalarse en forma independiente. Del mismo modo, el manejador de
dispositivo para un puerto serial en cualquier sistema operativo es un artculo de configuracin.
Este componente es tan simple que ya no puede dividirse en lo que concierne a la instalacin.
Un agregado AC es una composicin de artculos de configuracin. El 747 es un agregado
AC de seis millones de partes. El sistema operativo Linux1 es un agregado AC que incluye un
calendarizador de procesos, un administrador de memoria, muchos manejadores de dispositivo,
demonios de red, sistemas de archivo y muchos otros subsistemas.
1. Linux es un sistema operativo POSIX [POSIX, 1990] disponible en forma gratuita creado por Linus Torwalds. Para
mayor informacin, vea http://www.linux.org/ .
www.FreeLibros.org
C o n ce pt o s d e la administracin d e la configuracin 377
Figura 10-2 Un ejemplo de agregados AC y artculos de configuracin (diagrama de objetos UML).
10.3.2 Versiones y configuraciones
Una ve rs i n identifica el estado de un artculo de configuracin en un momento del tiempo
bien definido. Las versiones sucesivas de un producto de trabajo difieren por uno o ms cambios,
como la correccin de un defecto, la adicin de nueva funcionalidad o la eliminacin de funcio
nalidad innecesaria u obsoleta. Una c o n f i g u r a c i n identifica el estado de un agregado AC.
Una l n e a b a s e es una versin de un artculo de configuracin que ha sido revisado y
acordado de manera formal por la gerencia o el cliente y que slo puede cambiarse mediante una
peticin de cambio. Por ejemplo, cada aeronave debe pasar por un proceso de certificacin rigu
roso de una agencia gubernamental (por ejemplo, la FAA en Estados Unidos o la JAA en la
Unin Europea) antes de que pueda operarla una aerolnea. Cualquier cambio a la aeronave
despus de la certificacin requiere un proceso de cambio formal y volver a pasar el proceso de
certificacin. Esto asegura que los cambios sean consistentes con los objetivos del proyecto (por
ejemplo, seguridad y confiabilidad) y los reglamentos, y que se comuniquen a los desarrolla
dores y usuarios relevantes (por ejemplo, los pasajeros y el operador de la aerolnea).
A las versiones que se pretende que coexistan se les llama v a r ia n t es . Por ejemplo (figura
10-3), el A319, el A320 y el A321 son variantes de la misma aeronave bsica. La diferencia prin
cipal es su longitud; esto es, la cantidad de pasajeros y carga que pueden transportar. Sin embargo,
el A320-200 es una versin del A320 que reemplaza a la versin inicial. En otras palabras, una
aerolnea puede comprar el A319 y el A320-200, pero no puede comprar el A320-100, ms antiguo.
En el caso de un sistema de software, el sistema puede tener una variante Macintosh, una variante
Windows y una variante Linux, proporcionando cada una funcionalidad idntica. Un sistema
tambin puede tener una variante estndar y una profesional o de lujo que soporten diferentes
rangos de funcionalidad. Las variantes comparten gran cantidad de cdigo que implementa la
funcionalidad medular y las diferencias estn confinadas a una pequea cantidad de subsistemas
de nivel ms bajo.
www.FreeLibros.org
378 C apitulo 10 Administracin d e la conf iguracin del software
A320;Linebase
<jar i v Ad o 4g
Primer
lanzamiento
A32 0-200:Revisin
revi s ^do. por
\fersin mejorada
que incluye alitas
:
t e r i y a d o_.de
A319: Linebase A321: Linebase
variante de 124 asientos