Ingenieria de SOFT Un Enfoque Practico P PDF
Ingenieria de SOFT Un Enfoque Practico P PDF
Ingenieria de SOFT Un Enfoque Practico P PDF
XXIII
PREFACIO, XXV
PROLOGO A LA CUARTA EDICION EN ESPAROL, XXIX
PROLOGO A LA QUINTA EDICION EN ESPAROL, XXXIII
UTILIZACION DEL LIBRO, XXXVII
CAPITULO 1: EL PRODUCTO, 3
1.1. LA EVOLUCION DEL SOFTWARE4
1.2. EL SOFTWARE, 5
I .2.1. CARACTER~STICASDEL SOFTWARE, 5
1.2.2. APLICACIONES DEL SOFTWARE. 6
1.3. SOFTWARE: ;UNA CRISIS EN EL HORIZONTE?, 8
1.4. MITOS DEL SOFTWARE, 8
RESUMEN, 10
REFERENCIAS, 10
PROBLEMAS Y PUNTOS A CONSIDERAR, 11
OTRAS LECTURAS Y FUENTES DE INFORMACION, 11
CAPITULO 2: EL PROCESO, 13
2.1. INGENIERIA DEL SOFTWARE: UNA TECNOLOGIA ESTRATIFICADA,14
2. I .I. PROCESO, METODOS Y HERRAMIENTAS, 14
2.1.2. UNA V I S ~ ~GENERAL
N DE LA INGENIER~ADEL SOlTWARE, 14
2.2. EL PROCESO DEL SOFTWARE, 16
2.3. MODELOS DE PROCESO DEL SOFTWARE, 19
2.4. EL MODEL0 LINEAL SECUENCIAL, 20
2.5. EL MODELO DE CONSTRUCCION DE PROTOTIPOS, 21
2.6. EL MODEL0 DRA, 22
2.7. MODELOS EVOLUTIVOS DE PROCESO DEL SOFTWARE, 23
2.7.1. EL MODEL0 INCREMENTAL, 23
2.7.2. EL MODEL0 ESPIRAL, 24
2.7.3. EL MODEL0 ESPIRAL WINWIN (Victoria & Victoria), 26
2.7.4. EL MODEL0 DE DESARROLLO CONCURRENTE, 27
2.8. DESARROLLO BASADO EN COMPONENTES, 28
2.9. EL MODEL0 DE METODOS FORMALES, 29
2.10. TECNICAS DE CUARTA GENERACION,29
2.11. TECNOLOGIAS DE PROCESO, 30
2.12. PRODUCTO Y PROCESO, 31
RESUMEN, 31
REFERENCIAS, 32
PROBLEMAS Y PUNTOS A CONSIDERAR, 32
OTRAS LECTURAS Y FUENTES DE INFORMACI~N,33
j
P RTE
CAPITULO 3: CONCEPTOS SOBRE GESTIONDE PROYECTOS, 37
3.1. EL ESPECTRO DE LA GESTION, 38
3.1.1. PERSONAL, 38
3.1.2. PRODUCTO, 38
3.1.3. PROCESO, 38
3.1.4. PROYECTO, 39
3.2. PERSONAL, 39
3.2.1. LOS PARTICIPANTES. 39
3.2.2. LOS JEFES DE EQUIPO, 40
3.2.3. EL EQUIP0 DE SOFTWARE, 40
3.2.4. ASPECTOS SOBRE LA COORDINACION Y LA COMUNICACION, 43
3.3. PRODUCTO, 44
3.3.1. AMBITO DEL SOFTWARE, 44
3.3.2. DESCOMPOS~C~ON DEL PROBLEMA, 45
3.4. PROCESO, 45
3.4.1. MADURAC~ONDEL PRODUCTO Y DEL PROCESO, 46
3.4.2. DESCOMPOSICION DEL PROCESO, 47
3.5. PROYECTO, 48
3.6. EL PRINCIPIO W5HH, 49
3.7. PRACTICAS CRITICAS, 49
RESUMEN, 50
REFERENCIAS, 50
PROBLEMAS Y PUNTOS A CONSIDERAR, 51
OTRAS LECTURAS Y FUENTES DE INFORMACION, 51
XVII
CONTENIDO
XVIII
CONTENIDO
XXIII
C
UANDO un software de computadora se desarrolla con Cxito +uando satisface las
necesidades de las personas que lo utilizan; cuando funciona impecablemente durante
mucho tiempo; cuando es fhcil de modificar o incluso es rnhs fhcil de utilizar- puede
cambiar todas las cosas y de hecho las cambia para mejor. Ahora bien, cuando un software de
computadora falla d u a n d o 10s usuarios no se quedan satisfechos, cuando es propenso a erro-
res; cuando es dificil de cambiar e incluso rnhs dificil de utilizar- pueden ocurrir y de hecho
ocurren verdaderos desastres. Todos queremos desarrollar un software que haga bien las cosas,
evitando que esas cosas malas merodeen por las sombras de 10s esfuerzos fracasados. Para tener
Cxito a1 disefiar y construir un software necesitaremos disciplina. Es decir, necesitaremos un
enfoque de ingenieria.
Durante 10s 20 afios que han transcurrido desde que se escribi6 la primera edici6n de este
libro, la ingenieria del software ha pasado de ser una idea oscura y practicada por un grupo muy
pequefio de fanhticos a ser una disciplina legitima de ingenieria. Hoy en dia, esta disciplina esth
reconocida como un tema valioso y digno de ser investigado, de recibir un estudio concienzudo
y un debate acalorado. A travCs de la industria, el titulo preferido para denominar a1 ccprogra-
mador>>ha sido reemplazado por el de ccingeniero de software>>.Los modelos de proceso de
software, 10s mCtodos de ingenieria del software y las herramientas del software se han adap-
tad0 con Cxito en la enorme gama de aplicaciones de la industria.
Aunque gestores y profesionales reconocen igualmente la necesidad de un enfoque rnhs dis-
ciplinado de software, continlian debatiendo sobre la manera en que se va a aplicar esta disci-
plina. Muchos individuos y compafiias todavia desarrollan software de manera algo peligrosa,
incluso cuando construyen sistemas para dar servicio a las tecnologias mis avanzadas de hoy
en dia. Muchos profesionales y estudiantes no conocen 10s mCtodos nuevos y, como resultado,
la calidad del software que se produce sufrirh y experimentarh malas consecuencias. Ademhs,
se puede decir que seguir6 existiendo debate y controversia a cerca de la naturaleza del enfo-
que de la ingenieria del software. El estado de la ingenieria es un estudio con contrastes. Las
actitudes han cambiado y se ha progresado, per0 todavia queda mucho por hacer antes de que
la disciplina alcance una madurez total.
La quinta edicidn de la Ingenieria del Software: Un Enfoque Prcictico pretende semir de guia
para conseguir una disciplina de ingenieria madura. Esta edicibn, a1 igual que las cuatro ante-
riores, pretende servir a estudiantes y profesionales, y mantiene su encanto como guia para el
profesional de industria y como una introduccidn completa a1 tema de la ingenieria para alum-
nos de diplomatura, o para alumnos en primer afio de segundo ciclo. El formato y estilo de la
quinta edici6n ha experimentado cambios significativos, con una presentacidn rnhs agradable
y cdmoda para el lector, y con un contenido de acceso rnhs fhcil.
La quinta edicidn se puede considerar rnhs que una simple actualizacidn. La revisi6n de este
libro se ha realizado para adaptarse a1 enorme crecimiento dentro de este campo y para enfati-
zar las nuevas e importantes pricticas de la ingenieria del software. Ademhs, se ha desarrollado
un sitio Web con todo lo necesario y esencial para complementar el contenido del libro. Junto
con la quinta edici6n de Ingenieria del Software: Un Enfoque Prcictico, la Web proporciona
una gama enorrne de recursos de ingenieria del software de la que se beneficiarhn instructores,
estudiantes y profesionales de industria.
La estructura de la quinta edici6n se ha establecido en cinco partes y la intencidn ha sido la
de realizar una divisidn por temas, y ayudar asi a instructores que quizis no tengan tiempo de
abarcar todo el libro en un solo trimestre. La Parte Primera, El producto y el proceso, es una
introducci6n a1 entomo de la ingenieria del software. La intencidn de esta parte es introducir el
tema principal y, lo que es rnhs importante, presentar 10s conceptos necesarios para 10s capitu-
10s siguientes. La Parte Segunda, Gestibn de proyectos de software, presenta 10s temas rele-
vantes para planificar, gestionar y controlar un proyecto de desarrollo de ingenieria. La Parte
Tercera, Me'todos convencionales para la ingenieria del software, presenta 10s mCtodos clisi-
cos de anilisis, disefio y pruebas considerados como la escuela ccconvencional>>de la ingenie-
ria del software. La Parte Cuarta, Ingenieria del software orientada a objetos, presenta 10s
xxv
PREFACIO
metodos orientados a objetos a lo largo de todo el proceso de ingenieria del software, entre 10s
que se incluyen anhlisis, diseiio y pruebas. La Parte Quinta, Temas avanzados erz ingenieria del
software, introduce 10s capitulos especializados en mktodos formales, en ingenieria del soft-
ware de sala limpia, ingenieria del software basada en componentes, ingenieria del software
cliente/servidor, ingenieria de Web, reingenieria y herramientas CASE.
La estructura de la quinta edici6n en cinco partes permite que el instructor ccagrupen 10s temas
en funci6n del tiempo disponible y de las necesidades del estudiante. Un trimestre completo se
puede organizar en tom0 a una de las cinco partes. Por ejemplo, un cccurso de diseiion podria
centrarse solo en la Parte Tercera o Cuarta; un cccurso de mCtodosn podria presentar 10s capi-
tulos seleccionados de las Partes Tercera, Cuarta y Quinta. Un cccurso de gestiom haria hinca-
pi6 en las Partes Primera y Segunda. Con la organization de esta quinta edicibn, he intentado
proporcionar diferentes opciones para que el instructor pueda utilizarlo en sus clases.
El trabajo que se ha desarrollado en las cinco ediciones de lrzgenieria del Sofmare: Un Enfo-
que Prcictico es el proyecto tCcnico de toda una vida. Los momentos de intenupci6n 10s he dedi-
cad0 a recoger y organizar informaci6n de diferentes fuentes tCcnicas. Por esta raz6n, dedicarC
mis agradecimientos a muchos autores de libros, trabajos y articulos, asi como a la nueva gene-
raci6n de colaboradores en medios electr6nicos (grupos de noticias, boletines informativos elec-
tr6nicos y World Wide Web), quienes durante 20 aiios me han ido facilitando otras visiones,
ideas, y comentarios. En cada uno de 10s capitulos aparecen referencias a todos ellos. Todos
esthn acreditados en cuanto a su contribuci6n en la rhpida evoluci6n de este campo. TambiCn
quiero dedicar mis agradecimientos a 10s revisores de esta quinta edici6n. Sus comentarios y
criticas son de un valor incalculable. Y por 6ltimo dedicar un agradecimiento y reconocimiento
especiales a Bruce Maxim de la Universidad de Michigan -DearBom, quien me ayud6 a desa-
rrollar el sitio Web que acompaiia este libro, y como persona responsable de una gran parte del
diseiio y contenido pedad6gico-.
El contenido de la quinta edici6n de Ingenieria del Sofhyare: Urz Enfoque Prcictico ha tomado
forma gracias a profesionales de industria, profesores de universidad y estudiantes que ya habian
utilizado las ediciones anteriores, y que han dedicado mucho tiempo en mandarme sus suge-
rencias, criticas e ideas. Muchas gracias tambien a todos vosotros. Ademhs de mis agradeci-
mientos personales a muchos clientes de industria de todo el mundo, quienes ciertamente me
enseiian mucho mhs de lo que yo mismo puedo enseiiarles.
A medida que he ido realizando todas las ediciones del libro, tambiCn han ido creciendo y
madurando mis hijos Mathew y Michael. Su propia madurez, carhcter y Cxito en la vida han
sido mi inspiraci6n. Nada me ha llenado con mhs orgullo. Y, finalmente, a Bhbara, mi cariiio
y agradecimiento por animarme a elaborar esta quinta edici6n.
Roger S. Pressman
L libro de Roger Pressman sobre Ingenieria del software es verdaderamente excelente:
Siempre he admirado la profundidad del contenido y la habilidad del autor para descri-
bir datos dificiles de forma muy clara. De manera que tuve el honor de que McGraw-
Hill me pidiera elaborar la Adaptaci6n Europea de esta quinta edici6n. Esta es la tercera
adaptacibn, y su contenido es un acopio de la quinta edici6n americana y el material que yo
mismo he escrito para ofrecer una dimensi6n europea.
Las areas del libro que contienen ese material extra son las siguientes:
Existe una gran cantidad de material sobre mCtodos formales de desarrollo del software.
Estas tCcnicas fueron pioneras en el Reino Unido y Alemania, y han llegado a formar parte
de 10s juegos de herramientas criticos para 10s ingenieros de software en el desarrollo de sis-
temas altamente integrados y criticos para la seguridad.
He incluido una secci6n sobre patrones de disefio. Estos son 10s que tienen lugar general-
mente en miniarquitecturas que se dan una y otra vez en sistemas orientados a objetos, y que
representan plantillas de disefio que se reutilizarh una y otra vez. He viajado por toda Europa,
y me he encontrado constantemente compaiiias cuyo trabajo depende realmente de esta tec-
nologia.
He aportado material sobre mCtricas y en particular la utilizaci6n de GQM como mCtrica de
mCtodo de desarrollo. A medida que la ingenieria del software se va integrando poco a poco
dentro de una disciplina de ingenieria, esta tecnologia se va convirtiendo en uno de sus fun-
damentos. La mCtrica ha sido uno de 10s puntos fuertes en Europa de manera que espero que
toda la dedicaci6n que he puesto en este tema lo refleje.
He incluido tambiCn material sobre el Lenguaje de Modelado Unificado (UML) el cual refleja
el gran increment0 de utilizaci6n de este conjunto de notaciones en Europa Occidental. Ade-
mas, sospecho que van a ser de hecho las notaciones de desarrollo de software estandar
durante 10s pr6ximos tres o cuatro afios.
He dado mayor Cnfasis a1 desarrollo de sistemas distribuidos mediante el lenguaje de pro-
gramaci6n Java para ilustrar la implicaci6n de algunos de 10s c6digos. Ahora que Internet y
el comercio electr6nico estan en pleno auge en Europa, las compafiias cada vez se vuelcan
m8s en las tCcnicas de ingenieria del software a1 desarrollar aplicaciones distribuidas. Y esto
tambiCn queda reflejado en el libro.
He incluido tambiCn material sobre mCtodos de seguridad e ingenieria. Con la utilizaci6n de
Internet (una red abierta) todos 10s ingenieros del software tendrh que saber muchas mas
tCcnicas tales como firmas digitales y criptografia.
Hacia el final del libro he hecho especial hincapiC en la utilizaci6n de aplicaciones de comer-
cio electr6nico para mostrar de esta manera la tecnologia distribuida.
Existen dos part& que hacen referencia al libro: un sitio Web americano muy importante, desa-
rrollado por el Dr. Pressman; y un sitio de entrada, cuya direcci6n se proporciona a lo largo de todo
el libro a1 final de cada capitulo. Este sitio contiene el material relevante para la edici6n europea y
10s enlaces con el sitio americano. Arnbos sitios Web en combinaci6n contienen sub-webs con recur-
sos para Estudiantes, para Profesores y para Profesionales.
En 10s Recursos para el estudiante se incluye una guia de estudio que resume 10s puntos clave
del libro, una serie de autopruebas que permiten comprobar la comprensi6n del material, cientos
de enlaces a 10s recursos de ingenieria del software, un caso practice, materiales complementaries
y un tabl6n de mensajes que permite comunicarse con otros lectores.
En la parte Recursos para el profesor se incluye una guia para el instructor, un conjunto de
presentaciones en Powerpoint basadas en este libro, un conjunto de preguntas que se pueden
utilizar para practicar mediante deberes y examenes, un conjunto de herramientas muy peque-
fias (herramientas sencillas de ingenieria del software adecuadas para su utilization en clase),
una herramienta de Web que permite crear un sitio Web especifico para un curso, y un tabl6n
de mensajes que hace posible la comunicaci6n con otros instructores.
En 10s Recursos para profesionales se incluye documentaci6n para 10s procesos de inge-
nieria del software, listas de comprobaci6n para actividades tales como revisiones, enlaces a
proveedores de herramientas profesionales, cientos de enlaces a recursos de ingenieria del soft-
ware, informaci6n sobre 10s paquetes de video de Pressman, y comentarios y ensayos indus-
triales acerca de varios temas de la ingenieria del software.
Ingenieria del software es un libro excelente, y espero que 10s aportes que he incluido para
el lector europeo hagan de este libro una lectura obligada.
Darrel Ince
E L ESTADO DEL ARTE DE LA INGENIERIA DEL SOFTWARE
La Ingenieria dell Software ' es una disciplina o Area de la Informitica o Ciencias de la Com-
putacibn, que ofrece mCtodos y tCcnicas para desarrollar y mantener software de calidad que
resuelven problemas de todo tipo. Hoy dia es cada vez mis frecuente la consideraci6n de la
Ingenieria den Software como una nueva Area de la ingenieria, y el ingeniero de/l software
comienza a ser una profesi6n implantada en el mundo laboral intemacional, con derechos, debe-
res y responsabilidades que cumplir, junto a una, ya, reconocida consideraci6n social en el
mundo empresarial y, por suerte, para esas personas con brillante futuro.
La Ingenieria de/l Software trata con Areas muy diversas de la informitica y de las ciencias
de la computaci6n, tales como construcci6n de compiladores, sistemas operativos o desarro-
110s en IntranetIInternet, abordando todas las fases del ciclo de vida del desarrollo de cualquier
tipo de sistemas de informaci6n y aplicables a una infinidad de ireas tales corno: negocios,
investigaci6n cientifica, medicina, producci6n, logistica, banca, control de trifico, meteorolo-
gia, el mundo del derecho, la red de redes Internet, redes Intranet y Extranet, etc.
Definicio'n 1
Definicio'n 2
Dejnicion 3
Ingenieria del Software trata del establecimiento de 10s principios y mCtodos de la ingenie-
ria a fin de obtener software de mod0 rentable que seafiable y trabaje en mciquinas reales [Bauer,
197216 .
Dejnicion 4
BAUER, F. L.: ((SoftwareEngineering., Information Processing, 71, North Holland Publishing Co., Amsterdam, 1972
IEEE: Standards Collection:Somare Engineering, IEEE Standard 610.12-1990,IEEE, 1993.
URL de ACM, http://www.acm.org.
PR~LOGO
A LA CUARTA E D I C I ~ NEN ESPANOL
software en inglCs y, por supuesto, en espafiol. Asi, destacamos el estudio y profundidad que
se hace de temas tan candentes y de actualidad en el mundo de la ingenieria del software tales
como: Me'todosformales, reutilizacibn de software, reingenieria,me'todos de software ClientelSer-
vidor, CASE, andisisldiseiiolpruebas y me'tricas orientados a objetos, etc., junto con un epi-
logo donde muestra el estado actual y futuro de la Ingenieria del Software. Con relacion a la
tercera edicion se aprecia una consolidaci6n de tratamientos y una unificaci6n de bloques de
conocimiento que consiguen mejorar el aprendizaje del lector.
Una de las aportaciones mas relevantes que aporta esta nueva edici6n es la excelente biblio- '
grafia y referencias bibliograficas que se adjuntan en cada capitulo del libro, junto a una nove-
dad que poco a poco comienza a incorporarse en las buenas obras cientificas y que aqui alcanza
un excelente nivel: direcciones electrdnicas (URLs) de sitios Web de Internet notables, donde
se pueden ampliar conocimientos, fuentes bibliograficas, consultorias, empresas, organismos
internacionales, etc., especializados en Ingenieria de Software.
En lo relativo a la segunda pregunta antes enunciada, su respuesta implica el uso de libros
de texto y manuales que ayuden a1 estudiante a complementar las lecciones impartidas por el
profesor, asi como preparar sus trabajos, pricticas, eximenes, etc. Un libro para ser conside-
rado de texto o referencia de una determinada asignatura requiere que su contenido contenga
todos o la mayoria de 10s descriptores o t6picos considerados en el programa de la asigna-
tura. Veamos por que esta obra es id6nea como libro de texto para asignaturas del curriculum
universitario de Zngenieria de/l Software.
1. Cursos introductorios de Ingenieria del Software. Estudiantes de primer ciclo (tres aiios)
y segundo ciclo (cinco afios), o en carreras de cuatro aiios (corno suele ser el caso de las
universidades hispanoamericanas y alguna espafiola), sin experiencia previa en Ingenie-
ria del Software, per0 con formacion de dos o tres cursos universitarios (cuatro o cinco
semestres) a1 menos.
2. Cursos introductorios y de nivel medio sobre temas especificos de Ingenieria del Soft-
ware tales como analisis de requisitos y especificaciones, gestion de proyectos de soft-
ware, mCtodos convencionales de Ingenieria del Software, etc.
3. Cursos avanzados en temas de Ingenieria del Software tales corno: analisis y disefio orien-
tados a objetos, mCtricas, ingenieria inversa, Cliente/Servidor, Reutilizacion de software,
etcktera.
Este libro explica todos 10s temas incluidos en la asignatura o materia troncal Ingenieria de2
Software por el Consejo de Universidades de Espaiia, asi como las unidades SE2 a SE5 (la uni-
dad SE1 se refiere a conceptos de tipo general que suelen incluirse en otras asignaturas bisi-
cas) del cum'culum de la ACM/IEEE de 1991. Por nuestro conocimiento personal (conferencias,
cursillos, estancias ...) de muchas universidades hispanoarnericanas, nos consta que 10s planes
de estudio de estas universidades incluyen tambiCn asignaturas de tipo obligatorio de Ingenie-
ria del Software que siguen prkticamente las recomendaciones de ACM/IEEE y son muy simi-
lares a 10s programas que se siguen tambien en EspaAa.
La obra actual incluye gran cantidad de siglas y acr6nimos en inglCs, la mayoria de las cuales,
exceptuando las ya acreditadas en inglCs como BPR ..., se han traducido a1 espaiiol. Por su espe-
cial importancia y la gran cantidad de ellas incluidas en el libro, el equipo de traduccion decidi-
mos recopilar todas las siglas en ingles y sus traducciones a1 espaiiol; a continuaci6n se ha construido
dos tablas ordenadas alfabkticamente en inglCs y en espaiiol, con el objetivo principal de que el
lector pueda localizar facilmente cualquiera de las siglas que aparecen en el texto, y en su caso,
la traduccion a1 espaiiol. Estas tablas se presentaron a la editora de la obra que tras ver el servicio
que proporcionaba a1 lector, acepto incluirlas como ApCndice. De este modo, el lector podra com-
probar en cualquier momento entradas de siglas tanto en espaiiol como en inglCs.
La traduccion de esta obra ha sido un esfuerzo comun que hemos realizado profesores de dife-
rentes universidades espafiolas e hispanoamericanas -profesores de Ingenieria del Software
que hemos utilizado, en la mayoria de 10s casos, las ediciones anteriores de esta obra como libro
de referencia en nuestras clases y continuaremos utilizfindolo. Por esta circunstancia, hemos
P R 6 L O G O A LA CUARTA EDICI6N EN ESPAROL
podido apreciar que esta cuarta edicion ha mejorado de mod0 muy notable a las ediciones ante-
riores y tenemos el convencimiento de que 10s principios y conceptos considerados en ella,
seguiran teniendo una influencia considerable en numerosos estudiantes de ingenieria, licen-
ciatura informatica o sistemas computacionales de habla espafiola, como nos consta que siguen
influyendo en el mundo de habla inglesa. Estamos seguros de que seran muchos 10s estudian-
tes que seguirhn formandose en Ingenieria del Software con este libro como referencia funda-
mental.
Esta cuarta edici6n llena numerosas lagunas en la literatura de habla espafiola, ya que actua-
liza 10s contenidos tradicionales de la Ingenieria del Software y 10s extiende a 10s temas avan-
zados modemos que ya hemos considerado. El excelente trabajo de Roger S. Pressman permitid
seguir formando numerosos y buenos profesionales de Ingenieria del Software para que esta
industria pueda seguir desarrollandose.
E era del conocimiento en que vivimos no s610 esta cambiando la sociedad en si misma,
sin0 que 10s nuevos modelos de negocios requieren la reformulaci6n de nuevos con-
ceptos. Conocimiento, activos intangibles, Web, etc., son algunos de 10s tkrminos mas utiliza-
dos en cualquier ambiente o negociaci6n. Esta era del conocimiento requiere de nuevas tendencias
apoyadas precisamente en el conocimiento. La ingenieria del software no es una excepcion, y
por ello se requiere no s610 una actualizaci6n de conceptos, sino tambien una comprensi6n y
una formulaci6n del nuevo conocimiento existente en torno a las nuevas innovaciones y teo-
rias de dicha disciplina.
En cada edicion de su clasica obra, Roger Pressman nos tiene acostumbrados a la sorpresa
y a la admiracion por la clara y excelente exposicion de 10s temas tratados. Esta vez tampoco
ha sido una excepcion, muy al contrario, Pressman da la sensacion de haber conseguido {{la
cuadratura del circulo>>o mejor aun, ha encontrado la piedra filosofal para formar y educar a
10s actuales y -sobre tod- futuros ingenieros de software del futuro (o a 10s ingenieros infor-
mliticos e ingenieros de sistemas y licenciados en informlitica que se forman en esta disciplina).
En esla quinta edicion, Pressman proporciona al lector una ingente cantidad de conocimiento
relativo a ingenieria del software que facilitara considerablemente su formacion con todo el
rigor profesional y cientifico que requiere la nueva era del conocimiento que viviremos en esta
decada.
EL NUEVO CONTENIDO
Una de las grandes y atractivas novedades de esta quinta edicion es su nuevo formato y estilo.
El SEPA 512, como se le conoce en la versi6n en ingles, ha mejorado el libro y lo ha hecho mis
legible y atractivo a1 lector. Mediante iconos y una lista normalizada de seis cuestiones clave,
Pressman va guiando a1 lector sobre 10s temas mas importantes de cada capitulo a la vez que
su lectura le introduce paulatina e inteligentemente en las ideas y conceptos mas importantes.
Esta quinta edicion contiene todos 10s temas importantes de la cuarta edicion e introduce una
gran cantidad de temas relativos a las nuevas tendencias, herramientas y metodologias que plan-
tea la ingenieria de software actual y futura, asi como la naciente nueva ingenieria Web. Un
estudio detenido del contenido nos conduce a 10s cambios mas sobresalientes realizados en esta
quinta edicion. que son, entre otros, 10s siguientes:
Cinco nuevos capitulos (Capitulo 14, Disefio arquitectonico; Capitulo 15, Disefio de la
interfaz de usuario, proporcionando reglas de disefio, procesos de modelado de interfaces,
disefio de tareas y metodos de evaluaci6n; Capitulo 16, Disefio a nivel de componentes;
Capitulo 27, examina 10s procesos y la tecnologia de la ingenieria de software basada en
componentes, y, Capitulo 29, que presenta 10s nuevos conceptos de Ingenieria Web (proce-
sos WebE, analisis y formulaci6n de aplicaciones Web, es decir arquitectura, navegaci6n y
disefio de interfaces, pruebas y aplicaciones Web y gesti6n de proyectos de ingenieria Web).
Gran cantidad de actualizaciones y revisiones de 10s 32 capitulos de su contenido total.
Los cambios clave son numerosos, y 10s mas sobresalientes son:
-Modelos de procesos evolutivos (WinWin) y de ingenieria basada en componentes.
-Nuevas secciones sobre control estadistico de la calidad.
-Modelo de estimaci6n de COCOMO 11.
-Tecnicas a prueba de errores para gestidn de calidad de software (SQA).
-1ngenieria de requisitos.
-El lenguaje unificado de modelado, UML (Unified Modeling Language).
-Nuevas reglas y teoria de calidad de software que siguen la normativa I S 0 9000.
P R ~ L O G OA LA QUINTA E D I C I 6 N EN ESPANOL
Si la edicion en papel que tiene el lector en sus manos ya es de por si excelente, el sitio Web
del libro no le queda a la zaga (www.pressman5.com). Este sitio es una de las mejores herra-
mientas de las que pueden disponer estudiantes, profesores y maestros, y profesionales del
mundo del software. Destaquemos algunas.
Recursos de estudiantes
Guia de estudios.
Autotest.
Recursos basados en la Web.
Estudio de casos.
Videos.
Contenidos suplementarios.
Foros para intercambios de mensajes entre lectores.
Recursos profesionales
Plantillas de productos de documentos y de trabajos.
Listas de pruebas de ingenieria de software.
Herramientas de ingenieria de software.
Herramientas CASE.
Recursos de ingenieria de software.
Modelos de procesos adaptables.
Curriculum de videos de calidad para la industria.
Comentarios de la industria.
Foros profesionales.
Una de las caracteristicas mas sobresalientes de esta obra es que recoge con gran profusion la
ingente cantidad de siglas que hoy dia se utilizan en la industria del software junto a otras muchas
mas acufiadas por el propio autor.
El equipo de profesores que ha traducido y adaptado la versi6n en inglCs de comun acuerdo
con la editora acord6 realizar un apkndice que incluyera todas las siglas incluidas en el libro y
las traducciones correspondientes en espafiol, y viceversa. Este apCndice busca, a1 igual que ya
se hiciera en la segunda edici6n en espafiol, facilitar a1 lector la lectura y seguimiento del mod0
m8s facil posible y que le permita hacer la correspondencia entre ambos idiomas cuado lo nece-
site. Por ello, este apCndice contiene un diccionario inglCs-espafiol y otro espafiol-inglCs de
siglas. El mCtodo que se ha seguido durante la traducci6n ha sido traducir pricticamente todas
las siglas, y s610 se han realizado algunas excepciones, como SQA (Software Quality Assure-
ment) por su uso frecuente en la jerga inform8tica, aunque en este caso hemos utilizado ambos
tCrminos (en inglCs, SQA y en espafiol, GCS, Gesti6n de Calidad del Software). En este caso,
estas siglas en espafiol coinciden con Gestion de Configuraci6n del Software (GCS), por lo que
a veces estas siglas se han traducido por GCVS (Gesti6n de Configuraci6n de Versiones de Soft-
P R 6 L O G O A LA QUINTA E D I C I ~EN
N ESPANOL
EL EQUIP0 TRADUCTOR
EL FUTURO ANUNCIADO
Esta quinta edicion ha sido actualizada sustancialmente con nuevos materiales que reflejan el
estado del arte de la ingenieria del software. El material obsoleto se ha eliminado de esta edi-
ci6n para crear un texto facil de leer y entender, y totalmente actualizado. Sin embargo, y con
ser importante todo su vasto y excelente contenido, queremos destacar que esta nueva edicion
nos brinda y abre el camino a1 futuro que seiiala la moderna ingenieria de software basada en
objetos y componentes, asi como a la ingenieria Web, consemando el rigor y la rnadurez de las
teorias ya clasicas de la ingenieria del software.
Sin lugar a dudas, Pressman ha conseguido una excelente obra, y en una prueba clara de pro-
fesionalidad y excelencia ha logrado superar sus cuatro ediciones anteriores ya de por si exce-
lentes.
L
AS alarmas comenzaron mris de una dCcada antes del acontecimiento. Con menos de
cara<teristicas dos aiios a la fecha seiialacla, 10s medios de comunicaci6n recogieron la historia. Los
del software.. ....... 5 oficiales del gobierno expresaron su preocupaci6n,los directores cle la industria y de 10s
categorias negocios cornprometieron grandes canticlades de dinero, y por hltimo, las advertencias horri-
de aplicadon ......... 7 b l e ~de catristrofe llegaron a la conciencia del pliblico. El software, al igual que el ahora famoso
curmas error Y2K, podria fallar, y como resultado, detener el mundo conio nosotros lo conocimos.
de fallos. ............6 Como vimos durante 10s hltimos meses del aiio 1999, sin cluerer, no puedo dejar de pen-
desgaste.. ..........
.5 sar en el prirrafo prof6tico contenido en la primera prigina de la cuarta edici6n cle este libro.
ensamblaie Decia:
de componentes ......6 El software de cornpu~adorase ha convcrtido en el cll~ncrnlcr/or.. Es la rnhquina que conduce a la toma
historia.. ............ 4 dc decisiones comel&les. Sirvc de base pim la investigation cien~ilicamoderna y dc resolucion de pro-
blernas de ingenieria. Es el factor clave que difercncia 10s productos y servicios modcmos. EstL inrnerso en
ingenieria sistenias dc todo tipo: dc lransportes, rnddicos. de telecomunicaciones, militares, procesos industriales, entre-
del software ......... 4 ~enimientos,protlnctos de oficina .... la liste es caxi interminable. El software cs ca\i ineludible en un mun-
mitos. ............... 8 do moderno. A ~neditlaque nos ndentrernos en cl siglo xxr, scri cl quc nos conduzca a nue\/os wanccs cn
reutilization.. ........6 todo, desdc la etlucaci6n elemenk~ln lo ingenieria genitica.
10s ideas
y 10s descubrirnientos
tecnolhgicos
son 10s conductores
del crecimiento etonbrnico.
The Wall Street Journal
I N G E N I E R f A DEL SOFTWARE. U N ENFOQUE PRACTICO
~ P oquC
r lleva tanto tiempo terminar 10s programas?
LPor quC son tan elevados 10s costes de desarrollo?
LPor quC no podemos encontrar todos 10s errores
antes de entregar el software a nuestros clientes?
d L
LPor quC nos resulta dificil constatar el progreso con-
Estodisticos globoles de software forme se desarrolla el software?
En 1970, menos del uno por ciento de las personas Los costes del software se encuentran en la ingenieria.
podria haber descrito inteligentemente lo que significa- Esto significa que 10s proyectos de software no se pueden
ba ccsoftware de computadora>>. Hoy, la mayoria de 10s gestionar como si fueran proyectos de fabricacion.
profesionales y muchas personas en general piensan en
su mayoria que comprenden el software. ~ P e r olo entien- 2. El software no se ccestropea)).
den realmente? La Figura 1.1 describe, para el hardware, la proporcion
de fallos como una funcion del tiempo. Esa relacion, deno-
minada frecuentemente cccurva de bafiera>>, indica que el
1.2.1. Caracteristicas del software hardware exhibe relativamente muchos fallos a1 princi-
Para poder comprender lo que es el software (y con- pio de su vida (estos fallos son atribuibles normalmente
secuentemente la ingenieria del software), es impor- a defectos del disefio o de la fabricaci6n); una vez corre-
tante examinar las caracteristicas del software que lo gidos 10s defectos, la tasa de fallos cae hasta un nivel esta-
diferencian de otras cosas que 10s hombres pueden cionario (bastante bajo, con un poco de optimismo) donde
construir. Cuando se construye hardware, el proceso permanece durante un cierto period0 de tiempo. Sin
creativo humano (anidisis, disefio, construccion, prue- embargo, conforme pasa el tiempo, el hardware empie-
ba) se traduce finalmente en una forma fisica. Si cons- za a desgastarse y la tasa de fallos se incrementa.
truimos una nueva computadora, nuestro boceto El software no es susceptible a 10s males del entor-
inicial, diagramas formales de disefio y prototipo de no que hacen que el hardware se estropee. Por tanto, en
prueba, evolucionan hacia un product0 fisico (chips, teoria, la curva de fallos para el software tendria la for-
tarjetas de circuitos impresos, fuentes de potencia, ma que muestra la Figura 1.2. Los defectos no detecta-
etc.). dos haran que falle el programa durante las primeras
El software es un elemento del sistema que es etapas de su vida. Sin embargo, una vez que se corri-
16gic0, en lugar de fisico. Por tanto el software tie- gen (suponiendo que no se introducen nuevos errores)
ne unas caracteristicas considerablemente distintas la curva se aplana, como se muestra. La curva ideali-
a las del hardware: zada es una gran simplificacion de 10s modelos reales
de fallos del software (vease miis informacion en el
Capitulo 8). Sin embargo la implicacion es clara, el soft-
ware no se estropea. iPero se deteriora!
Software basado en Web. Las piginas Web busca- Software de inteligenciaartificial. El software de inte-
das por un explorador son software que incorpora ins- ligencia artificial (IA) hace uso de algoritrnos no numkri-
trucciones ejecutables (por ejemplo, CGI, HTML, Perl, cos para resolver problemas complejos para 10s que no son
o Java), y datos (por ejemplo, hipertexto y una varie- adecuados el cdculo o el adisis directo. Los sistemasexper-
dad de formatos de audio y visuales). En esencia, la red tos, tarnbikn llamados sistemas basados en el conocimiento,
viene a ser una gran computadora que proporciona un reconocimiento de patrones (imiigenes y voz), redes neu-
recurso software casi ilimitado que puede ser accedido ronales artificiales, prueba de teoremas, y 10s juegos son
por cualquiera con un modem. representatives de las aplicaciones de esta categoria.
Muchos observadores de la industria (incluyendo este computadoras, no ha habido ningun ccpunto crucial>>, nin-
autor) han caracterizado 10s problemas asociados con el g h ccmomento decisive>>, solamente un lento cambio evo-
desarrollo del software como una cccrisis>.Mis de unos lutivo, puntualizado por cambios tecnologicos explosivos
cuantos libros (por ejemplo: [GLA97], [FL097], en las disciplinas relacionadas con el software.
[YOU98a]) han recogido el impact0 de algunos de 10s Cualquiera que busque la palabra crisis en el dic-
fallos mas importantes que ocurrieron durante la dCca- cionario encontrari otra definicion: ccel punto decisivo
da pasada. No obstante, 10s mayores Cxitos conseguidos en el curso de una enfermedad, cuando se ve rnis claro
por la industria del software han llevado a preguntarse si el paciente vivira o morirh. Esta definicion puede
si el tCrmino (crisis del software) es a6n apropiado. darnos una pista sobre la verdadera naturaleza de 10s
Robert Glass, autor de varios libros sobre fallos del soft- problemas que han acosado el desarrollo del software.
ware, representa a aquellos que han sufrido un cambio Lo que realmente tenemos es una afliccion cr6nica1.
de pensamiento. Expone [GLA98]: ccPuedo ver en mis La palabra ajliccibn se define como ccalgo que causa pena
ensayos historicos de fallos y en mis informes de excep- o desastre.. Pero la clave de nuestro argument0 es la defi-
c i h , fallos importantes en medio de muchos Cxitos, una nici6n del adjetivo crcinica: ccmuy duradero o que reapa-
copa que esti [ahora] priicticamente 1lena.n rece con frecuencia continuando indefinidarnente,,. Es
bastante rnis precis0 describir 10s problemas que hemos
estado aguantando en el negocio del software como una
afliccion cronica, en vez de como una crisis.
Sin tener en cuenta como lo Ilamemos, el conjunto
de problemas encontrados en el desarrollo del software
de computadoras no se limitan a1 software que ccno fun-
ciona correctamenten. Es mis, el ma1 abarca 10s pro-
blemas asociados a c6mo desarrollar software, como
mantener el volumen cada vez mayor de software exis-
tente y como poder esperar mantenernos a1 corriente de
La palabra crisis se define en el diccionario Webster la demanda creciente de software.
como a n punto decisivo en el curso de algo, momento, Vivimos con esta afliccion desde este dia - d e hecho,
etapa o evento decisivo o crucial>>. Sin embargo, en tCrmi- la industria prospera a pesar de ell-. Y asi, las cosas
nos de calidad del software total y de velocidad con la cud podrin ser mejores si podemos encontrar y aplicar un
son desarrollados 10s productos y 10s sistemas basados en remedio.
Muchas de las causas de la crisis del software se pue- confusion. Los mitos del software tienen varios atribu-
den encontrar en una mitologia que surge durante 10s tos que 10s hacen insidiosos; por ejemplo, aparecieron
primeros afios del desarrollo del software. A diferencia como declaraciones razonables de hechos (algunas veces
de 10s mitos antiguos, que a menudo proporcionaban a conteniendo elementos verdaderos), tuvieron un senti-
10s hombres lecciones dignas de tener en cuenta, 10s do intuitivo y frecuentemente fueron promulgados por
mitos del software propagaron information erronea y expertos que ccestaban a1 dia>>.
Mitos de gestion. Los gestores con responsabilidad Mitos del Cliente. Un cliente que solicita una apli-
sobre el software, como 10s gestores en la mayoria de caci6n de software puede ser una persona del despacho
las disciplinas, estan normalmente bajo la presion de de al lado, un grupo tkcnico de la sala de abajo, el depar-
cumplir 10s presupuestos, hacer que no se retrase el pro- tamento de ventas o una compaiiia exterior que solicita
yecto y mejorar la calidad. Igual que se agarra a1 vacio un software bajo contrato. En muchos casos, el cliente
una persona que se ahoga, un gestor de software se aga- Cree en 10s mitos que existen sobre el software, debido a
rra frecuentemente a un mito del software, aunque tal que 10s gestores y desarrolladoresdel software hacen muy
creencia so10 disminuya la presion temporalmente. poco para corregir la mala informacion. Los mitos con-
Mito. Tenemos ya un libro que esta lleno de estinda- ducen a que el cliente se Cree una falsa expectativa y, final-
res y procedimientos para construir software, jno le pro- mente, quede insatisfecho con el que desarrolla el software.
porciona ya a mi gente todo lo que necesita saber? Mito. Una declaration general de 10s objetivos es sufi-
Realidad. Esta muy bien que el libro exista, per0 ciente para comenzar a escribir 10s programas -pode-
jse usa?.iconocen 10s trabajadores su existencia?, mos dar 10s detalles mas adelante-.
irefleja las practicas modernas de desarrollo de soft- Realidad. Una mala definicion inicial es la principal
ware?, i e s completo?, jest5 disefiado para mejorar el causa del trabajo baldio en software. Es esencial una des-
tiempo de entrega mientras mantiene un enfoque de cripcion formal y detallada del h b i t o de la informacion,
calidad? En muchos casos, la respuesta a todas estas funciones, comportamiento, rendimiento, interfaces, liga-
preguntas es <<no>>. duras del disefio y criterios de validaci6n. Estas caracte-
risticas pueden determinarse so10 despuCs de una
exhaustiva comunicaci6n entre el cliente y el analista.
Mito. Los requisitos del proyecto cambian conti-
nuamente, per0 10s cambios pueden acomodarse ficil-
mente, ya que el software es flexible.
Mito. Mi gente dispone de las herramientas de desa- Lo gestidn y control de combio e s trotado
~
rrollo de software mis avanzadas, despuCs de todo, les con detalle en el Copitulo 9
compramos las computadoras mis modernas.
Realidad. Se necesita mucho mis que el ultimo
modelo de computadora grande o de PC para hacer desa-
rrollo de software de gran calidad. Las herramientas de
ingenieria del software asistida por computadora
(CASE) son mas importantes que el hardware para con-
seguir buena calidad y productividad, aunque la mayo-
ria de 10s desarrolladores del software todavia no las
utilicen eficazmente.
Mito. Si fallamos en la planificacion, podemos afiadir
mis programadores y adelantar el tiempo perdido (el lla-
mado algunas veces ccconcepto de la horda Mongolians,,). Definicion Desarrollo Despues
Realidad. El desarrollo de software no es un proce- de la entrega
so mecanico como la fabricacion. En palabras de Bro- FIGURA 1.3. El impacto del carnbio.
oks [BR075]: cc ...afiadir gente a un proyecto de software
retrasado lo retrasa aun mas>>. A1 principio, esta declara- Realidad. Es verdad que 10s requisitos del softwa-
cion puede parecer un contrasentido. Sin embargo, cuan- re cambian, per0 el impacto del carnbio varia segun el
do se afiaden nuevas personas, la necesidad de aprender y momento en que se introduzca. La Figura 1.3 ilustra el
comunicarse con el equipo puede y hace que se reduzca la impacto de 10s cambios. Si se pone cuidado a1 dar la
cantidad de tiempo gastado en el desarrollo productivo. definicion inicial, 10s cambios solicitados a1 principio
Puede afiadirse gente, per0 solo de una manera planifica- pueden acomodarse ficilmente. El cliente puede revi-
da y bien coordinada. sar 10s requisitos y recomendar las modificaciones con
relativamente poco impacto en el coste. Cuando 10s cam-
bios se solicitan durante el disefio del software, el impac-
to en el coste crece rapidamente. Ya se han acordado 10s
recursos a utilizar y se ha establecido un marco de tra-
Lo red de gesti6n de proyectos de softwore bajo del disefio. Los cambios pueden producir trastor-
en www.spmn.com puede oyudorle nos que requieran recursos adicionales e importantes
o desrnitificor estos y otros rnitos. modificaciones del disefio; es decir, coste adicional. Los
I N G E N I E R ~ ADEL SOFTWARE. UN ENFOQUE PRACTICO
cambios en la funcibn, rendimiento, interfaces u otras Mito. Hasta que no tengo el programa ccejecutindo-
caractensticas, durante la implementaci6n (codificaci6n se,>,realmente no tengo foma de comprobar su calidad.
y prueba) pueden tener un impact0 importante sobre el Realidad. Desde el principio del proyecto se puede
coste. Cuando se solicitan a1 final de un proyecto, 10s aplicar uno de 10s mecanismos rnis efectivos para garan-
cambios pueden producir un orden de magnitud rnis tizar la calidad del software: la revisidn re'cnica formal.
car0 que el mismo cambio pedido a1 principio. La revisi6n del software (descrito en el Capitulo 8) es
Mitos de los desarrolladores. Los mitos en 10s que un cfiltro de calidad,, que se ha comprobado que es rnis
a h creen muchos desarrolladores se han ido fomen- efectivo que la prueba, para encontrar ciertas clases de
tando durante 50 afios de cultura infomitica. Durante defectos en el software.
10s primeros dias del desarrollo del software, la pro-
Mito. Lo linico que se entrega a1 terminar el pro-
gramaci6n se veia como un arte. Las viejas formas y
yecto es el programa funcionando.
actitudes tardan en morir.
Mito. Una vez que escribimos el programa y hace- Realidad. Un programa que funciona es s610 una par-
mos que funcione, nuestro trabajo ha terminado. te de una configuracidn del software que incluye muchos
elementos. La documentaci6n proporciona el funda-
Realidad. Alguien dijo una vez: cccuanto rnis pronto mento para un buen desarrollo y, lo que es rnis impor-
se comience a escribir c6dig0, rnis se tardari en term- tante, proporciona guias para la tarea de mantenimiento
narlou. Los datos industriales [LIE80, JON91, PUT971 del software.
indican que entre el 60 y el 80 por ciento de todo el
esfuerzo dedicado a un programa se realizari despuCs Muchos profesionales del software reconocen la
de que se le haya entregado a1 cliente por primera vez. falacia de 10s mitos descritos anteriormente. Lamen-
tablemente, las actitudes y mCtodos habituales fomen-
tan una pobre gesti6n y malas practicas tCcnicas,
incluso cuando la realidad dicta un mCtodo mejor. El
lrobojo muy durn para entender lo que tienes que hocer reconocimiento de las realidades del software es el
antes de empezor. No serios copoz de desorrollor mdo primer paso hacia la formulaci6n de soluciones prac-
detolle; por m h que sepos, tomo el menor riesgo. ticas para su desarrollo.
El software se ha convertido en el elemento clave de ponen una configuraci6n que se crea como parte del
la evoluci6n de 10s sistemas y productos inform6ticos. proceso de la ingenieria del software. El intento de la
En 10s pasados 50 afios, el software ha pasado de ser ingenieria del software es proporcionar un marco de
una resoluci6n de problemas especializada y una herra- trabajo para construir software con mayor calidad.
mienta de anilisis de information, a ser una industria
por si misma. Pero la temprana cultura e historia de la
ccprogramaci6n>>ha creado un conjunto de problemas
que persisten todavia hoy. El software se ha converti-
do en un factor que limita la evoluci6n de 10s sistemas Cuondo te pones o pensor, no encuentos tiempo para lo
informaticos. El software se compone de programas, discipline de lo ingenieria del s o h r e , y te preguntos:
datos y documentos. Cada uno de estos elementos com- ((2 lendre tiempo para poder hocerlo?~
[BR075] Brooks, F., The Mytical Man-Month, Addison-Wes- [GLA97] Glass, R. L., Software Runaways, Prentice Hall,
ley, 1975. 1997.
[DEJ98] De Jager, P., et al, Countdown Y2K: Business Sur- [GLA98] Glass, R. L.,& there Really a Software Crisis?,>,
vival Planning for the Year 2000, Wiley, 1998. IEEE Software, vol. 15, n.", Enero 1998, pp. 104-105.
[DEM95] De Marco, T., Why Does Software Cost So Much.?, [HAM931 Hammer, M., y J. Champy, Reengineering the Cor-
Dorset House, 199.5, p. 9. poration, HarpperCollins Publisher, 1993.
[FEI83] Feigenbaum, E. A., y P. McCorduck, The Fith Gene- [JON911 Jones, C., Applied Software Measurement, McGraw-
ration, Addison-Wesley, 1983. Hill, 1991.
[FL097] Flowers, S., Software Failure, Management Fai- [KAR99] Karlson, E., y J. Kolber, A Basic Introduction to
lure-Amaicing Stories and Cautionary Tails, Wiley, Y2K: How the Year 2000 Computer Crisis Affects You?,
1997 (?). Next Era Publications, Inc., 1999.
CAP~TULO
1 EL P R O D U C T 0 Y EL P R O C E S O
[LEV951Levy, S., ((TheLuddites Are Pack,,, Newsweek, 12 de [ST0891 Stoll, C., The cuckoo's Egg, Doubleday, 1989.
Julio de 1995, p. 55. [TOF80] Toffler, A., The Third Wave, Morrow Publishers,
[LEV991 Levy, S., ccThe New Digital Galaxy,,, Newsweek, 1980.
3 1 de Mayo de 1999, p.57. [TOF90] Toffler, A., Powershift, Bantam Publishers, 1990.
[LIE801 Lientz, B., y E. Swanson, Software Maintenance
[YOU921 Yourdon, E., The Decline and Fall of the American
Management, Addison Wesley, 1980.
Programmer, Yourdon Press, 1992.
[NAI82] Naisbitt, J., Megatoends, Warner Books, 1982.
[YOU961 Yourdon. E., The Rise and Resurrection of the Ame-
[NOR981Norman, D., The Invisible Computer, MIT Press, 1998. rican Programmer, Yourdon Press, 1996.
[OSB79] Osborne, A., Running Wild-The Next Industrial [YOU98a] Yourdon, E., Death March Projects, Prentice-Hall,
Revolution, Osborne/McGraw-Hill, 1979. 1998.
[PUT971 Putnam, L., y W. Myers, Industrial Strength Soft- [YOU98b] Yourdon, E., y J. Yourdon, Time Bomb 2000, Pren-
ware, IEEE Computer Society Press, 1997. tice-Hall, 1998.
1.I. El software es la caracteristica que diferencia a muchos 1.5. A medida que el software se difunde mas, 10s riesgos para
productos y sistemas informaticos. DC ejemplos de dos o tres el public0 (debido a programas defectuosos) se convierten en una
productos y de, a1 menos, un sistema en el que el software, no preocupacidn cada vez mas significativa. Desarrolle un escena-
el hardware, sea el elemento diferenciador. no realista del juicio final (distinto a Y2K) en donde el fallo de
1.2. En 10s afios cincuenta y sesenta la programaci6n de com- computadora podria hacer un gran daiio (econbmico o humano).
putadoras era un arte aprendido en un entorno basicamente 1.6. Lea detenidamente el grupo de noticias de Internet
experimental. iC6mo ha afectado esto a las pricticas de desa- comp.risk y prepare un resumen de riesgos para las personas
rrollo del software hoy? con las que se hayan tratado ultimamente. Codigo altemati-
1.3. Muchos autores han tratado el impacto de la ccera de la vo: Software Engineering Notes publicado por la ACM.
informaci6n>>.De varios ejemplos (positivos y negativos) que 1.7. Escriba un papel que resuma las ventajas recientes en
indiquen el impacto del software en nuestra sociedad. Repa- una de las ireas de aplicaciones de software principales. Entre
se algunas referencias de la Seccion 1.1 previas a 1990 e indi- las selecciones potenciales se incluyen: aplicaciones avanza-
que donde las predicciones del autor fueron correctas y d6nde das basadas en Web, realidad virtual, redes neuronales artifi-
no lo fueron. ciales, interfaces humanas avanzadas y agentes inteligentes.
1.4. Seleccione una aplicaci6n especifica e indique: (a) la 1.8. Los mitos destacados en la Seccion 1.4 se estin vinien-
categoria de la aplicaci6n de software (Seccibn 1.2.2) en la do abajo lentamente a medida que pasan 10s aiios. Pero otros
que encaje; (b) el contenido de 10s datos asociados con la apli- se estan haciendo un lugar. Intente aiiadir un mito o dos mitos
caci6n; (c) la information determinada de la aplicacibn. ccnuevos, a cada categoria.
Literalmente existen miles de libros escritos sobre software do industrializado y casi todas las aplicaciones a la nueva
de computadora. La gran mayoria tratan 10s lenguajes de pro- infraestructura de Internet.
gramacion o aplicaciones de software, y s610 unos pocos tra- Minasi (The Software Conspiracy: Why Software Com-
tan el software en si. Pressman y Herron (Software Sock, panies Put Out Faulty Products, How They Can Hurt You,
Dorset House, 1991) presentaron una discusi6n (dirigida a no and What You Can Do, McGraw-Hill, 2000) argument6 que
profesionales) acerca del software y del modo en que lo cons- el ccazote moderno~de 10s errores del software puede elimi-
truyen 10s profesionales. narse y sugiere formas para hacerlo. DeMarco (Why Does
El libro, Cxito de ventas, de Negroponte (Being Digital, Software Cost So Much?, Dorset House, 1995) ha producido
Alfred A. Knopf, Inc., 1995) proporciona una visi6n de las una colecci6n de ensayos divertidos e interesantes sobre el
computadoras y de su impacto global en el siglo XXI. Los software y el proceso a travts del cual se desarrolla.
libros de Norman [NOR981 y Bergman (Information En Internet estan disponibles una gran variedad de fuen-
Appliances & Beyond, Academic PresJMorgan Kauffman, tes de informaci6n relacionadas con temas de gesti6n y de
2000) sugieren que el impacto extendido del PC declinari software. Se puede encontrar una lista actualizada con refe-
a1 mismo tiemPo que las aplicaciones de informaci6n y rencias a sitios (piginas) web relevantes en http://www.press-
la difusidn de la programacidn conecten a todos en el mun- man5.com.
bRA (RAD). . .. ......22
H OWARD Baetjer, Jr. [BAE98], en un libro fascinante que proporciona un punto de
vista economicista del software y de la ingenieria del software, colnenta sobre el
proceso:
Conio el softwilre, ill igual que el capital, es el conocirniento incorporado, y puesto que el conocimiento
desarrollo basado en csth inicialniente tlisperso, el desarrollo del software implicito, latente e incomplelo en gran medida, es un
romponenfes . . ...... 2 8 proceso social de aprendizaje. El proceso es un diiilogo en el que se reline el conocimiento y se incluye en
1. I, el software para converlirse en software. El proceso proporciona una interaccicjn entre 10s usunrios y los
diseiiadores, entre los usuarios y las herramientas de desarrollo, y entre los diseiiatlores y las lierrarnien-
tzs tlc desarmllo [tecnologia]. Es un proccso interactivo donde la herlamienta de dcsarrollo se L I S ~conio
rnetlio de coniunicacih, con cnda iteracicjn tlel diiilogo se obtiene mayor conocirniento de las personas
involucradas.
Realmente, construir software de computadora es un proceso de aprendizaje iterativo, y el
resultado, nlgo que Baetjer podria llamar <<capitaldel software,,, e s el colljunto del software
reunido, depurado y organizado mientras se desarrolla el proceso.
u6 es? Cuando Irabaja para construir ;Par qu6 es importante? Porque pro- software, 10s productos obtenidos son
un producto o un sistema, e s impor- porciona estabilidad, control y organi- programas, documentos y datos que se
tante seguir una serie de pasos pre- zaci6n a una actividad que puede. s i producen como consecuencia de las
decibles -un mapa de caneteras que no se controls, volverse caotica. actividades de ingenieria del software
le ayude a obtener el resultado opor-
...--- mlirlnrl-
tllnn A n
I-
mnnn .,.. rla --..-
............ , F'.1 .-...'-.-. m r r n -
&&dles
3 ..
uaao, -1
el
b, pasos? A un ,,ivel deta-
.
proceso. que . . . . .
aaopremos -IZ-_-- 4- --.---------
definidas por el proceso.
&"orno pueao csrar segurw a e qrre
3- --
teras a seguir es llamado uproceso del depende del software que estamos lo he hecho correctamente? Hay
soflware~. construyendo. Un proceso puede ser una cantidad de mecanismos de eva-
jQui6n lo hace? Los ingenieros de soft- apropiado para crear software de un luacion del proceso del software que
ware y sus gestores adaptan el proce- sistema de a v i a c i h , mientras que un permiten a las organizaciones deter-
s o a s u s necesidades y entonces lo proceso diferente por completo puede minar la *rnadurezn de su proceso del
siguen. Ademus las personas que han ser adecuado para la creacion de un software. Sin embargo, la mlidad, opor-
solicitado el software tienen un papel sitio web. tunidad y viabilidad a largo plazo del
a desempeiiar e n el proceso del soft- &Cud1es el product6 abtenido? Des- producto que esta constmyendo son 10s
ware. de el punto de vista d e un ingeniero de mejores indicadores de la eficiencia del
proceso que estamos utilizando.
Pero, iquk es exactamente el proceso del software desde un punto de vista tkcnico'? Dentro del con-
texto de este libro, detinimos un proceso de software como un marco de trnbnjo de lsls tareas quc se
requieren para construir software de aha calidad. iEs ccproceso,, sin6nimo de ingenieria clel sofwa-
re'? La respuesta es ((siny ccno,,. Un proceso de software define el enfoque que se toma cuanclo el soft-
ware es tratado por la ingenieria. Pero la ingenieria del software tarnbikn comprende las lecnologias
que tiene el proceso -me~odos tCcnicos y herramientas autornntizadas-.
Aiin m$s importante es que la ingenieria del software la realizan personas creativas, con conoci- ,
mienlo, que deberian trabajar dentro de un proceso del software definido y avanzado que es apropia-
do para 10s productos que construyen y para las dernandas de su mercado. La intenci6n de este capitulo
es proporcionar un estudio del estado actual del proceso del software y puntualizar sobre el estudio
detallaclo de 10s temas de gesti6n y tknicos presentados en este libro.
I N G E N I E R ~ ADEL SOFTWARE. U N ENFOQUE PRACTICO
2.1.1. Proceso, m6todos y herramientas 2.1.2. Una visi6n general de la ingenieria del
La Ingcnieria del software es un tecnologia multica- software
pa. Como muestra la Figura 2.1. cualquier enlhque de La ingenieria es el anhlisis. diseiio, construccibn, veri-
ingenieria (incluida ingenieria del software) debe apo- ficacibn y gesti6n de entidades tCcnicas (o sociales).
yarse sobre un compromiso de organizaci6n de cali- Con independencia de la entidad a la que se va a apli-
dad. car ingenieria, se deben cuestionar y responder las
siguientes preguntas:
CAPfTULO 2 EL PROCESO
~ C u a es
l el problema a resolver? La fase de desarrollo se centra en el cdmo. Es decir,
iCuales son las caracteristicas de la entidad que se durante el desarrollo un ingeniero del software intenta
utiliza para resolver el problema? definir como han de disefiarse las estructuras de datos,
como ha de implementarse la funcion dentro de una
iC6m0 se realizara la entidad (y la solucion)? arquitectura de software, c6mo han de implementarse
iC6m0 se construira la entidad? 10s detalles procedimentales, como han de caracteri-
zarse interfaces, como ha de traducirse el diseiio en un
~QuC enfoque se va a utilizar para no contemplar 10s
lenguaje de programacion (o lenguaje no procedimen-
errores que se cometieron en el disefio y en la cons-
tal) y c6mo ha de realizarse la prueba. Los mCtodos apli-
trucci6n de la entidad?
cados durante la fase de desarrollo variarhn, aunque las
iC6m0 se apoyar6 la entidad cuando usuarios soli- tres tareas especificas tkcnicas deberian ocurrir siem-
citen correcciones, adaptaciones y mejoras de la enti- pre: disefio del software (Capitulos 14, 15 y 21), gene-
dad? ration de c6digo y prueba del software (Capitulos 16,
Un proceso de software se puede caracterizar como se del proyecto. Finalmente, las actividades de protccci6n
muestra en la Figura 2.2. Se establcce un tr~urr.~ wnz~in -tales como garantia de calidad del software, gestion de
clcl~wo~~c~sodefi mendo un pequeiio numcro de activida- configuration del software y rnedicicin2-abarcan el
des del rnarco de trabajo clue son aplicables a todos 10s rnodelo de procesos. Las actividades de protecci6n son
proyectos del software, con independencia de su tarnaiio independientes de cualquier actividad del marco de tra-
o complejidnd. Un nlimero de corljrlrztos c k tawus 4 a d a bajo y aparecen durante todo el proceso.
uno e\ una coleccicin dc tareas cle trabqo de ingenieria En 10s Liltimos afios, se ha hecho mucho knfasis en
del \oftware, hitos de proycctos, productos de trabajo, y la ccrnadurez del proceso,,. El Softwate Engineering Ins-
puntos de garantia de calidad-que permiten clue las acti- titute (SEI)' ha desarrollado un niodelo cornpleto que
vidades del lnarco de trabajo se adapten a las caractcris- se basa en un conjunto de funciones de ingenieria del
ticas dcl proyecto dcl softwurc y a los requisites del equipo software que deberian estar presentes con forrne oIga-
nizaciones alcanzan diferentes niveles de madurez del
I M a w de trabajo cm*m del procesa I!
proceso. Para determinar el estado actual de niadurez
del proceso de una organizacicin, el SEI utiliza un cues-
I I Actiuidades del rnarco de trabajo I 1; tionario cle evaluaci6n y un esquema de cinco grados.
L
Actividades de Proteccidn
"I un modelo de capacidad de madurez [PAU93] que defi-
ne las actividades clave que se requieren en 10s dife-
rentes niveles de madurez del proceso. El enfoclue del
FIGURA 2.2. El proceso del software. SEI proporciona una medida de la efectividacl global de
I El termino .programas legalest] es un eufernismo para el software Estos ternas se tratan con mas detalle en capitulos posteriores.
antiguo, a menudo disefiado y docurnentado pobrernente, que es cri- El autor se esta refiriendo al SEI de la Cannegie R,lellon University.
t ~ c opara el negocio y debe ser soportado durante algunos atios.
CAPfTULO 2 EL PROCESO
las practicas de ingenieria del software de una compa- ci6n ha sido detallado y se hace cumplir por medio de
Aia y establece cinco niveles de madurez del proceso, procedimientos tales como auditorias. Este nivel es aquel
que se definen de la forma siguiente: en el que la mayoria de 10s desarrolladores de softwa-
Nivel 1: Inicial. El proceso del software se caracte- re, pretenden conseguir con estandares como el I S 0
riza seg6n el caso, y ocasionalmente incluso de forma 9001, y existen pocos casos de desarrolladores de soft-
ca6tica. Se definen pocos procesos, y el Cxito depende ware que superan este nivel.
del esfuerzo individual. El nivel 4 comprende el concepto de medici6n y el
uso de metricas. El capitulo 4 describe este tema con mtis
Nivel 2: Repetible. Se establecen 10s procesos de
detalle. Sin embargo, cabe destacar el concepto de mCtri-
gesti6n del proyecto para hacer seguimiento del coste,
ca para comprender la importancia que tiene que el desa-
de la planificaci6n y de la funcionalidad. Para repetir
rrollador del software alcance el nivel4 o el nivel5.
Cxitos anteriores en proyectos con aplicaciones simila-
Una mCtrica es una cantidad insignificante que puede
res se aplica la disciplina necesaria para el proceso.
extraerse de algtin documento o cddigo dentro de un pro-
Nivel 3: Definido. El proceso del software de las yecto de software. Un ejemplo de mCtrica es el numero
actividades de gesti6n y de ingenieria se documenta, se de rarnas condicionales en una seccion de c6digo de un
estandariza y se integra dentro de un proceso de soft- programa. Esta mCtrica es significativa en el sentido de
ware de toda una organizaci6n. Todos 10s proyectos uti- que proporciona alguna indicaci6n del esfuerzo necesa-
lizan una versi6n documentada y aprobada del proceso rio para probar el c6digo: esta directamente relacionado
de la organizaci6n para el desarrollo y mantenimiento con el numero de caminos de prueba dentro del c6digo.
del software. En este nivel se incluyen todas las carac- Una organizacidn del nivel 4 maneja numerosas
tensticas definidas para el nivel 2. mCtricas. Estas metricas se utilizan entonces para super-
Nivel 4: Gestionado. Se recopilan medidas deta- visar y controlar un proyecto de software, por ejemplo:
lladas del proceso del software y de la calidad del pro- Una mCtrica de prueba puede usarse para determinar
d u c t ~Mediante
. la utilizaci6n de medidas detalladas,
cutindo finalizar la prueba de un elemento del c6digo.
se comprenden y se controlan cuantitativamente tan-
to 10s productos como el proceso del software. En este Una mCtrica de legilibilidad puede usarse para juz-
nivel se incluyen todas las caracteristicas definidas gar la legilibilidad de alglin documento en lenguaje
para el nivel 3. natural.
Nivel5: Optirnizacion. Mediante una retroalimen- Una mCtrica de comprensi6n del programa puede uti-
taci6n cuantitativa del proceso, ideas y tecnologias inno- lizarse para proporcionar algun umbra1 numCrico que
vadoras se posibilita una mejora del proceso. En este 10s programadores no pueden cruzar.
nivel se incluyen todas las caracten'sticas definidas para
Para que estas mCtricas alcancen este nivel es nece-
el nivel4. sario que todos 10s componentes del nivel3 CMM, en
castellano MCM (Modelo de Capacidad de Madurez),
2
Referencia Web
El IIS ofrece un omplio conjunto de informoci6n
estCn conseguidos, por ejemplo notaciones bien defini-
das para actividades como la especificaci6n del disefio
de requisitos, por lo que estas mCtricas pueden ser facil-
mente extraidas de mod0 autom8tico.
relocionodo con el proceso en www.sei.cmu.edu
El nivel5 es el nivel mas alto a alcanzar. Hasta aho-
Merece la pena destacar que cada nivel superior es ra, muy pocos desarrolladores de software han alcan-
la suma de 10s niveles anteriores, por ejemplo, un desa- zado esta fase. Representa la analogia del software con
rrollador de software en el nivel3 tiene que haber alcan- 10s mecanismos de control de calidad que existen en
zado el estado nivel 2 para poder disponer de sus otras industrias de mayor madurez. Por ejemplo el fabri-
procesos en el nivel 3. cante de un producto industrial como un cojinete de
El nivel 1 representa una situaci6n sin ningtin esfuer- bolas (rodamiento) puede supervisar y controlar la cali-
zo en la garantia de calidad y gesti6n del proyecto, don- dad de 10s rodamientos producidos y puede predecir esta
de cada equipo del proyecto puede desarrollar software calidad basandose en 10s procesos y maquinas utiliza-
de cualquier forma eligiendo 10s mCtodos, estandares y dos para desarrollar 10s rodamientos. Del mismo mod0
procedimientos a utilizar que podran variar desde lo que el desarrollador del sofware en el nivel5 puede pre-
mejor hasta lo peor. decir resultados como el nlimero de errores latentes en
El nivel2 representa el hecho de que un desarrolla- un producto basado en la medicidn tomada durante la
dor de software ha definido ciertas actividades tales ejecuci6n de un proyecto. Ademas, dicho desarrollador
como el informe del esfuerzo y del tiempo empleado, y puede cuantificar el efecto que un proceso nuevo o herra-
el informe de las tareas realizadas. mienta de manufacturacion ha tenido en un proyecto
El nivel3 representa el hecho de que un desarrolla- examinando metricas para ese proyecto y cornparando-
dor de software ha definido tanto procesos tCcnicos como las con proyectos anteriores que no utilizaron ese pro-
de gestion, por ejemplo un estandar para la programa- ceso o herramienta.
I N G E N I E R ~ ADEL SOFTWARE. UN ENFOQUE PRACTICO
18
CAPfTULO 2 EL PROCESO
Para resolver 10s problemas reales de una industria, un completo, las etapas descritas anteriormente se aplican
ingeniero del software o un equipo de ingenieros debe recursivamente a las necesidades del usuario y a la espe-
incorporar una estrategia de desarrollo que acompafie cificaci6n tCcnica del desarrollador del software.
a1 proceso, mCtodos y capas de herramientas descritos
en la Secci6n 2.1.1 y las fases genCricas discutidas en
la Secci6n 2.1.2. Esta estrategia a menudo se llama
modelo de proceso o paradigma de ingenieria del soft-
ware. Se selecciona un modelo de proceso para la inge- Todos 10s etopas de un proceso del softwore -estodo
nieria del software segun la naturaleza del proyecto y ottual, definition del problerno, desorrollo tetnito e
de la aplicacih, 10s mCtodos y las herramientas a utili- integrocibn de la solucibn- coexisten sirnultuneornente
zarse, y 10s controles y entregas que se requieren. En en olgh nivel de detolle.
un documento intrigante sobre la naturaleza del proce-
so del software, L.B.S. Raccoon [RAC95] utiliza frac- En las secciones siguientes, se tratan diferentes mode-
tales como base de estudio de la verdadera naturaleza 10s de procesos para la ingenieria del software. Cada
del proceso del software. una representa un intento de ordenar una actividad inhe-
rentemente ca6tica. Es importante recordar que cada
uno de 10s modelos se han caracterizado de forma que
ayuden (con esperanza) a1 control y a la coordinaci6n
sigue de un proyecto de software real. Y a pesar de eso, en el
de va fondo, todos 10s modelos exhiben caracteristicas del
<<Modelodel Caow.
Definicidn
Todo el desarrollo del software se puede caracteri- de problemas
zar como bucle de resoluci6n de problemas (Fig. 2.3a)
0
en el que se encuentran cuatro etapas distintas: <<status
quo>>, definici6n de problemas, desarrollo tkcnico e inte- Desarrol l o
Estado
graci6n de soluciones. Status quo aepresenta el estado actual tCcnico
actual de sucesos>>[RAC95]; la definici6n de proble-
mas identifica el problema especifico a resolverse; el
desarrollo tCcnico resuelve el problema a travCs de la
aplicaci6n de alguna tecnologia y la integraci6n de solu- Integraci6n
ciones ofrece 10s resultados (por ejemplo: documentos, de soluciones
programas, datos, nueva funci6n comercial, nuevo pro-
d u c t ~ a) 10s que solicitan la solucion en primer lugar.
Las fases y 10s pasos genCricos de ingenieria del soft-
ware definidos en la Seccion 2.1.2 se divide facilmen-
te en estas etapas.
En realidad, es dificil compartimentar actividades de
manera tan nitida como la Figura 2.3.b da a entender,
porque existen interferencias entre las etapas. Aunque
esta visi6n simplificada lleva a una idea muy impor-
tante: con independencia del modelo de proceso que se Estado
seleccione para un proyecto de software, todas las eta- actual
pas -status quo, definici6n de problemas, desarrollo
tCcnico e integraci6n de soluciones- coexisten simul-
taneamente en alg6n nivel de detalle. Dada la naturale-
za recursiva de la Figura 2.3b, las cuatro etapas tratadas
anteriormente se aplican igualmente a1 anilisis de una
aplicaci6n completa y a la generaci6n de un pequefio
segment0 de c6digo.
Raccoon [RAC95] sugiere un <<Modelodel Caos>>
que describe el <<desarrollodel software como una exten- FIGURA 2.3. a) Las fases de un bucle de resolucion de pro-
si6n desde el usuario hasta el desarrollador y la tecno- blemas [RAC 951. b) Fases dentro de las fases
logia>>.Conforme progresa el trabajo hacia un sistema del bucle de resolucion de problemas IRAC 951.
I N G E N I E R I A DEL S O F T W A R E . UN E N F O Q U E PRACTICO
Llamado algunas veces ccciclo de vida b8sicon o <<mode- se pueda evaluar su calidad antes de que comience la
lo en cascada,,, el modelo lineal secuencial sugiere un codificacion.
enfoque5 sistematico, secuencial, para el desarrollo del Generacion de codigo. El diseiio se debe traducir
software que comienza en un nivel de sistemas y pro- en una forma legible por la maquina. El paso de gene-
gresa con el analisis, disefio, codificacion, pruebas y man- raci6n de codigo lleva a cab0 esta tarea. Si se lleva a
tenimiento. La Figura 2.4 muestra el modelo lineal cab0 el disefio de una forma detallada, la generation de
secuencial para la ingenieria del software. Modelado c6digo se realiza mecinicamente.
segun el ciclo de ingenieria convencional, el modelo
lineal secuencial comprende las siguientes actividades:
Ingenieria y modelado de Sistemas/Informacion.
Como el software siempre forma parte de un sistema Aunque el modelo line01 es o menudo denominodo
mas grande (o empresa), el trabajo comienza estable- ((modelo trodicionol)),resulto un enfoque rozonoble
ciendo requisitos de todos 10s elementos del sistema y cuondo 10s requisitos se hon entendido correctomente.
asignando a1 software alglin subgrupo de estos requisi-
tos. Esta vision del sistema es esencial cuando el soft- Pruebas. Una vez que se ha generado el c6digo.
ware se debe interconectar con otros elementos como comienzan las pruebas del programa. El proceso de prue-
hardware, personas y bases de datos. La ingenieria y el bas se centra en 10s procesos 16gicos internos del soft-
analisis de sistemas comprende 10s requisitos que se ware, asegurando que todas las sentencias se han
recogen en el nivel del sistema con una pequeiia parte comprobado, y en 10s procesos extemos funcionales; es
de analisis y de disefio. La ingenieria de informacion decir, realizar las pruebas para la detection de errores
abarca 10s requisitos que se recogen en el nivel de y asegurar que la entrada definida produce resultados
empresa estratkgico y en el nivel del area de negocio. reales de acuerdo con 10s resultados requeridos.
Mantenimiento.El software indudablemente sufrira
cambios despuCs de ser entregado a1 cliente (una excep-
cion posible es el software empotrado). Se produciran
lngenieria de cambios porque se han encontrado errores, porque el soft-
sistemas/informacion ware debe adaptarse para acoplarse a 10s cambios de su
entomo extemo (por ejemplo: se requiere un cambio debi-
do a un sistema operativo o dispositivo perifkrico nue-
vo), o porque el cliente requiere mejoras funcionales o
de rendimiento. El soporte y mantenimiento del softwa-
re vuelve a aplicar cada una de las fases precedentes a un
programa ya existente y no a uno nuevo.
FIGURA 2.4. El modelo lineal secuencial. El modelo lineal secuencial es el paradigma m6s anti-
guo y mas extensamente utilizado en la ingenieria del
Analisis de 10s requisitos del software. El proceso software. Sin embargo, la critica del paradigma ha pues-
de reunion de requisitos se intensifica y se centra espe- to en duda su eficacia [HAN95]. Entre 10s problemas
cialmente en el software. Para comprender la naturaleza que se encuentran algunas veces en el modelo lineal
del (10s) programa(s) a construirse, el ingeniero (c<ana- secuencial se incluyen:
lists,,) del software debe comprender el dominio de
informaci6n del software (descrito en el Capitulo 1l), asi iPor que falla algunas veces
como la funcidn requerida, comportamiento, rendimien- el modelo lineal?
to e interconexi6n.
Diseno. El disefio del software es realmente un pro-
ceso de muchos pasos que se centra en cuatro atributos 1. Los proyectos reales raras veces siguen el modelo
distintos de programa: estructura de datos, arquitectu- secuencial que propone el modelo. Aunque el modelo
ra de software, representaciones de interfaz y detalle lineal puede acoplar interaceion, lo hace indirecta-
procedimental (algoritmo). El proceso del diseiio tra- mente. Como resultado, 10s cambios pueden causar
duce requisitos en una representacidn del software donde confusion cuando el equipo del proyecto comienza.
A menudo es dificil que el cliente exponga explici- Cada uno de estos errores es real. Sin embargo, el
tamente todos 10s requisitos. El modelo lineal secuen- paradigma del ciclo de vida clisico tiene un lugar defi-
cia1 lo requiere y tiene dificultades a la hora de nido e importante en el trabajo de la ingenieria del soft-
acomodar la incertidumbre natural a1 comienzo de ware. Proporciona una plantilla en la que se encuentran
muchos proyectos. mCtodos para anhlisis, diseiio, codificaci611, pruebas y
El cliente debe tener paciencia. Una versi6n de tra- mantenimiento. El ciclo de vida clhsico sigue siendo el
bajo del(1os) programa(s) no estarh disponible hasta modelo de proceso mhs extensamente utilizado por la
que el proyecto estC muy avanzado. Un grave error ingenieria del software. Pese a tener debilidades, es sig-
puede ser desastroso si no se detecta hasta que se nificativamente mejor que un enfoque hecho a1 azar para
revisa el programa. el desarrollo del software.
El cliente ve lo que parece ser una version de trabajo para demostrar la capacidad. DespuCs de a l g h
del software, sin tener conocimiento de que el pro- tiempo, el desarrollador debe familiarizarse con estas
totipo tambiCn est8 junto con ccel chicle y el cable de selecciones, y olvidarse de las razones por las que
embalam, sin saber que con la prisa de hacer que son inadecuadas. La seleccion menos ideal ahora es
funcione no se ha tenido en cuenta la calidad del soft- una parte integral del sistema.
ware global o la facilidad de mantenimiento a largo
plazo. Cuando se informa de que el producto se debe
construir otra vez para que se puedan mantener 10s
niveles altos de calidad, el cliente no lo entiende y Resisto lo presihi de ofrecer on mol prototipo en el
pide que se apliquen ccunos pequeiios ajustem para producto final. Como resoltodo, lo colidod se resiente cosi
que se pueda hacer del prototipo un producto final. siempre.
De forma demasiado frecuente la gestion de desa-
rrollo del software es muy lenta. Aunque pueden surgir problemas, la construcci6n de
El desarrollador, a menudo, hace compromisos de prototipos puede ser un paradigma efectivo para la inge-
irnplementacion para hacer que el prototipo funcione niena del software. La clave es definir las reglas del jue-
r8pidamente. Se puede utilizar un sistema operativo go a1 comienzo; es decir, el cliente y el desarrollador se
o lenguaje de programacion inadecuado simplemente deben poner de acuerdo en que el prototipo se constru-
porque est8 disponible y porque es conocido; un algo- ya para servir como un mecanismo de definicion de
ritmo eficiente se puede implementar simplemente requisitos.
El Desarrollo Rbpido de Aplicaciones (DRA)es un mode- Generacion de aplicaciones. El DRA asume la uti-
lo de proceso del desarrollo del software lineal secuencial lizacion de tkcnicas de cuarta generacion (Seccion 2.10).
que enfatiza un ciclo de desarrollo extremadamente cor- En lugar de crear software con lenguajes de programa-
to. El modelo DRA es una adaptaci6n a ccalta velocidad,, cion de tercera generacion, el proceso DRA trabaja para
del modelo lineal secuencial en el que se logra el desa- volver a utilizar componentes de programas ya exis-
rrollo riipido utilizando una construccion basada en com- tentes (cuando es posible) o a crear componentes reuti-
ponentes. Si se comprenden bien 10s requisitos y se limita lizables (cuando sea necesario). En todos 10s casos se
el h b i t o del proyecto, el proceso DRA permite a1 equi- utilizan herramientas para facilitar la construccion del
po de desarrollo crew un ccsistema completamente fun- software.
cional,, dentro de periodos cortos de tiempo (por ejemplo:
de 60 a 90 dias) [MAR911. Cuando se utiliza principal-
mente para aplicaciones de sistemas de informacion, el Equipo n e 3
enfoque DRA comprende las siguientes fases [KER94]:
Modelado de Gestion. El flujo de informacion entre
las funciones de gestion se modela de forma que res-
ponda a las siguientes preguntas: ~ Q u C informaci6n con-
duce el proceso de gestion? ~ Q u C informaci6n se genera?
iQuiCn la genera? i A donde va la informacion? ~QuiCn
la procesa? El modelado de gestion se describe con mas
detalle en el Capitulo 10. Modelado
" En ingles: RAD (Rapid Application Development). FIGURA 2.6. El modelo DRA.
CAPITULO 2 EL PROCESO
Pruebas y entrega. Como el proceso DRA enfati- A1 igual que todos 10s modelos de proceso, el enfo-
za la reutilizacion, ya se han comprobado muchos de que DRA tiene inconvenientes [BUT94]:
10s componentes de 10s programas. Esto reduce tiempo Para proyectos grandes aunque por escalas, el DRA
de pruebas. Sin embargo, se deben probar todos 10s com- requiere recursos humanos suficientes como para
ponentes nuevos y se deben ejercitar todas las interfa- crear el numero correct0 de equipos DRA.
ces a fondo. DRA requiere clientes y desarrolladores compro-
metidos en las rapidas actividades necesarias para
completar un sistema en un marco de tiempo abre-
El DRA hace un fuerte uso de componentes
viado. Si no hay compromiso por ninguna de las par-
reutilizables. Para mayor informacibn sobre el
desorrollo de componentes, vbase el Capltulo 27
tes constituyentes, 10s proyectos DRA fracasaran.
No todos 10s tipos de aplicaciones son apropiados
para DRA. Si un sistema no se puede modularizar
El modelo de proceso DRA se ilustra en la Figura adecuadamente, la construccion de 10s componentes
2.6. Obviamente, las limitaciones de tiempo impuestas necesarios para DRA sera problematico. Si esta en
en un proyecto DRA demandan ccfimbito en escalasn juego el alto rendimiento, y se va a conseguir el ren-
[KER94]. Si una aplicacion de gestion puede modular- dimiento convirtiendo interfaces en componentes de
se de forma que permita completarse cada una de las sistemas, el enfoque DRA puede que no funcione.
funciones principales en menos de tres meses (utilizando DRA no es adecuado cuando 10s riesgos ttknicos son
el enfoque descrito anteriormente), es un candidato del altos. Esto ocurre cuando una nueva aplicacion hace
DRA. Cada una de las funciones pueden ser afrontadas uso de tecnologias nuevas, o cuando el software
por un equipo DRA separado y ser integradas en un solo nuevo requiere un alto grado de interoperatividad
conjunto. con programas de computadora ya existentes.
suplementarias (algunas conocidas, otras no) quedan sin El modelo de proceso incremental, como la cons-
extraer. El cliente utiliza el producto central (o sufre la trucci6n de prototipos (Seccibn 2.5) y otros enfoques
revisi6n detallada). Como un resultado de utilizaci6n y/o evolutivos, es iterativo por naturaleza. Pero a dife-
de evaluaci611, se desarrolla un plan para el incremento rencia de la construcci6n de prototipos, el modelo
siguiente. El plan afronta la modificaci6n del producto incremental se centra en la entrega de un producto
central a fin de cumplir mejor las necesidades del clien- operacional con cada incremento. Los primeros incre-
te y la entrega de funciones, y caractensticas adiciona- mentos son versiones <<incompletasudel producto
les. Este proceso se repite siguiendo la entrega de cada final, per0 proporcionan a1 usuario la funcionalidad
incremento, hasta que se elabore el producto completo. que precisa y tambiCn una plataforma para la eva-
luaci6n.
El desarrollo incremental es particularmente util
cuando la dotacion de personal no esta disponible para
Cuando tenga uno fecha de entrega imposible una implementaci6n completa en la fecha limite que se
de cambia6 el modela incremental es un buen
haya establecido para el proyecto. Los primeros incre-
paradigma a cansiderar.
mentos se pueden implementar con menos personas.
incrernento 1
E"rega del
Prueba
l.erincremento
increment0 4 Analisis
4." incrernento
Tiempo de calendario
El modelo en espiral se divide en un numero de acti- mas sofisticadas del software. Cada paso por la region
vidades de marco de trabajo, tambikn llamadas regio- de planificacion produce ajustes en el plan del proyec-
nes de tareas6. Generalmente, existen entre tres y seis to. El coste y la planificacion se ajustan con la reali-
regiones de tareas. La Figura 2.8 representa un modelo mentacion ante la evaluacion del cliente. Ademis, el
en espiral que contiene seis regiones de tareas: gestor del proyecto ajusta el numero planificado de ite-
comunicacion con el cliente- las tareas requeridas raciones requeridas para completar el software.
para establecer comunicaci6n entre el desarrollador
y el cliente.
planificacion- las tareas requeridas para definir
recursos, el tiempo y otra informacion relacionadas
con el proyecto.
analisis de riesgos- las tareas requeridas para eva- Modelo de proceso odoptable.
luar riesgos tCcnicos y de gestion.
ingenieria- las tareas requeridas para construir una A diferencia del modelo de proceso clasico que ter-
o mas representaciones de la aplicacion. mina cuando se entrega el software, el modelo en espi-
construccion y accion- las tareas requeridas para ral puede adaptarse y aplicarse a lo largo de la vida del
construir, probar, instalar y proporcionar soporte a1 software de computadora. Una vision alternativa del
usuario (por ejemplo: documentaci6n y prhctica) modelo en espiral puede ser considerada examinando
el eje de punto de entrada en el proyecto tambikn refle-
evaluacion del cliente- las tareas requeridas para
jado en la Figura 2.8. Cada uno de 10s cubos situados a
obtener la reaccion del cliente segun la evaluacion
lo largo del eje pueden usarse para representar el pun-
de las representaciones del software creadas durante
to de arranqde para diferentes tipos de proyectos. Un
la etapa de ingenieria e implementada durante la
ccproyecto de desarrollo de conceptos)) comienza en el
etapa de instalacion.
centro de la espiral y continuarh (aparecen multiples ite-
raciones a lo largo de la espiral que limita la region som-
breada central) hasta que se completa el desarrollo del
concepto. Si el concepto se va a desarrollar dentro de
10s actividades del marco de trobaio se oplican un producto real, el proceso continlia a travCs del cub0
o cualquier proyecto de software que realice, siguiente (punto de entrada del proyecto de desarrollo
sin tener en cuenta el tamoiio ni lo compleiidod del producto nuevo) y se inicia un ccnuevo proyecto de
desarrollo". El producto nuevo evolucionara a travks de
Cada una de las regiones esthn compuestas por un con- iteraciones alrededor de la espiral siguiendo el camino
junto de tareas del trabajo, llamado &jlrnt&de tareas, que limita la region algo mas brillante que el centro.En
que se adaptan a las caracten'sticas del proyecto que va esencia, la espiral, cuando se caracteriza de esta forma,
a emprenderse. Para proyectos pequeiios, el numero de permanece operativa hasta que el software se retira. Hay
tareas de trabajo y su formalidad es bajo. Para proyectos veces en que el proceso esta inactive, per0 siempre que
mayores y mas criticos cada region de tareas contiene se inicie un cambio, el proceso arranca en el punto de
tareas de trabajo que se definen para lograr un nivel mas entrada adecuado (por ejemplo: mejora del producto).
alto de formalidad. En todos 10s casos, se aplican las acti- El modelo en espiral es un enfoque realista del desa-
vidades de proteccion (por ejemplo: gestion de configu- rrollo de sistemas y de software a gran escala. Como el
ration del software y garantia de calidad del software) software evoluciona, a medida que progresa el proceso
mencionadas en la Seccidn 2.2. el desarrollador y el cliente comprenden y reaccionan
mejor ante riesgos en cada uno de 10s niveles evoluti-
~ Q uesi un conjunto de
vos. El modelo en espiral utiliza la construcci6n de pro-
9 tareas?
totipos como mecanismo de reduccion de riesgos, pero,
Cuando empieza este proceso evolutivo, el equipo lo que es mas importante, permite a quien lo desarrolla
de ingenieria del software gira alrededor de la espiral aplicar el enfoque de construccion de prototipos en cual-
en la direccion de las agujas del reloj, comenzando por quier etapa de evolucion del producto. Mantiene el enfo-
el centro. El primer circuit0 de la espiral puede produ- que sistematico de 10s pasos sugeridos por el ciclo de
cir el desarrollo de una especificaci6n de productos; 10s vida clasico, per0 lo incorpora a1 marco de trabajo ite-
pasos siguientes en la espiral se podrian utilizar para rativo que refleja de forma mas realista el mundo real.
desarrollar un prototipo y progresivamente versiones El modelo en espiral demanda una consideraci6n direc-
ta de 10s riesgos tCcnicos en todas las etapas del pro- El modelo en espiral WINWIN de Boehm [BOE98]
yecto, y, si se aplica adecuadamente, debe reducir 10s define un conjunto de actividades de negociaci6n a1 prin-
riesgos antes de que se conviertan en problem8ticos. cipio de cada paso alrededor de la espiral. Mas que una
simple actividad de comunicacidn con el cliente, se defi-
nen las siguientes actividades:
M o d e h evoluiivos tom el modelo en espiral, son Identificaci6n del sistema o subsistemas clave de 10s
apmpiados, porticdonnente, para el desonolla de ctdirectivo~>>~.
sisternos orientados a obietos. Poro mbs detolles, vhse
lo Pork cuorto.
Determinaci6n de las cccondiciones de victoria,) de
10s directivos.
Pero a1 igual que otros paradigmas, el modelo en Negociaci6n de las condiciones de <<victoria>> de 10s
espiral no es la panacea. Puede resultar dificil conven- directivos para reunirlas en un conjunto de condi-
cer a grandes clientes (particularmente en situaciones ciones <<victoria-victoria,,para todos 10s afectados
bajo contrato) de que el enfoque evolutivo es controla- (incluyendo el equipo del proyecto de software).
ble. Requiere una considerable habilidad para la eva-
luaci6n del riesgo, y cuenta con esta habilidad para el
Cxito. Si un riesgo importante no es descubierto y ges-
tionado, indudablemente surgiran problemas. Final-
mente, el modelo no se ha utilizado tanto como 10s
paradigmas lineales secuenciales o de construcci6n de Hobilidodes de negociocibn
prototipos. Todavia tendrAn que pasar muchos aiios antes
de que se determine con absoluta certeza la eficacia de
este nuevo e importante paradigma. Conseguidos
- completamente estos pasos iniciales se
logra un resultado <<victoria-victoria,,,que sera el crite-
ria clave para continuar con la definici6n del sistema y
2.7.3. El modelo espiral WINWIN del software. El modelo en espiral WINWIN se ilustra
(Victoria8cVictoria) en la Figura 2.9.
El modelo en espiral tratado en la Seccion 2.7.2 sugie-
re una actividad del marco de trabajo que aborda la 2. ldentificar las
comunicaci6n con el cliente. El objetivo de esta activi- condiciones 3a. Reunir las condiciones
dad es mostrar 10s requisitos del cliente. En un contex-
to ideal, el desarrollador simplemente pregunta a1 cliente
lo que se necesita y el cliente proporciona detalles sufi-
cientes para continuar. Desgraciadamente, esto rara-
mente ocurre. En realidad el cliente y el desarrollador
entran en un proceso de negociacibn, donde el cliente
puede ser preguntado para sopesar la funcionalidad,ren-
dimiento, y otros productos o caractensticas del siste- del producto y del proceso,
ma frente a1 coste y a1 tiempo de comercializaci6n. definiciones incluyendo particiones.
del producto
y del proceso.
a$%
CLAVE FIGURA 2.9. El m o d e l o e n e s p i r a l WlNWlN [BOE981.
Lo obtencibn de requisitos del softwore requiere uno
negociaci6n. Tiene exito cuondo ombas portes (cganon)), Ademas del Cnfasis realizado en la negociaci6n ini-
cial, el modelo en espiral WINWIN introduce tres hitos
Las mejores negociaciones se esfuerzan en obtener7 en el proceso, llamados puntos defijacidn [BOE96],
<<victoria-victoria>>.
Esto es, el cliente gana obteniendo que ayudan a establecer la completitud de un ciclo alre-
el producto o sistema que satisface la mayor parte de dedor de la espiral y proporcionan hitos de decisi6n
sus necesidades y el desarrollador gana trabajando para antes de continuar el proyecto de software.
conseguir presupuestos y lograr una fecha de entrega En esencia, 10s puntos de fijaci6n representan tres
realista. visiones diferentes del progreso mientras que el pro-
Hay docenas de libros escritos sobre habilidades en la negocia- Un directivo e s alguien en la organization que tiene un interes
cion [p. ej., [FIS91], [DON96], [FAR97]].Es una de las cosas mas directo, por el negocio, en el sistema o producto a construir y puede
importantes que un ingeniero o gestor joven (o viejo) puede apren- ser premiado por un resultado con exito o criticado si el esfuerzo
der. Lea uno. falla.
C A P ~ T U 2L ~EL PROCESO
yecto recorre la espiral. El primer punto de fijacibn, des del usuario, las decisiones de la gestion y 10s resultados de
llamado objetivos del ciclo de vida (OCV), define un las revisiones.
conjunto de objetivos para cada actividad principal El modelo de proceso concurrente se puede repre-
de ingenieria del software. Como ejemplo, de una par- sentar en forma de esquema como una serie de acti-
te de OCV, un conjunto de objetivos asociados a la vidades tCcnicas importantes, tareas y estados
definici6n de 10s requisitos del producto/sistema del asociados a ellas. Por ejemplo, la actividad de inge-
nivel m6s alto. El segundo punto de fijacibn, llama- nieria definida para el modelo en espiral (Secci6n
do arquitectura del ciclo de vida (ACV), establece 10s 2.7.2), se lleva a cab0 invocando las tareas siguien-
objetivos que se deben conocer mientras que se defi- tes: modelado de construcci6n de prototipos y/o ani-
ne la arquitectura del software y el sistema. Como lisis, especificaci6n de requisitos y disefio'.
ejemplo, de una parte de la ACV, el equipo del pro-
La Figura 2.10 proporciona una representaci6n esque-
yecto de software debe demostrar que ha evaluado la
m5tica de una actividad dentro del modelo de proceso
funcionalidad de 10s componentes del software reuti-
concurrente. La actividad -an6lisis- se puede encon-
lizables y que ha considerado su impact0 en las deci-
trar en uno de 10s estados1° destacados anteriormente en
siones de arquitectura. La capacidad operativa inicial
cualquier momento dado. De forma similar, otras acti-
(COI) es el tercer punto de fijaci6n y representa un
vidades (por ejemplo: disefio o comunicaci6n con el
conjunto de objetivos asociados a la preparacidn del
cliente) se puede representar de una forma andoga.
software para la instalaci6n/distribucion, preparaci6n
Todas 1as actividades existen concurrentemente, per0
del lugar previamente a la instalaci6n, y la asistencia
residen en estados diferentes. Por ejemplo, a1 principio
precisada de todas las partes que utilizara o manten-
del proyecto la actividad de comunicacidn con el clien-
dr6 el software.
te (no mostrada en la figura) ha finalizado su primera
2.7.4. El modelo d e desarrollo concurrente iteracion y esta en el estado de cambios en esdera. La
actividad de analisis (que estaba en el estado ninguno
Davis y Sitaram [DAV94] han descrito el modelo de mientras que se iniciaba la comunicacion inicial con el
desarrollo concurrente, llamado algunas veces inge- cliente) ahora hace una transici6n a1 estado bajo desa-
nieria concurrente, de la forma siguiente: rrollo. Sin embargo, si el cliente indica que se deben
Los gestores de proyectos que siguen 10s pasos del estado hacer cambios en requisitos, la actividad ancilisis cam-
del proyecto en lo que se refiere a las fases importantes [del
ciclo de vida clisico] no tienen idea del estado de sus proyec-
bia del estado bajo desarrollo a1 estado cambios en
tos. Estos son ejemplos de un intento por seguir 10s pasos extre- espera.
madamente complejos de actividades mediante modelos El modelo de proceso concurrente define una serie
demasiado simples. Tenga en cuenta que aunque un proyecto de acontecimientos que dispararan transiciones de
[grande] estC en la fase de codificacion, hay personal de ese pro- estado a estado para cada una de las actividades de la
yecto implicado en actividades asociadas generalmente a muchas
fases de desarrollo simultineamente. Por ejemplo, ... El perso-
ingenieria del software. Por ejemplo, durante las pri-
nal esta escribiendo requisitos, disefiando, codificando, hacien- meras etapas del disefio, no se contempla una incon-
do pruebas y probando la integracion [todo a1 mismo tiempo]. sistencia del modelo de an6lisis. Esto genera la
Los modelos de procesos de ingenieria del software de Humph- correccidn del modelo de ancilisis de sucesos, que dis-
rey y Kellner [HUM89, KEL891 han mostrado la concurrencia parar6 la actividad de ancilisis del estado hecho a1
que existe para actividades que ocurren durante cualquier fase. estado cambios en espera.
El trabajo mis reciente de Kellner [KEL91] utiliza diagramas
de estado [una notacion que representa los estados de un pro- El modelo de proceso concurrente se utiliza a menu-
ceso] para representar la relacion concurrente que existe entre do como el paradigma de desarrollo de aplicaciones clien-
actividades asociadas a un acontecimiento especifico (por ejem- te/servidorl' (Capitulo 28). Un sistema cliente/servidor
plo: un cambio de requisitos durante el liltimo desarrollo), pero se compone de un conjunto de componentes funciona-
falla en capturar la riqueza de la concurrencia que existe en todas les. Cuando se aplica a cliente/servidor,el modelo de pro-
las actividades de desarrollo y de gestion del software en un
proyecto.. . La mayoria de 10s modelos de procesos de desarro-
ceso concurrente define actividades en dos dimensiones
110 del software son dirigidos por el tiempo; cuanto mas tarde [SHE94]: una dimension de sistemas y una dimension de
sea, mas atrBs se encontrara en el proceso de desarrollo. [Un componentes. Los aspectos del nivel de sistemas se &on-
modelo de proceso concurrente] esta dirigido por las necesida- tan mediante tres actividades: disefio, ensamblaje y u s ~ .
9 Se deberia destacar que el analisis y el diseiio son tareas comple- 'En aplicaciones cliente/servidor, la funcionalidad del software se
jas que requieren un estudio sustancial. Las Partes III y IV del libro divide entre clientes (normalmente PCs) y un sewidor (una ComPu-
consideran estos temas con mas detalle. tadora mas potente) que generalmente mantiene una base de datos
centralizada.
'O Un estado es algun modo extemamente observable del compor-
tamiento.
INGENIERfA DEL SOFTWARE. UN ENFOQUE PRACTICO
Las tecnologias de objetos (4.Varte de este libro) pro- La actividad de la ingenieria comienza con la iden-
porcionan el marco de trabajo tCcnico para un modelo tificacion de clases candidatas. Esto se lleva a cab0 exa-
de proceso basado en componentes para la ingenieria minando 10s datos que se van a manejar por parte de la
del software. El paradigma orientado a objetos enfati- aplicacion y el algoritmo que se va a aplicar para con-
za la creaci6n de clases que encapsulan tanto 10s datos seguir el tratamiento". Los datos y 10s algoritmos corres-
como 10s algoritmos que se utilizan para manejar 10s pondientes se empaquetan en una clase.
datos. Si se diseiian y se implementan adecuadamente, Las clases creadas en 10s proyectos de ingenieria del
las clases orientadas a objetos son reutilizables por las software anteriores, se almacenan en una biblioteca de
diferentes aplicaciones y arquitecturas de sistemas basa- clases o diccionario de datos (repository) (Capitulo 3 1).
dos en computadora. Una vez identificadas las clases candidatas, la biblioteca
de clases se examina para determinar si estas clases ya
existen. En caso de que asi fuera, se extraen de la biblio-
teca y se vuelven a utilizar. Si una clase candidata no resi-
de en la biblioteca, se aplican 10s mCtodos orientados a
objetos (Capitulos 21-23). Se compone asi la primera ite-
racidn de la aplicacidn a construirse, mediante las clases
extraidas de la biblioteca y las clases nuevas construidas
para cumplir las necesidades unicas de la aplicaci6n. El
flujo del proceso vuelve a la espiral y volveri a introdu-
cir por ultimo la iteraci6n ensambladora de componen-
tes a travCs de la actividad de ingeniena.
El modelo de desarrollo basado en componentes con-
FlGURA 2.11. Desarrollo basado en componentes. duce a la reutilizaci6n del software, y la reutilizaci6n pro-
porciona beneficios a 10s ingenieros de software. Segun
El modelo de desarrollo basado en componentes (Fig. estudios de reutilizaci6n, QSM Associates, Inc. informa
2.11) incorpora muchas de las caractensticas del mode- que el ensamblaje de componentes lleva a una reducci6n
lo en espiral. Es evolutivo por naturaleza [NIE92], y exi- del70 por 100 de tiempo de ciclo de desarrollo, un 84
ge un enfoque iterativo para la creacidn del software. por 100 del coste del proyecto y un indice de producti-
Sin embargo, el modelo de desarrollo basado en com- vidad de126.2, comparado con la norma de industria del
ponentes configura aplicaciones desde componentes pre- 16.9 [YOU94].Aunque estos resultados e s t h en funci6n
parados de software (llamados cclases>>en la Fig. 2.11). de la robustez de la biblioteca de componentes, no hay
duda de que el ensamblaje de componentes proporciona
ventajas significativas para 10s ingenieros de software.
El proceso unificado de desarrollo de software
[JAC99] representa un ndmero de modelos de desarro-
110 basados en componentes que han sido propuestos en
la industria. Utilizando el Lenguaje de Modelado Uni- to de vista del usuario). Entonces acopla la funci6n con
ficado (UML), el proceso unificado define 10s compo- un marco de trabajo arquitect6nico que identifica la for-
nentes que se utilizarin para construir el sistema y las ma que tomara el software.
interfaces que conectaran 10s componentes. Utilizando
una combinacion del desarrollo incremental e iterativo,
el proceso unificado define la funci6n del sistema apli- En los CapChrlos 21 y 22 se tmto UML con mbs &tone.
cando un enfoque basado en escenarios (desde el pun-
El modelo de mCtodos formales comprende un conjun- consiguiente permiten que el ingeniero del software des-
to de actividades que conducen a la especificaci6n mate- cubra y corrija errores que no se pudieron detectar de
matica del software de computadora. Los mCtodos otra manera.
formales permiten que un ingeniero de software espe- Aunque todavia no hay un enfoque establecido, 10s
cifique, desarrolle y verifique un sistema basado en com- modelos de mCtodos formales ofrecen la promesa de un
putadora aplicando una notaci6n rigurosa y matemhtica. software libre de defectos. Sin embargo, se ha hablado
Algunas organizaciones de desarrollo del software de una gran preocupaci6n sobre su aplicabilidad en un
actualmente aplican una variaci6n de este enfoque, lla- entorno de gesti6n:
mado ingenieria del software de sala limpia [MIL87, 1. El desarrollo de modelos formales actualmente es
DYE921. bastante caro y lleva mucho tiempo.
2. Se requiere un estudio detallado porque pocos res-
tos mbtodos formoles se trotan en 10s Coptulos 25 y 26. ponsables del desarrollo de software tienen 10s ante-
cedentes necesarios para aplicar mCtodos formales.
Cuando se utilizan mCtodos formales (Capitulos 25 3. Es dificil utilizar 10s modelos como un mecanismo
y 26) durante el desarrollo, proporcionan un mecanis- de comunicaci6n con clientes que no tienen muchos
mo para eliminar muchos de 10s problemas que son difi- conocimientos tCcnicos.
ciles de superar con paradigmas de la ingenieria del No obstante es posible que el enfoque a travCs de
software. La ambigiiedad, lo incompleto y la inconsis- mCtodos formales tenga mas partidarios entre 10s desa-
tencia se descubren y se corrigen mas facilmente -no rrolladores del software que deben construir software
mediante un revisi6n a prop6sito para el caso, sin0 de mucha seguridad (por ejemplo: 10s desarrolladores
mediante la aplicaci6n del analisis matemitic*. Cuan- de avi6nica y dispositivos mCdicos), y entre 10s desa-
do se utilizan mCtodos formales durante el disefio, sir- rrolladores que pasan grandes penurias econdmicas a1
ven corno base para la verificaci6n de programas y por aparecer errores de software.
El tCrmino tkcnicas de cuarta generacidn (T4G) abarca siguientes herramientas: lenguajes no procedimentales
un amplio espectro de herrarnientas de software que tie- de consulta a bases de datos, generaci6n de informes,
nen algo en comun: todas facilitan a1 ingeniero del soft- manejo de datos, interacci6n y definicidn de pantallas,
ware la especificaci6n de algunas caracteristicas del generaci6n de cbdigos, capacidades graficas de alto nivel
software a alto nivel. Luego, la herrarnienta genera auto- y capacidades de hoja de chlculo, y generaci6n auto-
maticamente el c6digo fuente basandose en la especifi- matizada de HTML y lenguajes similares utilizados para
caci6n del tCcnico. Cada vez parece mas evidente que la creaci6n de sitios web usando herramientas de soft-
cuanto mayor sea el nivel en el que se especifique el ware avanzado. Inicialmente, muchas de estas herra-
software, mas rhpido se podra construir el programa. El mientas estaban disponibles, per0 s610 para hmbitos de
paradigma T4G para la ingenieria del software se orien- aplicaci6n muy especificos, per0 actualmente 10s entor-
ta hacia la posibilidad de especificar el software usan- nos T4G se han extendido a todas las categorias de apli-
do formas de lenguaje especializado o notaciones caciones del software.
graficas que describa el problema que hay que resolver A1 igual que otros paradigmas, T4G comienza con
en tCrminos que 10s entienda el cliente. Actualmente, el paso de reuni6n de requisitos. Idealmente, el cliente
un entorno para el desarrollo de software que soporte describe 10s requisitos, que son, a continuaci6n, tradu-
el paradigma T4G puede incluir todas o algunas de las cidos directamente a un prototipo operativo. Sin embar-
I N G E l l E R f A DEL SOFTWARE. U N ENFOQUE PRACTICO
go, en la prictica no se puede hacer eso. El cliente pue- que facilite la realizacidn del mantenimiento de forma
.de que no estC seguro de lo que necesita; puede ser ambi- expeditiva.
guo en la especificacidn de hechos que le son conocidos, A1 igual que todos 10s paradigmas del software, el
y puede que no sea capaz o no estC dispuesto a especi- modelo T4G tiene ventajas e inconvenientes.Los defen-
ficar la informacidn en la forma en que puede aceptar sores aducen reducciones dristicas en el tiempo de desa-
una herramienta T4G. Por esta razdn, el diilogo clien- rrollo del software y una mejora significativa en la
te-desarrollador descrito por 10s otros paradigmas sigue productividad de la gente que construye el software.
siendo una parte esencial del enfoque T4G. Los detractores aducen que las herramientas actuales
de T4G no son mis fficiles de utilizar que 10s lenguajes
de programacidn, que el cddigo fuente producido por
tales herramientas es ccineficiente>>y que el manteni-
lncluso cuondo utilice uno T4G, tiene que destocor miento de grandes sistemas de software desarrollados
clorornente lo ingenieria del sohore hociendo el on~lisis, mediante T4G es cuestionable.
el diserio y 10s pruebos. Hay algun mCrito en lo que se refiere a indicaciones
de ambos lados y es posible resumir el estado actual de
Para aplicaciones pequefias, se puede ir directamen- 10s enfoques de T4G:
te desde el paso de recoleccidn de requisitos a1 paso de El uso de T4G es un enfoque viable para muchas de
implementacidn, usando un lenguaje de cuarta genera- las diferentes ireas de aplicacidn. Junto con las herra-
cidn no procedimental (L4G) o un modelo comprimi- mientas de ingenieria de software asistida por com-
do de red de iconos grificos. Sin embargo, es necesario putadora (CASE) y 10s generadores de cddigo, T4G
un mayor esfuerzo para desarrollar una estrategia de ofrece una solucidn fiable a muchos problemas del
diseAo para el sistema, incluso si se utiliza un L4G. El software.
uso de T4G sin disefio (para grandes proyectos) causa- Los datos recogidos en compafiias que usan T4G
rfi las mismas dificultades (poca calidad, mantenimien- parecen indicar que el tiempo requerido para produ-
to pobre, mala aceptacidn por el cliente) que se cir software se reduce mucho para aplicaciones
encuentran cuando se desarrolla software mediante 10s pequefias y de tamafio medio, y que la cantidad de
enfoques convencionales. anfilisis y disefio para las aplicaciones pequefias tam-
La implementacidn mediante L4G permite, a1 que biCn se reduce.
desarrolla el software, centrarse en la representacidn de
10s resultados deseados, que es lo que se traduce auto- Sin embargo, el uso de T4G para grandes trabajos de
mfiticamente en un cddigo fuente que produce dichos desarrollo de software exige el mismo o mis tiempo
resultados. Obviamente, debe existir una estructura de de anilisis, disefio y prueba (actividades de ingenie-
datos con informacidn relevante y a la que el LAG pue- ria del software), para lograr un ahorro sustancial de
da acceder ripidamente. tiempo que puede conseguirse mediante la elimina-
Para transformar una implementacidn T4G en un cidn de la codificacidn.
producto, el que lo desarrolla debe dirigir una prueba Resumiendo, las tCcnicas de cuarta generacidn ya se
completa, desarrollar con sentido una documentacidn han convertido en una parte importante del desarrollo
y ejecutar el resto de las actividades de integracidn que de software. Cuando se combinan con enfoques de
son tambiCn requeridas requeridas por otros paradig- ensamblaje de componentes (Seccidn 2.8), el paradig-
mas de ingenieria del software. Ademis, el software ma T4G se puede convertir en el enfoque dominante
desarrollado con T4G debe ser construido de forma hacia el desarrollo del software.
Los modelos de procesos tratados en las secciones ante- cidn tratadas en la Seccidn 2.3. El modelo, presentado
riores se deben adaptar para utilizarse por el equipo del normalmente como una red, se puede analizar para deter-
proyecto del software. Para conseguirlo, se han desarro- minar el flujo de trabajo tipico y para examinar estruc-
llado herramientas de tecnologia de procesos para ayudar turas altemativas de procesos que pudieran llevar a un
a organizaciones de software a analizar 10s procesos actua- tiempo o coste de desarrollo reducidos.
les, organizar tareas de trabajo, controlar y supervisar el Una vez que se ha creado un proceso aceptable, se
progreso y gestionar la calidad tCcnica [BAN95]. pueden utilizar otras herramientas de tecnologia de pro-
Las herramientas de tecnologia de procesos permi- cesos para asignar, supervisar e incluso controlar todas
ten que una organizacidn de software construya un las tareas de ingenieria del software definidas como par-
modelo automatizado del marco de trabajo comun de te del modelo de proceso. Cada uno de 10s miembros
proceso, conjuntos de tareas y actividades de protec- de un equipo de proyecto de software puede utilizar tales
I N G E N I E R ~ ADEL SOFTWARE. U N ENFOQUE PRACTICO
[BAE98] Baetjer, H., Jr., Software as Capital, IEEE Compu- 11th lntl. Conference on Software Engineering, IEEE Com-
ter Society Press, 1998, p. 85. puter Society Press, pp. 331-342.
[BAN951 Bandinelli, S. et al, {{Modelingand Improving an [IEE93] IEEE Standards Collection: Software Engineering,
Industrial Software Process,,, IEEE Trans. Software Engi- IEEE Standard 6 10.12-1990, IEEE, 1993.
neering, vol. 21, n.", Mayo 1995, pp. 440-454. [JAC99] Jacobson, I., G. Booch y J. Rumbaugh, The Unified
[BRA941 Bradac, M., D. Perry y L. Votta, pro to typing a Pro- Software Developement Proccess, Addison-Wesley, 1999.
cess Monitoring Experiment", IEEE Trans. Software Engi-
[KEL89] Kellner, M., Software Process Modeling: Value and
neering, vol. 20, n."O, Octubre 1994, pp. 774-784.
Experience, SEI Technical Review- 1989, SEI, Pittsburgh,
[BOE88] Boehm, B., ccA Spiral Model for Software Develo- PA, 1989.
pement and Enhancement", Computer, vol. 21, n." 5, Mayo
1988, pp. 61-72. [KEL91] Kellner, M., ccsoftware Process Modeling Support
for Management Planning and Control,,, Proc. 1st Intl.
[BOE96] Boehm, B., <<Anchoringthe Software Pocess,,, IEEE Conf, On the Software Process, IEEE Computer Society
Software, vol. 13, n."4, Julio 1996, pp.73-82. Press, 1991, pp. 8-28.
[BOE98] Boehm, B., <<Usingthe WINWIN Spiral Model: A [KER94] Ken; J., y R. Hunter, Inside RAD, McGraw-Hill, 1994.
Case Study,,, Computer, vol. 31, n."7, Julio 1998, pp. 33-
44. [MAR911 Martin, J., Rapid Aplication Developement, Pren-
tice-Hall, 1991.
[BR075] Brooks, F., The Mytical Man-Month, Addison-Wes-
ley, 1975. [MDE93] McDermid, J. y P. Rook, ccsoftware Developement
Process Models,,, en Software Ingineer's Reference Book,
[BUT941 Butler, J., <<RapidAplication Developement in CRC Press, 1993, pp. 15126-15128.
Action,,, Managing System Developement, Applied Com-
puter Research, vol. 14, n." 5, Mayo 1995, pp. 6-8. [MIL871 Mills, H.D., M. Dyer y R. Linger, ccclearoom Soft-
ware Engineering,,, IEEE Software, Septiembre 1987, pp.
[DAV94] Davis, A., y P. Sitaram, ccA Concurrent Process 19-25.
Model for Software Developement,,, Software Enginee-
ring Notes, ACM Press, vol. 19, n." 2, Abril 1994, pp. 38- [NAU69] Naur, P., y B. Randall (eds.), Software Engineering:
5 1. A Report on a Conference sponsored by the NATO Scien-
ce Committee, NATO, 1969.
[DAV95] Davis, M.J., ccprocess and Product: Dichotomy or
Duality,,, Software Engineering Notes, ACM Press, vol. [NIE92] Nierstrasz, <Component-Oriented Software Deve-
20, n." 2, Abril 1995, pp. 17- 18. lopement,,, CACM, vol. 35, n." 9, Septiembre 1992, pp.
160-165.
[DON961 Donaldson, M.C., y M. Donaldson, Negotiating for
Dummies, IDB Books Worldwide, 1996. [PAU93] Paulk, M., et al., cccapability Maturity Model for
[DYE921 Dyer, M., The Cleanroom Approach to Quality Soft- Software,,, Software Engineering Institute, Carnegie
ware Developement, Wiley, 1992. Mellon University, Pittsburgh, PA, 1993.
[FAR971 Farber, D.C., Common Sense Negotiation: The Art [RAC95] Raccoon, L.B.S, <<TheChaos Model and the Chaos
of Winning Gracefully, Bay Press, 1997. Life Cycle,,, ACM Software Engineering Notes, vol. 20,
n." , Enero 1995, pp. 55-66.
[FIS91] Fisher, R., W. Ury y Bruce Patton, Getting to Yes:
Negotiating Agreement Without Giving In, 2." ed., Penguin [ROY701Royce, W.W., <<Managingthe Developement of Large
USA, 199 1. Software Systems: Concepts and Techniques,,, Proc. WES-
CON, Agosto 1970.
[GIL88] Gilb, T., Principles of Software Engineering Mana-
gement, Addison-Wesley, 1988. [SHE941 Sheleg, W., ccConcurrent Engineering: A New Para-
dign for CIS Developement,,, Application Developement
[HAN95] Hanna, M., <<Farewellto Waterfalls,,, Software Trends, vol. 1, n." 6, Junio 1994, pp. 28-33.
Magazine, Mayo 1995, pp.38-46.
[YOU941 Yourdon, E., ccsoftware Reuse,,, Application Deve-
[HUM891 Humphrey, W., y M. Kellner, c<SoftwareProcess lopement Strategies, vol. VI, n." 12, Diciembre 1994, pp.
Modeling: Principles of Entity Process Models,,, Proc. 1-16.
2.1. La Figura 2.1 sitda las tres capas de ingenieria del soft- 2.2. hay algun caso en que no se apliquen fases genCricas
ware encima de la capa titulada ccenfoque de calidad,,. Esto del proceso de ingenieria del software? Si es asi, describalo.
implica un programa de calidad tal como Gestidn de Cali- 2.3. El Modelo Avanzado de Capacidad del SEI es un docu-
dad Total. Investigue y desarrolle un esquema de 10s prin- mento en evoluci6n. Investigue y determine si se han aiia-
cipios clave de un programa de Gesti6n de Calidad Total. dido algunas ACP nuevas desde la publicaci6n de este libro.
C A P ~ T U L O2 EL PROCESO
2.4. El modelo del caos sugiere que un bucle de resoluci6n de 2.8. Proponga un proyecto especifico de software que sea ade-
problemas se pueda aplicar en cualquier grado de resolucibn. cuado para el modelo incremental. Presente un escenario para
Estudie la forma en que se aplicaria el bucle (1) para com- aplicar el modelo a1 software.
prender 10s requisitos de un producto de tratamiento de texto; 2.9. A medida que vaya hacia afuera por el modelo en espiral,
(2) para desarrollar un componente de correccidn ortogrifica iquC puede decir del software que se esth desarrollando o man-
y gramitica avanzado para el procesador de texto; (3) para teniendo?
generar el c6digo para un m6dulo de programa que determi-
ne el sujeto, predicado y objeto de una oraci6n en inglCs. 2.10. Muchas personas creen que la h i c a forma en la que se
van a lograr mejoras de magnitud en la calidad del software y
2.5. ~ Q u Cparadigmas de ingeniena del software de 10s presen- en su productividad es a travCs del desarrollo basado en com-
tados en este capitulo piensa que sena el mis eficaz? iPor quC?
ponentes. Encuentre tres o cuatro articulos recientes sobre el
2.6. Proporcione cinco ejemplos de proyectos de desarrollo asunto y resdmalos para la clase.
del software que Sean adecuados para construir prototipos.
2.11. Describa el modelo de desarrollo concurrente con sus
Nombre dos o tres aplicaciones que fueran mis dificiles para
propias palabras.
construir prototipos.
2.12. Proporcione tres ejemplos de tCcnicas de cuarta genera-
2.7. El modelo DRA a menudo se une a herramientas CASE.
ci6n.
Investigue la literatura y proporcione un resumen de una herra-
mienta tipica CASE que soporte DRA. 2.13. iQuC es mis importante, el producto o el proceso?
El estado actual del arte en la ingenieria del software se puede controvertidos y amenos sobre el software y el proceso de la
determinar mejor a partir de publicaciones mensuales tales como ingenieria del software. Pressman y Herron (Sofhare Shock,
IEEE Software, Computer e IEEE Transactions on Software Dorset House, 1991) consideran el software y su impact0
Engineering. Peri6dicos sobre la industria tales como Applica- sobre particulares, empresas y el gobiemo.
tion Developement Trends, Cutter ITJournal y Software Deve- El Instituto de ingenieria del software (11s localizado en
lopement a menudo contienen articulos sobre temas de ingenieria la Universidad de Carnegie-Mellon) ha sido creado con la
del software. La disci~linase <<resume>> cada aiio en el Proce- responsabilidad de promocionar series monogrificas sobre
eding of the International Conference on Software Engineering, la ingenieria del software. Los profesionales acadCmicos,
promocionado por el IEEE y ACM y tratado en profundidad en en la industria y el gobierno estin contribuyendo con nue-
peribdicos como ACM Transactions on Software Engineering vos trabajos importantes. El Consorcio de Productividad del
and Methodology, ACM Software Engineering Notes y Annals Software dirige una investigaci6n adicional de ingenieria
of Software Engineering. de software.
Se han publicado muchos libros de ingenieria del softwa- En la ultima dCcada se ha publicado una gran variedad de
re en 10s ultimos afios. Algunos presentan una visi6n general est6ndares y procedimientos de ingenieria del software. El IEEE
del proceso entero mientras que otros se dedican a unos pocos Software Engineering Standards contiene muchos esthndares
temas importantes para la exclusi6n de otros. Las siguientes diferentes que abarcan casi todos 10s aspectos importantes de
son tres antologias que abarcan algunos temas importantes la tecnologia. Las directrices I S 0 9000-3 proporcionan una
de ingenieria del software: guia para las organizacionesde software que requieren un regis-
Keyes, J. (ed.), Software Engineering Productivity Hund- tro en el estandar de calidad I S 0 9001. Otros estindares de
book, McGraw-Hill, 1993. ingenieria del software se pueden obtener desde el MOD, la
McDermid, J. (ed.), Software Engineer's Reference Book, Autoridad Civil de Aviacidn y otras agencias del gobiemo y
CRC Press, 1993. sin inimo de lucro. Fairclough (Software Engineering Guides,
Marchiniak, J.J. (ed.), Encyclopedia of Software Engine- Prentice-Hall, 1996) proporciona una referencia detallada de
ering, Wiley, 1994. 10s estindares de ingenieria del software producidos por Euro-
Gautier (Distributed Engineering of Sofmare, Prentice- pean Space Agency (ESA).
Hall, 1996) proporciona sugerencias y directrices para orga- En internet se dispone de una gran variedad de fuentes de
nizaciones que deban desarrollar software en lugares informaci6n sobre la ingenieria del software y del proceso de
geograficamente distantes. software. Se puede encontrar una lista actualizada con refe-
En la parte mis brillante del libro de Robert Glass (Soft- rencias a sitios (p8ginas) web que son relevantes para el pro-
ware conflict, Yourdon Press, 1991) se presentan ensayos ceso del software en http://www.pressman5.com.
I N G E N ~ E R ~DEL
A SOFTWARE. UN ENFOQUE PRACTICO
3.1.3. Proceso
Un proceso de software (Capitulo 2) proporciona la
estructura desde la que se puede establecer un detalla-
do plan para el desarrollo del software. Un pequeiio
El modelo de madurez de gesti6n de personal defi- nlimero de actividades estructurales se puede aplicar a
ne las siguientes areas clave pr8cticas para el personal todos 10s proyectos de software, sin tener en cuenta su
que desarrolla software: reclutamiento, selection, ges- tamafio o complejidad. Diferentes conjuntos de tareas
tion de rendimiento, entrenamiento, retribucion, desa- -tareas, hitos, productos del trabajo y puntos de garan-
rrollo de la carrera, disefio de la organizaci6n y del tia de calidad- permiten a las actividades estructura-
trabajo y desarrollo cultural y de espiritu de equipo. les adaptarse a las caracteristicas del proyecto de
El MMCGP es compaiiero del modelo de madurez software y a 10s requisitos del equipo del proyecto. Figal-
de la capacidad software (Capitulo 2), que guia a las mente, las actividades protectoras -tales como garan-
organizaciones en la creaci6n de un proceso de software tia de calidad del software, gestidn de la configuracidn
maduro. Mas adelante en este capitulo se consideran del software y medicion- cubren el modelo de proce-
aspectos asociados a la gesti6n de personal y estructu- so. Las actividades protectoras son independientes de
ras para proyectos de software. las estructurales y tienen lugar a lo largo del proceso.
En un estudio publicado por el IEEE [CUR881 se les del software, damos este aspect0 por descontado. Los
pregunt6 a 10s vicepresidentes ingenieros de tres gran- gestores argumentan (corno el grupo anterior) que el
des compaiiias tecnologicas sobre el factor mas impor- personal es algo primario, per0 10s hechos desmienten
tante que contribuye a1 Cxito de un proyecto de software. a veces sus palabras.
Respondieron de la siguiente manera: En esta section exarninamos 10s participantes que cola-
VP I: Supongo que si tuviera que elegir lo mis importante boran en el proceso del software y la manera en que se
de nuestro entorno de trabajo, diria que no son las organizan para realizar una ingenieria del software eficaz.
herramientas que empleamos, es la gente.
VP 2: El ingrediente mis importante que contribuyo a1 exi- 3.2.1. Los participantes
to de este proyecto h e tener gente lista ... pocas cosas
mas importan en mi opinion ... Lo mis importante El proceso del software (y todos 10s proyectos de soft-
que se puede hacer por un proyecto es seleccionar el ware) lo componen participantes que pueden clasificarse
personal ... El exit0 de la organization de desarrollo en una de estas cinco categorias:
del software esta muy, muy asociado con la habili-
dad de reclutar buenos profesionales.
Gestores superiores, que definen 10s aspectos de
negocios que a menudo tienen una significativa
VP 3: La unica regla que tengo en cuanto a la gestion influencia en el proyecto.
es asegurarme de que tengo buenos profesionales
-gente realmente buena-, de que preparo bue- Gestores (te'cnicos)del proyecto, que deben planifi-
na gente y de que proporciono el entorno en el car, motivar, organizar y controlar a 10s profesiona-
que 10s buenos profesionales puedan producir. les que realizan el trabajo de software.
Profesionales, que proporcionan las capacidades tdc-
nicas necesarias para la ingenieria de un producto o
aplicacion.
sensiblemente Clientes, que especifican 10s requisitos para la inge-
largo prosperorin. nieria del software y otros elementos que tienen
menor influencia en el resultado.
Usuariosfinales, que interaccionan con el software
Ciertamente, Cste es un testimonio convincente sobre una vez que se ha entregado para la produccion.
la importancia del personal en el proceso de ingenieria Para ser eficaz, el equipo del proyecto debe organizarse
del software. Y, sin embargo, todos nosotros, desde 10s de manera que maximice las habilidades y capacidades
veteranos vicepresidentes a1 m8s modesto profesional de cada persona. Y este es el trabajo del jefe del equipo.
3.2.2. Los jefes d e equipo Incentivos por logros. Para optimizar la productividad de
un equipo de proyecto, un gestor debe recompensar la inicia-
La gestidn de un proyecto es una actividad intensamente tiva y 10s logros, y demostrar a travks de sus propias acciones
humana, y por esta razdn, 10s profesionales competen- que no se penalizarh si se corren riesgos controlados.
tes del software a menudo no son buenos jefes de equi- Influencia y construcci6n de esplritu de equipo. Un ges-
po. Simplemente no tienen la mezcla adecuada de tor de proyecto eficiente debe ser capaz de ccleer* a la gente;
capacidades del personal. Y sin embargo, como dice debe ser capaz de entender setiales verbales y no verbales y
Edgemon: ccDesafortunadamente y con demasiada fre- reaccionar ante las necesidades de las personas que mandan
cuencia, hay individuos que terminan en la gestidn de esas setiales. El gestor debe mantener el control en situaciones
proyectos y se convierten en gestores de proyecto acci- de gran estres.
dentales>>[EDG95].
una gran evidencia que indica que una organizaci6n de jar problemas sencillos. Los equipos descentralizados
equipo formal (opci6n 3) es la mas productiva. generan rnis y mejores soluciones que 10s individua-
La ccmejor,, estructura de equipo depende del esti- les. Por tanto, estos equipos tienen rnis probabilidades
lo de gesti6n de una organizaci6n, el numero de per- de Cxito en la resoluci6n de problemas complejos. Pues-
sonas que compondri el equipo, sus niveles de to que el equipo DC es centralizado para la resoluci6n
preparaci6n y la dificultad general del problema. Man- de problemas, tanto el organigrama de equipo DC como
tei [MAN811 sugiere tres organigramas de equipo el de CC pueden aplicarse con Cxito para problemas
genCricos: sencillos. La estructura DD es la mejor para problemas
Descentralizado democratic0 (DD). Este equipo de dificiles.
ingenieria del software no tiene un jefe permanente. Mis Como el rendimiento de un equipo es inversamente
bien, ccse nombran coordinadores de tareas a corto plazo y proporcional a la cantidad de comunicaci6n que se debe
se sustituyen por otros para diferentes tareas,. Las deci- entablar, 10s proyectos muy grandes son mejor dirigi-
siones sobre problemas y 10s enfoques se hacen por con- dos por equipos con estructura CC o DC, donde se pue-
senso del grupo. La comunicaci6n entre 10s miembros del
equipo es horizontal. den formar ficilmente subgrupos.
El tiempo que 10s miembros del equipo vayan a
ccvivir juntos,, afecta a la moral del equipo. Se ha des-
iComo deberia estar cubierto que 10s organigramas de equipo tipo DD pro-
organizado un equipo
ducen una moral m i s alta y rnis satisfacci6n por el
de software?
trabajo y son, por tanto, buenos para equipos que per-
manecerin juntos durante mucho tiempo.
Descentralizado controlado (DC). Este equipo de inge- El organigrama de equipo DD se aplica mejor a pro-
nien'a del software tiene un jefe definido que coordina tare- blemas con modularidad relativamente baja, debido a
as especificas y jefes secundarios que tienen responsabilidades
sobre subtareas. La resoluci6n de problemas sigue siendo la gran cantidad de comunicaci6n que se necesita. Los
una actividad del grupo, pero la implernentacion de solu- organigramas CC o DC funcionan bien cuando es posi-
ciones se reparte entre subgrupos por el jefe de equipo. La ble una modularidad alta (y la gente puede hacer cada
comunicacion entre subgrupos e individuos es horizontal. uno lo suyo).
Tambien hay comunicacion vertical a lo largo de la jerarquia
de control.
Centralizado controlado (CC). El jefe del equipo se
encarga de la resoluci6n de problemas a alto nivel y la coor-
dinacion intema del equipo. La comunicaci6n entre el jefe y Frecuentemente es mejor tener pocos equipos pequeios,
10s miembros del equipo es vertical. bien centrodos que un gron equipo solomente.
Mantei [MAN811 describe siete factores de un pro-
yecto que deberian considerarse cuando se planifica el Los equipos CC y DC producen menos defectos que
organigrama de equipos de ingenieria del software: 10s equipos DD, per0 estos datos tienen mucho que ver
la dificultad del problema que hay que resolver con las actividades especificas de garantia de calidad
el tamafio del programa(s) resultante(s) en lineas de que aplica el equipo. Los equipos descentralizados
c6digo o puntos de funci6n (Capitulo 4) requieren generalmente mis tiempo para completar un
proyecto que un organigrama centralizado y a1 mismo
el tiempo que el equipo estari junto (tiempo de vida
tiempo son mejores cuando se precisa una gran canti-
del equipo)
dad de comunicaci6n.
el grado en que el problema puede ser modulari- Constantine [CON931 sugiere cuatro ccparadigmas
zado de organizaci6n~para equipos de ingenieria del soft-
ware:
iQue factores Un paradigma cerrado estructura a un equipo con
deberiamos considerar una jerarquia tradicional de autoridad (similar a1
cuando estruduramos equipo CC). Estos equipos trabajan bien cuando pro-
un equipo de software? ducen software similar a otros anteriores, per0 pro-
bablemente Sean menos innovadores cuando trabajen
dentro de un paradigma cerrado.
la calidad requerida y fiabilidad del sistema que se
va a construir El paradigma aleatorio estructura a1 equipo libre-
la rigidez de la fecha de entrega mente y depende de la iniciativa individual de 10s
miembros del equipo. Cuando se requiere innova-
el grado de sociabilidad (comunicaci6n) requerido ci6n o avances tecnol6gicos, 10s equipos de para-
para el proyecto digma aleatorio son excelentes. Pero estos equipos
Debido a que una estructura centralizada realiza las pueden chocar cuando se requiere un ccrendimiento
tareas rnis ripidamente, es la rnis adecuada para mane- ordenadon.
I N G E N I E R ~ ADEL SOFTWARE. UN ENFOQUE P R h C T l C O
3. El paradigma abierto intenta estructurar a un equipo nen una definicion comun de Cxito o un espiritu de equi-
. de manera que consiga algunos de 10s controles aso- po identificable. Lo que falta es un fenomeno que deno-
minan~oscuajar-.
ciados con el paradigma cerrado, per0 tambien
mucha de la innovacion que tiene lugar cuando se Un equipo cuajado es un grupo de gente tejido tan fuer-
utiliza el paradigma aleatorio. El trabajo se desa- temente que el todo es mayor que la suma de las partes ...
rrolla en colaboracion, con mucha comunicacion y Una vez que el equipo empieza a cuajar, la probabilidad
toma de decisiones consensuadas y con el sello de de Cxito empieza a subir. El equipo puede convertirse en
imparable. un monstruo de Cxito ... No necesitan ser dirigi-
10s equipos de paradigma abierto. Los organigra-
dos de una manera traditional y no necesitan que se les moti-
mas de equipo de paradigma abierto son adecuados ve. Estrin en su gran momento.
para la resolucion de problemas complejos, per0
pueden no tener un rendimiento tan eficiente como DeMarco y Lister mantienen que 10s miembros de
otros equipos. equipos cuajados son significativamente mhs pro-
ductivos y estan mas motivados que la media. Com-
parten una meta comun, una cultura comun y, en
muchos casos, un ccsentimiento elitists,, que les hace
unicos.
Pero no todos 10s equipos cuajan. De hecho, muchos
equipos sufren lo que Jackman llama cctoxicidad de equi-
p ~ >[JAC98]
> define cinco factores que ccfomentan un
entomo de equipo toxico potenciab:
4. El paradigma sincronizado se basa en la comparti-
mentacion natural de un problema y organiza 10s
miembros del equipo para trabajar en partes del pro-
blema con poca comunicacion activa entre ellos.
Constantine [CON931 propone una variacion en el
equipo descentralizado democrhtico defendiendo a 10s
equipos con independencia creativa cuyo enfoque de
trabajo podria ser mejor llamado ccanarquia innova-
dora,,. Aunque se haya apelado a1 enfoque de libre una atmosfera de trabajo frenetica en la que 10s
espiritu para el desarrollo del software, el objetivo miembros del equipo gastan energia y se descentran
principal de una organizaci6n de Ingenieria del Soft- de 10s objetivos del trabajo a desarrollar;
ware debe ser ccconvertir el caos en un equipo de alto
alta frustracion causada por factores tecnologicos,
rendimienton [HYM93]. Para conseguir un equipo de
del negocio, o personales que provocan friction entre
alto rendimiento.
10s miembros del equipo;
Los miembros del equipo deben confiar unos en
otros. ccprocedimientos coordinados pobremente o frag-
mentadom o una definicion pobre o impropiamente
La distribuci6n de habilidades debe adecuarse a1 pro- elegida del modelo de procesos que se convierte en
blema. un obstaculo a saltar;
Para mantener la uni6n del equipo, 10s inconformis- definicion confusa de 10s papeles a desempefiar pro-
tas tienen que ser excluidos del mismo duciendo una falta de responsabilidad y la acusacion
Cualquiera que sea la organizacion del equipo, el correspondiente, y
objetivo para todos 10s gestores de proyecto es colabo- cccontinua y repetida exposicion a1 fallo>>que con-
rar a crear un equipo que presente cohesion. En su libro, duce a una pdrdida de confianza y a una caida de la
Peopleware, DeMarco y Lister [DEM98] estudian este moral.
aspecto:
Jackman sugiere varios antitoxicos que tratan 10s
problemas comunes destacados anteriormente.
Para evitar un entorno de trabajo frenetico, el
gestor de proyectos deberia estar seguro de que el
El popel del bibliotecario existe sin tener en cuentu
la m c t u m del equipo. Pam m6s detotles veose
equipo tiene acceso a toda la informaci6n requerida
el Capltulo 9. para hacer el trabajo y que 10s objetivos y metas prin-
cipales, una vez definidos, no deberian modificarse a
menos que fuese absolutamente necesario. Ademas,
las malas noticias no deberian guardarse en secreto,
Tendemos a usar la palabra equipo demasiado libre-
mente en el mundo de los negocios, denominando ccequi- sino entregarse a1 equipo tan pronto como fuese posi-
PO>> a cualquier grupo de gente asignado para trabajar junta. ble (mientras haya tiempo para reaccionar de un mod0
Pero muchos de estos grupos no parecen equipos. No tie- racional y controlado).
C A P ~ T U L O3 CONCEPTOS SOBRE G E S T I ~ N
DE PROYECTOS
Las revisiones tecnicas formales s e tratan con detalle e n el Capi- Se puede encontrar una excelente introduccibn a estos temas rela-
tulo 8. cionados con 10s equipos de proyectos de sottware en [FER98]
INGENlERfA DEL SOFTWARE. U N ENFOQUE PRACTICO
~ C O toordinar
~ O
las attiones de 10s miembros
del equipo?
I
rn Enfoque impersonal, formal Para valorar la eficacia de estas tCcnicas para la coor-
Procedimiento interpersonal, formal
o Procedimiento interpersonal, informal
dinaci6n de proyectos, Kraul y Streeter estudiaron 65
0 Comunicacion electronica
proyectos de software con cientos de personas implica-
a R e d interpersonal das. La Figura 3.1 (adaptada de [KRA95]) expresa el
valor y empleo de las tCcnicas de coordinaci6n apunta-
das anteriormente. En la figura, el valor percibido (cla-
FIGURA 3.1. Valor y empleo de tecnicas de coordinacion sificado en una escala de siete puntos) de varias tCcnicas
y comunicacion. de comunicacidn y coordinaci6n es contrastado con su
frecuencia de empleo en un proyecto. Las tCcnicas situa-
Kraul y Streeter [KRA95] examinan una colecci6n
das por encima de la linea de regresi6n fueron cjuzga-
de tCcnicas de coordinaci6n de proyectos que se cate- das como relativamente valiosas, dado la cantidad de
gorizan de la siguiente manera: veces que se ernplearon,, [KRA95]. Las tdcnicas situa-
Formal, enfoque impersonal. Incluyen documentos de das por debajo de la linea se consideraron de menor valor.
ingenieria del software y entregas (incluyendo el codigo fuen- Es interesante resaltar que las redes interpersonales fue-
te), memorandos tCcnicos, hitos del proyecto, planificacio-
nes del programa y herramientas de control del proyecto ron catalogadas como las tCcnicas de mayor valor de
(Capitulo 7), peticiones de cambios y docurnentacion relati- coordinaci6n y de.comunicaci6n. Es tambiCn importan-
va (Capitulo 9), informes de seguimiento de errores e infor- te hacer notar que 10s primeros rnecanismos de garantia
maci6n almacenada (Capitulo 3 1). de calidad del software (requisitos y revisiones de dise-
Formal, procedimientos interpersonales. Se centra en Ao) parecieron tener mas valor que evaluaciones poste-
las actividades de garantia de calidad (Capitulo 8) aplicada riores de codigo fuente (inspecciones de c6digo).
Objetivos de informacion. jQuC objetos de datos Las funciones del software, descritas en la exposi-
visibles a1 cliente (Capitulo 11) se obtienen del softwa- ci6n del timbito, se evaluan y refinan para proporcionar
re? jQuC objetos de datos son requeridos de entrada? mas detalle antes del comienzo de la estimaci6n (Capi-
Funcion y rendimiento. jQuC funcion realiza el tulo 5). Puesto que ambos, el coste y las estimaciones
software para transformar la informacion de entra- de la planificaci6n temporal, estan orientados funcio-
da en una salida? hay caracteristicas de rendimiento nalmente; un pequeiio grado de descomposici6n suele
especiales que abordar? ser util.
El imbito de un proyecto de software debe ser uni- Por ejemplo, considere un proyecto que construira
voco y entendible a niveles de gesti6n y tCcnico. Los un nuevo procesador de textos. Entre las caracteristicas
enunciados del Ambito del software deben estar deli- peculiares del producto estfin: la introducci6n de infor-
maci6n a travCs de la voz asi como del teclado; carac-
mitados.
Es decir, 10s datos cuantitativos (por ejemplo: nume- teristicas extremadamente sofisticadas de ccedici6n
ro de usuarios simultfineos, tamaiio de la lista de correo, autornatica de copia),; capacidad de diseiio de phgina;
miximo tiempo de respuesta permitido) se establecen indexaci6n automatica y tabla de contenido, y otras. El
explicitamente; se anotan las limitaciones (por ejemplo: gestor del proyecto debe establecer primer0 la exposi-
el coste del producto limita el tamafio de la memoria) y ci6n del ambit0 que delimita estas caracteristicas (asi
se describen 10s factores de reducci6n de riesgos (por como otras funciones mas normales, como edicibn,
ejemplo: 10s algoritmos deseados se entienden muy bien administraci6n de archivos, generacidn de documen-
si estan disponibles en C++). tos). Por ejemplo, jrequerira la introduccidn de infor-
maci6n mediante voz ccentrenamienton por parte del
usuario? j Q ~ 6capacidades especificas proporcionara
3.3.2. Descomposici6n del problema la caracteristica de editar copias? jExactamente c6mo
La descomposiciondel problema, denominado a veces sera de sofisticado la capacidad de diseiio de phgina?
particionado o elaboracibn delproblema, es una activi-
dad que se asienta en el nucleo del analisis de requisitos
del software (Capitulo 11). Durante la actividad de expo-
sici6n del Ambit0 no se intenta descomponer el proble-
ma totalmente. Mas bien, la descomposici6n se aplica en
dos Areas principales: (1) la funcionalidad que debe entre-
garse y (2) el proceso que se empleara para entregarlo. A medida que evoluciona la exposici6n del Ambito,
un primer nivel de partici6n ocurre de forma natural. El
equipo del proyecto sabe que el departamento de mar-
keting ha hablado con clientes potenciales y ha averi-
guado que las siguientes funciones deberian ser parte
de la edicidn automatica de copia: (1) comprobaci6n
Poro desorrollor un plan de proyecto razonoble, tiene ortografica; (2) comprobaci6n gramatical; (3) compro-
que descornponer funcionalrnente el problerno o resolver. baci6n de referencias para documentos grandes (p. ej.:
jse puede encontrar una referencia a una entrada biblio-
Los seres humanos tienden a aplicar la estrategia de grafica en la lista de entradas de la bibliografia?), y (4)
divide y vencerhs cuando se enfrentan a problemas com- validaci6n de referencias de secci6n y capitulo para
plejos. Dicho de manera sencilla, un problema complejo documentos grandes. Cada una de estas caracteristicas
se parte en problemas m8s pequeiios que resultan mas representa una subfunci6n para implementar en soft-
manejables. ~ s t es
a la estrategia que se aplica a1 inicio ware. Cada una puede ser aun mas refinada si la des-
de la planificacion del proyecto. composici6n hace mas facil la planificacibn.
ACTlVlDADES ESTRUCTURALES
DE PROCESO COMUNES
de aniba. Las tareas de trabajo de ingenieria del software ECP?>>.Por ejemplo, un pequefio proyecto, relativamen-
. (para cada actividad estructural) se introducirian en la fila te simple, requiere las siguientes tareas para la actividad
siguiente". El trabajo del gestor del proyecto (y de otros de comunicacibn con el cliente:
miembros del equipo) es estimar 10s requisitos de recur- 1. Desarrollar una lista de aspectos que se han de cla-
sos para cada celda de la matriz, poner fechas de inicio y rificar.
finalizacion para las tareas asociadas con cada celda y 10s 2. Reunirse con el cliente para resolver 10s aspectos
productos a fabricar como consecuencia de cada celda. que se han de clarificar.
Estas actividades se consideran en 10s Capitulos 5 y 7. 3. Desarrollar conjuntamente una exposicion del
imbito del proyecto.
4. Revisar el alcance del proyecto con todos 10s impli-
cados.
Lo descornposicion del product0 y del proceso se produce
5. Modificar el alcance del proyecto cuando se requiera.
sirnultaneornente con lo evolucion del plan de proyecto. Estos acontecimientos pueden ocurrir en un period0 de
menos de 48 horas. Representan una descomposici6n del
problema apropiado para proyectos pequefios relativa-
3.4.2. Descomposicidn del proceso mente sencillos.
Un equipo de software deberia tener un grado significa- Ahora, consideremos un proyecto mis complejo que
tivo de flexibilidad en la eleccion del paradigma de inge- tenga un Ambito mis arnplio y un mayor impact0 comer-
nieria del software que resulte mejor para el proyecto y cial. Un proyecto como Cse podria requerir las siguientes
de las tareas de ingenieria del software que conforman el tareas para la actividad de comunicacion con el cliente:
modelo de proceso una vez elegido. Un proyecto relati-
vamente pequefio similar a otros que se hayan hecho ante- 1. Revisar la peticion del cliente.
riormente se deberia realizar con el enfoque secuencial 2. Planificar y programar una reunion formal con el
lineal. Si hay limites de tiempo muy severos y el proble- cliente.
ma se puede compartimentar mucho, el modelo apropia- 3. Realizar una investigation para definir soluciones pro-
do es el DRA (en inglks RAD). Si la fecha limite esti tan puestas y enfoques existentes.
proxima que no va a ser posible entregar toda la funcio- 4. Preparar un ((documentode trabajopp y una agenda para
nalidad, una estrategia incremental puede ser lo mejor. la reunion formal.
Similarmente, proyectos con otras caractensticas (p. ej.: 5. Realizar la reunion.
requisitos inciertos, nuevas tecnologias, clientes difici- 6. Desarrollar conjuntamente mini-especificaciones que
les, potencialidad de reutilizacion) llevarin a la seleccion reflejen la informaci6n, funci6n y caracteristicas de
de otros modelos de proceso6. comportamiento del software.
para modelos lineales, para modelos iterativos e incre- 9. Revisar ese documento general con todo lo que pueda
mentales, para modelos de evolucion e incluso para mode- afectar.
10s concurrenteso de ensamblaje de componentes. El ECP 10. Modificar el documento de alcance del proyecto
es invariable y sirve como base para todo el trabajo de cuando se requiera.
software realizado por una organizacih. Ambos proyectos realizan la actividad estructural que
Pero las tareas de trabajo reales si van'an. La descom- denorninamos comunicacibn con el cliente, per0 el equipo
posicion del proceso comienza cuando el gestor del pro- del primer proyecto lleva a cab0 la mitad de tareas de
yecto pregunta: cciC6m0 vamos a realizar esta actividad ingenieria del software que el segundo.
Se hace notar que las tareas se deben adaptar a las necesidades ~ e c u e r d eque las caracteristicas del proyecto tienen tambiirn una
especificas de un proyecto. Las actividades estructurales siempre per- fuerte influencia en la estructura del equipo que va a realizar el tra-
manecen igual, pero las tareas s e seleccionaran basandose en unos bajo. Vea la Seccion 3.2.3.
criterios de adaptacion. Este tema e s discutido mas adelante en el
Capitulo 7 y e n la pagina Web SEPA 5/e.
I N G E N I E R ~ ADEL S O F T W A R E . U N E N F O Q U E P R A C T I C O
Para gestionar un proyecto de software con Cxito, vaya a estar involucrado en el proyecto. Se refuer-
debemos comprender quC puede ir ma1 (para evitar za construyendo el equipo adecuado (Secci6n 3.2.3)
esos problemas) y c6mo hacerlo bien. En un excelente y dando a1 equipo la autonomia, autoridad y tecno-
documento sobre proyectos de software, John Reel logia necesaria para realizar el trabajo.
[REE99] define diez seiiales que indican que un pro- Mantenerse. Muchos proyectos no realizan un
yecto de sistemas de informaci6n esti en peligro: buen comienzo y entonces se desintegran lentarnente.
Para mantenerse, el gestor del proyecto debe pro-
porcionar incentivos para conseguir una rotaci6n del
personal minima, el equipo debena destacar la cali-
dad en todas las tareas que desarrolle y 10s gestores
veteranos deberian hacer todo lo posible por per-
manecer fuera de la forma de trabajo del equipo7.
Seguimiento del Progreso. Para un proyecto de
software, el progreso se sigue mientras se realizan 10s
productos del trabajo (por ejemplo, especificaciones,
1. La gente del software no comprende las necesi- c6digo fuente, conjuntos de casos de prueba) y se
dades de 10s clientes. aprueban (utilizando revisiones tCcnicas formales)
como parte de una actividad de garantia de calidad.
2. El imbito del product0 esti definido pobremente. Ademis, el proceso del software y las medidas del
3. Los cambios estin ma1 realizados. proyecto (capitulo 4) pueden ser reunidas y utilizadas
4. La tecnologia elegida cambia. para evaluar el progreso frente a promedios desarro-
llados por la organizaci6n de desarrollo de software.
5. Las necesidades del negocio cambian [o estin ma1
Tomar Decisiones Inteligentes. En esencia, las
definidas].
decisiones del gestor del proyecto y del equipo de
6. Las fechas de entrega no son realistas. software deberian ccseguir siendo sencillasu. Siem-
7. Los usuarios se resisten. pre que sea posible, utilice software del mismo
8. Se pierden 10s patrocinadores [o nunca se obtu- comercial o componentes de software existentes;
vieron adecuadamente]. evite personalizar interfaces cuando estCn dispo-
nibles aproximaciones estindar; identifique y eli-
9. El equipo del proyecto carece del personal con las mine entonces riesgos obvios; asigne m i s tiempo
habilidades apropiadas. del que pensaba necesitar para tareas arriesgadas
10. Los gestores [y 10s desarrolladores] evitan buenas o complejas (necesitari cada minuto).
pricticas y sabias lecciones.
Los profesionales veteranos de la industria hacen
referencia frecuentemente a la regla 90-90 cuando
estudian proyectos de software particularmente difi-
ciles: el primer 90 por 100 de un sistema absorbe el
Referencia web/ '
90 por 100 del tiempo y del esfuerzo asignado. El ulti- Se puede encontror un gron conjunto de recursos
que pueden oyudor tonto o gestores de proyecto
mo 10 por 100 se lleva el otro 90 por 100 del esfuer-
experimentodos como o principiontes en:
zo y del tiempo asignado [ZAH94]. Los factores que
www.pmi.org, www.4pm.com y
conducen a la regla 90-90 estin contenidos en las diez www.projectmanagement.com
seiiales destacadas en la lista anterior.
isuficiente negatividad! iC6m0 actua un gestor para
evitar 10s problemas seiialados anteriormente? Reel Realizar un Andisis c<Postmortemw(despuksdejina-
[REE99] sugiere una aproximaci6n de sentido com6n lizar el proyecto). Establecer un mecanismo consis-
a 10s proyectos de software dividida en cinco panes: tente para extraer sabias lecciones de cada proyecto.
Empezar con el pie derecho. Esto se realiza tra- Evaluar la planificaci6n real y la prevista, reunir y ana-
bajando duro (muy duro) para comprender el pro- lizar mCtricas del proyecto de software y realimentar
blema a solucionar y estableciendo entonces con datos de 10s miembros del equipo y de 10s clien-
objetivos y expectativas realistas para cualquiera que tes, y guardar 10s datos obtenidos en formato escrito.
En un excelente documento sobre proyectos y proce- ponsabilidad de cada miembro del equipo de soft-
so del software, Barry Boehm [BOE96] afirma: K... se ware debe estar definida. La respuesta a la pre-
necesita un principio de organizaci6n que haga una gunta ayuda a cumplir esto.
simplificacidn con el fin de proporcionar planes [de iDdnde estcin situados organizacionalmente?
proyectos] sencillos para proyectos pequefios>>. Boehm No todos 10s roles y responsabilidades residen en
sugiere un enfoque que trate 10s objetivos, hitos y pla- el equipo de software. El cliente, 10s usuarios, y
nificacion, responsabilidades, enfoque tCcnico y de otros directivos tambiCn tienen responsabilidades.
gestion, y 10s recursos requeridos del proyecto. Bohem
lo llama el principio ccWWWWWHH>>,despuCs de
una serie de preguntas (7 cuestiones) que conducen a
la definicidn de las caracteristicas clave del proyecto
y el plan del proyecto resultante:
iPor que' se desarrolla el sistema? La respuesta a
esta pregunta permite a todas las partes evaluar la vali-
dez de las razones del negocio para el trabajo del soft- Plon de Proyecto de S o h o r e
ware. Dicho de otra forma, tjustifica el propdsito del
negocio el gasto en personal, tiempo, y dinero? iC6m0 estara realizado el trabajo desde el pun-
,jQue' se realizara' y cua'ndo? La respuesta a estas to de vista te'cnico y de gestidn? Una vez estable-
preguntas ayuda a1 equipo a establecer la planifi- cido el ambito del producto, se debe definir una
cacion del proyecto identificando las tareas clave estrategia tCcnica y de gestion para el proyecto.
del proyecto y 10s hitos requeridos por el cliente. ,jQ~e'cantidad de cada recurso se necesita? La
respuesta a esta pregunta se deriva de las estima-
ciones realizadas (Capitulo 5) basadas en res-
i Q ~ tpreguntas
i netesitan
puestas a las preguntas anteriores.
ser respondidas para
desarrollar un Plan de Proyetto? El principio W ~ H H de Boehm es aplicable sin tener
en cuenta el tamafio o la complejidad del proyecto de
software. Las preguntas sefialadas proporcionan un
iQuie'n es el responsable de una funcidn? Antes perfil de planificacidn a1 gestor del proyecto y a1 equi-
en este capitulo, sefialamos que el papel y la res- po de software.
El ~onci1io"irlie ha desarrollado una lista de uno de 10s riesgos jcuil es la oportunidad de que
<<practicascriticas de software para la gestion basada el riesgo se convierta en un problema y cual es el
en el rendimienton. Estas practicas son ccutilizadas de impact0 si lo hace?
un mod0 consistente por, y consideradas criticas por, Coste empirico y estimacion de la planificacion.
organizaciones y proyectos de software de mucho Cxi- iCual es el tamafio actual estimado de la aplicacion
to cuyo rendimiento "final" es mas consistente que de software (sin incluir el software del sistema) que
10s promedios de la industria>>[AIR99]. En un esfuer- sera entregada en la operacibn? ~ C Ose~obtuvo?O
zo por permitir a una organizacion de software deter-
minar si un proyecto especifico ha implementado
practicas criticas, el Concilio Airlie ha desarrollado
un conjunto de preguntas de <<VisionRapids>> [AIR991
para un proyecto9:
Gestion formal del riesgo. iCuh1es son 10s diez
riesgos principales para este proyecto? Para cada Visidn rdpido del Proyecto Airlie.
El Concilio Airlie es un equipo de expertos en ingenieria del software Solo se destacan aqui aquellas practicas criticas relacionadas con
promocionado por el Departamento de Defensa U.S. ayudando en el la ~lintegridaddel proyecto~).Otras practicas mejores s e trataran en
desarrollo de directrices para practicas importantes en la gestion de capitulos posteriores.
proyectos de software y en la ingenieria del software.
I N G E N I E R ~ ADEL SOFTWARE. UN ENFOQUE PRACTICO
Gestion de proyectos basada en metricas. jDis- de el principio del prograrna y del numero de defectos
. pone de un programa de mCtricas para dar una prime- que se comgen y se producen en la actualidad?
ra indicaci6n de 10s problemas del desarrollo? Si es asi, Gestion del programa del personal. j C d l es
jcud es la volatilidad de 10s requisitos actualmente? la media de rotaci6n de la plantilla en 10s tres ulti-
Seguimiento del valor ganado. jInforrna men- mos meses por cada uno de 10s distribuidoresldesa-
sualmente de las mCtricas del valor ganado ...? Si rrolladores involucrados en el desarrollo del
e s asi, jestan calculadas estas rnCtricas desde una software para este sistema?
red de actividades de tareas para el esfuerzo total Si un equipo de proyectos de software no puede
a la proxima entrega? responder a estas preguntas, o las responde inade-
Seguimiento de defectos frente a objetivos de cali- cuadarnente, se debe realizar una revision cornpleta
dad. jRealiza el seguimiento e informa peridicamente de las pricticas del proyecto. Cada una de las prhcti-
del nurnero de defectos encontrados en cada prueba de cas criticas sefialadas anteriormente se tratan con deta-
inspection [revision tCcnica formal] y ejecucion des- lle a lo largo de la Parte I1 de este libro.
La gesti6n de proyectos de software es una actividad pletar el trabajo. Finalmente, el proyecto debe organi-
protectora dentro de la ingenieria del software. Ernpie- zarse de una manera que permita a1 equipo de software
za antes de iniciar cualquier actividad tkcnica y con- tener Cxito.
tinlia a lo largo de la definicion, del desarrollo y del El elemento fundamental en todos 10s proyectos de
rnantenimiento del software. software es el personal. Los ingenieros del software
Hay cuatro << P's N que tienen una influencia sustan- pueden organizarse en diferentes organigrarnas de equi-
cia1 en la gestion de proyectos de software -personal, po que van desde las jerarquias de control tradiciona-
producto, proceso y proyect-. El personal debe orga- les a 10s equipos de ({paradigma abierto,). Se pueden
nizarse en equipos eficaces, motivados para hacer un aplicar varias tCcnicas de coordinacion y cornunica-
software de alta calidad y coordinados para alcanzar una ci6n para apoyar el trabajo del equipo. En general, las
comunicaci6n efectiva. Los requisitos del producto revisiones forrnales y las cornunicaciones inforrnales
deben comunicarse desde el cliente a1 desarrollador, persona a persona son las rn8s valiosas para 10s pro-
dividirse (descomponerse) en las partes que lo consti- fesionales.
tuyen y distribuirse para que trabaje el equipo de soft- La actividad de gesti6n del proyecto cornprende
ware. El proceso debe adaptarse a1 personal y a1 medicion y rnktricas, estirnacion, anilisis de riesgos,
problerna. Se selecciona una estructura cornfin de pro- planificacion del programa, seguirniento y control.
ceso, se aplica un paradigma apropiado de ingenieria Cada uno de estos aspectos se trata en 10s siguientes
del software y se elige un conjunto de tareas para com- capitulos.
[AIR991Airlie Council, ccperformanced Based Management: ware Engineering, vol. 31, n." 1, Noviembre de 1988,
The Program Manager's Guide Based on the 16-Point pp. 1268-1287.
Plan and Related Metria)), Draft Report, 8 de Marzo,
1999. [CUR941 Curtis, B., et al.. People Management Capabi-
lity Maturity Model, Software Engineering Institute,
[BAK72] Baker, F.T., <<ChiefProgrammer Team Manage- Pittsburgh, PA, 1994.
ment of Production Programming,, IBM Systems Jour-
nal, vol. 11, n." 1, 1972, pp. 56-73. [DEM98] DeMarco, T., y T. Lister, Peopleware, 2.Qdi-
ci6n, Dorset House, 1998.
[BOE96] Boehm, B., <<Anchoringthe Software Process)),
IEEE Software, vol. 13, n." 4, Julio de 1996, pp. 73-82. [EDG95] Edgemon, J., <<RightStuff: How to Recognize
[CON931 Constantine, L., <<WorkOrganization: Paradigms It When Selecting a Project Manager,,, Application
for Project Management and Organization*, CACM, vol. Development Trends, vol. 2, n." 5, Mayo de 1995, pp.
36, n." 10, Octubre de 1993, pp. 34-43. 37-42.
[COU80] Cougar, J., y R. Zawacky, Managing and Moti- [FER98] Ferdinandi, P. L., <<FadatingCommunication,,,
vating Computer Personnel, Wiley, 1980. IEEE Software, Septiembre de 1998, pp. 92-96.
[CUR881 Curtis, B., et al, <<AField Study of the Software [JAC98] Jackman, M., <<Homeopathic Remedies for Team
Design Process for Large Systems)),IEEE Trans. Soft- Toxicity,,, lEEE Software, Julio de 1998, pp. 43-45.
C A P ~ T U L O3 CONCEPTOS SOBRE G E S T I ~ DE
N PROYECTOS
[KRA95] Kraul, R., y L. Streeter, <<Coordinationin Software [REE99] Reel, J.S., <<CriticalSuccess Factors in Software
Development)), CACM, vol. 38, n."3, Marzo de 1995, pp. Projects)),IEEE Software, Mayo de 1999, pp. 18-23.
69-8 1. [WE1861 Weinberg, G., On Becoming a Technical Leader,
[MAN8 11 Mantei, M., <<TheEffect of Programming Team Dorset House, 1986.
Structures on Programming Tasks)), CACM, vol. 24, n.", [WIT941 Whitaker, K., Managing Software Maniacs, Wiley,
Marzo de 1981, pp. 106-113. 1994.
[PAG85] Page-Jones, M., Practical Project Management, [ZAH94] Zahniser, R., <<Timeboxingfor Top Team Perfor-
Dorset House, 1985, p. VII. mance)),SofhYare Development, Marzo de 1994, pp. 35-38.
3.1. Basandose en la informaci6n contenida en este capitu- por el mercado de entretenimiento casero es intensa, hay cier-
lo y en su propia experiencia, desarrolle c<diezmandamien- ta presion para terminar el trabajo rapidamente. ~ Q u C estruc-
tow para potenciar a 10s ingenieros del software. Es decir, tura de equipo elegiria y por quC? iQuC modelo(s) de proceso
haga una lista con las diez lineas maestras que lleven a1 per- de software elegiria y por quC?
sonal que construye software a su maxim0 potencial. 3.8. Se le ha nombrado gestor de proyecto de una gran com-
3.2. El Modelo de Madurez de Capacidad de Gesti6n de Per- paiiia de productos software. Su trabajo consiste en dirigir la
sonal (MMCGP) del Instituto de Ingenieria del Software hace versidn de la siguiente generaci6n de su famoso procesador
un estudio organizado de las <<areasclave practicas (ACP))) de textos. Como la competencia es intensa, se han estableci-
que cultivan 10s buenos profesionales del software. Su profe- do y anunciado fechas limite rigidas. ~ Q u C estructura de equi-
sor le asignara una ACP para analizar y resumir. po elegiria y por quC? iQuC modelo(s) de proceso de software
3.3. Describa tres situaciones de la vida real en las que el elegiria y por quC?
cliente y el usuario final son el mismo. Describa tres situa- 3.9. Se le ha nombrado gestor de proyecto de software de una
ciones en que son diferentes. compaiiia que trabaja en el mundo de la ingenieria gedtica.
Su trabajo es dirigir el desarrollo de un nuevo producto de soft-
3.4. Las decisiones tomadas por una gesti6n experimentada
ware que acelere el ritmo de impresidn de genes. El trabajo es
pueden tener un impact0 significativo en la eficacia de un equi-
orientado a I+D, per0 la meta es fabricar el producto dentro del
po de ingenieria del software. Proporcione cinco ejemplos para
siguiente aiio. ~ Q u Cestructura de equipo elegiria y por quC?
ilustrar que es cierto.
~QuC modelo(s) de proceso de software elegiria y por quC?
3.5. Repase el libro de Weinberg [WE1861 y escriba un resu- 3.10. Como muestra la Figura 3.1, basandose en 10s resulta-
men de dos o tres paginas de 10s aspectos que deberian tener- dos de dicho estudio, 10s documentos parecen tener mas uso
se en cuenta a1 aplicar el modelo MOI. que valor. iPor que Cree que pas6 esto y quC se puede hacer
3.6. Se le ha nombrado gestor de proyecto dentro de una para mover el punto documentos por encima de la linea de
organizaci6n de sistemas de informacibn. Su trabajo es cons- regresi6n en el grifico? Es decir, iquC se puede hacer para
truir una aplicaci6n que es bastante similar a otras que ha cons- mejorar el valor percibido de 10s documentos?
truido su equipo, aunque Csta es mayor y mas compleja. Los 3.11. Se le ha pedido que desarrolle una pequeiia aplicaci6n
requisitos han sido detalladamente documentados por el clien- que analice todos 10s cursos ofrecidos por la universidad e
te. ~ Q u C
estructura de equipo elegiria y por quC? ~ Q u Cmode- informe de las notas medias obtenidas en 10s cursos (para un
lo(s) de proceso de software elegiria y por quC? period0 determinado). Escriba una exposicion del alcance que
3.7. Se le ha nombrado gestor de proyecto de una pequefia abarca este problema.
compaiiia de productos software. Su trabajo consiste en cons- 3.12. Haga una descomposicidn funcional de primer nivel
truir un producto innovador que combine hardware de reali- de la funcion diseiio de pigina tratado brevemente en la
dad virtual con software innovador. Puesto que la competencia Secci6n 3.3.2.
Una excelente serie de cuatro volumenes escrito por Wein- proporcionar una nueva visi6n profunda de 10s aspectos del
berg (Quality Software Management, Dorset House, 1992, proyecto de software y de su gestibn. Purba y Shah (How to
1993, 1994,1996) introduce 10s conceptos basicos sobre sis- Manage a Successful Software Project, Wiley, 1995) presen-
temas y conceptos de gestibn, explica c6mo usar medicio- tan un numero de estudios de casos de proyectos que indican
nes eficazmente y menciona la ccacci6n congruente)), la por quC unos fracasaron y otros fueron un Cxito. Bennatan
habilidad de ccencajarn las necesidades del gestor, del per- (Software Project Management in a ClientlServer Environ-
sonal tCcnico y las del negocio. Proporciona informacidn ment, Wiley, 1995) estudia aspectos especificos de gesti6n
util tanto a 10s gestores noveles como a 10s experimentados. asociados con el desarrollo de sistemas cliente/servidor.
Brooks (The Mythical Man-Month, Aniversary Edition, Se puede argumentar que el aspect0 mis importante de la
Addison-Wesley, 1995) ha actualizado su clasico libro para gesti6n del proyecto de software es la gesti6n de personal. El
libro definitivo sobre este tema lo escribieron DeMarco y Lis- jo mas eficazmente. House (The Human Side of Project
ter [DEM98], per0 se han publicado en 10s dltimos aiios 10s Management, Addison-Wesley, 1988) y Crossby (Running
siguientes libros donde se examina su importancia: Things: The art of Making Things Happen. McGraw-Hill,
Beaudouin-Lafon, M., Computer Supported Coopera- 1989) proporcionan directrices practicas para gestores que
tive Work, Wiley-Liss, 1999. deban tratar con problemas humanos y tCcnicos.
Carmel, E., Global Software Teams: Collaborating Aunque no estan relacionados especificamente con el
Across Borders and Time Zones, Prentice Hall, 1999. mundo del software, y algunas veces sufren demasiadas
Humphrey, W. S., Managing Technical People: Inno- simplificaciones y amplias generalizaciones, 10s libros de
vation, Teamwork, and the Software Process, Addison-Wes- gran Cxito de Drucker (Management Challenges for the 21st
ley 1997. Century, Harperbusines, 1999), Buckingham y Coffman
Humphrey, W. S., Introduction to the Team of Software (First, Break All the Rules: What the World's Greatest
Process, Addison-Wesley, 1999. Managers Do Differently, Simon & Schuster, 1999) y Chris-
Jones, P. H., Handbook of Team Design: A Practitio- tensen (The Innovator's Dilemma, Harvard Business School
ner's Guide to Team Systems Development, McGraw-Hill, Press, 1997) enfatizan ccnuevas reglaw definidas por una
1997. economia que cambia con rapidez. Viejos titulos como The
Karolak, D. S., Global Software Development: Mana- One Minute Manager e In Search of Excellence continuan
ging Virtual Teams and Environments, IEEE Computer proporcionando enfoques valiosos que pueden ayudarle a
Society, 1998. gestionar 10s ternas relacionados con el personal de un mod0
Mayer, M., The Virtual Edge: Embracing Technology mas eficiente.
for Distributed Project Team Success, Project Management En Internet estan disponibles una gran variedad de fuen-
Institute Publications, 1999. tes de informacidn relacionadas con temas de gestidn de pro-
Otro excelente libro de Weinberg [WE1861 es lectura yectos de software. Se puede encontrar una lista actualizada
obligada para todo gestor de proyecto y jefe de equipo. Le con referencias a sitios (paginas) web que son relevantes para
dara una visidn interna y directrices para realizar su traba- 10s proyectos de software en http://www.pressman5.com.
L
A medici6n es fundamental para cualquier disciplina de ingenieria, y la ingenieria del soft-
ware no es una excepci6n. La medici6n nos permite tener una visi6n mhs profunda propor-
cionando un mecanismo para la evaluacidn objetiva. Lord Kelvin en una ocasi6n dijo:
Cuando pueda medir lo que esth diciendo y expresarlo con nlimeros, ya conoce algo sobre
ello; cuando no pueda medir, cuando no pueda expresar lo que dice con nlimeros, su conoci-
miento es precario y deficiente: puede ser el comienzo del conocimiento, pero en sus pensa-
mientos, apenas esti avanzando hacia el escenario de la ciencia.
La comunidad de la ingenieria del software ha comenzado finalmente a tomarse en serio las
palabras de Lord Kelvin. Pero no sin frustraciones y sf con gran controversia.
Las ntktricus del sofm~urese refieren a un amplio elenco de mediciones para el software de
computadora. La medici6n se puede aplicar al proceso del software con el intento de mejorar-
lo sobre una base continua. Se puede utilizar en el proyecto del software para ayudar en la esti-
macibn, el control de calidad, la evaluaci6n de productividad y el control de proyectos.
Finalmente, el ingeniero de software puede utilizar la medici6n para ayudar a evaluar la cali-
dad de 10s resultados de trabajos dcnicos y para ayudar en la toma de decisiones tictica a medi-
da que el proyecto evoluciona.
b ingenieriadel software Dentro del context0 de la gesti6n de proyectos de software, en primer lugar existe una gran pre-
se presenton en los copihh 19 y 24. ocupaci6n por las mCtricas de productividad y de calidad -medidas ade salidan (finalizacibn) del
desarrollo del software, basadas en el esfuerzo y tiempo empleados, y medidas de la autilidadu del
producto obtenid-.
Park, Goethert y Florac [PAR961 tratan en su guia de la medicidn del software las razones por
las que medimos:
Hay cuatro razones para medir 10s procesos del software, 10s productos y 10s recursos:
10s m&icos del software
caracterizar
le permiten conocer cuhndo reir
evaluar
y cubdo Ilorar.
predecir
h Gab
- mejorar
53
INGENIER~A
DEL SOFTWARE. UN ENFOQUE PRACTICO
Caracterizamos para comprender mejor 10s procesos, 10s productos, 10s recursos y 10s entomos y para establecer
. las lineas base para las comparaciones con evaluaciones futuras.
Evaluamos para determinar el estado con respecto a1 diseiio. Las medidas utilizadas son 10s sensores que nos per-
miten conocer cubdo nuestros proyectos y nuestros procesos e s t b perdiendo la pista, de mod0 que podamos poner-
10s bajo control. TambiCn evaluamos para valorar la consecuci6n de 10s objetivos de calidad y para evaluar el impact0
de la tecnologia y las mejoras del proceso en 10s productos y procesos.
Predecimos para poder planificar. Realizar mediciones para la prediccion implica aumentar la comprension de las
relaciones entre 10s procesos y 10s productos y la construcci6n de modelos de estas relaciones, por lo que 10s valores
que observamos para algunos atributos pueden ser utilizados para predecir otros. Hacemos esto porque queremos esta-
blecer objetivos alcanzables para el coste, planificaci6n, y calidad - d e manera que se puedan aplicar 10s recursos apro-
piados-. Las medidas de prediccion tambiCn son la base para la extrapolaci6n de tendencias, con lo que la estimation
para el coste, tiempo y calidad se puede actualizar basbdose en la evidencia actual. Las proyecciones y las estima-
ciones basadas en datos hist6ricos tambiCn nos ayudan a analizar riesgos y a realizar intercambios diseiio/coste.
Medimos para mejorar cuando recogemos la information cuantitativa que nos ayuda a identificar obst8culos, pro-
blemas de raiz, ineficiencias y otras oportunidades para mejorar la calidad del producto y el rendimiento del proceso.
Aunque 10s tCrminos medida, medicidn y mktricas se [RAG95]. Un indicador proporciona una vision pro-
utilizan a menudo indistintamente, es importante des- funda que permite a1 gestor de proyectos o a 10s inge-
tacar las diferencias sutiles entre ellos. Como 10s tCr- nieros de software ajustar el producto, el proyecto o
minos ccmedidau y ccmedici6n~se pueden utilizar el proceso para que las cosas salgan mejor.
como un nombre o como un verbo, las definiciones
de estos tCrminos se pueden confundir. Dentro del con-
texto de la ingenieria del software, una medida pro-
porciona una indicaci6n cuantitativa de la extension,
cantidad, dimensiones, capacidad o tamafio de algu-
nos atributos de un proceso o producto. La medicidn
es el act0 de determinar una medida. El IEEE Stan-
dard Glossary of Software Engineering Terms [IEEE93]
define me'trica como ccuna medida cuantitativa del gra-
do en que un sistema, componente o proceso posee
un atributo dado),. Por ejemplo, cuatro equipos de software est8n tra-
Cuando, simplemente, se ha recopilado un solo bajando en un proyecto grande de software. Cada equi-
aspecto de 10s datos (por ejemplo: el nlimero de erro- po debe conducir revisiones del diseiio, per0 puede
res descubiertos en la revision de un modulo), se ha seleccionar el tipo de revision que realice. Sobre el
establecido una medida. La medicion aparece como examen de la mktrica, errores encontrados por per-
resultado de la recopilaci61-1de uno o varios aspectos sona-hora consumidas, el gestor del proyecto notifi-
de 10s datos (por ejemplo: se investiga un numero de ca que dos equipos que utilizan mCtodos de revision
revisiones de m6dulos para recopilar medidas del m8s formales presentan un 40 por 100 m5s de erro-
numero de errores encontrados durante cada revision). res encontrados por persona-hora consumidas que
Una mktrica del software relata de alguna forma las otros equipos. Suponiendo que todos 10s parametros
medidas individuales sobre alglin aspecto (por ejem- son iguales, esto proporciona a1 gestor del proyecto
plo: el nlimero medio de errores encontrados por revi- un indicador en el que 10s mCtodos de revision mAs
sion o el nlimero medio de errores encontrados por formales pueden proporcionar un ahorro mayor en
persona y hora en revisiones'). inversion de tiempo que otras revisiones con un enfo-
Un ingeniero del software recopila medidas y desa- que menos formal. Esto puede sugerir que todos 10s
rrolla mCtricas para obtener indicadores. Un indica- equipos utilicen el enfoque m8s formal. La mCtrica
do7 es una mktrica o una combinacion de mktricas que proporciona a1 gestor una visidn m8s profunda. Y ade-
proporcionan una vision profunda del proceso del soft- mas le llevar8 a una toma de decisiones m8s funda-
ware, del proyecto de software o del producto en si mentada.
' Esto asume que se recopila otra medida, persona y horas gastadas
en cada revision.
CAPfTULO 4 P R O C E S O DEL S O F T W A R E Y M ~ T R I C A SD E L P R O Y E C T O
La medici6n es algo com6n en el mundo de la ingenie- En algunos casos, se pueden utilizar las mismas
ria. Se mide el consumo de energia, el peso, las dimen- mCtricas del software para determinar tanto el pro-
siones fisicas, la temperatura, el voltaje, la relaci6n yecto como 10s indicadores del proceso. En realidad,
sefial-ruido.. . la lista es casi interminable. Por desgra- las medidas que recopila un equipo de proyecto y las
cia, la medici6n es mucho menos com6n en el mundo convierte en mCtricas para utilizarse durante un pro-
de la ingenieria del software. Existen problemas para yecto tambiCn pueden transmitirse a 10s que tienen la
ponerse de acuerdo sobre quC medir y las medidas de responsabilidad de mejorar el proceso del software.
evaluaci6n de problemas recopilados. Por esta raz6n, se utilizan muchas de las mismas mCtri-
cas tanto en el dominio del proceso como en el del
proyecto.
Referencia web L /
Se puede descorgor uno guio completa 4.2.1. Metricas del proceso y mejoras
de mitricos del software desde: en el proceso del software
www.inv.nasa.gov/SWG/resourtes/ La unica forma racional de mejorar cualquier proceso
NASA-GB-001-94.pdf es medir atributos del proceso, desarrollar un juego de
Se deberian recopilar metricas para que 10s indica- mCtricas significativas seg6n estos atributos y entonces
dores del proceso y del producto puedan ser ciertos. Los utilizar las mCtricas para proporcionar indicadores que
indicadores de proceso permiten a una organizaci6n de conducirAn a una estrategia de mejora. Pero antes de
ingenieria del software tener una visi6n profunda de la estudiar las mCtricas del software y su impacto en la
eficacia de un proceso ya existente (por ejemplo: el para- mejoras de 10s procesos del software es importante des-
digma, las tareas de ingenieria del software, productos tacar que el proceso es el 6nico factor de 4 0 s controla-
de trabajo e hitos). TambiCn permiten que 10s gestores bles a1 mejorar la calidad del software y su rendimiento
eval6en lo que funciona y lo que no. Las mCtricas del como organizaciom [PAU94].
proceso se recopilan de todos 10s proyectos y durante
un largo period0 de tiempo. Su intento es proporcionar
indicadores que lleven a mejoras de 10s procesos de soft-
ware a largo plazo.
Los indicadores de proyecto permiten a1 gestor de Lo hobilidod y lo motivoci6n del personal reolizondo
proyectos del software (1) evaluar el estado del proyecto el trobojo son 10s foctores mas importantes que influyen
en curso; (2) seguir la pista de 10s riesgos potenciales; en lo colidod del software.
(3) detectar las Areas de problemas antes de que se con-
viertan en <<criticas>>;(4) ajustar el flujo y las tareas del En la Figura 4.1, el proceso se sit6a en el centro de
trabajo, y (5) evaluar la habilidad del equipo del pro- un trihngulo que conecta tres factores con una pro-
yecto en controlar la calidad de 10s productos de traba- funda influencia en la calidad del software y en el ren-
jo del software. dimiento como organizacih. La destreza y la
motivaci6n del personal se muestran como el 6nico
Producto
factor realmente influyente en calidad y en el rendi-
miento [BOE81]. La complejidad del producto pue-
de tener un impacto sustancial sobre la calidad y el
rendimiento del equipo. La tecnologia (por ejemplo:
mCtodos de la ingenieria del software) que utiliza el
proceso tambiCn tiene su impacto. AdemBs, el triAn-
gulo de proceso existe dentro de un circulo de condi-
ciones de entomos que incluyen entomos de desarrollo
(por ejemplo: herramientas CASE), condiciones de
gesti6n (por ejemplo: fechas tope, reglas de empresa)
y caracteristicas del cliente (por ejemplo: facilidad de
comunicaci6n).
4.2.2. M6tricas del proyecto La utilizaci6n de mktricas para el proyecto tiene dos
Las metricas del proceso de software se utilizan para aspectos fundamentales. En primer lugar, estas metri-
propositos estrategicos. Las medidas del proyecto de cas se utilizan para minimizar la planificacion de desa-
software son tacticas. Esto es, las metricas de proyec- rrollo haciendo 10s ajustes necesarios que eviten retrasos
tos y 10s indicadores derivados de ellos 10s utilizan un y reduzcan problemas y riesgos potenciales. En segun-
gestor de proyectos y un equipo de software para adap- do lugar, las metricas para el proyecto se utilizan para
tar el flujo del trabajo del proyecto y las actividades evaluar la calidad de 10s productos en el momento actual
tecnicas. y cuando sea necesario, modificando el enfoque tecni-
co que mejore la calidad.
~Comodebemos
10s tbcnicos de estirnocibn de proyectos se estudion
utilizar las metricas
en el copitulo 5.
durante el proyecto?
La primera aplicacion de mktricas de proyectos en A medida que mejora la calidad, se minimizan 10s
la mayoria de 10s proyectos de software ocurre duran- defectos, y a1 tiempo que disminuye el ndmero de defec-
te la estimacion. Las metricas recopiladas de proyectos tos, la cantidad de trabajo que ha de rehacerse tambien
anteriores se utilizan como una base desde la que se rea- se reduce. Esto lleva a una reduccion del coste global
lizan las estimaciones del esfuerzo y del tiempo para el del proyecto.
actual trabajo del software. A medida que avanza un Otro modelo de metricas del proyecto de software
proyecto, las medidas del esfuerzo y del tiempo consu- [HET93] sugiere que todos 10s proyectos deberian medir:
mido se comparan con las estimaciones originales (y la entradas: la dimension de 10s recursos (p. ej.: perso-
planificacion de proyectos). El gestor de proyectos uti- nas, entomo) que se requieren para realizar el trabajo,
liza estos datos para supervisar y controlar el avance.
A medida que comienza el trabajo tkcnico, otras salidas: medidas de las entregas o productos creados
metricas de proyectos comienzan a tener significado. durante el proceso de ingenieria del software,
Se miden 10s indices de production representados resultados: medidas que indican la efectividad de las
mediante paginas de documentacion, las horas de revi- entregas.
sib, 10s puntos de funci6n y las lineas fuente entre- En realidad, este modelo se puede aplicar tanto a1
gadas. Ademas, se sigue la pista de 10s errores proceso como a1 proyecto. En el context0 del proyecto,
detectados durante todas las tareas de ingenieria del el modelo se puede aplicar recursivamente a medida
software. Cuando va evolucionando el software des- que aparece cada actividad estructural. Por consiguien-
de la especificacion a1 diseiio, se recopilan las mCtri- te las salidas de una actividad se convierten en las entra-
cas tkcnicas (Capitulos 19 a1 24) para evaluar la das de la siguiente. Las metricas de resultados se pueden
calidad del diseiio y para proporcionar indicadores utilizar para proporcionar una indicacion de la utilidad
que influiran en el enfoque tomado para la generacion de 10s productos de trabajo cuando fluyen de una acti-
y prueba del codigo. vidad (o tarea) a la siguiente.
Debe setialarse que tambien han sido propuestas otras extensiones ' En el capitulo 12 se presenta un estudio detallado de la dimension
a 10s puntos de funcion para aplicarlas en trabajos de soflware de de comportamientos que incluyen estados y transiciones de estados
tiempo real (p.ej., [ALA97]). Sin embargo, ninguno de estos parece
usarse ampliamente en la industria.
INGENIERIA DEL SOFTWARE. UN ENFOQUE PRACTICO
Para calcular puntos de funci6n 3D, se utiliza la rela- El punto de funci6n (y sus extensiones), como la
.ci6n siguiente: medida LDC, es controvertido. Los partidarios afirman
que PF es independiente del lenguaje de programaci6n,
indice=I+O+Q+F+E+T+R (4.2)
lo cual es ideal para aplicaciones que utilizan lenguajes
en donde I, 0 , Q, F, E, T y R representan valores con convencionales y no procedimentales; esto se basa en
peso de complejidad en 10s elementos tratados ante- 10s datos que probablemente se conocen a1 principio de
riormente: entradas, salidas, peticiones, estructuras de la evolution de un proyecto, y asi el PF es mAs atracti-
datos internas, archivos externos, transformaciones y vo como enfoque de estimaci6n.
transiciones, respectivamente. Cada valor con peso de
complejidad se calcula con la relaci6n siguiente:
valor con peso de complejidad =
proceso
en donde Nil ,Nia y Nih representan el numero de apa-
I
1-10 Bajo I Bajo I Medio
riciones del elemento i (p. ej.: salidas) para cada nivel
Bajo Medio Alto
de complejidad (bajo, medio, alto), y Wil , Wia y Wih
son 10s pesos correspondientes. El c6lculo global de 10s Medio Alto Alto
puntos de funci6n 3D se muestran en la Figura 4.6.
Se deberia seiialar que 10s puntos de funci6n, 10s pun- FIGURA 4.6. Calculo de 10s indices de 10s puntos
tos de caracteristica y 10s puntos de funci6n 3D repre- de funcion 3D.
sentan lo mismo -ccfuncionalidad>> o ccutilidad,,
entregada por el software-. En realidad, cada una de Los detractores afirman que el mCtodo requiere algun
estas medidas producen el mismo valor si s610 se con- ccjuego de manos>>en el que el cAlculo se base en datos
sidera la dimensi6n de datos de una aplicaci6n. Para sis- subjetivos y no objetivos; y afirman que las cuentas del
temas de tiempo real mAs complejos, la cuenta de puntos dominio de informacion (y otras dimensiones) pueden
de caracten'stica a menudo se encuentra entre el 20 y el ser dificiles de recopilar despuCs de realizado, y por ulti-
35 por 100 mAs que la cuenta determinada s610 con 10s mo que el PF no tiene un significado fisico direct0 +s
puntos de funci6n. simplemente un numero-.
ES importante destacar que la <<laindividualizacion de compo- zacion de mantenimiento podria observar el tamaiio de 10s pro-
nentes importantes. se puede interpretar de muchas maneras. yectos en relacion con 10spedidos de cambio de ingenieria (Capi-
Algunos ingenieros del software que trabajan en un entorno de tulo 9). Una organizacion de sistemas de informacion podria
desarrollo orientado a objetos (Cuarta Parte) utilizan ciertas cla- observar el numero de procesos de negocio a 10sque impacta una
ses u objetos como metrica dominante del tamaiio. Una organi- aplicacion.
CAPfTULO 4 P R O C E S O DEL S O F T W A R E Y M ~ T R I C A SDEL P R O Y E C T O
Una revisidn de 10s datos anteriores indica que una comparar la relacidn LDCIpersonas-mes (6 PFIperso-
LDC de C++ proporciona aproximadamente 1,6 veces nas-mes) de un grupo con 10s datos similares de otro
la <<funcionalidadu(de media) que una LDC de FOR- grupo? debe en 10s gestores evaluar el rendimiento de
TRAN. Ademas, una LDC de Visual Basic proporcio- las personas usando estas mCtricas? La respuesta a estas
na 3 veces la funcionalidad de una LDC de un lenguaje preguntas es un rotundo <<NOD. La raz6n para esta res-
de programacidn convencional. En [JON981 se presen- puesta es que hay muchos factores que influyen en la
tan datos mis precisos sobre las relaciones entre 10s PF productividad, haciendo que la comparaci6n de <<man-
y las LDC, que pueden ser usados para <<repasampro- zanas y naranjaw sea ma1 interpretada con facilidad.
gramas existentes, determinando sus medidas en PF (por Se han encontrado 10s puntos de funci6n y las LDC
ejemplo, para calcular el numero de puntos de funcidn basadas en metricas para ser predicciones relativamen-
cuando se conoce la cantidad de LDC entregada). te exactas del esfuerzo y coste del desarrollo del soft-
Las medidas LDC y PF se utilizan a menudo para ware. Sin embargo, para utilizar LDC y PF en las
extraer metricas de productividad. Esta invariabilidad tCcnicas de estimacibn (capitulo S ) , debe establecerse
conduce a1 debate sobre el uso de tales datos. Se debe una linea base de informaci6n hist6rica.
3
Referencia Web
Se puede encontror una excelente fuente de informacibn
sobre lo calidad del software y temas relacionodos
dera importante. Estas cualidades son atributos del software,
ademas de su correccion y rendimiento funcional, que tiene
implicaciones en el ciclo de vida. En otros factores, como son
facilidad de mantenimiento y portabilidad, se ha demostrado
que tienen un impact0 sigmficativo en el coste del ciclo de vida.. .
En segundo lugar, el marco de trabajo pmporciona un medio
(incluyendo mitricas) en: www.qualityworld.tom de evaluar cuantitativamente lo bien que va pmgresando el desa-
rrollo en relaci6n con 10s objetivos de calidad establecidos...
El gestor de proyectos tambiCn debe evaluar la cali- En tercer lugar, el marco de trabajo proporciona m k inte-
dad objetivamente, y no subjetivarnente.A medida que racci6n del personal de QA (garantia de calidad) en el esfuer-
el proyecto progresa el gestor del proyecto tambiCn debe zo de desarrollo...
evaluar la calidad. Las metricas privadas recopiladas por Por 6ltim0,... el personal de garantia de calidad puede uti-
ingenieros del software particulares se asimilan para pro- lizar indicaciones de calidad pobre para ayudar a identificar
porcionar resultados en 10s proyectos. Aunque se pueden estkdares [mejores] a enfrentar en el futuro.
recopilar muchas medidas de calidad, el primer objetivo Un estudio detallado del marco de trabajo de McCall
en el proyecto es medir errores y defectos. Las mCtricas y Cavano, asi como otros factores de calidad, se pre-
que provienen de estas medidas proporcionan una indi- sentan en el Capitulo 19. Es interesante destacar que
caci6n de la efectividad de las actividades de control y casi todos 10s aspectos del cilculo han sufrido cambios
de la garantia de calidad en grupos o en particulares. radicales con el paso de 10s aoos desde que McCall y
1NGENIERfA DEL SOFTWARE. U N ENFOQUE PRACTICO
Cavano hicieron su trabajo, con gran influencia, en 1978. a sus usuarios finales-. Cuando la proporci6n de
.Per0 10s atributos que proporcionan una indicacibn de desperdicios en el coste global del proyecto (para
la calidad del software siguen siendo 10s mismos. muchos proyectos) se representa como una funci6n
del tiempo, el gestor puede determinar si la facilidad
total del software producido por una organization de
desarrollo esta mejorando. Se pueden emprender
acciones a partir de las conclusiones obtenidas de
Sorprendentemente, 10s foetores que definion lo colidod esa informaci6n.
del s o h a r e en el oiio 1970 son 10s mismos foctores Integridad. En esta Cpoca de <<hackers>> y <<fire-
que continhn definiendo lo ealidod del s o h o r e walls,,, la integridad del software ha llegado a tener
en la primero dkado de este siglo. mucha importancia. Este atributo mide la capacidad
de un sistema para resistir ataques (tanto accidentales
~ Q u Csignifica esto? Si una organizaci6n de software
como intencionados) contra su seguridad. El ataque
adopta un juego de factores de calidad como una dista
se puede realizar en cualquiera de 10s tres componentes
de comprobaci6n~para evaluar la calidad del softwa-
del software: programas, datos y documentos.
re, es probable que el software constmido hoy siga exhi-
biendo la calidad dentro de las primeras dCcadas de este Para medir la integridad, se tienen que definir
siglo. Incluso, cuando las arquitecturas de cfilculo sufren dos atributos adicionales: amenaza y seguridad.
cambios radicales (corno seguramente ocurriri), el soft- Amenaza es la probabilidad (que se puede estimar
ware que exhibe alta calidad en operaci6n, transition y o deducir de la evidencia empirica) de que un ata-
revisi6n continuara sirviendo tambiCn a sus usuarios. que de un tip0 determinado ocurra en un tiempo
determinado. La seguridad es la probabilidad (que
se puede estimar o deducir de la evidencia empi-
4.5.2. Medida d e l a calidad rica) de que se pueda repeler el ataque de un tip0
Aunque hay muchas medidas de la calidad de softwa- determinado. La integridad del sistema se puede
re, la correccidn,facilidad de mantenimiento, integri- definir corno:
dad, y facilidad de uso proporcionan indicadores utiles
para el equipo del proyecto. Gilb [GIL88] ha sugerido integridad = C [(l - amenaza) x (1 - seguridad)]
definiciones y medidas para cada uno de ellos. donde se suman la amenaza y la seguridad para cada
Correccion. Un programa debe operar correcta- tip0 de ataque.
mente o proporcionara poco valor a sus usuarios. La
correccion es el grado en el que el software lleva a Facilidad de uso. El calificativo ccamigable con el
cab0 su funci6n requerida. La medida m b comun de usuarion se ha convertido en omnipresente en las dis-
correccion es defectos por KLDC, en donde un cusiones sobre productos de software. Si un programa
defect0 se define como una falta verificada de con- no es <<migablecon el usuarios, frecuentemente esta
formidad con 10s requisitos. abocado a1 fracaso, incluso aunque las funciones que
realice Sean valiosas. La facilidad de uso es un intento
Facilidad de mantenimiento. El mantenimiento de cuantificar <<loamigable que puede ser con el usua-
del software cuenta con mas esfuerzo que cualquier no>>y se puede medir en funci6n de cuatro caracte-
otra actividad de ingenieria del software. La facili- nsticas: (1) habilidad intelectual y/o fisica requerida
dad de mantenimiento es la facilidad con la que se para aprender el sistema; (2) el tiempo requerido para
puede corregir un programa si se encuentra un error, llegar a ser moderadamente eficiente en el uso del sis-
se puede adaptar si su entomo cambia, o mejorar si tema; (3) aumento net0 en productividad (sobre el
el cliente desea un carnbio de requisitos. No hay enfoque que el sistema reemplaza) medida cuando
forma de medir directamente la facilidad de mante-
alguien utiliza el sistema moderadamente y eficiente-
nimiento; por consiguiente, se deben utilizar medi- mente; y (4) valoraci6n subjetiva (a veces obtenida
das indirectas. Una simple mCtrica orientada al mediante un cuestionario) de la disposici6n de 10s
tiempo es el tiempo medio de carnbio (TMC),es decir usuarios hacia el sistema. En el Capitulo 15 se estu-
el tiempo que se tarda en analizar la petici6n de cam- dia mas detalladamente este aspecto.
bio, en disefiar una modificaci6n adecuada, en imple-
mentar el carnbio, en probarlo y en distribuir el Los cuatro factores anteriores son s610 un ejemplo
carnbio a todos 10s usuarios. Como media, 10s pro- de todos 10s que se han propuesto como medidas de la
gramas que se pueden mantener tendran un TMC calidad del software. El Capitulo 19 considera este tema
mas bajo (para tipos equivalentes de cambios) que con mas detalle.
10s programas que no son mas ficiles de mantener.
Hitachi [TAJ81] ha utilizado una mCtrica orien- 4.5.3. Eficacia d e l a Elirninacion d e Defectos
tada a1 coste para la capacidad de mantenimiento lla- Una mCtrica de la calidad que proporciona beneficios
mada <<desperdiciosn- e l coste en corregir defectos tanto a nivel del proyecto como del proceso, es la efi-
encontrados despuCs de haber distribuido el software cacia de la eliminacidn de defectos (EED). En esen-
CAPfTULO 4 P R O C E S O DEL SOFTWARE Y MPTRICAS DEL P R O Y E C T O
cia, EED es una medida de la habilidad de filtrar las proyecto de software instituya tCcnicas para encontrar
actividades de la garantia de calidad y de control a1 todos 10s errores posibles antes de su entrega.
aplicarse a todas las actividades del marco de trabajo EED tambiCn se puede utilizar dentro del proyecto
del proceso. para evaluar la habilidad de un equipo en encontrar erro-
Cuando un proyecto se toma en consideracidn glo- res antes de que pasen a la siguiente actividad estructu-
balmente, EED se define de la forma siguiente: ral o tarea de ingenieria del software. Por ejemplo, la tarea
del analisis de 10s requisitos produce un modelo de an&
lisis que se puede revisar para encontrar y corregir erro-
donde E es el ndmero de errores encontrados antes de res. Esos errores que no se encuentren durante la revisidn
la entrega del software a1 usuario final y D es el nlime- del modelo de analisis se pasan a la tarea de disefio (en
ro de defectos encontrados despuCs de la entrega. donde se pueden encontrar o no). Cum60 se utilizan en
este contexto, EED se vuelve a definir como:
&ti es la efitientia
EEDi = Ei /(Ei + Ei +,) (4.5)
en donde Ei es el nlimero de errores encontrado duran- .
de elimination de defectos?
te la actividad de ingenieria del software i y Ei es el
nlimero de errores encontrado durante la actividad de
,
El valor ideal de EED es 1. Esto es, no se han encon- ingenieria del software i + I que se puede seguir para
trado defectos en el software. De forma realista, D sera llegar a errores que no se detectaron en la actividad de
mayor que cero, per0 el valor de EED todavia se pue- la ingenieria del software i.
de aproximar a 1. Cuando E aumenta (para un valor de
D dado), el valor total de EED empieza a aproximarse
a 1. De hecho, a medida que E aumenta, es probable
que el valor final de D disminuya (10s errores se filtran UtiIice EED como uno medidu de lo eficiencio
antes de que se conviertan en defectos). Si se utilizan de sus primeros octividodes de SQA. Si EED es bojo
como una mCtrica que proporciona un indicador de la duronte el onblisis y disefio, emplee olgh tiempo
habilidad de filtrar las actividades de la garantia de la mejorondo lo formu de conducir 10s revisiones tecnicos
calidad y del control, EED anima a que el equipo del formoles.
La mayoria de 10s desarrolladores de software todavia 4.6.1. Argumentos para las M6tricas del Software
no miden, y por desgracia, la mayoria no desean ni iPor quC es tan importante medir el proceso de inge-
comenzar. Como se ha sefialado en este capitulo, el pro- nieria del software y el product0 (software) que produ-
blema es cultural. En un intento por recopilar medidas ce? La respuesta es relativamente obvia. Si no se mide,
en donde no se haya recopilado nada anteriormente, a no hay una forma real de determinar si se estP mejo-
menudo se opone resistencia: <<iPorquC necesitamos rando. Y si no se est5 mejorando, se esta perdido.
hacer esto?>>,se pregunta un gestor de proyectos ago-
biado. <<Noentiendo por qu&, se queja un profesional
saturado de trabajo.
En esta seccibn, consideraremos algunos argumen-
tos para las mCtricas del software y presentaremos un
enfoque para instituir un programa de mCtricas dentro
de una organizaci6n de ingenieria del software. Pero
antes de empezar, consideremos algunas palabras de
cordura sugeridas por Grady y Caswell [GRA87]:
Algunas de las cosas que describimos aqui parecen bastan-
te fgciles. Realmente, sin embargo, establecer un prograrna de La gestidn de alto nivel puede establecer objetivos
metricas del software con exito es un trabajo duro. Cuando
decimos esto debes esperar a1 menos tres aiios antes de que
significativos de mejora del proceso de ingenieria del
esten disponibles las tendencias organizativas, lo que puede software solicitando y evaluando las medidas de pro-
darte alguna idea del h b i t o de tal esfuerzo. ductividad y de calidad. En el Capitulol se sefiald que
el software es un aspect0 de gesti6n estratCgico para
La advertencia sugerida por 10s autores se conside- muchas compaiiias. Si el proceso por el que se desa-
ra de un gran valor, per0 10s beneficios de la medicibn rrolla puede ser mejorado, se producira un impact0 d i m -
son tan convincentes que obligan a realizar este duro to en lo sustancial. Pero para establecer objetivos de
trabajo. . mejora, se debe comprender el estado actual de desa-
~ N G E N ~ E RDEL
~ A SOFTWARE. UN ENFOQUE PRACTICO
rrollo del software. Por lo tanto la medici6n se utiliza (3) las medidas deben ser consistentes, por ejemplo, una
-para establecer una linea base del proceso desde donde linea de c6digo debe interpretarse consistentemente en
se pueden evaluar las mejoras. todos 10s proyectos para 10s que se han reunido 10s datos;
Los rigores del trabajo diario de un proyecto del soft- (4) las aplicaciones deben ser semejantes para trabajar en
ware no dejan mucho tiempo para pensar en estrategias. la estimaci6n -tiene poco sentido utilizar una linea base
Los gestores de proyecto de software esthn mhs preo- obtenida en un trabajo de sistemas de informaci6n batch
cupados por aspectos mundanos (aunque igualmente para estimar una aplicaci6n empotrada de tiempo real-.
importantes): desarrollo de estimaciones significativas
del proyecto; produccidn de sistemas de alta calidad y 4.6.3. Colecci6n de metricas, c6mputo y evaluacih
terminar el producto a tiempo. Mediante el uso de medi-
ci6n para establecer una linea base del proyecto, cada El proceso que establece una linea base se muestra en la
uno de estos asuntos se hace rnhs fhcil de manejar. Ya Figura 4.7. Idealmente, 10s datos necesarios para estable-
hemos apuntado que la linea base sime como base para cer una linea base se han ido recopilando a medida que se
la estimaci6n. Ademhs, la recopilaci6n de mttricas de ha ido progresando. Por desgracia, este no es el caso. Por
calidad permite a una organizacidn ccsintonizar>> su pro- consiguiente, la recopilaci6n de datos requiere una inves-
ceso de ingenieria del software para eliminar las causas tigaci6n hist6rica de 10s proyectos anteriores para recons-
ccpoco vitalew de 10s defectos que tienen el mayor truir 10s datos requeridos. Una vez que se han recopilado
impact0 en el desarrollo del software9. medidas (incuestionablementeel paso rnhs dificil), el chl-
TCcnicamente (en el fondo), las mCtricas del soft- culo de mttricas es posible. Dependiendo de la amplitud
ware, cuando se aplican a1 producto, proporcionan bene- de las medidas recopiladas, las mttricas pueden abarcar
ficios inmediatos. Cuando se ha terminado el disefio del una gran gama de mttricas LDC y PF, asi como mitricas
software, la mayona de 10s que desarrollan pueden estar de la calidad y orientadas a1 proyecto. Finalmente, las
ansiosos por obtener respuestas a preguntas corno: mttricas se deben evaluar y aplicar durante la estimacibn,
el trabajo tkcnico, el control de proyectos y la mejora del
iQuC requisitos del usuario son rnhs susceptibles a1
proceso. La evaluaci6n de mCtricas se centra en las razo-
cambio? nes de 10s resultados obtenidos, y produce un grupo de
~QuC m6dulos del sistema son rnhs propensos a error? indicadores que guian el proyecto o el proceso.
iC6m0 se debe planificar la prueba para cada
mbdulo?
iCuhntos errores (de tipos concretos) puede esperar
cuando comience la prueba? 10sdotos de 10s m6tricos de lineo base deberion
Se pueden encontrar respuestas a esas preguntas si recogerse de uno gron muestro representoh
se han recopilado mttricas y se han usado como guia de proyectos de softwore del posodo.
tCcnica. En posteriores capitulos examinaremos c6mo
se hace esto.
Uno de 10s problemas a1 que se han enfrentado 10s tra- Una vez que estas cuestiones se hayan establecido,
bajadores de las mCtricas durante las dos ultimas dCca- entonces es cuando puede ser desarrollada una mCtrica
das es la de desarrollar mCtricas que fueran litiles para que pueda ayudar a que se cumpla el objetivo planteado
el diseiiador de software. Ha sido toda una historia de que naturalmente emergerh a partir de estas cuestiones.
utilizaci6n de la mCtrica dentro de 10s entornos indus- La importancia de OPM proviene no solamente del
triales basada en el simple criterio de lo que era facili- hecho de que es uno de 10s primeros intentos de desa-
tar la medida, mhs que emplear cualquier criterio rrollar un conjunto de medidas adecuado que pueda ser
relacionado con la utilidad. El panorama de la 6ltima aplicado a1 software, sin0 tambiCn a1 hecho de que esta
mitad de 10s afios 80 y la primera mitad de la dCcada de relacionado con el paradigma de mejora de procesos
10s 90, constat6 el hecho de que mientras habia sido que ha sido discutido previamente. Basili ha desarro-
desarrollado mucho trabajo en la validacidn de la mCtri- llado un paradigma de mejora de calidad dentro del cual
ca y en el esclarecimiento de 10s principios te6ricos el mCtodo OPM puede encajarse perfectamente. El para-
detrhs de ella, muy poco habia sido hecho para dotar a1 digma comprende tres etapas:
disefiador de software con herramientas para la selec- Un proceso de llevar a cab0 una auditoria de un pro-
ci6n o construcci6n de mCtricas. yecto y su entorno estableciendo metas u objetivos
El objetivo de esta secci6n es describir OPM, que es de calidad para el proyecto y seleccionando herra-
casi con certeza el mCtodo de desarrollo de mCtrica mhs mientas adecuadas y mCtodos y tecnologias de ges-
ampliamente aplicado y mejor conocido y que ha sido desa- ti6n para que dichos objetivos de calidad tengan una
rrollado por Victor Basili y sus colaboradores de la Uni- oportunidad de cumplirse.
versidad de Maryland. Basili y sus colaboradores tenian
Un proceso de ejecutar un proyecto y chequear 10s
ya una larga historia de validaci6n de mCtricas en la dCca-
da de 10s 80 y el mCtodo OPM (objetivo, pregunta y mCtri- datos relacionados con esas metas u objetivos de cali-
ca) surgi6 de un trabajo que fue desarrollado dentro de un dad. Este proceso es llevado a cab0 en conjunci6n
laboratorio de ingenieria del software esponsorizado por con otro proceso paralelo de actuaci6n sobre 10s pro-
la Agencia Americana del Espacio, NASA. pios datos cuando se vea que el proyecto corre peli-
Basili establecia que para que una organizaci6n tuvie- gro de no cumplir con 10s objetivos de calidad.
ra un programa de medida exacto era necesario que Un proceso para el anilisis de 10s datos del segundo
tuviera constancia de tres componentes: paso, con el fin de poder hacer sugerencias para una
1. Un proceso donde pudieran articularse metas u obje- mayor mejora. Este proceso implicaria el analizar
tivos para sus proyectos. 10s problemas ya en la etapa de recolecci6n de datos,
problemas en la implementaci6n de las directivas de
2. Un proceso donde estas metas pudieran ser traducidas
calidad y problemas en la interpretaci6n de 10s datos.
a 10s datos del proyecto que exactamente reflejasen
dichas metas u objetivos en tkrminos de software. Basili [BAS961 ha proporcionado una serie de plan-
3. Un proceso que interpretara 10s datos del proyecto tillas que son dtiles para 10s desarrolladores que deseen
con el fin de entender 10s objetivos. utilizar el mCtodo OPM para desarrollar metricas rea-
listas sobre sus proyectos. Los objetivos de OPM pue-
Un ejemplo de un objetivo tipico que bien podria ser
den articularse por medio de tres plantillas que cubren
adoptado por una empresa es que la cantidad de trabajo
el prop6sit0, la perspectiva y el entorno.
de revisi6n sobre un diseiio de sistema debido a pro-
La plantilla o esquema de cilculo denominada de
blemas que fueran descubiertos por 10s programadores
prop6sito se utiliza para articular o comparar lo que esth
se redujera a1 80 por ciento.
siendo analizado y el prop6sito de dicha parte del pro-
A partir de este ejemplo de objetivo emerge un cier-
yecto. Por ejemplo, un disefiador puede desear analizar
to nlimero de preguntas tipicas cuya contestaci6n podria
la efectividad de las revisiones de disefio con el prop6-
ser necesaria para clarificar 10s objetivos y por consi-
sito de mejorar la tasa de eliminaci6n de errores de dicho
guiente el desarrollo de una mCtrica. Un conjunto de
proceso o el propio disefiador puede desear analizar las
ejemplos de estas preguntas, se exponen a continuaci6n:
normas utilizadas por su empresa con el objetivo de
iC6m0 realizar la cuantificaci6n de 10s trabajos de reducir la cantidad de mano de obra utilizada durante
revisibn? el mantenimiento. Una segunda plantilla esti relacio-
~Deberiaser tenido en cuenta el tamaiio del producto nada con la perspectiva. Esta plantilla pone su atenci6n "
en el cilculo de la disminuci6n de trabajos de revi- en 10s factores que son importantes dentro del propio
si6n o revisiones? proceso o producto que esti siendo evaluado. Ejemplos
Deberia ser tenido en cuenta el increment0 de mano tipicos de esto incluyen 10s factores de calidad de la
de obra de programaci6n requerida para validaciones mantenibilidad, chequeo, uso y otros factores tales como
suplementarias y trabajos de redisefio en comparaci6n el coste y la correcci6n. Esta plantilla se fundamenta en
con el proceso actual de validar un disefio comente. la perspectiva del propio proceso a1 que se dirige.
INGENIERfA DEL SOFTWARE. UN ENFOQUE PRACTICO
Hay varios enfoques que pueden hacerse sobre el pro- teca de software reutilizable. En este estudio se da el soft-
ceso de desarrollo de software - e l del cliente y el del ware de nuestra 5rea de aplicaci6n principal; que es l a d e
control de inventarios.
diseiiador son 10s dos mis tipicos- y la eleccidn de una
u otra perspectiva tiene un efecto muy grande sobre 10s Aqui, el prop6sito es la mejora de un esthdar de pro-
anilisis que se llevan a cabo. Por ejemplo, si un cierto gramacion; la perspectiva es la de la reutilizaci6n bajo
proceso como una revisi6n de requisitos estA siendo ana- el punto de vista del personal encargado de la adminis-
lizada con respecto a1 coste, la perspectiva del diseiiador, traci6n de una biblioteca de software reutilizable, y el
es la del que desea reducir el coste del proceso en tCrmi- entorno son todos aquellos proyectos que impliquen
nos de hacerlo mis eficiente en cuanto a la deteccibn de funciones de control de inventarios.
errores; sin embargo, si despuCs examinamos el mismo Otro ejemplo adicional es el siguiente:
prop6sito pero desde el punto de vista del cliente, con- Deseamos examinar el efecto de utilizar un constructor de
cretamente sobre si su personal puede emplear o no una interfaces grificas, sobre la mejora de las interfaces hombre-
gran cantidad de tiempo en dichas revisiones, entonces miquina, que producimos para nuestros sistemas de adminis-
la perspectiva podria involucrar el plantearse un uso mis traci6n. En particular, deseamos examinar c6mo puede esto
afectar a la facilidad de maneio de estas interfaces por park del
eficiente de dicho tiempo empleado en las revisiones. usuario. Un foco de atencioi principal es c6mo Grcibir5n 10s
Ambas perspectivas son validas -a veces se solapan y usuarios de estos sistemas que dichas interfaces han cambiado.
a veces son antidticas- existe, por ejemplo, una nece-
sidad natural en el diseiiador de maximizar el beneficio Aqui, el prop6sito es analizar una herramienta con
a la vez que el objetivo del cliente es la correcci6n m h i - el objetivo de determinar una mejora con respecto a la
ma del producto y la entrega dentro del plazo. Un punto facilidad de uso, bajo el punto de vista del usuario den-
importante a recalcar es que del examen de la perspecti- tro del context0 de 10s sistemas administrativos. Un
va del producto, el desarrollador esta en una mejor posi- ejemplo final es el siguiente:
ci6n para evaluar un proceso de software y un producto Nuestro objetivo es examinar el proceso de chequeo de
modulos de codigo de forma que podamos utilizar 10s resulta-
de software y tambiCn la mejora de 10s mismos.
dos de las comprobaciones con el fin de predecir el numero de
Una tercera plantilla implica el entomo. Este es el con- defectos de c6digo
- en comprobaciones futuras. La -perspecti--
texto dentro del cual el mCtodo OPM se aplica e implica va que deseamos tener surge de una preocupacion sobre el exce-
el examen del personal, la propia empresa y 10s entornos so de errores que se han cometido y que no han sido detectados
de recursos en 10s que el anhlisis se estA llevando a cabo. hasta el chequeo del sistema. Deseamos ver quC factores son
Factores tipicos de entomo incluyen, por ejemplo, el tipo importantes que permitan que un programad& tome decisie
de sistema informatico que esti siendo usado, las habili- - a 10s
nes sobre si un m d u l o estii disponible para ser entregado
probadores del sistema, o por el contrario requiere una com-
dades del personal implicado en el proyecto, el modelo probation adicional. Deseamos concentramosen nuestro mode-
de ciclo de vida adoptado para tal caso, la cantidad de lo de ciclo de vida actual con programadores que utilizan el
recursos adiestrados disponibles y el irea de aplicaci6n. lenguaje de programacion FORTRAN.
Una vez que tanto el prop6sito como la perspectiva Aqui, el objetivo es la prediccibn, el anilisis de un
y el entomo de un objetivo han sido bien especificados, proceso - e l de chequeo de c6dig- la perspectiva es
el proceso de planteamiento de cuestiones y el desarro- la de reduccidn de costes a travCs de una reduccidn del
110 de una mCtrica o valoraci6n puede comenzar. Antes n6mero de errores residuales, que se deslizan dentro del
de examinar este proceso, merece la pena dar algunos propio chequeo del sistema. La perspectiva es desde el
ejemplos de objetivos empleados en 10s tCrminos plan- punto de vista del programador y el entomo el de 10s
teados. El primer0 se describe a continuaci6n: proyectos convencionales que utilizan el lenguaje de
El objetivo es analizar 10s medios por 10s que revisamos programaci6n FORTRAN.
el c6digo de programacion con el proposito de evaluar la La plantilla prop6sito se utiliza para definir lo que
efectividad en la detection de errores desde el punto de vis- esti siendo estudiado: podria ser un proceso, un pro-
ta del gestor del proyecto de software dentro de 10s proyec-
tos que suministran programas cnticos bajo el punto de vista
d u c t ~un
, estindar o un procedimiento. La plantilla tam-
de la seguridad. biCn define lo que se va a hacer, y la raz6n de hacerlo.
La perspectiva tiene el objetivo de asegurar que 10s obje-
En el ejemplo planteado, el prop6sito es la evalua- tivos no son demasiado ambiciosos: a1 final del dia el
ci6n, la perspectiva es la eliminaci6n de defectos bajo mCtodo OPM requeriri la realizacidn de medidas y estas
el punto de vista del gestor de proyectos dentro del medidas y 10s datos estadisticos asociados serin s610
entomo de aplicaciones en 10s que la seguridad es un efectivos cuanto mis grande sea el n6mero de factores
aspect0 critico. Otro ejemplo es: dentro de un nivel razonable. La plantilla del entomo
Nosotros deseamos examinar la efectividad de las nor- tiene una funci6n similar: reduce el factor de espacio y
mas de programacion que usamos para el lenguaje de pro- permite que Sean hechas comparaciones estadisticas
gramacion C++, con el fin de determinar si son efectivos en
la production de software, que pueda ser reutilizado dentro
efectivas entre procesos y productos.
de otros proyectos. En particular, estamos interesados en lo Con el fin de terminar esta secci6n es provechoso
que se necesita con el fin de organizar efectivamente un depar- analizar el mCtodo OPM en accidn sobre un pequeiio
tamento nuevo encargado de el mantenimiento de una biblio- ejemplo, con el siguiente objetivo de proceso:
CAP~TULO
4 P R O C E S O DEL SOFTWARE Y METRICAS DEL P R O Y E C T O
Analicese el proceso de confection de prototipos con el pre una complejidad ponderada Ci . Entonces el tamaiio de
p6sito de evaluar desde el punto de vista del desarrollador, el 10s requisitos totales sera:
numero de requisitos que se rechazan por el cliente en m a ulti-
n
ma etapa del proyecto.
CRi.Ci
Nosotros asumiremos un modelo desechable de con- i=O
fecci6n de prototipos en el que se use una tecnologia Supongamos que una cierta proporci6n p de estos
como la de un lenguaje tipico de cuarta generaci6n para requisitos han sido puestos en cuesti6n emprendikndo-
desarrollar una version rapida de un sistema que, cuan- se un chequeo de aceptacion por parte del cliente, y que
do el cliente lo ha aceptado, se implemente de forma estos requisitos no han sido debidos a cambios en las
convencional con la eliminaci6n del propio prototipo. propias circunstancias del cliente. Entonces, la mCtrica
Esto plantea un cierto n6mero de preguntas que enton- n
ces pueden ser procesadas con el fin de evaluar el pro- e=p-CRi.Ci
ceso de confecci6n de prototipos desechables: i=O
~QuC medida tomarhmos con 10s requerimientos que representa una cierta medida de la desviaci6n de 10s
se hayan cambiado durante la parte convencional del requisitos desde el prototipo a lo largo del chequeo de
proyecto? aceptaci6n.
$e deben ponderar todos 10s requisitos de forma Este valor puede entonces ser comparado con 10s
igualitaria o son algunos mas complejos que otros? valores base de otros proyectos de confecci6n de pro-
~QuC tipos de carnbios en 10s requisitos debemos con- totipos que tengan un entorno parecido. Si se ha obser-
s i d e r ~ DespuCs
? de todo, algunos de ellos s e h debi- vado una cierta mejora, la siguiente etapa es intentar
dos a imperfeccimes en el proceso de confecci6n de descubrir cdmo se ha logrado esta mejora, por ejemplo,
prototipos mientras que otros podn'an tener que ver en este proyecto el cliente puede haber enviado el mis-
con factores extraiios que pueden ser debidos a cam- mo representante para ayudar en las demostraciones del
bios en las propias circunstancias del cliente. prototipo y por consiguiente ha conseguido una con-
Con el fin de aplicar el mCtodo OPM, necesitamos sistencia mayor que faltaba en otros proyectos, o el per-
un modelo del proceso que estC llevandose a cab0 y un sonal del desarrollo que estaba implicado en el proyecto
modelo de la perspectiva de calidad: el n6mero de cam- puede haber estado formado por analistas en lugar de
bios en 10s requisitos que son exigidos por el cliente no disefiadores, y asi haber constituido una mas s6lida rela-
provienen generalmente de cambios en sus propias cir- cion con el cliente. Si se observaba un increment0 en la
cunstancias. mCtrica e, entonces un analisis similar deberia llevarse
Supongamos que el modelo para el proceso de con- a cab0 en tCrminos de lo que constituian 10s factores
fecci6n de prototipos desechables es: desfavorables que afectaban a1 proyecto.
1. Especificar 10s requisitos. Lo ya expuesto, entonces, ha sido un resumen esque-
matico del proceso OPM. Un punto importante a con-
2. Valorar cada requisito en importancia seglin tCrmi- siderar es que ya que existe un nlimero casi infinito de
nos del cliente. mCtricas que pueden usarse para caracterizar un pro-
3. Valorar cada requisito en tCrminos de la compleji- ducto de software y un proceso de software existe una
dad de su descripci6n. necesidad de determinar la forma de seleccionarlas, o
4. Planificar una serie de reuniones de revisi6n en las que dicho de otra forma, cual de las OPM es el mejor ejem-
se presente a travCs de un prototipo una cierta selec- plo. Una vez que esto ha sido tomado en consideracion
ci6n de requisitos donde el gestor del proyecto tome en una empresa, esa empresa puede entonces implicar-
una decisi6n sobre en quC se basa la selecci6n de una se en una actividad continua de mejora de procesos, que
presentaci6n de, por ejemplo, dos horas de duraci6n. la coloque en un nivel4 6 5 de la Escala de Modelos de
Supongamos un modelo muy simple de perspectiva Madurez de Capacidades y asi distinguirla de aquellas
de calidad, donde cada requisito Ri estC asociado con otras que lleguen s610 a niveles 1 6 2.
Debido a que el proceso de software y el product0 que to no sera la misma que otras metricas similares selec-
tal proceso produce son ambos influenciados por cionadas para otro proyecto. En efecto, hay a menudo
muchos parametros (por ejemplo: el nivel de habili- variaciones significativas en las mCtricas elegidas como
dad de 10s realizadores de dichos procesos, la estruc- parte del proceso de software.
tura del equipo de software, el conocimiento del Puesto que la misma m6trica de procesos variari de un
cliente, la tecnologia que va a ser implementada, las proyecto a otro proyecto, jc6m0 podemos decir si unos
herramientas que seran usadas en la actividad de desa- valores de metricas mejoradas (o degradadas) que ocu-
rrollo), la mCtrica elegida para un proyecto o produc- rren como consecuencia de actividades de mejora e s t h
de hecho teniendo un impact0 cuantitativo real? iC6mo Calcular 10s rangos m6viles: el valor absoluto de las
.sabersi lo que nosotros estarnos contemplandoes una ten- diferencias sucesivas entre cada pareja de puntos de
dencia estadlsticamente valida o si esta <<tendencia>> es datos... Dibujar estos rangos m6viles sobre el grifico.
simplementeel resultado de un ruido estadistico? i C u h - Calcular la media de 10s rangos mbviles... dibujando
do son significativos 10s cambios (ya sean positivos o Csta (ccbarra Rm)>)como la linea central del propio
negativos) de una mCtrica de software particular? grafico.
Multiplicar la media por 3.268. Dibujar esta linea
como el limite de control superior [LCS]. Esta linea
supone tres veces el valor de la desviaci6n estindar
por encima de la media.
Usando 10s datos representados en la figura 4.8 y 10s
distintos pasos sugerihos por Zultner como anteiior-
mente se ha descrito, desarrollamos un grafico de con-
trol Rm que se muestra en la Figura 4.9. El valor (medio)
Se dispone de una tCcnica grafica para determinar si ccbarra Rm>>para 10s datos de rango m6vil es 1.71. El
10s cambios y la variaci6n en 10s datos de la mCtrica son limite de control superior (LCS) es 5.57.
significativos. Esta ttcnica llamada grafico de control
y desarrollada por Walter Shewart en 19201°, permite
que 10s individuos o las personas interesadas en la mejo-
ra de procesos de software determine si la dispersion
(variabilidad) y <<lalocalizaci6n>>(media m6vil) o mttri-
ca de procesos que es estable (esto es, si el proceso exhi-
be cambios controlados o simplemente naturales) o
inestable (esto es, si el proceso exhibe cambios fuera Para determinar si la dispersion de las mCtricas del
de control y las mCtricas no pueden usarse para prede- proceso es estable puede preguntarse una cuestidn muy
cir el rendimiento). Dos tipos diferentes de grificos de sencilla: iEst6n 10s valores de rango m6vil dentro del
control se usan en la evaluaci6n de 10s datos mCtricos LCS? Para el ejemplo descrito anteriormente, la con-
[ZUL99]: (1) el grafico de control de rango m6vil (Rm) testacion es <&>. Por consiguiente, la dispersi6n de la
y (2) el grafico de control individual. mCtrica es estable.
Para ilustrar el enfoque que significa un grhfico de El grafico de control individual se desarrolla de la
control, consideremos una organizaci6n de software que manera siguientel':
registre en la mCtrica del proceso 10s errores descubiertos 1. Dibujar 10s valores de la mCtrica individual segun se
por hora de revisidn, Er. Durante 10s pasados 15 meses, describe en la Figura 4.8.
la organizaci6n ha registrado el Er para 20 pequefios
proyectos en el mismo dominio de desarrollo de soft- 2. Calcular el valor promedio, A,, para 10s valores de
ware general. Los valores resultantes para E, e s t h repre- la mCtrica.
sentados en la figura 4.8. Si nos referimos a la figura, 3. Multiplicar la media de 10s valores Rm (la barra Rm)
Er varia desde una tasa baja de 1.2 para el proyecto 3 a por 2.660 y aiiadir el valor de A, calculado en el paso
una tasa mas alta de 5.9 para el proyecto 17. En un 2. Esto da lugar a lo que se denomina limite de pro-
esfuerzo de mejorar la efectividad de las revisiones, la ceso natural superior (LPNS). Dibujar el LPNS.
organizaci6n de software proporcionaba entrenamien- 4. Multiplicar la media de 10s valores Rm (la barra Rm)
to y asesoramiento a todos 10s miembros del equipo del por 2.660 y restar este valor del A, calculado en el
proyecto, comenzando con el proyecto 1 1. paso 2. Este cilculo da lugar a1 limite de proceso
natural inferior (LPNI). Dibujar el LPNI. Si el LPNI
es menor que 0.0, no necesita ser dibujado a menos
iComo podemos estar que la mCtrica que esti siendo evaluada tome valo-
seguros de que las metricas res que sean menores que 0.0.
que hernos recopilado son 5. Calcular la desviaci6n estindar segun la f6rmula
estadisticamente validas? (LPNS - Am)/3. Dibujar las lineas de la desviaci6n
estindar una y dos por encima y por debajo de A,.
Richard Zultner proporciona una vista general del Si cualquiera de las lineas de desviaci6n estindar es
procedimiento que se requiere para desarrollar un gra- menor de 0.0, no necesita ser dibujada a menos que
jico de control de rango m6vil (Rm) para determinar la la mCtrica que esta siendo evaluada tome valores que
estabilidad del proceso [ZUL99]: sean menores que 0.0.
fa-
:. -:..........................................
............. ..................... ., I
FIGURA 4.8. Datos de metricas para descubrir errores FIGURA 4.9. Grafico de control de rango movil (Rm).
por hora de revision.
Referencia Web 3
Se puede encontror un Grbfico de Control Comlin
que cubre el tema en olguno dimensibn en: Proyectos
www.sytsma.com/tqmtools/ctlthfprinciples.html FIGURA 4.10. Grafico de control individual.
La amplia mayoria de las organizaciones de desarrollo [KAU99] describe un escenario tipico que ocurre cuan-
de software tienen menos de 20 personas dedicadas a1 do se piensa en programas mCtricos para organizacio-
software. Es poco razonable, y en la mayoria de 10s casos nes pequefias de software:
no es realists, esperar que organizaciones como Cstas Originalrnente,10s desarrolladoresde software acog'an nues-
desarrollen programas mCtricos de software extensos. tras actividades con un alto grado de escepticisrno,pero al final
Sin embargo, si que es razonable sugerir que organiza- las aceptaban debido a que nosotros conseguiamos que nues-
ciones de software de todos 10s tamafios midan y des- tras rnedidas fueran simples de realizar, adaptadas a cada orga-
nizacibn y se aseguraba que dichas rnedidas producian una
puCs utilicen las mCtricas resultantes para ayudar a infomaci6n vilida y litil. Al final, 10s programas proporcio-
mejorar sus procesos de software local y la calidad y naban una base para encargarse de 10s clientes y para la plani-
oportunidad de 10s productos que realizan. Kautz ficacibn y desarrollo de su trabajo futuro.
Defectos descubiertos despuCs de que el carnbio se
haya desviado a la base del cliente, Dcambio.
Si estbs empezando a reuni mt%icas del s o h r e ,
recuerda guardarlos.Si te entierras con datos, iu esfuerzo ~Comopuedo derivar
con 10s metricas puede follar. un conjunto <simple))
de metricas del software?
Lo que Kautz sugiere es una aproximacion para la
implementaci6n de cualquier actividad relacionada con
el proceso del software: que sea simple; adaptada a satis- Una vez que estas medidas han sido recogidas para
facer las necesidades locales y que se constate que real- un cierto numero de peticiones de cambio, es posible cal-
mente &da valor. En 10s phafos siguientes examinamos cular el tiempo total transcurrido desde la peticion de
c6mo se relacionan estas lineas generales con las mCtri- carnbio hasta la implernentacion de dicho carnbio y el
cas utilizadas para negocios pequefios. porcentaje de tiempo consumido por el proceso de colas
<<Parahacerlo fhcib, es una linea de accion que iniciales, la asignaci6n de cambio y evaluacion, y la irnple-
funciona razonablemente bien en muchas actividades. mentaci6n del cambio propiamente dicho. De forma sirni-
Pero jc6m0 deducimos un conjunto sencillo de mCtri- lar, el porcentaje de esfuerzo requerido para la evaluaci6n
cas de software que proporcionen valor, y c6mo pode- y la implementaci6n puede tambiCn ser determinado.
mos estar seguros de que estas mCtricas sencillas Estas mktricas pueden ser evaluadas en el context0 de 10s
lograran satisfacer las necesidades de una organiza- datos de calidad, Ec,rnpioy D carnbio. Los porcentajes pro-
cion de software particular? Comenzamos sin cen- porcionan un anhlisis intemo para buscar el lugar donde
trarnos en la medicion, per0 si en 10s resultados 10s procesos de peticion de carnbio se ralentizan y pue-
finales. El grupo de software es interrogado para que den conducir a unos pasos de mejoras de proceso para
defina un objetivo simple que requiera mejora. Por reducir tco!, r.teml. ;Micamhior yI0 Ecarnbio. Adem's?
ejemplo, ccreducir el tiempo para evaluar e imple- la eficiencia de elimination de defectos (EED) puede ser
mentar las peticiones de cambia>>. Una organizacion calculada de la siguiente manera:
pequefia puede seleccionar el siguiente conjunto de
medidas fhcilmente recolectables:
'
EED = Ecambio (Ecarnbio+Dcarnbio)
EED puede compararse con el tiempo transcurrido y el
Tiempo (horas o dias) que transcurren desde el
esfuerzo total para determinar el impact0 de las activi-
momento que es realizada una petici6n hasta que se
dades de aseguramiento de la calidad sobre el tiempo y
complete su evaluacion, tcola.
el esfuerzo requeridos para realizar un cambio.
Esfuerzo (horas-persona) para desarrollar la evalua- Para grupos pequefios, el coste de incorporar medi-
cion, We,,,. das y mCtricas de chlculo oscila entre el 3 y el 8 por 100
Tiempo (horas o dias) transcurridos desde la termi- del presupuesto del proyecto durante la fase de apren-
naci6n de la evaluaci6n a la asignacion de una orden dizaje y despuCs cae a menos del 1 por 100 del presu-
de carnbio a1 personal, teval. puesto del proyecto una vez que la ingenieria del
Esfuerzo (horas-persona) requeridas para realizar el software y la gestion de proyectos se hayan familiari-
carnbio, Wcambio. zado con el programa de mCtricas [GRA99]. Estos cos-
Tiempo requerido (horas o dias) para realizar el cam- tes pueden representar una mejora de las inversiones
bio, tCrnbi,. siempre que el anhlisis derivado a partir de 10s datos de
Errores descubiertos durante el trabajo para realizar la mCtrica conduzcan a una mejora de procesos signifi-
el carnbio, Ecambio. cativa para la organizaci6n del software.
El Instituto de Ingenieria del Software (11s) ha desarro- 6. Identificar preguntas que puedan cuantificarse y 10s
llado una guia extensa [PAR961 para establecer un pro- indicadores relacionados que se van a usar para
grama de medici6n de software dirigido hacia objetivos. ayudar a conseguir 10s objetivos de medicion.
La guia sugiere 10s siguientes pasos para trabajar: 7. Identificar 10s elementos de datos que se van a reco-
1. Identificar 10s objetivos del negocio. ger para construir 10s indicadores que ayuden a res-
2. Identificar lo que se desea saber o aprender. ponder a las preguntas planteadas.
8. Definir las medidas a usar y hacer que estas defi-
3. Identificar 10s subobjetivos. niciones Sean operativas.
4. Identificar las entidades y atributos relativos a esos 9. Identificar las acciones que serhn tomadas para
subobjetivos. mejorar las medidas indicadas.
5. Formalizar 10s objetivos de la medicion. 10. Preparar un plan para implementar estas medidas.
CAPfTULO 4 P R O C E S O DEL SOFTWARE Y M e T R I C A S DEL PROYECTO
3
Referencia Web
Se puede descorgor una guio para lo medicibn del software
orientodo o obietivos desde: www.sei.cmu.edu
Ejemplo de tales entidades incluye: recursos de desarro-
110, productos de trabajo, codigo fuente, casos de prueba,
peticiones de cambio, tareas de ingenieria de software y
planificaciones. Para cada entidad listada, el personal dedi-
cad0 al software desarrolla una sene de preguntas que eva-
Si se quiere entrar en una discusi6n rnis profunda de 16an las caracteristicas cuantitativas de la entidad (por
10s pasos anteriores, lo mejor es acudir directamente a ejemplo: tamafio, coste, tiempo para desarrollarlo). Las
la guia ya comentada del IIS (SEI) Instituto de Inge- cuestiones derivadas como una consecuencia de la crea-
nieria del Softwate. Sin embargo, merece la pena repa- ci6n de una lista tal de preguntas-entidad, conducen a la
sar brevemente 10s puntos clave de Csta. derivacih de un conjunto de objetivos de segundo nivel
Ya que el software, en primer lugar, soporta las fun- (subobjetivos) que se relacionan directarnente con las enti-
ciones del negocio, en segundo lugar, diferencia o clasi- dades creadas y las actividades desarrolladas como una
fica 10s sistemas o productos basados en computadora, y parte del proceso del software.
en tercer lugar puede actuar como un producto en si mis- ConsidCrese el cuarto objetivo apuntado antes:
mo, 10s objetivos definidos para el propio negocio pue- {~Hacer que el soporte para nuestros productos sea rnis
den casi siempre ser seguidos de arriba abajo hasta 10s ficih. La siguiente lista de preguntas pueden ser deri-
objetivos rnis especificos a nivel de ingenieria de soft- vadas a partir de este objetivo [PAR96]:
ware. Por ejemplo, considCrese una compaiiia que fabri- icontienen las preguntas de cambio del cliente la
ca sistemas avanzados para la seguridad del hogar que informaci6n que nosotros requerimos para evaluar
tienen un contenido de software sustancial. Trabajando adecuadamente el cambio y de esa forma realizarle
como un equipo, 10s ingenieros de software y 10s gesto- en un tiempo y formas oportunos?
res del negocio, pueden desarrollar una lista de objetivos iC6mo es de grande el registro de peticiones de
del propio negocio convenientemente priorizados: cambio?
1. Mejorar la satisfacci6n de nuestro cliente con nues- jEs aceptable nuestm tiempo de respuesta para localizar
tros productos. errores de acuerdo a las necesidades del cliente?
2. Hacer que nuestros productos Sean rnis ficiles de usar. i S e sigue convenientemente nuestro proceso de
3. Reducir el tiempo que nos lleva sacar un nuevo control de cambios (Capitulo 9)?
producto a1 mercado. iSe llevan a cab0 10s cambios de alta prioridad de
4. Hacer que el soporte que se dC a nuestros produc- manera oportuna y sincronizada?
tos sea mis ficil. Basindose en estas cuestiones, la organizaci6n de
5. Mejorar nuestro beneficio global. software puede deducir 10s objetivos de segundo nivel
(subobjetivos) siguientes: Mejorar el rendimiento del
proceso de gesti6n del cambio. Las entidades de proceso
de software y atributos que son relevantes para 10s
10s metricas del software que elijos estorbn conducidos prop6sitos u objetivos rnis especificos o de segundo
por el negocio o por 10s obietivos tkcnicos que desees nivel son identificados y se definen ademis las metas u
cumplir. objetivos de medida asociados con dichos atributos.
El IIS [PAR961 proporciona una guia detallada para
La organizaci6n de software examina cada objetivo de 10s pasos 6 a1 10 de este enfoque de medida orienta-
negocios y se pregunta: qQuC actividades gestionaremos do hacia objetivos. En esencia, se aplica un proceso
(ejecutaremos) y quC queremos mejorar con estas activi- de refinamiento por pasos en el que 10s objetivos son
dades?u Para responder a estas preguntas el IIS recornienda refinados en preguntas que son a su vez refinadas de
la creaci6n de una dista de preguntas-entidadu, en la que forma rnis detallada en entidades y atributos que por
todas las cosas (entidades) dentro del proceso de softwa- ultimo se analizan en un 6ltimo paso de forma rnis
re que Sean gestionadas o estCn influenciadas por la orga- minuciosa a nivel de la mCtrica en si.
La medici6n permite que gestores y desarrolladores to se utilizan para calcular las metricas del softwa-
mejoren el proceso del software, ayuden en la pla- re. Estas metricas se pueden analizar para propor-
nificaci61-1, seguimiento y control de un proyecto de cionar indicadores que guian acciones de gesti6n y
software, y evaluen la calidad del producto (soft- tCcnicas.
ware) que se produce. Las medidas de 10s atributos Las mCtricas del proceso permiten que una orga-
especificos del proceso, del proyecto y del produc- nizaci6n tome una visi6n estratCgica proporcionan-
do mayor profundidad de la efectividad de un proce- ireas de proceso del software que son la causa de 10s
so de software. Las mCtricas del proyecto son ticti- defectos del software.
cas. Estas permiten que un gestor de proyectos adapte Las metricas tienen significado solo si han sido
el enfoque a flujos de trabajo del proyecto y a pro- examinadas para una validez estadistica. El grifico
yectos t6cnicos en tiempo real. de control es un mCtodo sencillo para realizar esto y
Las metricas orientadas tanto a1 tamaiio como a la a1 mismo tiempo examinar la variaci6n y la localiza-
funci6n se utilizan en toda la industria. Las metricas ci6n de 10s resultados de las mktricas.
orientadas a1 tamafio hacen uso de la linea de c6digo La medici6n produce cambios culturales. La reco-
como factor de normalizaci6n para otras medidas, pilaci6n de datos, el cilculo de metricas y la evaluaci6n
como persona-mes o defectos. El punto de funci6n de metricas son 10s tres pasos que deben implementar-
proviene de las medidas del dominio de informaci6n se a1 comenzar un programa de metricas. En general,
y de una evaluaci6n subjetiva de la complejidad del un enfoque orientado a 10s objetivos ayuda a una orga-
problema. nizaci6n a centrarse en las metricas adecuadas para su
Las metricas de la calidad del software, como negocio. Los ingenieros del software y sus gestores pue-
metricas de productividad, se centran en el proceso, den obtener una visidn m8s profunda del trabajo que
en el proyecto y en el producto. Desarrollando y ana- realizan y del producto que elaboran creando una linea
lizando una linea base de metricas de calidad, una base de metricas -una base de datos que contenga
organizaci6n puede actuar con objeto de corregir esas mediciones del proceso y del product-.
[ALA97] Alain, A., M. Maya, J. M. Deshamais y S. St. Pie- [IEE93] IEEE Software Engineering Standards, Std. 6 10.12-
rre, <<AdaptingFunction Points to Real-Time Software,,, 1990, pp. 47-48.
American Programmer, vol. 10, n." 11, Noviembre 1997,
pp. 32-43. [IFF941 Function Point Counting Practices Manual, Release
4.0, International Function Point Users Group (IFPUG), 1994.
[ART851Arthur, L. J., Measuring Programmer Productivity
and Software Quality, Wiley-Interscience, 1985.
[JON861 Jones, C., Programming Productivity, McGraw-Hill,
1986.
[ALB79] Albrecht, A. J., <<MeasuringApplication Develop-
[JON911 Jones, C., Applied Software Costs, McGraw-Hill,
ment Productivity,>,Proc. IBM Application Development
1991.
Symposium, Monterey, CA, Octubre 1979, pp. 83-92.
[JON981 Jones, C., Estimating Software Costs, McGraw-Hill,
[ALB83] Albretch, A. J., y J. E. Gaffney, <<SoftwareFunc- 1998.
tion, Source Lines of Code and Development ~ f f o rPre-
t
diction: A Software Science Validation>>,IEEE Trans. [KAU99] Kautz, K., <<MakingSense of Measurement for Small
Software Engineering, Noviembre 1983, pp. 639-648. Organizations,, IEEE Software, Marzo 1999, pp. 14-20.
[BOE8 I ] Boehm, B., Software Engineering Economics, Pren- [MCC78] McCall, J. A., y J. P. Cavano, <<AFramework for
tice Hall, 1981. the Measurement of Software Quality,, ACM Software
Quality Assurance Workshop, Noviembre 1978.
[GRA87] Grady, R.B., y D.L. Caswell, Software Metrics: Esta-
blishing a Company-Wide Program, Prentice-Hall, 1987. [PAU94] Paulish, D., y A. Carleton, <<CaseStudies of Soft-
ware Process Improvement Measurement,,, Computer, vol.
[GRA92] Grady, R.G., Practical Software Metrics for Pro- 27, n.' 9, Septiembre 1994, pp. 50-57.
ject Management and Process Improvement, Prentice-Hall,
1992. [PAR961 Park, R. E., W. B. Goethert y W. A. Florac, Goal
Driven Software Measurement-A Guidebook, CMU/SEI-
[GRA94] Grady, R., ccSuccesfully Applying Software 96-BH-002, Software Engineering Institute, Camegie
Metricw, Computer, vol. 27, n.' 9, Septiembre 1994, pp. Mellon University, Agosto 1996.
18-25.
[RAG951 Ragland, B., <<Measure, Metric or Indicator: What's
[GRA99] Grable, R., et al., c<Metricsfor Small Projects: Expe- the Difference?,,, Crosstalk, vol. 8, n.' 3, Marzo 1995,
riences at SEDB,IEEE Software, Marzo 1999, pp. 21-29. pp. 29-30.
[GIL88] Gilb, T., Principles of Software Project Manage- [TAL81] Tjima, D., y T. Matsubara, <<TheComputer Software
ment, Addison-Wesley, 1998. Industry in Japan,,, Computer, Mayo 1981, p. 96.
[HET93] Hetzel, W., Making Software Measurement Work, [WH195] Whitmire, S. A., <<AnIntroduction to 3D Function
QED Publishing Group, 1993. Points>>,Software Development, Abril 1995, pp. 43-53.
[HUM951 Humphrey, W., A Discipline for Software Engi- [ZUL99] Zultner, R. E., aWhat Do Our Metrics Mean?*,
neering, Addison-Wesley, 1995. Cutter IT Journal, vol. 12, n.' 4, Abril 1999, pp. 11-19.
CAPfWLO 4 P R O C E S O DEL SOFTWARE Y METRICAS DEL PROYECTO
4.1. Sugiera tres medidas, tres mCtricas y 10s indicadores que Nlimero de archivos: 8
se podrian utilizar para evaluar un automovil. Numero de interfaces extemos: 2
4.2. Sugiera tres medidas, tres metricas y 10s indicadores Asuma que todos 10s valores de ajuste de complejidad e s h
correspondientes que se podrian utilizar para evaluar el en la media.
departamento de servicios de un concesionario de automo-
viles. 4.12. Calcule el valor del punto de funcion de un sistema empo-
trado con las caracteristicas siguientes:
4.3. Describa, con sus propias palabras, la diferencia entre
mCtricas del proceso y del proyecto. Estructuras de datos intema: 6
4.4. iPor quC las metricas del software deberian mantenerse
Estructuras de datos extema: 3
ccprivadas>>?Proporcione ejemplos de tres metricas que debie- Numero de entradas de usuario: 12
ran ser privadas. Proporcione ejemplos de tres metricas que Numero de salidas de usuario: 60
debieran ser publicas. Numero de peticiones de usuario: 9
4.5. Obtenga una copia de [HUM951 y escriba un resumen en Nlimero de interfaces extemos: 3
una o dos piginas que esquematice el enfoque PSP. Transformaciones: 36
Transiciones: 24
4.6. Grady sugiere una etiqueta para las metricas del soft-
ware. ~ P u e d eafiadir m i s reglas a las sefialadas en la Sec- Asuma que la complejidad de las cuentas anteriores se divi-
ci6n 4.2. I? de de igual manera entre bajo, medio y alto.
4.7. Intente completar el diagrarna en espina de la Figura 4.3. 4.13. El software utilizado para controlar una fotocopiadora
Esto es, siguiendo el enfoque utilizado para especificaciones avanzada requiere 32.000 lineas de C y 4.200 lineas de Small-
<<incorrectas>>,
proporcione informacion analoga para ccperdi- talk. Estime el numero de puntos de funci6n del software de
do, ambiguo y cambiow. la fotocopiadora.
4.8. L Q Ues
~ una medida indirecta y por quC son comunes tales 4.14. McCall y Cavano (Seccion 4.5.1) definen un ccmarco de
cambios en un trabajo de metricas de software? trabajon de la calidad del software. Con la utilization de la
informacion de este libro y de otros se amplian 10s tres ccpun-
4.9. El equipo A encontro 342 errores durante el proceso de tos de vista* importantes dentro del conjunto de factores y de
ingenieria del software antes de entregarlo. El equipo B encon- metricas de calidad.
tro 184 errores. i Q u t medidas adicionales se tendrian que
tomar para que 10s proyectos A y B determinen quC equipos 4.15. Desarrolle sus propias metricas (no utilice las presenta-
eliminaron 10s errores mis eficientemente?iQuCmCtricas pro- das en este capitulo) de correction, facilidad de mantenimiento,
pondrian para ayudar a tomar determinaciones? ~ Q u Cdatos integridad y facilidad de uso. Asegurese de que se pueden tra-
historicos podrian ser litiles? ducir en valores cuantitativos.
La mejora del proceso del software (MPS) ha recibido una Garmus, D., y D. Herron, Measuring the Software Pro-
significativa atencion durante la pasada decada. Puesto que cess: A Practical Guide to Functional Measurements, Pren-
la medicion y las mCtricas del software son claves para con- tice-Hall, 1996.
seguir una mejora del proceso del software, muchos libros Kan, S. H., Metrics and Models in Software Quality Engi-
sobre MPS tambiCn tratan las mCtricas. Otras lecturas adi- neering, Addison-Wesley, 1995.
cionales que merecen la pena incluyen: Humphrey [HUM95], Yeh (Sofn~areProcess Control,
Burr, A., y M. Owen, Statistical Methosfor Software Qua- McGraw-Hill, 1993), Hetzel [HET93] y Grady [GRA92] estu-
lity, International Thomson Publishing, 1996. dim c6mo se pueden utilizar las metricas del software para pro-
Florac, W. A., y A. D. Carleton, Measuring the Software porcionar 10s indicadores necesarios que mejoren el proceso
Process: Statistical Process Control for Software Process . del software. Putnarn y Myers (ExecutiveBriefing: Controlling
Improvement, Addison-Wesley, 1999. Software Development, IEEE Computer Society, 1996) y Pul-
~ N G E N I E R ~DEL
A SOFTWARE. UN ENFOQUE PRACTICO
ford y sus colegas (A QuantitativeApproach to Sofhvare Mana- cas del software. Park y otros [PAR961 han desarrollado una
gement, Addison-Wesley, 1996) estudian las mCtricas del pro- guia detallada que proporciona paso a paso sugerencias para
ceso y su uso desde el punto de vista de la gesti6n. instituir un programa de las mCtricas del software para la
Weinberg (Quality Sofhvare Management, Volume 2: First mejora del proceso del software.
Order Measurement, Dorset House, 1993) presenta un mode- La hoja informativa lTMetrics (Editada por Howard Rubin
lo 6til para observar proyectos de software, asegurindose el y publicada por 10s Sewicios de Informaci6n Cutter) presen-
significado de la observaci6n y determinando el significado ta comentarios 6tiles sobre el estado de las mCtricas del soft-
de las decisiones tacticas y estratkgicas. Garmus y Herron ware en la industria. Las revistas Cutter IT Journal y Sofware
(Measuring the Software Process, Prentice-Hall, 1996) trata Development tienen habitualmente articulos y caracteristi-
las mktricas del proceso en el analisis del punto de funci6n. cas completas dedicadas a las mktricas del software.
El Software Productivity Consortium (The Sofhvare Measu- En Internet estan disponibles una gran variedad de fuen-
rement Guidebook, Thomson Computer Press, 1995) pro- tes de informaci6n relacionadas con temas del proceso del
porciona sugerencias 6tiles para instituir un enfoque efectivo software y de las mCtricas del software. Se puede encontrar
de mCtricas. Oman y Pfleeger (Applying Software Metrics, una lista actualizada con referencias a sitios (paginas) web
IEEE Computer Society Press, 1997) han editado una exce- que son relevantes para el proceso del Software y para las
lente antologia de documentos importantes sobre las mCtri- metricas del proyecto en http://www.pressman5.com.
&Qu6e ~ ?La planificacidn de un proyec- mas y prcductos basados en computa- &Cudes e8 producto obtenido? Se
to d e software realmente comprende dora cuestan considerablemente m&s obtiene una tabla que indica las tare-
todas las actividades tratadas en 10s que construir una casa grande, podria a s a desarrollar, las funciones a imple-
Capifulos 5 a1 9. Sin embargo, en el ser razanable descmollar y estimarantes mentar, y el coste, esfuerzo y tiempo
context0 de este capitulo, la planifica- de empezar a construir el software. necesario para la realizaci6n d e cada
ci6n implica la estimaci6n -su inten- una. T a m b i h s e obtiene una lista d e
#,CuL!es son 10s pasos? La estimaci6n
to por determinar cudnto dinero. recursos necesarios para el proyecto.
comienza con una descripci6n del
esfuerzo, recursos, y tiempo supondr6
6mbito del producto. Hasta que no s e kC6mo puedo eshr segura de que
construir un sistema o producto espe-
rdelimita. el dmbito no e s posible rea- lo he hecho eorrectamente? Esto
cifico de software--.
lizar una estimaci6n con sentido. El e s dificil, puesto que realmente no lo
&QuI&nlo hace? Los gestores del soft- problema e s entonces descompuesto sabrd hasta que el proyecto haya h a -
ware -utilizando la informaci6n soli- en un conjunto de problemas de menor lizado. Sin embargo, si tiene experien-
citada (I10s clientes y a 10s ingenleros tamafio y cada uno de Bstos s e estima cia y sigue un enfoque sistemdtico,
d e software g 10s datos de metricas de
cnftornra nlulnnirln. .-la nrnnartna nntn-
guidndose con datos hist6ricos y con
1 . . - C ... - .. ...*. ,...
realiza estimaciones utilizando datos
1 3 ..
En el Capitulo 6 se presentan tecnicas sistematicas para el analisis 3 Esto n o significa que siempre sea aceptable politicamente modifi-
del riesgo. car las estimaciones iniciales. Una organization de software madura
El tamario se incrementa con frecuencia debido a1 cambio del ambito. y sus gestores reconocen que el cambio no es libre. Y sin embargo
que ocurre cuando el cliente modifica 10s requisitos. El increment0 del muchos clientes solicitan (incorrectamente) que una vez realizada la
tamario del proyecto puede tener un impacto geometric0 en el coste y estimacion deberia mantenerse independientemente de que las cir-
en la planificacion del proyecto [MAH96]. cunstancias cambien.
CAPfTULO 5 PLANIFICACI~N
DE P R O Y E C T O S DE SOFTWARE
La primera actividad de la planificaci6n del proyecto de tado; ambos esthn pensando hasta d6nde podrian llegar
software es determinar el Ambit0 del software. Se deben (probablemente 10s dos tienen aqui diferentes expecta-
evaluar la funci6n y el rendimiento que se asignaron a1 tivas); ambos quieren quitirselo pronto de encima; per0
software durante la ingenieria del sistema de computa- a1 mismo tiempo quieren que salga bien.
dora (Capitulo lo), para establecer un imbito de pro-
yecto que no sea ambiguo, ni incomprensible para ~Comodeberia empezar la
directivos y tkcnicos. Se debe delimitar la declaraci6n comunicacion entre el
del hmbito del software. desarrollador y el cliente?
El cimhito del software describe el control y 10s
datos a procesar, la funcibn, el rendimiento, las res- Sin embargo, se debe iniciar la comunicacibn. Gau-
tricciones, las interfaces y la fiabilidad. Se evallian las se y Weinberg [GAU89] sugieren que el analista comien-
funciones descritas en la declaraci6n del imbito, y en ce haciendo preguntas de contexto lihre. Es decir, una
algunos casos se refinan para dar mhs detalles antes serie de preguntas que lleven a un entendimiento bhsi-
del comienzo de la estimaci6n. Dado que las estima- co del problema, las personas que esthn interesadas en
ciones del coste y de la planificaci6n temporal estin la solucibn, la naturaleza de la solucidn que se desea y
orientadas a la funcibn, muchas veces es litil llegar a la efectividad prevista del primer encuentro.
un cierto grado de descomposici6n. Las consideracio- El primer conjunto de cuestiones de contexto libre se
nes de rendimiento abarcan 10s requisitos de tiempo centran en el cliente, en 10s objetivos globales y en 10s
de respuesta y de procesamiento. Las restricciones beneficios. Por ejemplo, el analista podria preguntar:
identifican 10s limites del software originados por el iQuiCn esti detris de la solicitud de este trabajo?
hardware externo, por la memoria disponible y por iQuiCn utilizarh la soluci6n?
otros sistemas existentes. ~ C U seri
A el beneficio econ6mico de una buena solu-
ci6n?
5.3.1.Obtenci6n de la informaci6n necesaria iHay otro camino para la soluci6n?
para el ambito Las preguntas siguientes permiten que el analista
A1 principio de un proyecto de software las cosas siem- comprenda mejor el problema y que el cliente exprese
pre estin un poco borrosas. Se ha definido una necesi- sus percepciones sobre una soluci6n:
dad y se han enunciado las metas y objetivos bisicos, iC6m0 caracterizaria' [el cliente] un resultado
per0 todavia no se ha establecido la informaci6n nece- cccorrecto>> que se generan'a con una soluci6n satis-
saria para definir el imbito (prerrequisito para la esti- factoria?
maci6n). i c o n quC problema(s) se afrontari esta soluci6n?
La tCcnica utilizada con mis frecuencia para acercar iPuede mostrarme (o describirme) el entorno en el
a1 cliente y a1 desarrollador, y para hacer que comien- que se utilizarh la soluci6n?
ce el proceso de comunicaci6n es establecer una reu-
ni6n o una entrevista preliminar. La primera reuni6n iHay aspectos o lirnitaciones especiales de rendimiento
entre un ingeniero de software (el analista) y el cliente que afecten a la forma en que se aborde la soluci6n?
puede compararse a la primera cita entre adolescentes. La liltima serie de preguntas se centra en la efecti-
Ninguna persona sabe lo que decir o preguntar; ambos vidad de la reuni6n. Gause y Weinberg las llaman ccmeta-
estin preocupados por si lo que dicen es mal interpre- cuestionesn y proponen la lista siguiente (abreviada):
INGENIERfA DEL SOFTWARE. UN ENFOQUE PRACTICO
~ E usted
s la persona apropiada para responder a estas
preguntas?iSon <<oficiales>> sus respuestas?
i s o n relevantes mis preguntas para su problema?
iEstoy realizando muchas preguntas?
iHay alguien mas que pueda proporcionar informa-
cion adicional?
iHay algo mas que debiera preguntarle?
...no todo lo imaginable es factible,ni siquiera en el softwa-
Estas preguntas (y otras) ayudarh a <<romperel hie- re, fugaz como puede aparecer un forastero. Por el contrario la
lo>>y a iniciar la comunicacion esencial para establecer factibilidad del software tiene cuatro dimensiones s6lidas: Tec-
nologia-iEs factible un proyecto tkcnicamente? iEsti dentro
el Ambito del proyecto. Sin embargo, una reunion basa- del estado actual de la %ca? Financiacibn--iEs factible finan-
da en preguntas y respuestas no es un enfoque que haya cieramente? j h e d e realizarse a un coste asurnible por la empre-
tenido un Cxito abrumador. En realidad, la sesion P&R sa de software y por el cliente? 7'iempejheden 10s proyectos
so10 se deberia utilizar para el primer encuentro, reem- adelantarse a 10s de la competencia?Recursos-iLa organiza-
plazandose posteriormente por un tip0 de reunion que ci6n cuenta con 10s recursos suficientes para tener Cxito?
combine elementos de resoluci6n de problemas, nego- La respuesta es sencilla para algunos proyectos en ciertas
ciacion y especificacion. tireas, ya que se ha hecho antes algun proyecto de este tipo. A
Los clientes y 10s ingenieros de software con fre- las pocas horas, o, a veces, en pocas semanas de investigacion,
se puede estar seguro que se puede hacer de nuevo.
cuencia tienen establecido inconscientemente el pen-
samiento de <<nosotrosy ellos,,. En lugar de trabajar Los proyectos de 10s que no se tiene experiencia no son fhci-
les. Un equipo puede pasarse varios meses descubriendo cuC
como un equipo para identificar y refinar 10s requisi- les son 10s requisitos principales, y cuiles son aquCllos dificiles
tos, cada uno define su propio <<territorio>>y se comu- de implementar para una nueva aplicaci6n. iPodria ocunir que
nica por medio de memorandos, documentos formales alguno de estos requerimientos presentara algunos riesgos que
de situation, sesiones de preguntas y respuestas e infor- hicieran inviable el proyecto? ~Podriansuperarse estos ries-
mes. La historia ha demostrado que este enfoque es gos? El equipo de factibilidad debe asumir la arquitectura y el
muy pobre. Abundan 10s malentendidos, se omite infor- diseiio de 10s requerimientos de alto riesgo hasta el punto de
poder responder todas estas preguntas. En algunos casos, cuan-
macion importante y nunca se establece una relacion do el equip proporciona respuestas negativas, esto puede nego-
de trabajo con Cxito. ciarse con una reduccion de 10s requisitos.
Mientras tanto, 10s altos ejecutivos e s t h repicando sus dedos
en la mesa. A menudo, mueven sus cigarnos de forma elegan-
te, pero de forma impaciente y rodeados de humo exclaman
iYa es suficiente! iHazlo!
Muchos de estos proyectos que se han aprobado de esta for-
ma aparecen a 10s pocos aAos en la prensa como proyectos
Con estos problemas en mente un grupo de investi- defectuosos.
gadores independientes ha desarrollado un enfoque orien-
tad0 a1 equipo para la recopilacion de requisitos que
pueden aplicarse para ayudar a establecer el ambit0 de
un proyecto. Las tCcnicas denominadas tkcnicas para faci-
N estudio de viobilidod es impomnte, per0 10s
litar las especificaciones de la aplicacion (TFEA) (faci-
necesidodes de lo ges176n son incluso mbs importontes.
litated application specification techniques [FAST]), No es bueno construir un pmducto o sistemo de olto
pertenecen a un enfoque que alienta a la creacion de un tecnologio que en reolidod nodie quiero.
equipo compuesto de clientes y de desarolladores que tra-
bajen juntos para identificar el problema, proponer ele- Putnam y Myers sugieren, de forma acertada, que el
mentos de solution, negociar diferentes enfoques y estudio del hmbito no es suficiente. Una vez que se ha
especificar un conjunto preliminar de requisitos. comprendido el hmbito, tanto el equipo de desarrollo
como el resto deben trabajar para determinar si puede
ser construido dentro de las dimensiones reflejadas ante-
5.3.2. Viabilidad riormente. Esto es crucial, aunque es una parte del pro-
Una vez se ha identificado el irnbito (con la ayuda del ceso de estimation pasada por alto a menudo.
cliente), es razonable preguntarse: <<iPodemosconstruir
el software de acuerdo a este hmbito? ~ E factible
s el
proyecto?>>.Con frecuencia, las prisas de 10s ingenie- 5.3.3. Un ejemplo de ambito
ros de software sobrepasan estas preguntas (o e s t h obli- La comunicaci6n con el cliente lleva a una definici6n
gados a pasarlas por 10s clientes o gestores impacientes), del control y de 10s datos procesados, de las funciones
solo se tienen en cuenta en un proyecto condenado des- que deben ser implementadas, del rendimiento y res-
de el comienzo. Putnam y Myers [PUT97a] tratan este tricciones que delimitan el sistema, y de la informaci6n
aspect0 cuando escriben: relacionada. Como ejemplo, consideremos el software
CAPfTULO 5 PLANIFICACION DE PROYECTOS DE SOFTWARE
que se debe desarrollar para controlar un sistema de cla- Busqueda en la base datos.
sificaci6n de cinta transportadora (SCCT). La especifi- Determinar la posici6n del compartimento.
caci6n del h b i t o del SCCT es la siguiente: Producci6n de la seiial de control para el mecanismo
El sistema de clasifrcaci6n & cinta transportadora (SCCT) de maniobra.
clasifica las cajas que se mueven por una cinta transportadora.
Cada caja estara identificada por un c6digo de barras que con- Mantener una lista de 10s destinos de las cajas
tiene un numero de pieza y se clasifica en uno de seis comparti- En este caso, el rendimiento est6 determinado por la
mentos a1 final de la cinta. Las cajas pasarh por una estaci6n de
clasificaci6n que consta de un lector de cMigo de barras y un PC.
velocidad de la cinta transportadora. Se tiene que iermi-
El PC de la estaci6n de clasificaci6n esti conectado a un meca- nar el procesamiento de cada caja antes de que llegue la
nismo de maniobra que clasifica las cajas en 10s compartimen- siguiente caja a1 lector de cddigo de barras. El software
tos. Las cajas pasan en orden aleatorio y estin espaciadas del SCCT est6 limitado por el hardware a1 que tiene que
uniformemente. La cinta se mueve a cinco pies por minuto. En acceder --el lector de c6digo de barras, el mecanismo de
la Figura 5.1 esti representado esquemiticamente el SCCT. maniobra, la computadora personal (PC)-, la memoria
El software del SCCT debe recibir informacidn de entrada de disponible y la configuraci6n global de la cinta trans-
un lector de codigo de barras a intervalos de tiempo que se ajus-
ten a la velocidad de la cinta transportadora. Los datos del cMi-
portadora (cajas uniformemente espaciadas).
go de barras se decodifican a1 formato de identificaci6n de caja.
El software Ilevari a cab0 una inspecci6n en la base de datos de
numeros de piezas que contiene un miximo de 1000 entradas
para determinar la posici6n del compartimento adecuada para la Ajuste la estimacih para refleior 10s requisites
caja que se encuentre actualmente en el lector (estacih de clasi- del rendimiento y 10s resfricciones del diseno dificiles,
ficacion). La posici6n correcta del compartimento se pasari a un incluso si el umbito es sencillo.
mecanismo de maniobra de ordenaci6n que sihia las cajas en el
lugar adecuado. Se mantendrh una lista con 10s compartimentos
destino de cada caja para su posterior recuperaci6n e informe. El La funci6n, el rendimiento y las restricciones se eva-
software del SCCT recibiri tambiCn entrada de un tac6metro de luan a la vez. Una misma funci6n puede producir una
pulsos que se utilizari para sincronizar la seiial de control del diferencia de un orden de magnitud en el esfuerzo de
mecanismo de maniobra. Basindonos en el numero de pulsos desarrollo cuando se considera en un context0 con dife-
que se generen entre la estaci6n de clasificaci6ny el mecanismo
de maniobra. el software ~ r 0 d ~ c una
k 6 seiial de control para que
rentes limites de rendimiento. El esfuerzo y 10s costes
la maniobra &e adecuahamente la caja. requeridos para desarrollar el software SCCT serian
drhsticamente diferentes si la funci6n fuera la misma
(por ejemplo: la cinta transportadora siguiese colocan-
Movimiento do cajas en contenedores), per0 el rendimiento variar6.
de la cinta transportadora Por ejemplo, si la velocidad media de la cinta transpor-
tadora aumentara en un factor de 10 (rendimiento) y las
cajas no estuvieran uniformemente espaciadas (una res-
tricci6n), el software podna ser considerablemente m6s
complejo -requiriendo, por tanto, un mayor esfuerzo
de desarroll-. La funcibn, el rendimiento y las res-
cddigo tricciones e s t h intimarnente relacionadas.
de barras
Conexion
decontrol
FIGURA 5.1. Un sistema de clasificacion de cinta Lo considerocidn del bmbito del software debe contener
transportadora. uno evoluoci6n de todas 10s interfoces externas.
El planificador del proyecto examina la especificaci6n El software interactua con otros elementos del sis-
del 6mbito y extrae todas las funciones importantes del tema inform6tico. El planificador considera la natura-
software. Este proceso, denominado descomposicibn,se leza y la complejidad de cada interfaz para determinar
trat6 en el Capitulo 3 y produce como resultado las fun- cualquier efecto sobre 10s recursos, 10s costes y la pla-
ciones siguientes4: nificaci6n temporal del desarrollo. El concept0 de inter-
faz abarca .lo siguiente: (1) hardware (por ejemplo:
Lectura de la entrada del c6digo de barras. procesador, perifkricos) que ejecuta el software y 10s
Lectura del tac6metro de pulsos. dispositivos (por ejemplo: miquinas, pantallas) que e s t h
Descodificacidn de 10s datos del c6digo de pieza. controlados indirectamente por el software; (2) softwa-
desarrollados para proyectos anteriores que son simi- generalmente se aceptan. El plan del proyecto debe-
lares a1 software que se va a construir para el pro- ria reflejar la utilizaci6n de estos componentes.
yecto actual. Los miembros del equipo de software 3. Si se dispone de componentes de experiencia parcial
actual ya han tenido la experiencia completa en el para el proyecto actual, su uso se debe analizar con
area de la aplicaci6n representada para estos com- detalle. Si antes de que se integren adecuadamente
ponentes. Las modificaciones, por tanto, requeridas 10s componentes con otros elementos del software
para componentes de total experiencia, tendrhn un se requiere una gran modificaci61-1,proceda cuida-
riesgo relativamente bajo. dosamente - e l riesgo es alto-. El coste de modi-
ficar 10s componentes de experiencia parcial algunas
veces puede ser mayor que el coste de desarrollar
componentes nuevos.
Para que lo reutilizacion sea eficiente, 10s componentes De forma irbnica, a menudo se descuida la utili-
de software deben estar cotalogados, estandarizados y zacion de componentes de software reutilizables
volidados. durante la planificaci61-1,llegando a convertirse en la
preocupaci6n primordial durante la fase de desarro-
Componentes con experiencia parcial. Especi- 110 del proceso de software. Es mucho mejor especi-
ficaciones, disefios, c6digo o datos de prueba exis- ficar al principio las necesidades de recursos del
software. De esta forma se puede dirigir la evaluaci6n
tentes desarrollados para proyectos anteriores que
se relacionan con el software que se va a construir tkcnica de alternativas y puede tener lugar la adqui-
para el proyecto actual, per0 que requerirhn una sici6n oportuna.
modificaci6n sustancial. Los miembros del equipo
de software actual han limitado su experiencia s610 5.4.3. Recursos de entorno
a1 area de aplicaci6n representada por estos compo- El entorno es donde se apoya el proyecto de software,
nentes. Las modificaciones, por tanto, requeridas llamado a menudo entorno de ingenieria del software
para componentes de experiencia parcial tendran (EIS),incorpora hardware y software. El hardware pro-
bastante grado de riesgo. porciona una plataforma con las herramientas (soft-
Componentes nuevos. Los componentes de soft- ware) requeridas para producir 10s productos que son
ware que el equipo de software debe construir espe- el resultado de una buena practica de la ingenieria del
cificamente para las necesidades del proyecto software7. Como la mayoria de las organizaciones de
actual. software tienen muchos aspectos que requieren acce-
so a EIS, un planificador de proyecto debe determinar
~ Q u eospectos debemos la ventana temporal requerida para el hardware y el
consideror cuondo plonificamos software, y verificar que estos recursos estaran dispo-
la reutilizacion de componentes de nibles.
software existentes? Cuando se va a desarrollar un sistema basado en com-
putadora (que incorpora hardware y software especia-
lizado), el equipo de software puede requerir acceso a
Deberian ser consideradas las directrices siguientes 10s elementos en desarrollo por otros equipos de inge-
por el planificador de software cuando 10s componen- nieria. Por ejemplo, el software para un control nume'-
tes reutilizables se especifiquen como recurso: rico (CN)utilizado en una clase de maquina herramienta
1. Si 10s componentes ya desarrollados cumplen 10s puede requerir una maquina herrarnienta especifica (por
requisitos del proyecto, adquikralos. El coste de la ejemplo, el CN de un torno) como parte del paso de
adquisici6n y de la integraci6n de 10s componentes prueba de validaci6n; un proyecto de software para el
ya desarrollados seran casi siempre menores que el disefio de paginas avanzado puede necesitar un sistema
coste para desarrollar el software equivalente6.Ade- de composici6n fotografica o escritura digital en algu-
mas, el riesgo es relativarnente bajo. na fase durante el desarrollo. Cada elemento de hard-
2. Si se dispone de componentes ya experimentados, 10s ware debe ser especificado por el planificador del
riesgos asociados a la modificaci6n y a la integraci6n proyecto de software.
Cuando 10s componentes de sofiware existentes se utilizan durante OtrO hardware entorno destin* es la cOm~utadOrasobre la
un proyecto, la reducci6n del coste global puede ser importante. En que Se a ejecutar entregarse al usuariO
efecto, 10s datos de la industria indican que el coste, el tiempo de
adquisicion y el n~imerode defectos entregados a1 cliente s e redu-
cen.
INGENIERfA DEL SOFTWARE. UN ENFOQUE PRACTICO
A1 principio, el coste del software constituia un peque- (por ejemplo: el cliente, las condiciones de gestibn, el
fio porcentaje del coste total de 10s sistemas basados EIS [Entorno de Ingenieria del software], las fechas
en computadora. Un error considerable en las esti- limites) son similares. Por desgracia, la experiencia
maciones del coste del software tenia relativamente anterior no ha sido siempre un buen indicador de futu-
poco impacto. Hoy en dia, el software es el elemen- ros resultados.
to mas car0 de la mayoria de 10s sistemas informhti- Las opciones restantes son mCtodos viables para la
cos. Para sistemas complejos, personalizados, un gran estimaci6n del proyecto de software. Desde un pun-
error en la estimaci6n del coste puede ser lo que mar- to de vista ideal, se deben aplicar conjuntamente las
que la diferencia entre beneficios y pCrdidas. Sobre- tCcnicas indicadas; usando cada una de ellas como
pasarse en el coste puede ser desastroso para el comprobaci6n de las otras. Las te'cnicas de descom-
desarrollador. posicidn utilizan un enfoque de <<dividey vencerhw
La estimaci6n del coste y del esfuerzo del software para la estimaci6n del proyecto de software. Median-
nunca sera una ciencia exacta. Son demasiadas las varia- te la descomposici6n del proyecto en sus funciones
bles -humanas, tCcnicas, de entorno, politicas- que principales y en las tareas de ingenieria del software
pueden afectar a1 coste final del software y a1 esfuerzo correspondientes, la estimaci6n del coste y del esfuer-
aplicado para desarrollarlo. Sin embargo, la estimaci6n zo puede realizarse de una forma escalonada idbnea.
del proyecto de software puede dejar de ser un oscuro Se pueden utilizar 10s modelos empiricos de estima-
arte para convertirse en una serie de pasos sistemhticos cidn como complemento de las tCcnicas de descom-
que proporcionen estimaciones con un grado de riesgo position, ofreciendo un enfoque de estimaci6n
aceptable. potencialmente valioso por derecho propio. Cada
modelo se basa en la experiencia (datos hist6ricos) y
toma como base:
*
fiable tras haber terminado el proyecto!).
zaci6n de desarrollo (por ejemplo, la experiencia, el
Basar las estimaciones en proyectos similares ya ter- entorno) y el software a desarrollar. De estos datos se
minados. obtienen las estimaciones de coste y de esfuerzo.
Utilizar cctkcnicas de descomposici6n>>relativarnente
sencillas para generar las estimaciones de coste y de
esfuerzo del proyecto.
Utilizar uno o mhs modelos empiricos para la esti-
maci6n del coste y esfuerzo del software.
Desgraciadamente, la primera opci6n, aunque atrac- Herramientas CASE.
tiva, noes prhctica. Las estimaciones de costes han de
ser proporcionadas a priori. Sin embargo, hay que reco- Cada una de las opciones viables para la estimaci6n
nocer que cuanto mhs tiempo esperemos, mas cosas de costes del software, s610 sera buena si 10s datos his-
sabremos, y cuanto mas sepamos, menor sera la pro- t6ricos que se utilizan como base de la estimaci6n son
babilidad de cometer serios errores en nuestras esti- buenos. Si no existen datos hist6ricos, la estimaci6n del
maciones. coste descansari sobre una base muy inestable. En el
La segunda opci6n puede funcionar razonablemente Capitulo 4 examinamos las caracteristicas de 10s datos
bien, si el proyecto actual es bastante similar a 10s de productividad del software y c6mo pueden utilizar-
esfuerzos pasados y si otras influencias del proyecto se como base hist6rica para la estimaci6n.
C A P ~ T U L O5 DE
PLANIFICAC~~ N PROYECTOS DE SOFTWARE
El acronimo pm hace referencia a personas-mes. l o En general se descomponen las funciones del problema. Sin embargo.
se puede utilizar una lista de componentes esthdar (Seccion 5.6.1).
I I El lenguaje informal de disetio del proceso setialado aqui se expone
para ilustrar el enfoque general para el dimensionamiento. No tiene
en cuenta ninguna eventualidad logica.
CAP~TULO
5 P L A N I F I C A C I ~ NDE P R O Y E C T O S DE S O F T W A R E
El enfoque de descomposici6n visto anterionnente asu- 5.6.3. Un ejemplo de estimaci6n basada en LDC
me que todas las funciones pueden descomponerse en sub- Como ejemplo de tCcnicas de estimaci6n de LDC y PF,
funciones que podrin asemejarse a entradas de una base tomemos en consideracih un paquete de software a
de datos hist6rica. Si este no es el caso, deberd aplicarse desanollarse para una aplicaci6n de disefio asistido por
otro enfoque de dimensionamiento. Cuanto m& grande computadora (computer-aided design, CAD) de com-
sea el grado de particionamiento, rnhs probable sera que ponentes mecinicos. Una revisi6n de la especijicacidn
pueda desarrollar estirnaciones de LDC m& exactas. del sistema indica que el software va a ejecutarse en una
Para estimaciones de PF, la descomposici6n funcio- estaci6n de trabajo de ingenieria y que debe interconec- ,
na de diferente manera. En lugar de centrarse en la fun- tarse con varios perifkricos de graficos de computadora
ci6n, se estiman cada una de las caracteristicas del entre 10s que se incluyen un ratbn, un digitalizador, una
dominio de informacidn -entradas, salidas, archivos pantalla a color de alta resoluci6n y una impresora lfiser.
de datos, peticiones, e interfaces externas- y 10s cator- Utilizando como guia una especijicacidn de sistema,
ce valores de ajuste de la complejidad estudiados en el se puede desarrollar una descripci6n preliminar del
Capitulo 4. Las estimaciones resultantes se pueden uti- fimbito del software:
lizar para derivar un valor de PF que se pueda unir a
El software de CAD aceptari datos geomCtricos de dos y
datos pasados y utilizar para generar una estimacion. tres dimensiones por parte del ingeniero. El ingeniero se inter-
conectari y controlari el sistema de CAD por medio de una
interfaz de usuario que va a exhibir las caracteristicas de un
buen diseiio de interfaz hombre-miquina. Una base de datos
de CAD contiene todos 10s datos geomCtricos y la informa-
Poro estimociones de PF, la descomposicibn se centro en ci6n de soporte. Se desanollarhn m6dulos de anilisis de dise-
los carocteristicas &I dominio de informacibn. iio para producir la salida requerida que se va a visualizar en
varios dispositivos graficos. El software se diseiiara para con-
trolar e interconectar dispositivos perifkricos entre 10s que
Con independencia de la variable de estimaci6n que se incluyen un rat6n, un digitalizador, una impresora liser y
se utilice, el planificador del proyecto comienza por un trazador grifico (plotter).
estimar un rango de valores para cada funci6n o valor La descripci6n anterior del ambit0 es preliminar
del dominio de informaci6n. Mediante 10s datos hist6- -no esth limitada-. Para proporcionar detalles con-
ricos o (cuando todo lo demhs falla) la intuicibn, el pla- cretos y un limite cuantitativo se tendrian que ampliar
nificador estima un valor de tamaiio optimista, rnhs todas las descripciones. Por ejemplo, antes de que la
probable y pesimista para cada funcibn, o cuenta para estimacion pueda comenzar, el planificador debe
cada valor del dominio de informaci6n. A1 especificar determinar quC significa aaracteristicas de un buen
un rango de valores, se proporciona una indicaci6n disefio de interfaz hombre-mfiquina>>y cu6l sera el
implicita del grado de incertidumbre. tamafio y la sofisticacion de la <<basede datos de
CAD>>.
~ C O calcular
~ O el valor Para estos propbsitos, se asume que ha habido rnhs
esperado para el tamaiio del refinamiento y que se identifican las funciones de soft-
software? ware siguientes:
interfaz de usuario y facilidades de control (IUFC),
Entonces se calcula un valor de tres puntos o espe-
rado. El valor esperado de la variable de estimaci6n anhlisis geomCtrico de dos dimensiones (AG2D),
(tamaiio), VE, se puede calcular como una media pon- anhlisis geomCtrico de tres dimensiones (AG3D),
derada de las estimaciones optimistas (Sop[),las mas gesti6n de base de datos (GBD),
probables (S,), y las pesimistas (Spess).Por ejemplo, facilidades de presentaci6n grhfica de computadora
V E = (Sop,+ 4Sm+ S,,,) / 6 (5.1) (FPGC),
da credit0 a la estimaci6n ccmfis probable>>y sigue una control de perifCricos (CP),
distribuci6n de probabilidad beta. Se asume que existe m6dulos de anfilisis del disefio (MAD).
una probabilidad muy pequeiia en donde el resultado
del tarnaiio real quedarh fuera de 10s valores pesimistas
y optimistas. Muchos oplicociones modernos residen en uno redo son
Una vez que se ha determinado el valor esperado de porte de uno oquitecfiro cliente/servidor. Por
la variable de estimacibn, se aplican datos hist6ricos de consiguiente, estb seguro que sus estimociones contienen
productividad de LDC y PF. iSon correctas las estima- el esfuerzo requerido porn el desorrollo del sohore de lo
ciones? La unica respuesta razonable a esto es: <<No cinfmestiucfiro~.
podemos estar segurosn. Cualquier tCcnica de estima-
ci6n, no importa lo sofisticada que sea, se debe volver Siguiendo la tCcnica de descomposici6n de LDC, se
a comprobar con otro enfoque. Incluso entonces, va a desarrolla la tabla de estimaci6n mostrada en la Figura
prevalecer el sentido comun y la expenencia. 5.3. Se desarrolla un rango de estimaciones de LDC para
INGENIER~A DEL SOFTWARE. UN ENFOQUE PR~CTICO
5.6.5. Estimaci6n basada en el proceso ra tendremos dos o tres estimaciones del coste y del
La tCcnica mis c o m h para estimar un proyecto es basar esfuerzo que se pueden comparar y evaluar. Si ambos
la estimaci6n en el proceso que se va a utilizar. Es decir, tipos de estimaciones muestran una concordancia razo-
el proceso se descompone en un conjunto relativamen- nable, hay una buena raz6n para creer que las estima-
te pequefio de actividades o tareas, y en el esfuerzo ciones son fiables. Si, por otro lado, 10s resultados de
requerido para llevar a cab0 la estimaci6n de cada tarea. estas tCcnicas de descomposici6n muestran poca con-
cordancia, se debe realizar mis investigacibn y anilisis.
A1 igual que las tCcnicas basadas en problemas, la
estimaci6n basada en el proceso comienza con un esbo-
zo de las funciones del software obtenidas a partir del 5.6.6. Un ejemplo de estimaci6n basada
imbito del proyecto. Para cada funci6n se debe llevar en el proceso
a cab0 una serie de actividades del proceso de softwa- Para ilustrar el uso de la estimaci6n basada en el pro-
re. Las funciones y las actividades del proceso de soft- ceso, de nuevo consideremos el software de CAD pre-
ware relacionadas se pueden representar como parte de sentado en la Secci6n 5.6.3. La configuraci6n del sistema
una tabla similar a la presentada en la Figura 3.2. y todas las funciones del software permanecen iguales
y estin indicadas en el imbito del proyecto.
Elmorco de hobaio comh del proceso (MCP)
se estudio en el Copitulo 2.
Si el tiempo lo permite, reolice uno moyor
Una vez que se mezclan las funciones del proble- descomposicih ol especificor los toreos; en lo Figuro 5.5,
ma y las actividades del proceso, el planificador esti- p. ei., se divide el onalisis en sus tareos principoles y se
ma el esfuerzo (por ejemplo: personas-mes) que se estimo coda uno por seporodo.
requerirh para llevar a cab0 cada una de las activida-
des del proceso de software en cada funci6n. Estos En la tabla de estimaci6n de esfuerzos ya termina-
datos constituyen la matriz central de la tabla de la da, que se muestra en la Figura 5.5 aparecen las esti-
Figura 3.2. Los indices de trabajo medios (es decir, maciones de esfuerzo (en personas-mes) para cada
esfuerzo costelunidad) se aplican entonces a1 esfuer- actividad de ingenieria del software proporcionada para
zo estimado a cada actividad del proceso. Es muy pro- cada funci6n del software de CAD (abreviada para
bable que en cada tarea varie el indice de trabajo. El mayor rapidez). Las actividades de ingenieria y de cons-
personal veterano se involucra de lleno con las pri- truccidnlentrega se subdividen en las tareas principa-
meras actividades y generalmente es mucho mhs car0 les de ingenieria del software mostradas. Las estima-
que el personal junior, quienes estin relacionados con ciones iniciales del esfuerzo se proporcionan para la
las tareas de diseiio posteriores, con la generaci6n del comunicacidn con el cliente, planijicacidn y andlisis de
c6digo y con las pruebas iniciales. riesgos. Estos se sefialan en la fila Total en la parte infe-
rior de la tabla. Los totales horizontales y verticales pro-
porcionan una indicaci6n del esfuerzo estimado que se
Actividad Construccion requiere para el anhlisis, disefio, codificaci6n y pruebas.
+ cc p 1 a n i f i c a c i 6 n ~ ~ ~Ingenieria
de riesgo
~~~~~ entrega EC Totales
Se deberia sefialar que el 53 por 100 de todo el esfuer-
Tarea -b AnalisislDiseAo CodigolPrueba
I 1
I I
I I
zo se aplica en las tareas de ingenieria <<frontales)) (an&
I
I I I I I
Funcion I I lisis y diseiio de 10s requisitos) indicando la importancia
v I I I I I I I I I
relativa de este trabajo.
Basado en una tarifa laboral de £5.000 por mes, el
coste total estimado del proyecto es de £230.000 y el
esfuerzo estimado es de 46 personaslmes. A cada acti-
vidad de proceso del software o tareas de ingenieria del
software se le podria asociar diferentes indices de tra-
bajo y calcularlos por separado.
El esfuerzo total estimado para el software de CAD
oscila de un indice bajo de 46 personas-mes (obtenido
CC = Comunicacion cliente EC = Evaluation cliente mediante un enfoque de estimaci6n basado en el pro-
ceso) a un alto de 58 personas-mes (obtenido median-
FIGURA 5.5. Tabla de estimacion basada en el proceso. te un enfoque de estimaci6n de PF). La estimaci6n media
(utilizando 10s tres enfoques) es de 53 personas-mes.
Como ultimo paso se calculan 10s costes y el esfuer- La variation mhxima de la estimaci6n media es apro-
zo de cada funcibn, y la actividad del proceso de soft- ximadamente del 13 por ciento.
ware. Si la estimacion basada en el proceso se realiza ~ Q u Cocurre cuando la concordancia entre las esti-
independientemente de la estimaci6n de LDC o PF, aho- maciones es mala? Para responder a esta pregunta se ha
~ N G E N I E R ~DEL
A SOFTWARE. UN ENFOQUE PRACTICO
de reevaluar la informaci6n que se ha utilizado para 1. No se entiende adecuadamente el ambito del pro-
hacer las estimaciones. yecto o el planificador lo ha ma1 interpretado.
Muchas divergencias entre estimaciones se deben a
2. Los datos de productividad usados para tCcnicas de
una de dos causas:
estimaci6n basados en problemas no son apropiados
para la aplicaci611, e s t h obsoletos (ya no reflejan con
precisi6n la organizacibn de la ingenieria del soft-
No espere que todos 10s estimociones coincidon ware), o se han aplicado err6neamente.
en uno o dos porcentojes. Silo estimocibn eshj
demo de uno bondo del20 por 100, puede El planificador debe determinar la causa de la diver-
reconcilio~seen un inico volor. gencia y conciliar las estimaciones.
Un modelo de estimacidn para el software de computa- seiialada en la Ecuaci6n (5.2) la mayoria de 10s mode-
dora utiliza f61mulas derivadas empiricamente para pre- 10s de estimaci6n tienen algun componente de ajuste del
decir el esfuerzo como una funci6n de LDC o PF. Los proyecto que permite ajustar E por otras caracteristicas
valores para LDC o PF son estimados utilizando el enfo- del proyecto (por ejemplo: complejidad del problema,
que descrito en las Secciones 5.6.2 y 5.6.3. Pero en lugar experiencia del personal, entorno de desarrollo). Entre
de utilizar las tablas descritas en esas secciones, 10s valo- 10s muchos modelos de estimaci6n orientados a LDC
res resultantes para LDC o PF se unen a1 modelo de esti- propuestos en la bibliografia se encuentran 10s siguien-
maci6n. Los datos empiricos que soportan la mayoria tes:
de 10s modelos de estimaci6n se obtienen de una mues- E = 5,2 x (KLDC)~.~' Modelo de Walston-Felix
tra limitada de proyectos. Por esta razon, el modelo de E = $5 + 0,73 x
estimacidn no es adecuado para todas las clases de soft- (KLDC)'.'~ Modelo de Bailey-Basili
ware y en todos 10s entornos de desarrollo. Por consi- E = 3,2 x (KLDC)'"~ Modelo simple de Boehm
guiente, dos resultados obtenidos de dichos modelos se E = 5,288 x (KLDC)',M7 Modelo Doty para KLDC > 9
deben utilizar con prudencia13.
TambiCn se han propuesto 10s modelos orientados a
5.7.1. La estructura de 10s modelos de estimaci6n PF. Entre estos modelos se incluyen:
E = - 13,39 + 0,0545 PF Modelo de Albretch
Y Gaffney
E = 60,62 x 7,728 x
x 10.' PF' Modelo de Kemerer
Un modelo de estimacion refleja la contidad de proyectos E = 585,7 + l5,l2 PF Modelo de Matson, Barnett
y Mellicharnp
a portir de donde se ha obtenido. Por consiguiente,
el modelo es susceptible ol dominio. Un ripido examen de 10s modelos listados anterior-
mente indica que cada uno produciri un resultado dife-
Un modelo comun de estimaci6n se extrae utilizando el rente14para el mismo valor de LDC y PF. La implicaci6n
analisis de regresi6n sobre 10s datos recopilados de pro- es clara. Los modelos de estimaci6n se deben calibrar
yectos de software anteriores. La estructura global de para necesidades locales.
tales modelos adquiere la forma de [MAT94]:
E =A +B x ( e ~ ) ~ (5.2)
donde A, B y C son constantes obtenidas empiricamen- Ninguno de estos modelos debeio ser oplicodo
te, E es el esfuerzo en personas-mes, y ev es la variable inodecuodomente o su entarno.
de estimacion (de LDC o PF). Ademis de la relacion
l 3 En general se deberia calibrar un rnodelo de estirnacion para las l 4 Esta referencia se fundarnenta en que estos modelos a menudo se
condiciones locales. El modelo se deberia ejecutar utilizando 10s resul- derivan de un nurnero relativamente pequeAo de proyectos solo en
tados de proyectos terminados. Los datos previstos por el modelo se unos cuantos dominios de la aplicacion.
deberian cornparar con 10s resultados reales, y la eficacia del modelo
(para condiciones locales) deberia ser evaluada. Si la concordancia
no es buena, 10s coeficientes del modelo se deben volver a calcular
utilizando datos locales.
C A P ~ T U L O5 P L A N I F I C A C I 6 N DE P R O Y E C T O S DE SOFTWARE
5.7.2. El modelo COCOMO una pantalla o informe) se clasifica en uno de 10s tres
Barry Boehm [BOE81], en su libro clasico sobre cceco- niveles de complejidad (esto es, basico, intermedio, o
nomia de la ingenieria del softwaren, introduce una jerar- avanzado) utilizando 10s criterios sugeridos por Boehm
quia de modelos de estirnacion de software con el [BOE96]. En esencia, la complejidad es una funci6n del
nombre de COCOMO, por Constructi~leCost Model numero y origen de las tablas de datos del cliente y ser-
(Modelo Constructivo de Coste). El modelo COCOMO vidor necesario para generar la pantalla o el informe y
original se ha convertido en uno de 10s modelos de esti- el numero de vistas o secciones presentadas como par-
macion de coste del software mis utilizados y estudia- te de la pantalla o del informe.
dos en la industria. El modelo original ha evolucionado
a un modelo de estimaci6n mas completo llamado Tipo d e objeto
Peso d e la cornplejidad )
COCOMO I1 [BOE 96, BOE 001. A1 igual que su pre- Basico
decesor, COCOMO I1 es en realidad una jerarquia de
modelos de estirnacion que tratan las Areas siguientes :
Modelo de composicion de aplicacion. Utilizado
durante las primeras etapas de la ingenieria del soft-
ware, donde el prototipado de las interfaces de usua-
rio, la interaction del sistema y del software, la TABLA 5.1. Factores de peso de la complejidad para tipos
evaluacion del rendimiento, y la evaluaci6n de la de objeto IBOE961.
madurez de la tecnologia son de suma importancia. Una vez que se ha determinado la complejidad, se
Modelo de fase de diseno previo. Utilizado una valora el numero de pantallas, informes, y componen-
vez que se han estabilizado 10s requisitos y que se tes de acuerdo con la Tabla 5.1. La cuenta de punto obje-
ha establecido la arquitectura basica del software. to se determina multiplicando el numero original de
Modelo de fase posterior a la arquitectura. Uti- instancias del objeto por el factor de peso de la tabla 5.1
lizado durante la construccion del software. y se suman para obtener la cuenta total de punto obje-
A1 igual que todos 10s modelos de estimaci6n del to. Cuando se va a aplicar el desarrollo basado en com-
software, el modelo COCOMO I1 descrito antes nece- ponentes o la reutilizaci6n de software en general, se
sita informaci6n del tamaiio. Dentro de la jerarquia del estima el porcentaje de reutilizacion (%reutilizaci6n) y
modelo hay tres opciones de tamaiio distintas: puntos se ajusta la cuenta del punto objeto:
objeto, puntos de funcion, y lineas de c6digo fuente. PON = (puntos objeto) x [(I00 - %reutilizacion)/100]
El modelo de composicion de aplicaci6n COCOMO donde PON significa ccpuntos objeto nuevos,,.
I1 utiliza 10s puntos objeto como se ilustra en 10s pkafos
siguientes. Deberia seiialarse que tambitn e s t h disponi-
~ Q u ees un ccpunto obieto))?
bles otros modelos de estirnacion mas sofisticados (utili-
zando PF y KLDC) que forman parte del COCOMO 11.
Para obtener una estimacion del esfuerzo basada en el
valor PON calculado, se debe calcular la ccproporci6n de
productividadn. La Tabla 5.2 presenta la proporcion de
Referenda web/ productividad para 10s diferentes niveles de experiencia
del desarrollador y de madurez del entomo de desarrollo.
Se puede obtener informoci6n detollodo sobre el
Una vez determinada la proporcion de productividad, se
COCOMO II, incluyendo softwore que puede descorgor, en
puede obtener una estimaci6n del esfuerzo del proyecto:
sunset.usc.edu/C0C0MOll/cocomo.html
Esfuerzo estimado = PON / PROD
Del mismo mod0 que 10s puntos de funci6n (Capi- En modelos COCOMO I1 mas avanzados15, se
tulo 4), el punto objeto es una medida indirecta de soft- requiere una variedad de factores de escala, conducto-
ware que se calcula utilizando el total de (1) pantallas res de coste y procedimientos de ajuste. Un estudio com-
(de la interface de usuario), (2) informes, y (3) compo- pleto de estos temas e s t h fuera del Ambit0 de este libro.
nentes que probablemente se necesiten para construir El lector interesado deberia consultar [BOEOO] o visi-
la aplicacion. Cada instancia de objeto (por ejemplo, tar el sitio web COCOMO 11.
Madurezlcapacidad
del entorno yil Baja
Normal Alta
En muchas Leas de aplicacion del software, a menu- componentes de software cctotalmente experimentado>>
do es rnis rentable adquirir el software de computado- o ccparcialmente experimentado>>(Consulte la Seccion
ra que desarrollarlo. Los gestores de ingenieria del 5.4.2), y entonces modificarse e integrarse para cum-
software se enfrentan con una decision desarrollar o plir las necesidades especificas, o (3) el software pue-
comprar que se puede complicar aun rnis con las opcio- de ser construido de forma personalizada por una
nes de adquisicion: (1) el software se puede comprar empresa externa para cumplir las especificaciones del
(con licencia) ya desarrollado; (2) se pueden adquirir comprador.
l 6 B s e incrementa lentamente a medida que crecen .la necesidad de l 7 Es importante destacar que el parametro de productividad puede
integracion, pruebas, garantia de calidad, documentacion y habilidad obtenerse empiricamente de 10s datos locales de un proyecto.
de gestion))[PUT92]. Para programas pequefios (KLDC = 5 a 15), B =
0,16. Para programas mayores de 70 KLDC, B = 0,39.
CAPfTULO 5 PLANIFICACION DE PROYECTOS DE SOFTWARE
Los pasos dados en la adquisicion del software se En el analisis final, la decision de desarrollar+om-
definen seg6n el sentido critico del software que se va prar se basa en las condiciones siguientes: (1) iLa fecha
a comprar y el coste final. En algunos casos (por ejem- de entrega del producto de software sera anterior que la
plo: software para PC de bajo coste) es menos caro com- del software desarrollado internamente? (2) isera el
prar y experimentar que llevar a cab0 una larga coste de adquisicion junto con el de personalizacion
evaluacidn de potenciales paquetes de software. Para menor que el coste de desarrollo interno del software?
productos de software mas caros, se pueden aplicar las (3) isera el coste del soporte externo (por ejemplo: un
directrices siguientes: contrato de mantenimiento) menor que el coste del
1. Desarrollo de una especificacion para la funci6n y soporte interno? Estas condiciones se aplican a cada una
rendimiento del software deseado. Definici6n de las de las opciones sefialadas anteriormente.
caracteristicas medibles, siempre que sea posible.
5.8.1. Creacion de un arbol de decisiones
Los pasos descritos anteriormente se pueden especifi-
car mediante tCcnicas estadisticas tales como el anali-
Hoy veces en 10s que el sohwore proporciono uno sis del drbol de decisidn [BOE89]. Por ejemplo, la
solucion ((perfecto))excepto poro olgunos ospectos Figura 5.6 representa un arbol de decision para un sis-
especioles de 10s que puede prescindir. En muchos cosos,
tema X basado en software. En este caso, la organiza-
jmerece lo peno vivir sin btos!
cion de la ingenieria del software puede (1) construir el
sistema X desde el principio; (2) reutilizar 10s compo-
2. Estimation del coste interno de desarrollo y la fecha nentes existentes de <<experienciaparciah para cons-
de entrega. truir el sistema; (3) comprar un producto de software
3a.Seleccion de tres o cuatro aplicaciones candidatos disponible y modificarlo para cumplir las necesidades
que cumplan mejor las especificaciones. locales; o (4) contratar el desarrollo del software a un
3b.Seleccion de componentes de software reutilizables vendedor externo.
que ayudaran e n l a construccion de la aplicacion iExiste un metodo sistematico para
requerida. ordenar las opciones relacionadas con
Desarrollo de una matriz de comparacion que presente la decision desarrollar-comprar?
la comparaci6n m a a una de las funciones clave. Alter-
nativarnente, realizar el seguimientode las pruebas de Si se va a construir un sistema desde el principio,
evaluaci6n para comparar el software candidato. existe una probabilidad del 70 por 100 de que el tra-
Evaluation de cada paquete de software o compo- bajo sea dificil. Mediante las tCcnicas de estimaci6n
nente segun la calidad de productos anteriores, estudiadas en este capitulo, el planificador del pro-
soporte del vendedor, direccion del producto, repu- yecto estima que un esfuerzo de desarrollo dificil cos-
tacion, etc. tara £450.000. Un esfuerzo de desarrollo <<simple>> se
Contacto con otros usuarios de dicho software y peti- estima que cueste £380.000. El valor esperado del cos-
cion de opiniones. te, calculado a lo largo de la rama del Arb01 de deci-
sion es:
£380.000
coste esperado = C (probabilidad del cam in^)^ x (coste esti-
£450.000
mado del camino)
Construccion
Cambios menores U75.000 donde i es el camino del arbol de decision. Para el
camino construir,
coste = 0,30 (f380K) + 0,70 (5450K)
Sistema X
= 5429K
importantes TambiCn se muestran 10s otros caminos del kbol de
£490.000
decision, 10s costes proyectados para la reutilizacion,
\\ Cambios menores c?qn nnn
compra y contrato, bajo diferentes circunstancias. Los
costes esperados de estas rutas son:
Cambios
£400.000 = 0,40 (5275K) + 0,60 [0,20(&310K)
coste esperad~,~,~,~,~~,
+ 0,80(£490K)]= 5382K
\ importantes (0,30)
coste esperado = 0,70(&210K)+ 0,30(&400K)= 5267K
£350.000
coste esperadocan,,, = 0,60(5350K)+ 0,40(&500K)]= 5410K
£ 500.000
Con cambios (0,401
Seg6n la probabilidad y 10s costes proyectados que
FIGURA 5.6. ~ r b ode
l decision para apoyar la decision se han sefialado en la Figura 5.6, el coste mas bajo espe-
desarrollar-comprar. rado es la opci6n crcompra>>.
INGENIERiA DEL SOFTWARE. UN ENFOQUE PRACTICO
3
Referencia Web
Se puede encontrar un tutorial excelente sobre el analisis
del 6rbol de decisibn en
gurando una alta calidad. El trabajo de software lleva-
do dentro de la compaiiia se reduce a una actividad de
gestion de contratos.
www.demon.co.uk/mindtool/dectree.html
Las tecnicas de descomposici6n y 10s modelos empiri- (Capitulo 2) y se especifica el conjunto de tareas de
cos de estimaci6n descritos en las secciones anteriores se ingenieria del software.
pueden implementar con software.Las herramientas auto- 3. Prediccion de 10s niveles de la plantilla. Se espe-
maticas de estimaci6n permiten a1 planificador estimar cifica el numero de personas disponibles para reali-
costes y esfuerzos, asi como llevar a cab0 analisis del tipo zar el trabajo. Esto es muy importante, puesto que la
ccquk pasa sin con importantes variables del proyecto, relaci6n entre las personas disponibles y el trabajo
tales como la fecha de entrega o la selecci6n de perso- (esfuerzo previsto) no es muy lineal.
nal. Aunque existen muchas herramientas automaticas de 4. Prediccion del esfuerzo del software. Las herra-
estimacion, todas exhiben las mismas caracteristicas gene- mientas de estimaci6n utilizan uno o mas modelos
rales y todas realizan las seis funciones genericas mos- (por ejemplo, Seccidn 5.7) que relacionan el tamaiio
tradas a continuaci6n [JON96]: de las entregas del proyecto con el esfuerzo necesa-
1. Dimensionamiento de las entregas del proyecto. rio para producirlas.
Se estima el cctamaiio)) de uno o m6s productos de 5. Prediccion del coste del software. Dado 10s resul-
software. Los productos incluyen la representacion tados del paso 4,los costes pueden calcularse asig-
extema del software (por ejemplo, pantallas, infor- nando proporciones del trabajo a las actividades del
mes), el software en si (por ejemplo, KLDC), su fun- proyecto seiialadas en el paso 2.
cionalidad (por ejemplo, puntos de funcidn), y la 6. Prediccion de la planificacion del software. Cuando
informaci6n descriptiva (por ejemplo, documentos). se conoce el esfuerzo, 10s niveles de la plantilla y las
2. Selection de las actividades del proyecto. Se selec- actividades del proyecto, se puede realizar un borra-
ciona el marco de trabajo del proceso adecuado dor de la planificacidn asignando el trabajo a travks
C A P ~ T U L O5 P L A N I F I C A C I ~ ND E P R O Y E C T O S DE S O F T W A R E
de actividades de ingenieria del software basadas en Cuando se aplican distintas herramientas de esti-
modelos recomendados para la distribuci6n del maci6n a 10s mismos datos del proyecto, se observa
esfuerzo (Capitulo 7). una variaci6n relativamente grande entre 10s resulta-
dos estimados. Pero lo que es mas importante, a veces
10s valores son bastante diferentes de 10s valores rea-
les. Esto refuerza la idea de que 10s resultados obte-
nidos por las herramientas de estimaci6n se deben usar
s610 como ccpunto de partida>>para la obtenci6n de
estimaciones -no como 6nica fuente para la estima-
Herrornientas Cose. ci6n-.
El planificador del proyecto de software tiene que esti- de personas-mes requeridas para cada actividad de inge-
mar tres cosas antes de que comience el proyecto: cuan- nieria del software. Las tecnicas empiricas usan expre-
to durara, cuhto esfuerzo requerira y cuanta gente estara siones empiricamente obtenidas para el esfuerzo y para
implicada. Ademas, el planificador debe predecir 10s el tiempo, con las que se predicen esas magnitudes del
recursos (de hardware y de software) que va a requerir, proyecto. Las herramientas automaticas implementan
y el riesgo implicado. un determinado modelo empirico.
El enunciado del ambit0 ayuda a desarrollar estima- Para obtener estimaciones exactas para un proyecto,
ciones mediante una o varias de las tecnicas siguientes: generalmente se utilizan a1 menos dos de las tres tecni-
descomposici6n, modelos empiricos y herramientas cas referidas anteriormente. Mediante la comparaci6n
automaticas. Las tkcnicas de descomposici6n requieren y la conciliaci6n de las estimaciones obtenidas con las
un esbozo de las principales funciones del software, diferentes tecnicas, el planificador puede obtener una
seguido de estimaciones (1) del n6mero de LDC's, (2) estimaci6n mas exacta. La estimaci6n del proyecto de
de 10s valores seleccionados dentro del dominio de la software nunca sera una ciencia exacta, pert la combi-
informaci6n, (3) del n6mero de personas-mes requeri- naci6n de buenos datos hist6ricos y de tecnicas siste-
das para implementar cada funcion, o (4) del n6mero maticas pueden mejorar la precisi6n de la estimaci6n.
[BEN921 Bennatan, E. M., Sofmare Project Management: A [MAH96] Mah, M., Quantitive Software Management, Inc.,
Practitioner's Approach, McGraw-Hill, 1992. private communication.
[BOE811 Boehm, B., Sofmare Engineering Economics, Pren- [MAT941 Matson, J., B. Barrett y J. Mellichamp, (<Software
tice-Hall. 1981. Development Cost Estimation Using Function Points)>,
[BOE89] Boehm, B., Risk Management, IEEE Computer lEEE Trans. Software Engineering, vol. 20, n.P 4, Abril
Society Press, 1989. 1994, pp. 275-287.
[BOE96] Boehm, B., <<Anchoringthe Software Process,,, IEE [MIN95] Minoli, D., Analizing Outsourcing, McGraw-Hill,
Sofmare, vol. 13, n.", Julio 1996, pp. 73-82. 1995.
[BOEOO] Boehm, B., et al., Software Cost Estimation in [PHI981 Phillips, D., The Software Project Manager's Hand-
COCOMO 11, Prentice Hall, 2000. book, IEEE Computer Society Press, 1998.
[BR075] Brooks, F., The Mythical Man-Month, Addison- [PUT921 Putnam, L., y W. Myers, Measures for Excellence,
Wesley, 1975. Yourdon Press, 1992.
[GAU89] Gause, D. C., y G. M. Weinberg, Exploring Requi- [PUT97a] Putnam, L., y W. Myers, CHOWSolved is the Cost
rements: Quality Before Design, Dorset House, 1989. Estimation Problem,,, IEEE Sofh~are,Noviembre 1997,
[H0091] Hooper, J. W. E., y R. 0 . Chester, Software Reuse: pp. 105-107.
Guidelines and Methods, Plenum Press, 1991. [PUT97b] Putnam, L., y W. Myers, Industrial Strength Soft-
[JON961 Jones, C., <<HowSoftware Estimation Tools Work,,, ware: Effective Management Using Measurement, IEEE
American Programmer, vol. 9, n." 7, Julio 1996, pp. 19-27. Computer Society Press, 1997.
INGENlERfA DEL SOFTWARE. U N ENFOQUE P R ~ C T I C O
5.1. Suponga que es el gestor de proyectos de una compaiiia damente 80 componentes de software. Asuma complejidad
que construye software para productos de consumo. Ha con- ccmedia)) y maduracion desarrollador/entomo media. Utilice
tratado una construcci6n de software para un sistema de segu- el modelo de composicion de aplicacion con puntos objeto.
ridad del hogar. Escriba una especificacion del Bmbito que 5.7. Utilice la ccecuacion del softwares para estimar el soft-
describa el software. Asegdrese de que su enunciado del ambi- ware del sistema de seguridad del hogar. Suponga que las Ecua-
to sea limitado. Si no esta familiarizado con sistemas de segu- ciones (5.4) son aplicables y que P = 8.000.
ridad del hogar, investigue un poco antes de comenzar a
5.8. Compare las estimaciones de esfuerzo obtenidas de 10s
escribir. Alternativa: sustituya el sistema de seguridad del
Problemas 5.5 y 5.7. Desarrolle una estimacion simple para
hogar por otro problema que le sea de inter&.
el proyecto mediante una estimacion de tres puntos. LCual es
5.2. La complejidad del proyecto de software se trata breve- la desviacion estfindar?, y jc6mo afecta a su grado de certeza
mente en la Seccion 5.1. Desarrolle una lista de las caracte- sobre la estimacion?
risticas de software (por ejemplo: operation concurrente, salida
grafica, etc.), que afecte a la complejidad de un proyecto. DC 5.9. Mediante 10s resultados obtenidos del Problema 5.8, deter-
prioridad a la lista. mine si es razonable esperar que el resultado se pueda cons-
truir dentro de 10s seis meses siguientes y cuantas personas se
5.3. El rendimiento es una consideracion importante durante
tendrian que utilizar para terminar el trabajo.
la planificacibn. Discuta si puede interpretar el rendimiento de
otra manera. dependiendo del area de aplicacion del software. 5.10. Desarrolle un modelo de hoja de calculo que implemente
5.4. Haga una descomposicion de las funciones software
una tCcnica de estimacion o mas, descritas en el capitulo. Alter-
para el sistema de seguridad del hogar descrita en el Pro- nativamente, obtenga uno o mas modelos directos para la esti-
blema 5.1. Estime el tamafio de cada funci6n en LDC. Asu- maci6n desde la web.
miendo que su organizacion produce 450LDC/pm con una 5.11. Para un equipo deproyecto: Desarrolle una herramien-
tarifa laboral de $7.000 por persona-mes, estime el esfuer- ta de software que implemente cada una de las tecnicas de esti-
zo y el coste requerido para construir el software utilizan- macibn desarrolladas en este capitulo.
do la tecnica de estimacion basada en LDC que se describe 5.12. Parece extraiio que las estimaciones de costes y plani-
en la Secci6n 5.6.3. ficaciones temporales se desarrollen durante la planificacion
5.5. Utilizando las medidas de punto de funcion de tres dimen- del proyecto de software -antes de haber realizado un ana-
siones que se describe en el Capitulo 4, calcule el ndmero de PF lisis de requisitos o un diseiio detallad*. ~ P o que
r Cree que
para el software del sistema de seguridad del hogar, y extraiga las se hace asi? existe en circunstancias en las que no deba pro-
estimaciones del esfuerzo y del coste mediante la tecnica de esti- cederse de esta forma?
macion basada en PF que se describe en la Section 5.6.4. 5.13. Vuelva a calcular 10s valores esperados seiialados en el
5.6. Utilice el modelo COCOMO I1 para estimar el esfuerzo arb01 de decision de la Figura 5.6 suboniendo que todas las
necesario para construir software para un simple ATM que ramas tienen una probabilidad de 50-50. ~ P oquCr cambia esto
produzca 12 pantallas, 10 informes, y que necesite aproxima- su decision final?
La mayoria de 10s libros de gestion de proyectos de softwa- empiricos para la estimacion del software. Estos libros propor-
re contienen estudios sobre la estimacion de proyectos. Jones cionan un anilisis detallado de datos que provienen de cientos
(Estimating Software Costs, McGraw Hill, 1998) ha escrito de proyectos de software. Un libro excelente de DeMarco (Con-
el tratado mas extenso sobre la estimacion de proyectos pu- trolling Software Projects, Yourdon Press, 1982) proporciona
blicado hasta la fecha. Su libro contiene modelos y datos apli- una profunda y valiosa vision de la gestion, medicion y esti-
cables a la estimacion del software en todo el dominio de la maci6n de proyectos de software. Sneed (Software Engineering
aplicacion. Roetzheim y Beasley (Software Project Cost and Management, Wiley, 1989) y Macro (Software Engineering:
Schedule Estimating: Best Practices, Prentice-Hall, 1997) Concepts and Management, Prentice-Hall, 1990) estudian la
presentan varios modelos dtiles y sugieren las directrices paso estimacibn del proyecto de software con gran detalle.
a paso para genera las estimaciones mejores posibles. La estimacion del coste de lineas de codigo es el enfoque
Los libros de Phillips [PHI98], Bennatan (On Time, Wit- miis comdnrnente utilizado. Sin embargo, el impact0 del para-
hin Budget: Software Project Management Practices and digma orientado a objetos (consulte la Parte Cuarta) puede
Techniques, Wiley, 1995), Whitten (Managing Software Deve- invalidar algunos modelos de estimacion. Lorenz y - ~ i d d
lopment Projects: Formula for Success, Wiley, 1995), Well- (Object-Oriented Software Metrics, Prentice-Hall, 1994)
man (Software Costing, Prentice-Hall, 1992), Londeix (Cost y Cockburn (Surviving Object-Oriented Projects, Addi-
Estimationfor Software Development, Addison-Wesley, 1987) son-Wesley, 1998) estudian la estimacion para sisternas orien-
contienen informacion dtil sobre la planificacion y la esti- tados a objetos.
macibn de proyectos de software. En Intemet e s t h disponibles una gran variedad de fuen-
El tratarniento detallado de la estirnacidn del coste de soft- tes de informacion sobre la planificacion y estimacion del
ware de Putnam y Myers ([PUT921 y [PUT97b]), y el libro de software. Se puede encontrar una lista actualizada con refe-
Boehrn sobre la economia de la ingenieria del software ([BOE81] rencias a sitios (paginas) web que son relevantes para la esti-
y COCOMO I1 [BOEOO]) describen 10s modelos de estimacion macion del software en http://www.pressman5.com.
Palabrae c l a v e
E
N su libro sobre anlilisis y gesti6n del riesgo, Robert Charette [CHA89] presenta la
Componentes y siguiente definicion de riesgo:
Controladores ..... .I01
Estrategias de En primer lugar, el riesgo afecta a 10s futuros acontecimientos. El hoy y el ayer estin mris
Riesgo ............ -98 all6 de lo que nos pueda preocupar, pues ya estamos cosechando lo que sembramos previamente
Evaluacih ........ .I03 con nuestras acciones del pasado. La pregunta es, podemos, por tanto, canlbiando nuestras
Exposicibn a1 acciones actuales, crear una oportunidad para una situacicin diferente y, con suerte, mejor para
Riesgo ........... .I03 nosotros en el futuro. Esto significa, en segundo lugar, que el riesgo implica cambio, que pue-
Identifitacibn.. ......99 de venir dado por cambios de opini6n. de acciones, de lugares ... [En tercer lugar,] el riesgo
implica election, y la incertidumbre que entrafia la elecci6n. Por tanto, el riesgo, como la muer-
Plan ASGR .........I07
te y 10s impuestos, es una de las pocas cosas inevitables en la vida.
Proyecciin ........ .I01 Cuando se considera el riesgo en el context0 de la ingenieria del software, 10s tres pilares
Reducciin.. ....... .I05 conceptuales de Charette se hacen continuamente evidentes. El futuro es lo que nos preocupa
Refinamienta...... .I04 - i q ~ 6 riesgos podrian hacer que nuestro proyecto fracasara?-. El cambio es nuestra preocu-
Seguridad y paci6n jc6m0 afectarrin 10s cambios en 10s requisites del cliente, en las tecnologias de d e w
Peligros ..........,106 rrollo, en las computadoras a las que va dirigido el proyecto y a todas las entidades relacionadas
Supervisidn ....... .lo5 con 61, al cumplimiento de la planificaci6n temporal y a1 Cxito en general?. Para terrninar, debe-
Tabla de riesgo .... .I01 mos enfrentarnos a decisiones p i q u e mCtodos y herramientas deberiamos emplear, cuinta gen-
te deberia estar implicada, cuinta importancia hay que darle a la calidad?--.
Peter Drucker [DRU75] dijo una vez: c<Mientrasque es i n W intentar eliminar el riesgo y
cuestionable el poder minimizarlo, es esencial que 10s riesgos que se tomen Sean 10s riesgos
adecuadosu. Antes de poder identificar 10s ccriesgos adecuados>>a tener en cuenta en un pro-
yecto de software, es importante poder identificar todos 10s riesgos que Sean obvios a jefes de
proyecto y profesionales del software.
lNGENIERfA DEL SOFTWARE. UN ENFOQUE PRACTICO
Las estrategias se han denominado humoristicamente te, en caso de que pudieran convertirse en problemas
ccEscuela de gestion del riesgo de Indiana Jones>> reales. Pero lo mas frecuente es que el equipo de soft-
[TH092]. En las peliculas, Indiana Jones, cuando se ware no haga nada respecto a 10s riesgos hasta que algo
enfrentaba a una dificultad insuperable, siempre decia, va mal. DespuCs el equip0 vuela para corregir el pro-
NO te preocupes, pensark en alga!>>. Nunca se preo- blema rapidamente. Este es el mCtodo denominado a
cupaba de 10s problemas hasta que ocurrian, entonces menudo cede bomberos>>.Cuando falla, <<lagestion de
Indy reaccionaba de alguna manera heroica. crisis>>[CHA92] entra en accion y el proyecto se encuen-
tra en peligro real.
Una estrategia considerablemente mas inteligente
para el control del riesgo es ser proactivo. La estrate-
os octivamente, ellos le gia proactiva empieza mucho antes de que comiencen
ted. 10s trabajos tCcnicos. Se identifican 10s riesgos poten-
ciales, se evalua su probabilidad y su impacto y se
establece una prioridad segun su importancia. Des-
puks, el equipo de Software establece un plan para
Desgraciadamente, el jefe del proyecto de software controlar el riesgo. El primer objetivo es evitar el ries-
normalmente no es Indiana Jones y 10s miembros de su go, per0 como no se pueden evitar todos 10s riesgos,
equipo no son sus fiables colaboradores. Sin embargo, el equipo trabaja para desarrollar un plan de contin-
la mayoria de 10s equipos de software confian solarnente gencia que le permita responder de una manera efi-
en las estrategias de riesgo reactivas. En el mejor de 10s caz y controlada. A lo largo de lo que queda de este
casos, la estrategia reactiva supervisa el proyecto en pre- capitulo, estudiamos la estrategia proactiva para el
vision de posibles riesgos. Los recursos se ponen apar- control de riesgos.
Aunque ha habido amplios debates sobre la definicion cion y organization), recursos, cliente y requisitos y su
adecuada para riesgo de software, hay acuerdo comun impacto en un proyecto de software. En el Capitulo 5, la
en que el riesgo siempre implica dos caracteristicas complejidad del proyecto, tamafio y el grado de incerti-
[HIG95]: dumbre estructural fueron tambikn definidos como fac-
Incertidurnbre: el acontecimiento que caracteriza a1 tores (y estimados) de riesgo del proyecto.
riesgo puede o no puede ocurrir; por ejemplo, no hay Los riesgos te'cnicos amenazan la calidad y la plani-
riesgos de un 100 por 100 de probabilidadl. ficacion temporal del software que hay que producir. Si
un riesgo tkcnico se convierte en realidad, la imple-
Pe'rdida: si el riesgo se convierte en una realidad,
mentacion puede llegar a ser dificil o imposible. Los
ocurriran consecuencias no deseadas o pCrdidas.
riesgos tCcnicos identifican problemas potenciales de
Cuando se analizan 10s riesgos es importante cuan- disefio, implernentacion, de interfaz, verificacion y de
tificar el nivel de incertidumbre y el grado de pkrdidas mantenimiento. Ademas, las ambigiiedades de especi-
asociado con cada riesgo. Para hacerlo, se consideran ficaciones, incertidumbre tkcnica, tCcnicas anticuadas
diferentes categorias de riesgos. y las crtecnologias punts>> son tambiCn factores de ries-
go. Los riesgos tCcnicos ocurren porque el problema es
iQue tip0 de riesgos es problable mas dificil de resolver de lo que pensabamos.
que nos encontremos en el Los riesgos del negocio amenazan la viabilidad del
software que se construye? software a construir. Los riesgos del negocio a menudo
ponen en peligro el proyecto o el producto. Los candi-
Los riesgos del proyecto amenazan a1 plan del pro- datos para 10s cinco principales riesgos del negocio son:
yecto; es decir, si 10s riesgos del proyecto se hacen rea- (1) construir un producto o sistema excelente que no
lidad, es probable que la planificacion temporal del quiere nadie en realidad (riesgo de mercado); (2) cons-
proyecto se retrase y que 10s costes aumenten. Los ries- truir un producto que no encaja en la estrategia comer-
gos del proyecto identifican 10s problemas potenciales de cia1 general de la compafiia (riesgo estratkgico); (3)
presupuesto, planificacion temporal, personal (asigna- construir un producto que el departamento de ventas no
I Un riesgo del I00 por 100 es una limitacion del proyecto de soft-
ware.
C A P ~ T U L O6 ANALISIS Y G E S T I 6 N D E L R I E S G O
sabe corn0 vender; (4) perder el apoyo de una gestion Otra categorizaci6n general de 10s riesgos ha sido p r e
experta debido a cambios de enfoque o a cambios de puesta por Charette [CHA89]. Los riesgos conocidos son
personal (riesgo de direccion); (5) perder presupuesto todos aquellos que se pueden descubrir despuCs de una
o personal asignado (riesgos de presupuesto). Es extre- cuidadosa evaluacion del plan del proyecto, del entomo
madamente importante recalcar que no siempre fun- tCcnico y comercial en el que se desarrolla el proyecto y
ciona una categorization tan sencilla. Algunos riesgos otras fuentes de informaci6n fiables (por ejemplo: fechas
son simplemente imposibles de predecir. de entrega poco realistas, falta de especificacion de requi-
sitos o de ambito del software, o un entorno pobre de
desarrollo). Los riesgos predecibles se extrapolan de la
u~i
tcr
: experiencia en proyectos antenores (por ejemplo: cam-
Bn dla,] d i e se permite el luio de conocer ton bio de personal, mala comunicaci6n con el cliente, dis-
no contengo ninguno sorpreso, y minucion del esfuerzo del personal a medida que atienden
peticiones de mantenimiento). Los riesgos impredecibles
son el comodin de la baraja. Pueden ocurrir, per0 son
extremadamente dificiles de identificar por adelantado.
La identificacibn del riesgo es un intento sistemati- Impacto en el negocio: riesgos asociados con las limi-
co para especificar las amenazas a1 plan del proyecto taciones impuestas por la gestion o por el mercado.
(estimaciones, planificacion temporal, carga de recur- Caracteristicas del cliente: riesgos asociados con la
sos, etc.). Identificando 10s riesgos conocidos y prede- sofisticacion del cliente y la habilidad del desarro-
cibles, el gestor del proyecto da un paso adelante para llador para comunicarse con el cliente en 10s momen-
evitarlos cuando sea posible y controlarlos cuando sea tos oportunos.
necesario. Definicibn del proceso: riesgos asociados con el
grado de definicion del proceso del software y su
seguimiento por la organization de desarrollo.
Entorno de desarrollo: riesgos asociados con la dis-
Aunque 10s riesgos genericos son irnportontes o tener en
cuento, hobituolrnente 10s riesgos especificos del producto ponibilidad y calidad de las herramientas que se van
provocon lo rnoyorio de 10s dolores de cobezo. Fste a emplear en la construcci6n del producto.
convencido 01 invertir el tiernpo en identificor tontos Tecnologia a construir: riesgos asociados con la com-
riesgos especificos del producto corno seo posible. plejidad del sistema a construir y la tecnologia punta
que contiene el sistema.
Existen dos tipos diferenciados de riesgos para cada Tamaiio Y experiencia de la plantilla: riesgos asocia-
categoria presentada en la Seccion 6.2: riesgos generi- dos con la experiencia tCcnica y de proyectos de 10s
cos y riesgos especificos del producto. Los riesgos gene'- ingenieros del software que van a realizar el trabajo.
ricos son una arnenaza potencial para todos 10s proyectos
de software. Los riesgos especljclcos de producto so10
10s pueden identificar 10s que tienen una clara vision de
la tecnologia, el personal y el entomo especifico del pro-
yecto en cuestion. Para identificar 10s riesgos especifi-
cos del producto, se examinan el plan del proyecto y la
declaracion del ambit0 del software y se desarrolla una Listo de comprobocibn de elementos del riesgo.
respuesta a la siguiente pregunta: <<iQuC caractensticas
especiales de este producto pueden estar amenazadas La lista de comprobaci6n de elementos de riesgo pue-
por nuestro plan del proyecto?>> de organizarse de diferentes maneras. Se pueden res-
ponder a cuestiones relevantes de cada uno de 10s temas
Un metodo para identificar riesgos es crear una lis- apuntados anteriormente para cada proyecto de soft-
ta de comprobacibn de elementos de riesgo. La lista ware. Las respuestas a estas preguntas permiten a1 pla-
de comprobacion se puede utilizar para identificar ries- nificador del proyecto estimar el impact0 del riesgo. Un
gos y se centra en un subconjunto de riesgos conoci- formato diferente de lista de comprobacion de elemen-
dos y predecibles en las siguientes subcategorias tos de riesgo contiene simplemente las caracteristicas
genericas: relevantes para cada subcategoria genCrica. Finalmen-
Tarnafiodelproducto: riesgos asociados con el tamaiio te, se lista un conjunto de <<componentesy controlado-
general del software a construir o a modificar. res del riesgo,, [AFCSS] junto con sus probabilidades
I N G E N I E R ~ ADEL SOFTWARE. UN E N F O Q U E PRACTICO
de aparicion. Los controladores del rendimiento, el tores de proyectos de software expertos de diferentes
soporte, el coste y la planificacion temporal del proyecto partes del mundo [KEI98]. Las preguntas estin orde-
se estudian como respuesta a preguntas posteriores. nadas por su importancia relativa para el Cxito de un
Se ha propuesto un gran numero de listas de com- proyecto.
probacion para el riesgo del proyecto de software en 10s
textos (por ejemplo, [SEI93], [KAR96]). Estos propor- iCorre un riesgo grave el proyecto de
cionan una vision util de riesgos genkricos para pro- software en el que estamos trabajando?
yectos de software y deberian utilizarse cada vez que
se realice el anilisis y la gesti6n del riesgo. Sin embar-
go, se puede utilizar una lista de preguntas relativamente 1. i S e han entregado 10s gestores del software
pequeiia para proporcionar una indicacion preliminar y clientes formalmente para dar soporte a1 pro-
de cuando un proyecto es <<arriesgado>>. yecto?
2. iEsthn completamente entusiasmados 10s usuarios
finales con el proyecto y con el sistema/producto a
construir?
3. iHan comprendido el equipo de ingenieros de soft-
ware y 10s clientes todos 10s requisitos?
4. iHan estado 10s clientes involucrados por completo
en la definition de 10s requisitos?
6.3.1. Evaluaci6n Global del Riesgo del Proyecto
Las siguientes preguntas provienen de 10s datos del ries-
5. ti en en 10s usuarios finales expectativas realistas?
go obtenidos mediante las encuestas realizadas a ges- 6. iEs estable el hmbito del proyecto?
RENDlMlENTO I SOPORTE
Dejar de cumplir 10s requisitos provocaria Malos resultados en un aumento de costes y retrasos de la
el fallo de la mision
Dejar de cumplir 10s requisitos degradaria Malos resultados en retrasos operativos y/o
el rendimiento del sistema hasta donde aumento de coste con un valor esperado
el exito de la mision es cuestionable de f100.000 a £500.000
AIgunos recortes de 10s 1 Posibles retrasos
en el rendimiento en modificaciones
MARGINAL
De minima a pequena El soporte
reduccion en el del software
rendimiento tecnico responde
Dejar de cumplir 10s requisitos provocaria Los errores provocan impactos minimos en el coste y/o
inconvenientes o impactos no operativos planificacion temporal con un valor esperado de menos
DESPRECIABLE
7. ~ T i e n eel ingeniero de software el conjunto ade- riesgo de la planificaci6n temporal: el grado de incer-
cuado de habilidades? tidumbre con que se podri mantener la planificacion
8. iSon estables 10s requisitos del proyecto? temporal y de que el producto se entregue a tiempo.
9. iTiene experiencia el equipo del proyecto con la El impacto de cada controlador del riesgo en el com-
tecnologia a implementar? ponente de riesgo se divide en cuatro categorias de impac-
to -despreciable, marginal, critico y catastrofico-.
10. iEs adecuado el numero de personas del equipo del Como muestra la Figura 6.1 [BOE89], se describe una
proyecto para realizar el trabajo? caracterizaci6n de las consecuenciaspotenciales de erro-
11. iEsttin de acuerdo todos 10s clientes/usuarios en la res (filas etiquetadas con 1) o la imposibilidad de conse-
importancia del proyecto y en 10s requisitos del sis- guir el producto deseado (filas etiquetadas con 2). La
tema/producto a construir? categoria de impacto es elegida bastindose en la caracte-
rizacion que mejor encaja con la descripci6n de la tabla.
-
en las herramientas
riesgo de rendimiento: el grado de incertidumbre con Personal sin experiencia 2
el que el producto encontrara sus requisitos y se ade- Habra muchos cambios 2
cue para su empleo pretendido; de personal
riesgo de coste: el grado de incertidumbre que man-
tendra el presupuesto del proyecto; Valores de impact0 :
2 - critico
riesgo de soporte: el grado de incertidumbre de la 4 - despreciable
facilidad del software para corregirse, adaptarse y FIGURA 6.2. Ejernplo de u n a t a b l a de riesgo a n t e s
ser mejorado; de l a c l a s i f i c a c i o n .
Laproyeccidn del riesgo, tambiin denominada estima- del riesgo en el proyecto y en el producto, y (4) apun-
ci6n del riesgo, intenta medir cada riesgo de dos mane- tar la exactitud general de la proyecci6n del riesgo de
ras -la probabilidad de que el riesgo sea real y las manera que no haya confusiones.
consecuencias de 10s problemas asociados con el ries-
go, si ocurriera-. El jefe del proyecto, junto con otros
gestores y personal tCcnico, realiza cuatro actividades 6.4.1. DesarrO110 de una de riesgo
de proyeccion del riesgo [I]: (1) establecer una escala Una tabla de riesgo le proporciona a1jefe del proyecto una
que refleje la probabilidad percibida del riesgo; (2) defi- sencilla tCcnica para la proyecci6n del riesgo2.En la Figu-
nir las consecuencias del riesgo; (3) estimar el impacto ra 6.2 se ilustra una tabla de riesgo como ejemplo.
3 Puede usarse una media ponderada si un componente de riesgo * En ingles RMMM (Risk Mitigation, Monitoring and Management)
tiene mas influencia en el proyecto.
CAPfTULO 6 ANALISISY GESTI6N DEL RIESGO
cada valor cualitativo (por ejemplo: una probabilidad desarrollo). Puesto que la media por componente es
de10.7 a1 1.0 implica un riesgo muy probable). de 100 LDC y 10s datos locales indican que el cos-
te de la ingenieria del software para cada LDC es de
6.4.2. Evaluacion del impacto del riesgo £14,00; el coste global (impacto) para el desarrollo
de componentes seria 18 x 100 x 14 = £25.200
Tres factores afectan a las consecuencias probables de
un riesgo si ocurre: su naturaleza, su alcance y cuando Exposicion a1 riesgo : ER = 0,80 x 25.200 -
ocurre. La naturaleza del riesgo indica 10s problemas £20.200
probables que apareceran si ocurre. Por ejemplo, una La exposicion a1 riesgo se puede calcular para cada
interfaz externa ma1 definida para el hardware del clien- riesgo en la tabla de riesgos, una vez que se ha hecho
te (un riesgo tCcnico) impedira un disefio y pruebas tem- una estimation del coste del riesgo. La exposicion a1
pranas y probablemente lleve a problemas de integracion riesgo total para todos 10s riesgos (sobre la linea de cor-
mfis adelante en el proyecto. El alcance de un riesgo te en la tabla de riesgos) puede proporcionar un signifi-
combina la severidad (jc6mo de serio es el problema?) cad0 para ajustar el coste final estimado para un proyecto.
con su distribucion general (iquC proporcion del pro- TambiCn puede ser usado para predecir el increment0
yecto se vera afectado y cuantos clientes se veran per- probable de recursos de plantilla necesarios para varios
judicados?). Finalmente, la temporizaci6n de un riesgo puntos durante la planificaci6n del proyecto.
considera cuando y por cuanto tiempo se dejarfi sentir La proyeccion del riesgo y las tCcnicas de analisis
el impacto. En la mayoria de 10s casos, un jefe de pro- descritas en las Secciones 6.4.1 y 6.4.2 se aplican rei-
yecto prefiere las ccmalas noticias>>cuanto antes, per0 teradamente a medida que progresa el proyecto de soft-
en algunos casos, cuanto mas tarden, mejor. ware. El equipo del proyecto deberia volver a la tabla
Volviendo una veL mas a1 enfoque del analisis de de riesgos a intervalos regulares, volver a evaluar cada
riesgo propuesto por las Fuerzas ACreas de Estados Uni- riesgo para determinar quC nuevas circunstancias hayan
dos [AFC88], se recomiendan 10s siguientes pasos para podido cambiar su impacto o probabilidad. Como con-
determinar las consecuencias generales de un riesgo: secuencia de esta actividad, puede ser necesario afiadir
Determinar la probabilidad media de que ocurra un nuevos riesgos a la tabla, quitar algunos que ya no Sean
valor para cada componente de riesgo. relevantes y cambiar la posicion relativa de otros.
Empleando la Figura 6.1, determinar el impacto de
cada componente basandose en 10s criterios mos-
trados. Compare lo ER para todos 10s riesgos con el coste estimado
Completar la tabla de riesgo y analizar 10s resulta- del proyecto. Si lo ER es superior 0150 por 100 del coste
dos como se describe en las secciones precedentes. del proyecto, se deberb evoluor la viobilidod del proyecto.
~ C O evaluamos
~ O las
6.4.3. Evaluacion del riesgo
consecuencias de un riesgo?
En este punto del proceso de gestion del riesgo, hemos
La exposicion a1 riesgo en general, ER, se determi- establecido un conjunto de ternas de la forma [CHA89]:
na utilizando la siguiente relacion [HAL981 : [ri , li , xi I
ER=PxC donde ri es el riesgo, li es la probabilidad del riesgo y
xi es el impacto del riesgo. Durante la evaluacion del
donde P es la probabilidad de que ocurra un riesgo, y
riesgo, se sigue examinando la exactitud de las estima-
C es el coste del proyecto si el riesgo ocurriera.
ciones que fueron hechas durante la proyeccion del ries-
Por ejemplo, supongamos que el equipo del pro- go, se intenta dar prioridades a 10s riesgos que no se
yecto define un riesgo para el proyecto de la siguien- habian cubierto y se empieza a pensar las maneras de
te manera: controlar y/o impedir 10s riesgos que sea mas probable
Identificacion del riesgo :Solo el 70 por 100 de que aparezcan.
10s componentes del software planificados para reu- Para que sea litil la evaluacion, se debe definir un nivel
tilizarlos pueden, de hecho, integrarse en la aplica- de referencia de riesgo [CHA89]. Para la mayoria de 10s
ci6n. La funcionalidad restante tendrfi que ser proyectos, 10s componentes de riesgo estudiados ante-
desarrollada de un mod0 personalizado. riormente -rendimiento, coste, soporte y planificacion
temporal- tambiCn representan niveles de referencia
Probabilidad del riesgo :80 por 100 (probable). de riesgos. Es decir, hay un nivel para la degradation del
Impacto del riesgo : 60 componentes de software rendimiento, exceso de coste, dificultades de soporte o
reutilizables fueron planificados. Si solo el 70 por retrasos de la planificacion temporal (o cualquier com-
100 pueden usarse, 18 componentes tendran que binacion de 10s cuatro) que provoquen que se termine el
desarrollarse irqprovisadarnente (ademfis de otro soft- proyecto. Si una combination de riesgos crea problemas
ware personalizado que ha sido planificado para su de manera que uno o mfis de estos niveles de referencia
I N G E N ~ E R ~DEL
A SOFTWARE. U N ENFOQUE PRACTICO
Durante las primeras etapas de la planificacion del en el sistema que se esta construyendo, teniendo como
proyecto, un riesgo puede ser declarado de un mod0 muy resultado la necesidad de que el ingeniero tenga que cons-
general. Con el paso del tiempo y con el aprendizaje truir el 30 por 100 de 10s componentes restantes.
sobre el proyecto y sobre el riesgo, es posible refinar el La condition general que acabamos de destacar pue-
riesgo en un conjunto de riesgos mas detallados, cada de ser refinada de la siguiente manera:
uno algo mis ficil de reducir, supervisar y gestionar. Subcondicion 1: Ciertos componentes reutiliza-
bles fueron desarrollados por terceras personas sin el
&al es uno buena forma conocimiento de 10s esthdares internos de diseiio.
de describir un riesgo?
Subcondicion 2: El esthdar de diseiio para inter-
Una forma de hacer esto es presentar el riesgo de faces de componentes no ha sido asentado y puede
la forma condici6n-rransici6n-consecuencia(CTC) no ajustarse a ciertos componentes reutilizables exis-
[GLU94]. Es decir, el riesgo se presenta de la siguien- tentes.
te forma: Subcondicion 3: Ciertos componentes reutiliza-
Dada esta <condition> entonces existe preocupacion bles han sido implementados en un lenguaje no
por (posiblemente) <consecuencia>. soportado por el entorno para el que el sistema ha
sido construido.
Utilizando el formato CTC para volver a utilizar el ries-
go presentado en la Secci6n 6.4.2, podemos escribir: Las consecuencias relacionadas con estas subcondi-
Dado que todos 10s componentes reutilizables del soft- ciones refinadas siguen siendo las mismas (por ejemplo,
ware deben ajustarse a 10s estindares especificos del dise- el 30 por 100 de 10s componentes del software deben ser
iio y que algunos no lo hacen, es entonces preocupante construidos de un mod0 personalizado), per0 el refina-
que (posiblemente) solo el 70 por 100 de 10s modules miento ayuda a aislar 10s riesgos sefialados y puede con-
planificados para reutilizar puedan realmente integrarse ducir a un analisis y respuesta mis sencilla.
C A P ~ T U L O6 A N A L I S I S Y G E S T I ~ NDEL R I E S G O
Todas las actividades de analisis de riesgo presentadas yecto supervisa factores que pueden proporcionar una
hasta ahora tienen un solo objetivo -ayudar a1 equipo indication sobre si el riesgo se esti haciendo mis o
del proyecto a desarrollar una estrategia para tratar 10s menos probable. En el caso de gran movilidad del per-
riesgos-. Una estrategia eficaz debe considerar tres sonal, se pueden supervisar 10s siguientes factores:
aspectos: Actitud general de 10s miembros del equipo b a s h -
Evitar el riesgo. dose en las presiones del proyecto;
Supervisar el riesgo, y Grado de compenetracion del equipo;
Gestionar el riesgo y planes de contingencia. Relaciones interpersonales entre 10s miembros del
equipo;
Problemas potenciales con compensaciones y bene-
ficios;
Disponibilidad de empleo dentro y fuera de la com-
paiiia.
Estado actual:
La seguridad del software y el analisis del peligro falle el sistema entero. Si se pueden identificar 10s
. son actividades para garantizar la calidad del soft- peligros a1 principio del proceso de ingenieria del
ware (Capitulo 8) que se centra en la identification software, se pueden especificar caracteristicas de dise-
y evaluacion de peligros potenciales que pueden Ao software que eliminen o controlen esos peligros
impactar a1 software negativamente y provocar que potenciales.
Se puede incluir una estrategia de gestion de riesgo en el que la creacion y entrada de information, ordenacion
plan del proyecto de software o se podrian ~rganizar10s por prioridad, busquedas y otros analisis pueden ser rea-
pasos de gestion del riesgo en un Plan diferente de reduc- lizados con facilidad.. El formato de la HIR se muestra
cion, supervision y gestion del riesgo (Plan RSGR). Todos en la Figura 6.5.
10s documentos del plan RSGR se llevan a cab0 como Una vez que se ha desarrollado el plan RSGR y el
parte del analisis de riesgo y son empleados por el jefe proyecto ha comenzado, empiezan 10s procedimientos
del proyecto como parte del Plan del Proyecto general. de reduccion y supervision del riesgo. Como ya hemos
dicho antes, la reduccion del riesgo es una actividad para
evitar problemas. La supervision del riesgo es una acti-
vidad de seguimiento del proyecto con tres objetivos
principales: (1) evaluar cuando un riesgo previsto ocu-
rre de hecho; (2) asegurarse de que 10s procedimientos
para reducir el riesgo definidos para el riesgo en cues-
Plan RSGR ti6n se estan aplicando apropiadamente; y (3) recoger
informaci6n que pueda emplearse en el futuro para ana-
Algunos equipos de software no desarrollan un docu- lizar riesgos. En muchos casos, 10s problemas que ocu-
mento RSGR formal. Mas bien, cada riesgo se docu- rren durante un proyecto pueden afectar a mas de un
menta utilizando una hoja de informaci6rz de riesgo riesgo. Otro trabajo de la supervision de riesgos es inten-
(HIR) [WIL97]. En la mayoria de 10s casos, la HIR se tar determinar el origen +uC riesgo(s) ocasionaron tal
mantiene utilizando un sistema de base de datos, por lo problema a lo largo cle todo el proyectc+-.
Cuando se pone mucho en juego en un proyecto de soft- El analisis de riesgos puede absorber una cantidad
ware el sentido c o m h nos aconseja realizar un analisis significativa del esfuerzo de planificacion del proyec-
de riesgo. Y sin embargo, la mayoria de 10s jefes de pro- to. Pero el esfuerzo merece la pena. Por citar a Sun Tzu,
yecto lo hacen informal y superficialmente, si es que lo un general chino que vivi6 hace 2.500 aiios, << Si cono-
hacen. El tiempo invertido identificando, analizando y ces a1 enemigo y te conoces a ti mismo, no tendras que
gestionando el riesgo merece la pena por muchas razo- temer el resultado de cien batallas,,. Para el jefe de pro-
nes: menos trastomos durante el proyecto, una mayor habi- yectos de software, el enemigo es el riesgo.
lidad de seguir y controlar el proyecto y la confianza que
da planificar 10s problemas antes de que ocurran.
[AFC88] Software Risk Abatement, AFCS/AFLC Pamphlet [DRU75] Drucker, P., Management, W. Heinemann, Ltd.,
800-45, U.S. Air Force, 30 de Septiembre 1988. 1975.
[BOE89] Boehm, B. W., Sojhvare Risk Management, IEEE [GIL88] Gilb, T., Principies of Software Engineering Mana-
Computes Society Press, 1989. gement, Addison-Wesley, 1988.
[CHA89] Charette, R. N., Software Engineering Risk Analy- [GLU94] Gluch, D.P., <<AConstruct for Describing Softwa-
sis and Management, McGraw-Hillflntertext,1989. re Development Risk)),CMU/SEI-94-TR-13, Software
[CHA92] Charette, R. N., <<Building
Bridges Over Intelligent Engineering Institute*1994.
Rivers D, American Programmer, vol. 5, n." 7, Septiem- [HAL981 Hall, E. M., Managing Risk:Methods for Software
bre 1992, pp. 2-9. Systems Development, Addison Wesley, 1998.
I N G E N I E R ~ ADEL SOFTWARE. UN ENFOQUE P R A C T I C O
[HIG95] Higuera, R.P, <<TeamRisk Management)), CrossTalk, [ROW881 Rowe, W. D., An Anatomy of Risk, Robert E. Krie-
, US Dept. of Defense, Enero 1995, pp. 2-4. ger Publishing Co., Malabar, FL, 1988.
[KAR96] Karolak, D.W., Software Engineering Risk Mana- [SEI93] Tawonomy-Based Risk Ident$cation, Software Engi-
gement, IEEE Computer Society Press, 1996. neering Institute, CMUISEI-93-TR-6, 1993.
[THO921 Thomsett, R., ccThe Indiana Jones School of Risk
[KEI98] Keil, M. et al., ccA Framework for Identifying Soft- Management,), American Programmer, vol. 5, n." 7, Sep-
ware Project Risks),, CACM, vol 4 1, n."l I, Noviembre
tiembre 1992, pp. 10- 18.
1998, pp. 76-83.
[WIL97] Williams, R.C., J.A.Walker y A.J. Dorofee, <<Put-
[LEV951 Leveson, N. G., Safeware: System Safety and Com- ting Risk Management into Practice)), IEEE Software,
putes, Adisson-Wesley, 1995. Mayo 1997, pp. 75-8 1.
6.1. Proporcione cinco ejemplos de otros campos que ilustren 6.8. Desarrolle una estrategia de supervision del riesgo y sus acti-
10s problemas asociados con una estrategia reactiva frente a1 vidades especificas para tres de 10s riesgos seiialados en la Figu-
riesgo. ra 6.2. Asegfirese de identificar 10s factores que va a supervisar
para determinar si el riesgo se hace mas o menos probable.
6.2. Describa la diferencia entre ccriesgos conocidos) y ccries-
gos predecibles,). 6.9. Desarrolle una estrategia de gestion del riesgo y sus acti-
vidades especificas para tres de 10s riesgos seiialados en la
6.3. Aiiada tres cuestiones o temas a cada una de las listas de Figura 6.2.
comprobaci6n de elementos de riesgo que se presentan en el
sitio web SEPA. 6.10. Trate de refinar tres de 10s riesgos sefialados en la figura
6.2 y realice las hojas de informacion del riesgo para cada uno.
6.4. Se le ha pedido que construya un software que soporte un
sistema de edici6n de video de bajo coste. El sistema acepta 6.11. Represente 3 de 10s riesgos seiialados en la figura 6.2 uti-
cintas de video como entrada de informaci6n, almacena el lizando el formato CTC.
video en disco, y despuCs permite a1 usuario realizar un amplio
6.12. Vuelva a calcular la exposici6n a1 riesgo tratada en la
abanico de opciones de edici6n al video digitalizado. El resul- Secci6n 6.4.2 donde el coste/LDC es 6:16 y la probabilidad es
tad0 (salida) se envia a una cinta. Realice una pequeiia inves-
de160 por 100.
tigaci6n sobre sistemas de este tipo, y despuCs haga una lista
de riesgos tecnol6gicos a 10s que se enfrentaria a1 comenzar 6.13. iSe le ocurre alguna situaci6n en la que un riesgo de alta
un proyecto de este tipo. probabilidad y gran impact0 no formari parte de su plan
RSGR?
6.5. Usted es el jefe de proyectos de una gran compaiiia de
software. Se le ha pedido que dirija a un equipo que e s t i 6.14. Respecto a la referencia de riesgo mostrada en la Figu-
desarrollando un software de un procesador de textos de ra 6.4, jsera siempre la curva un arco simCtrico con10 el que
ccnueva generation)) (ver Seccion 3.4.2 para obtener una bre- aparece, o habra situaciones en las que la curva estC mis dis-
ve descripcibn). Construya una tabla de riesgo para el pro- torsionada? Si es asi, sugiera un escenario en el que esto pue-
yecto. da ocurrir.
6.6. Describa la diferencia entre componentes de riesgo y con- 6.15. Realice una investigacion sobre aspectos de seguridad
troladores de riesgo. del software y escriba una pequeiia redacci6n sobre el tema.
Desarrolle un buscador web para obtener informacidn actual.
6.7. Desarrolle una estrategia de reduccion del riesgo y sus
actividades especificas para tres de 10s riesgos seiialados en la 6.16. Describa cinco areas de aplicaci6n de software en las que
Figura 6.2. la seguridad del software y el analisis de riesgo Sean vitales.
Las lecturas sobre la gesti6n del riesgo del software se han Chapman, C.B., y S. Ward, Project Risk Management:
expandido significativamente en 10s ultirnos aiios. Hall Processes. Techniques and Insights, Wiley. 1997.
[HAL981presenta uno de 10s tratados mas completes del tema. Schuyler, J. R., Decision Analysis in Projects, Project
Karolak [KAR96] ha escrito una guia que introduce un mode- Management Institute Publications, 1997.
lo de analisi5 del riesgo facil de usar con listas de compro-
baci6n y cuestionarios que merece la pena. Grey ha realizado Wideman, R. M. (editor), Project & Program Risk Mana-
una instantanea de la evaluaci6n del riesgo (Practical Risk gement: A Guide to Managing Project Risk and Opportuni-
Assessment for Project Management, Wiley, 1995). Su trata- ties, Project Management Institute Publications, 1998.
do abreviado proporciona una buena introduccion al tema. Capers Jones (Assesment and Control of Software Risks.
Otros libros que merecen la pena son: Prentice-Hall, 1994) presenta un detallado estudio sobre ries-
CAPfTULO 6 ANALISIS Y G E S T I 6 N D E L R I E S G O
gos del software que incluye inforrnacidn reunida de cientos Los tratados de Marzo 1995 de American Programmer,
de proyectos de software. Jones define 60 factores de riesgo Mayo 1997 de IEEE Software, y Junio 1998 Cutter IT Jour-
que pueden afectar a1 resultado de 10s proyectos de softwa- nal estin dedicados a la gestidn del riesgo.
re. Boehm [BOE89] sugiere unos excelentes cuestionarios y El Institute de Ingenieria del Software ha publicado muchos
forrnatos de listas de comprobacidn que pueden resultar de informes y guias detallados sobre el anilisis y gestidn del ries-
valor incalculable a la hora de identificar riesgos. Charrette go. El Air Force Systems Command Pamphlet AFSCP 800-45
[CHA89] presenta un detallado tratado de 10s mecanismos de [AFC88] describe tCcnicas de identificacidn y reduccidn de
anilisis de riesgo, recurriendo a la teoria de probabilidades y riesgos. Todos 10s numeros de ACM Software Engineering
tCcnicas estadisticas para analizar riesgos. En un volumen Notes publican una seccidn titulada ccRiesgos para el publicon
adjunto, Charette (Application Strategies for Risk Analysis, (editor, P. G. Neumann). Si quiere las ultimas y mejores his-
McGrawHill, 1990) analiza el riesgo en el context0 tanto del torias de horror de software, Cste es el lugar adonde ir.
sistema como de la ingenieria del software y define unas estra- En Internet estin disponibles una gran variedad de fuen-
tegias pragmaticas para la gestidn del riesgo. Gilb [GIL88] tes de inforrnacidn relacionadas con temas de anilisis y ges-
presenta un conjunto de ccprincipios>)(que son a menudo diver- tidn del riesgo. Se puede encontrar una lista actualizada con
tidos y algunas veces profundos) que pueden servir como una referencias a sitios (piginas) web que son relevantes para el
util directriz para la gestidn del riesgo. riesgo en http://www.pressrnan5.corn.
PLANIFICACI~N TEMPORAL
Y SEGUIMIENTO DEL PROYECTO
Palabras
A
finales de 10s aiios 60, un joven y brillante ingeniero fue elegido para ccescribir,, un pro-
clave grama de computadora para una aplicaci6n de fabricaci6n autoniiitica. El motivo para
comino critics. ..... . I 2 2 ru selecci6n fue sencillo. Era la unica persona de su grupo ~6cnicoque habia asisticlo
conjunto a un seminario de programacih de computadoras. Sabia todo sobre el lenguaje ensamblador y
de toreas.. ........1 l6 Fortran, pero nada sobre ingenieria del software y muclio menos sobre la planificaci6n tempo-
rriterior ral y seguimiento del proyecto.
de adopfacihn ......I17
Su jefe le dio 10s manuales adecuados y una description verbal de lo que tenia que hacer. Se
estructuro de le inform6 de clue el proyecto debia terminarse en dos meses.
descomposicibn
de trobojo. Work Ley6 10s manuales, consider6 su enfoclue y empez6 a escribir codigo. Despues de dos sema-
Breakdown Strudure nas de trabajo, el jefe le llam6 a su oficina y le pregunt6 qu6 tal iban las cosas.
(WBS). ............I22 ccMuy b i e n ~ dijo
, el joven ingeniero con entusiasmo juvenil, cces mris ficil de lo que pen-
grafito saba. He terniinado cerca del 75 por 100~.
de tiernpo.. ....... . l 2 3 El jefe sonri6. ccEs realmente estupendow, dijo, alentando al joven ingeniero a que siguiera
personas trabajando del mismo modo. Acordaron que se reunirinn otra vez en unn semana.
y esfuerzo ........ .I14 Una semana miis tarde el jefe llam6 al ingeniero a su oficina y le pregunz6: cciPor d6nde
plnn vanios?~~
del proyecto.. .....
.l27
ccTodo va muy biem, dijo el joven, ccpero me he encontrado con unos pequeiios obstliculos.
prinripios
de planifiroirbn Los solucionark y volver6 al ritmo de trabajo pronto.,,
temporal.. ......... 113 (ciC6m0 ves las fechaf limite de entrega?,,, pregunt6 el jefe.
red de tarws. ..... . l 2 1 ccNo hay problenia,,, dijo el ingeniero, ccestoy cerca de terminar el 90 por 1 0 b .
retrasos Si ha estado trabajando en el mundo del software durante algunos aiios, sabr5 el final de la his-
(demoros) ......... 1 12 toria. No es una sorpresa qile el joven ingenieso' se estancara en el 90 p r 100 durante el resto del
seguimiento proyecto y que terminara (con la ayuda de otros) con un mes de retraso.
de errores ........
.I26 Esla hirtoria se ha repetido docenas de miles de veces con 10s desarrolladores de software
seguimiento durance la\ liltimas tres d6cadas. La gran pregunta es i,por clui.?
del proyecto. .......I24
valor gonodo. .....
.I25
LQuees? Usted ha seleccionado un mode- lizan la informaci6n solicitada a 10s truir. El esfuerzo y la duraci6n s e asig-
lode procesoadecuado. ha identificado ingenieros de software. A nivel indivi- na a c a d a tarea y s e crea una red de
las tareas d e ingenieria del software dual, 10s mismos ingenieros d e soft- tareos {tambien llamada red de activi-
que hay que llevar a cabo, ha estimado ware. dades) que permita a1 e q u i p de soft-
la cantidad de trabajo y el ndmero de &Parqu8 cs importante? Pam cons- ware conseguir la fecha limite de
personas necesario, conoce las fechas trulr un sistema complejo, muchas entrega establecida.
limite de entrega e incluso ha conside- tareas de ingenieria del software se ;Cud1 es el product0 obtenldo? Se
rado Ios riesgos. Ahora es el momento realizan e n paralelo y e!resultado del obtiene la planificacidn del proyecfo e
d e unit todos 10s puntos. Esto es, tiene trabajo desamollado durante una tarea informaci6n relacionada.
que crear una red de tareas de ingenie- puede tener un gran efecto e n el tra- kC6mo puedo asrgurar que lo he
ria del software que le permitan conse- bajo a realizar en otra tarea. Estas hecho comectamente? Una plani-
guir el trabajo realizado a tiempo. Una interdependencias son muy dificiles ficacidn adecuada requiere que (1)
vez creada la red, tiene que asignar la de comprender sin una planificacidn. todas las Yareas aparezcan en la red;
responsabilidad para cada tarea, ase- Tambibn e s virtualmente imposible (2) el esfuerzo y el tiempo s e ssigne
gdrese de hacerlo y de adaptar la red evaluar el progreso en un proyecto de inteligentemente a cada tarea; (3) las
antes de que 10s rlesgos s e conviertan software normal o grande sin una pla- relaciones entre tareas e s t h indica-
en realidad. En resumidas cuentas, esto nificaci6n detallada. das comectamente;(4) 10s recursos Sean
e s la planificaci6n temporal y el segui-
;Cuales son 10s pasos? Las tareas de asignados a1 trabap a realizar, y (5)10s
miento del proyecto de software.
ingenieria del software dictadas por el hitos s e sitden rigurosamente espa-
aQui6nlo hate? A nivel de proyecto, los modelo de proceso del software son ciados para que se pueda seguir el pro-
gestores de proyectos de software, uti- refinadas por La funcionalidad a cons- greso.
Aunque hay muchas razones por las que el software se mentan a menudo bajo la restricci6n de una fecha limi-
entrega tarde, la mayoria pertenecen a una o mhs de las te definida. Si las mejores estimaciones indican que la
siguientes causas: fecha limite es poco realista, un gestor de proyecto com-
Una fecha limite de entrega poco realista, estable- petente deberia ccproteger a su equipo de una presi6n
cida por alguien que no pertenece a1 grupo de inge- [de la planificaci6n temporal] innecesaria ...[y] devol-
nieria del software e impuesta a 10s gestores y ver la presi6n a quienes la originarom [PAG85].
profesionales del grupo.
Cambio de 10s requisitos del cliente que no se refle-
jan en 10s cambios de la planificaci6n temporal.
Una subestimaci6n honesta de la cantidad de esfuerzo
ylo el ndmero de recursos que serhn necesarios para
hacer el trabajo.
Riesgos predecibles y no predecibles que no se con- Para ilustrarlo, imaginese que un grupo de desarro-
sideraron cuando comenz6 el proyecto. 110 de software ha sido comisionado para construir un
Dificultades tCcnicas que no pudieron ser previstas controlador de tiempo real para un instrumento mCdico
por adelantado. de diagn6stico que quiere introducirse en el mercado en
Dificultades humanas que no pudieron ser previstas nueve meses. DespuCs de una cuidadosa estimaci6n y
por adelantado. anhlisis de riesgos, el gestor del proyecto de software
llega a la conclusi6n de que el software, tal y como se
Falta de comunicaci6n entre la plantilla del proyecto ha pedido, requerirh 14 meses para crearlo con la plan-
que causa retrasos. tilla de la que se dispone. iC6mo debe proceder el jefe
Falta de reconocimiento por parte de la gesti6n del del proyecto?
proyecto de su retraso y falta de medidas para corre- Es poco realista ir a la oficina del cliente (en este
gir el problema. caso el cliente probable es mercadotecnia/ventas) y exi-
girle que se cambie la fecha de entrega. Las presiones
externas del mercado han dictado la fecha y el produc-
to debe entregarse. TambiCn es absurd0 rechazar el tra-
bajo (desde el punto de vista de la carrera profesional).
Asi pues, iquC hacer?
;Que deberiamos hacer
Las fechas limite de entrega agresivas (1Case <<poco iuando la gestiin exige
realistas>>),son un hecho consumado en el mundo del que cumplamos una fecho limite
software. Algunas veces estas fechas limite se piden por de entrega que es imposible?
motivos legitimos desde el punto de vista de la persona Se recomiendan 10s siguientes pasos en esta situaci6n:
que las establece, per0 el sentido comlin tambiCn dice que 1. Realice una estimaci6n detallada usando informa-
la legitimidad debe ser percibida por las personas que ci6n de proyectos anteriores. Determine el esfuerzo
hacen el trabajo. estimado y la duraci6n del proyecto.
2. Empleando un modelo de proceso incremental (Capi-
7.1.1. Comentarios sobre 10s aetrasos,,
tulo 2), establezca una estrategia de desarrollo que
Napole6n dijo una vez: <<Uncomandante en jefe que proporcione una funcionalidad critica minima para
acepta llevar a cabo un plan que considera defectuoso la fecha limite impuesta, per0 deje otras funcionali-
esth cometiendo un error; debe exponer sus razones, dades para mhs tarde. Documente el plan.
insistir en cambiar el plan y finalmente presentar su 3. Rednase con el cliente y (empleando la estimaci6n
dimisi6n antes de ser el instrumento de la destrucci6n detallada) explique por quC la fecha limite impuesta
de su ejCrcito.>>Duras palabras que muchos gestores de no es realista. Asegdrese de apuntar que todas las esti-
proyecto de software deberian considerar. maciones se basan en proyectos del pasado. Asegd-
Las actividades de estimaci6n y anhlisis de riesgos rese tambiCn de indicar la mejora de porcentaje que
estudiadas en 10s Capitulos 5 y 6, y las tkcnicas de pla- se requerirh para conseguir la fecha limite tal y como
nificaci6n temporal descritas en este capitulo, se imple- esth ahora2.El siguiente comentario seria apropiado:
&re0 que podemos tener un problema con la fecha camino principal y pueden completarse sin preocupar-
de entrega del software de controlador XYZ. Les he se del impact0 en la fecha de termination del proyecto.
entregado a cada uno de ustedes una descomposici6n Otras tareas se encuentran en el <<camin0criticon4. Si
abreviada de 10s ritmos de production de proyectos estas tareas <<criticas>>
se retrasan, la fecha de termina-
anteriores y una estimation que hemos hecho de varias ci6n del proyecto entero se pone en peligro.
maneras diferentes. Se fijarin en que he asumido un
20 por 100 de mejora con respecto a 10s ritmos de pro-
duccion del pasado, per0 todavia obtenemos una fecha
de entrega que esti mis bien a 14 meses de calenda- 10s toreos requeridos poro logror el objetivo
rio que a 9 meses de la presente fecha.>> de 10s gestores del proyecto no se deberfon reolizor
monuolmente. Hoy muchos herromientas excelentes
de plonificocian de proyectos. Utilicelos.
10s modelos de procesos incrementales se estudian El objetivo del gestor del proyecto es definir todas
en el Copitulo 2.
las tareas del proyecto, construir una red que describa
sus interdependencias, identificar las tareas que son cri-
Oferte la estrategia de desarrollo incremental como
ticas dentro de la red y despuCs hacerles un seguimien-
alternativa.
to para asegurarse de que el retraso se reconoce <<de
<<Tenemos pocas opciones y me gustaria que toma- inmediatou. Para conseguirlo, el gestor debe tener una
ran una decision basindose en ellas. Primero, pode- planificaci6n temporal que se haya definido con un gra-
mos aumentar el presupuesto y conseguir recursos do de resolution que le permita supervisar el progreso
adicionales de manera que tengamos la oportunidad y controlar el proyecto.
de tener el trabajo hecho en nueve meses, per0 entien- La planificacidn temporal de un proyecto de soft-
dan que esto aumenta el riesgo de poca calidad debi- ware es una actividad que distribuye el esfuerzo esti-
do a lo apretado de las fechas3. mado a lo largo de la duracion prevista del proyecto,
Segundo, podemos quitar un n6mero determina- asignando el esfuerzo a las tareas especificas de la inge-
do de funciones software y capacidades de las que nieria del software. Es importante resaltar, sin embar-
piden. Esto hari la version preliminar del producto go, que la planificacion temporal evoluciona con el
algo menos funcional, per0 podemos anunciar la fun- tiempo. Durante las primeras etapas de la planificacion
cionalidad completa para lanzarla a 10s 14 meses. del proyecto, se desarrolla una planijicacidn temporal
Tercero, podemos contradecir a la realidad y desear macroscdpica. Este tipo de planificacion temporal iden-
poder completarlo en 9 meses. Nos encontraremos tifica las principales actividades de la ingenieria del soft-
con algo que no se pueda entregar a un cliente de ware y las funciones del producto a las que se aplican.
manera alguna. La tercera opcion, espero que estCn A medida que el proyecto va progresando, cada entra-
de acuerdo, es inaceptable. Nuestra experiencia y da en la planificacion temporal macroscopica se refina
nuestras mejores estimaciones dicen que es poco rea- en una planificacidn temporal detallada. Aqui, se iden-
lista y una receta para el desastre.u tifican y programan las tareas del software especificas
Habri grufiidos, per0 si se presentan estimaciones (requeridas para realizar una actividad).
solidas basadas en una buena informacion historica, es
probable que se opte por alguna version negociada de
las opciones 1 6 2. La fecha limite no realista se desva-
neceri.
Puede afiadir que agregar mas personal no reducira la planificacion El camino critic0 se estudiara con mas detalle, mas adelante en este
temporal proporcionalmente capitulo.
I N G E N ~ E R ~DEL
A SOFTWARE. UN ENFOQUE P R ~ c T ~ C O
ria del software. El esfuerzo se distribuye para conse- a cada tarea se le debe asignar una fecha de inicio y otra
guir el mejor empleo de 10s recursos, y se define una de finalizaci6n que son funci6n de las interdependencias
fecha final despuCs de un cuidadoso anilisis del soft- y de si el trabajo se hari a tiempo total o tiempo parcial.
ware. Desgraciadamente, la primera situaci6n es mhs Validacion de esfuerzo. Todos 10s proyectos tienen
frecuente que la segunda. un numero definido de miembros de la plantilla. A medi-
Como todas las areas de la ingenieria del software, da que se hace la asignacion de tiempo, el gestor del
la planificaci6n temporal de proyectos de software se proyecto debe asegurarse de que no se ha asignado un
guia por unos principios basicos: numero de personas mayor que el de la plantilla en ese
Compartimentacion. El proyecto debe dividirse en momento. Por ejemplo, considere un proyecto que tie-
un numero de actividades y tareas manejables. Para lle- ne una plantilla asignada de tres miembros (por ejem-
var a cab0 esta compartimentacion, se descomponen plo, 3 personas-dia est5n disponibles por dia de esfuerzo
tanto el producto como el proceso (Capitulo 3). asignado5). Un dia cualquiera, se deben realizar siete
Interdependencia. Se deben determinar las inter- tareas concurrentemente. Cada tarea requiere 0,50 per-
dependencias de cada actividad o tarea compartimen- sonas-dia de esfuerzo. Se ha asignado mas esfuerzo del
tada. Algunas tareas deben ocurrir en una secuencia que pueden realizar las personas disponibles.
delerminada; otras pueden darse en paralelo. Algunas Responsabilidades definidas. Cada tarea que se pro-
actividades no pueden comenzar hasta que el resultado grame debe asignarse a un miembro del equipo especi-
de otras no estC disponible. Otras actividades pueden fico.
ocurrir independientemente. Resultados definidos. Cada tarea programada debe-
ria tener un resultado definido. Para 10s proyectos de
software, el resultado es nonnalmente un producto (por
ejemplo, el disefio de un modulo) o una parte de un pro-
d u c t ~Los
. productos se combinan frecuentemente en
Cuando realice uno planificacion temporal, entregas.
comportimentalice el trabajo, represente interdependencias
Hitos definidos. Todas las tareas o grupos de tareas
de tareas, asigne el esfueno y tiempo a cada torea, defina
responsabilidades para el trabaio a desarrollar,
deberian asociarse con un hito del proyecto. Se consi-
y defina 10s resultadosy 10s hitos. gue un hito cuando se ha revisado la calidad de uno o
mis productos (Capitulo 8) y se han aceptado.
Asignacion de tiempo. A cada tarea que se vaya a pro- Cada uno de 10s principios anteriores se aplica a
gramar se le debe asignar cierto numero de unidades de medida que evoluciona la planificacion temporal del
trabajo (por ejemplo, personas-dia de esfuerzo). Ademis, proyecto.
En un proyecto de desarrollo de software pequeiio una gente que les ensefia es la misma que estaba trabajando.
sola persona puede analizar 10s requisitos, realizar el Mientras esthn enseiiando no se trabaja, y el proyecto se
disefio, generar codigo y realizar las pruebas. A medi- retrasa todavia mas.
da que crece el tamaiio del proyecto m8s personas se
ven envueltas. (Raramente podemos pennitirnos el lujo
de enfocar el esfuerzo de diez personas-aiio con una per-
sona trabajando durante diez afios.) Si debe oriodir recursos o un proyecto con retroso,
Hay un mito cornfin (estudiado en el Capitulo 1) que oseglirese de que les ho osignodo troboja oltomente
todavia creen muchos gestores responsables de esfuer- comportimentol~zodo.
zos de desarrollo del software: <<Sise retrasa el progra-
ma, siempre podremos aiiadir mas programadores y Ademas del tiempo que se tarda en aprender el sis-
recuperar el ritmo mas adelante en el pr0yecto.u Des- tema, el involucrar mas personas aumenta el numero de
graciadamente, afiadir gente tarde a un proyecto tiene a vias de comunicaci6n y la complejidad de la comuni-
menudo un efecto negativo, provocando aun mis retra- caci6n a lo largo del proyecto. Aunque la comunicaci6n
so. El personal agregado debe aprenderse el sistema y la es absolutamente esencial para el Cxito del desarrollo
definition y desarrollo se conoce normalmente como la den comprender de un 10 a un 25 por 100 del esfuer-
regla 40-20-407.El cuarenta por ciento de todo el esfuer- zo del proyecto. El esfuerzo invertido en analisis o
zo o m b se asigna a las tareas de analisis y diseiio. Un creaci6n de prototipos deberia crecer proporcional-
porcentaje similar se aplica a las pruebas. Se puede dedu- mente con el tamaiio y la complejidad del proyecto.
cir correctamente que no se insiste mucho en la creaci6n Entre un 20 y un 25 por 100 del esfuerzo se aplica
de c6digo (un 20 por 100 del esfuerzo). normalmente a1 diseiio del software. TambiCn debe
considerarse el tiempo empleado en la revision del
iCu6nt0 esfuerzo deberia disefio y la repeticion subsiguiente.
emplearse en cada una de Debido a1 esfuerzo aplicado a1 diseiio de software, el
las princripales tareas de codigo deberia realizarse con relativa poca dificultad. Se
ingenieria del software? puede alcanzar un rango d e l l 5 a1 20 por 100 del esfuer-
zo global. Las pruebas y las subsiguientes depuraciones
Esta distribution de esfuerzo deberia usarse como de errores pueden dar cuenta de entre un 30 y un 40 por
una directriz solamente. Las caracteristicas de cada 100 restante del esfuerzo de desarrollo del software. La
proyecto dictan la distribuci6n del esfuerzo. El esfuer- importancia del software dicta a menudo la cantidad de
zo gastado en la planificaci6n de un proyecto rara- pruebas que se requieren. Si el software se ve desde el
mente supera mds del 2 6 el 3 por 100, a no ser que punto de vista humano (es decir, el fa110 del software
el plan comprometa a una organizaci6n a grandes gas- puede generar pCrdidas de vidas humanas), se pueden
tos por el gran riesgo. El andlisis de 10s requisitos pue- considerar incluso porcentajes mas altos.
En el Capitulo 2 se describieron diferentes modelos de ciplina para alcanzar una alta calidad para el software.
proceso. Estos modelos ofrecen paradigmas diferentes Pero, a1 mismo tiempo, no se debe cargar a1 equipo del
para el desarrollo del software. Independientemente de proyecto con trabajo innecesario.
que un equipo de software elija un paradigma secuen- Los conjuntos de tareas se diseiian para acomodar
cia1 lineal, uno iterativo, uno evolutivo, uno concurrente diferentes tipos de proyectos y diferentes grados de rigor.
o alguna combinaci6n, el modelo de proceso estd lleno Aunque es dificil desarrollar una completa taxonomia
de conjuntos de tareas que permiten a1 equipo del soft- sobre 10s tipos de proyectos de software, la mayoria de
ware definir, desarrollar y finalmente mantener el soft- las organizaciones de software encuentran proyectos de
ware de computadora. 10s siguientes tipos:
No hay un unico conjunto de tareas que sea apropia- I. Proyectos de desarrollo del concepto que se ini-
do para todos 10s proyectos. El conjunto de tareas que cian para explorar algun nuevo concepto de negocios o
seria apropiado para un sistema grande y complejo seria aplicaci6n de alguna nueva tecnologia.
considerado exagerado para un product0 de software
pequeiio, relativamente sencillo. Por tanto, un proceso de 11. Proyectos de desarrollo de una nueva aplicaci6n
software eficaz deberia definir una colecci6n de conjun- que se aceptan como consecuencia del encargo de un
tos de tareas, cada una diseiiada para satisfacer las nece- cliente especifico.
sidades de diferentes tipos de proyectos. 111. Proyectos de mejoras de aplicaciones que ocu-
rren cuando un software existente sufre grandes modi-
g ficaciones de su funcionamiento, rendimiento o
interfaces que son observables por el usuario final.
CLAVE
Un ((tonjunto de toreosa es uno colectibn de entregos, IV. Proyectos de rnantenimiento de aplicaciones que
hitos y toreos de ingenieria del software. corrigen, adaptan o amplian un software existente en
mCtodos que pueden no ser obvios de forma inmediata
U n conjunto de tareas es una coleccidn de tareas de para el usuario final.
la ingenieria del software, hitos y entregas que deben V. Proyectos de reingenieria que se lleva a cab0 con
realizarse para completar un proyecto particular. El con- la intention de reconstruir un sistema existente (here-
junto de tareas a elegir debe proporcionar suficiente dis- dado) en su totalidad o en parte.
Revise 10s factores de ponderacibn asignados a 0 y 1, e indica la importancia del criterio de adaptaci6n
cada criterio. El valor de un factor de ponderaci6n para el tip0 de proyecto. El resultado del producto:
va desde 0.8 a 1.2 y proporciona una indication de
Grado x factor de ponderacion x multiplicador
la relativa importancia de un criterio de adaptaci6n
de punto de entrada
en particular a 10s tipos de software desarrollados
dentro del entomo local. Si son necesarias modifi- se coloca en la columna Producto de la Tabla 7.1
caciones para reflejar mejor las circunstancias loca- para cada criterio de adaptaci6n individual.
les, se deberian hacer. 4. Calcule la media de todas las entradas en la columna
Multiplique el grado introducido en la Tabla 7.1 por el Producto y ponga el resultado en el espacio mar-
factor de ponderacion (peso) y por el multiplicador cad0 selector del conjunto de tareas (SCT). Este valor
de punto de entrada del tip0 de proyecto a realizar. El se usarfi para ayudarle a seleccionar el conjunto de
multiplicador de punto de entrada toma un valor entre tareas mAs apropiado para el proyecto.
7.3.4. Interpretar el valor SCT y seleccionar ras tan definidas cuando se seleccionan conjuntos de
el conjunto de tareas tareas. En el analisis final, el valor del selector del con-
Una vez que se ha calculado el selector del conjunto de junto de tareas, la experiencia acumulada y el sentido
tareas, se pueden utilizar las siguientes directrices para com6n deben tenerse en cuenta en la eleccidn del con-
seleccionar el conjunto de tareas apropiado para un pro- junto de tareas para el proyecto.
yecto: La Tabla 7.2 ilustra c6mo podria calcularse el SCT
para un hipotktico proyecto. El gestor del proyecto selec-
Valor del selector ciona 10s grados mostrados en la columna Grado. El
del conjunto de tareas Grado de rigor tipo de proyecto es el desarrollo de una nueva aplica-
SCT < 1,2 Casual ci6n. Por tanto, 10s multiplicadores de punto de entra-
1.0 < SCT < 3,O Estructurado da se seleccionan de la columna NDev. La entrada en
SCT > 2,4 Estricto la columna Producto se calcula empleando
Grado x Peso x Multiplicador de punto
de entrada Ndev(NewDeve1op.)
Si el volor del seledor del conjunto de toreos es un dreo
solopado, normolmente es correcto elegi el menor grdo de
El valor de SCT (calculado corno la media de todas
rigor formal, o no ser que el riesgo delproyecto sea alto. las entradas de la columna Producto) es 2,8. Usando 10s
criterios estudiados anteriormente, el gestor tiene la
El solapamiento en 10s valores SCT de un conjunto opci6n de usar tanto el conjunto de tareas estructurado
de tareas recomendado con otro esta hecho a prop6si- como el estricto. La decisi6n se toma una vez que se
to y pretende ilustrar que no son posibles unas fronte- han considerado todos 10s factores del proyecto.
Para desarrollar una planificacion temporal del proyecto, Los proyectos de desarrollo de concepto se inician
se debe distribuir un conjunto de tareas a lo largo de la cuando se debe explorar el potencial de alguna nueva
duraci6n del proyecto. Como apuntamos en la Secci6n tecnologia. No hay certeza de que la tecnologia sea apli-
7.3 el conjunto de tareas variara dependiendo del tipo de cable, per0 el cliente (por ejemplo, marketing) Cree que
proyecto y del grado de rigor. Cada uno de 10s tipos de existe un beneficio potencial. Los proyectos de desa-
proyectos descritos en la Seccion 7.3 puede enfocarse rrollo de concepto se enfocan aplicando las siguientes
usando un modelo de proceso lineal secuencial e iterati- tareas principales:
vo (por ejemplo, el modelo incremental o de creaci6n de
Ambit0 del concept* determina el ambit0 gene-
prototipos) o evolutivo (por ejemplo, el modelo en espi-
ral del proyecto.
ral). En algunos casos, un tip0 de proyecto fluye suave-
mente hacia el siguiente. Por ejemplo, 10s proyectos de Planificacion preliminar del concept* estable-
desarrollo de concepto que tienen Cxito evolucionan a ce la capacidad de la organizacidn para llevar a cab0 el
menudo en nuevos proyectos de desarrollo de aplicacidn. trabajo implicado por el ambito del proyecto.
Cuando termina un proyecto de desarrollo de una nueva Valoracion del riesgo tecnologic* eval6a el ries-
aplicaci61-1,empieza a veces un proyecto de mejora de la go asociado con la tecnologia a implementar como par-
aplicacicin. Esta progresidn es natural y predecible y ocu- te del proyecto.
rrira sea cual sea el modelo de proceso que adopte una Prueba de concept* demuestra la viabilidad de
organizaci6n. Por consiguiente, las principales tareas de una nueva tecnologia en el context0 del software.
ingenieria del software descritas en las secciones siguien- Implernentacion del concepto- implementa la
tes son aplicables a todos 10s flujos del modelo de proce- representaci6n del concepto de manera que pueda revi-
so. Como ejemplo, consideremos las tareas principales de sarlo un cliente y se emplea para propdsitos de ccmar-
ingenieria para 10s proyectos de desarrollo de concepto. keting>>cuando hay que vender un concepto a otros
clientes o departamentos de gesti6n.
Reaccion del cliente ante el concept* solicita la opi-
ni6n del cliente sobre un nuevo concepto de tecnologia y
va encaminada a aplicaciones especificas del cliente.
No deberian producirse sorpresas si echamos un vis-
Un modelo de proceso adoptable tazo rapid0 a estas tareas principales. De hecho el flujo
(MPA) completo incluye uno de las tareas de ingeniena del software para proyectos
voriedod de coniuntos de toreos de desarrollo de concepto (y tambiCn para 10s otros tipos
y estb disponible para su uso. de proyectos) es poco mas que sentido com6n.
CAPITULO 7 P L A N I F I C A C I ~ NT E M P O R A L Y S E G U I M I E N T O DEL P R O D U C T 0
Las tareas y subtareas individuales tienen interdepen- Una red de tareas, tambiCn llamada red de activida-
dencias basadas en su secuencia. Ademas, cuando hay des, es una representaci6n grfifica del flujo de tareas de
m8s de una persona implicada en un proyecto de inge- un proyecto. Se emplea a veces como el mecanismo
niena del software, es probable que las actividades de a travCs del cual se introduce la secuencia de tareas y
desarrollo y tareas se realicen en paralelo. Cuando ocu- las dependencias en una herramienta de programaci6n
rre esto, las tareas concunentes deben coordinarse de automhtica de la planificacidn temporal de un pro-
manera que estCn finalizadas cuando tareas posteriores yecto. En su fonna m& sencilla (la que se emplea en
requieran su(s) resultado(s). una planificacih temporal macroscbpica), la red de
tareas muestra las tareas principales de ingenieria del
software. La Figura 7.3 muestra una red de tareas
esquemhtica para un proyecto de desarrollo de con-
cepto.
La red de tareas es un rnecanismo irtil La naturaleza concurrente de las actividades de inge-
para representar la dependencia entre tareas nieria del software lleva a varios requisitos importan-
y para deterrninar el carnino critito. tes de la planificaci6n temporal. Como las tareas
paralelas ocurren asincronamente, el planificador debe
determinar las dependencias entre las tareas para garan-
tizar un progreso continuo hasta su finalizaci6n. Ade-
mas, el gestor del proyecto deberia estar a1 tanto de las
tareas que pertenecen a1 camino critico. Es decir, tare-
as que deben finalizarse segun la planificacion tempo-
ral si se quiere que el proyecto en general se termine a
tiempo. Estos aspectos se tratan con mis detalle mhs
adelante en este capitulo.
Es importante resaltar que la red de tareas mos-
trada en la Figura 7.3 es macrosc6pica. En una red
de tareas detallada (el precursor de la planificacion
temporal detallada) cada actividad mostrada en la Se aplican 3 tareas 1.3. Se aplican 3 tareas 1.5.
Figura 7.3 se expandiria. Por ejemplo, la Tarea I. 1 se en paralelo a 3 funciones en paralelo a 3funciones
de conceplo diferentes de concept0 diferentes
expandiria para mostrar todas las tareas detalladas en
el refinamiento de tareas 1.1 mostrado en la Sec- FIGURA 7.3. Una red de tareas para un proyecto
cion 7.5. de desarrollo de concepto.
La planificacion temporal de un proyecto de software blecer las dimensiones de tiempo ccmas probablew
no difiere mucho del de cualquier esfuerzo de ingenie- para las tareas individuales aplicando modelos esta-
ria multitarea. Por tanto, se pueden aplicar herramien- disticos, y (3) calcular las limitaciones de tiempo que
tas de planificacion temporal de proyectos y tCcnicas definen una ccventana>>de tiempo de una tarea deter-
generales a1 software con una pequefia modificacion en minada.
10s proyectos del software. Los calculos de las limitaciones de tiempo pueden
ser muy litiles en la planificacion temporal de proyec-
tos de software. El retraso en el disefio de una funcion,
por ejemplo, puede retardar el posterior disefio de otras
Poro 10s proyectos m6s sencillos, lo p/onikoci6n tempo101 funciones. Riggs [RIG811 describe importantes limita-
deberio reolizorse con lo oyudo de uno herromiento ciones de tiempo que pueden discernirse de una red
de plonificocion temporal de proyectos. PERT o CPM: (1) lo antes posible que puede empezar
La te'cnica de evaluacidn y revisidn de programa una tarea cuando las tareas precedentes se completen
(PERT)y el mktodo del camino critico (CPM) [MOD831 tambiCn lo antes posible; (2) lo mas tarde que se puede
son dos mCtodos de la planificacion temporal de un pro- empezar una tarea antes de que se retrase el tiempo mini-
yecto que pueden aplicarse a1 desarrollo de software. mo para finalizar el proyecto; (3) la fecha mas tempra-
Ambas tkcnicas son dirigidas por la informacion ya desa- na de finalizacion -la suma de la fecha mhs temprana
rrollada en actividades anteriores de la planificacion del de inicio y la duraci6n de la tarea-; (4) la fecha limi-
proyecto: te de finalizacion -la fecha mis tardia de inicio suma-
da a la duracion de la tarea-, y (5j el margen total -la
Estimaciones de esfuerzo. cantidad de tiempo extra o atrasos permitidos en la pla-
Una descomposicion de la funcidn del producto. nificacion temporal de las tareas de manera que el cami-
La seleccidn del modelo de proceso adecuado y del no critico de la red se mantenga conforme a la
conjunto de tareas. planificaci6n temporal-. Los calculos de 10s tiempos
La descomposicion de tareas. limite llevan a la determination del camino critico y
proporcionan a1 gestor un mCtodo cuantitativo para eva-
Las interdependencias entre las tareas deben defi- luar el progreso a medida que se completan las tareas.
nirse empleando una red de tareas. Las tareas, a veces
denominadas estructura de descomposicidn del tra-
bajo del proyecto (en inglCs, WBS), se definen para el
producto como un todo o para las funciones indivi-
duales.
Tanto PERT como CPM proporcionan herramien-
tas cuantitativas que permiten a1 planificador del soft- Herramientos CASE
ware : (1) determinar el camino cl-itico, la cadena de para la plonificocibn temporal
tareas que determina la duracion del proyecto; (2) esta- y programacibn del proyecto.
C A P ~ T U L O7 TEMPORAL Y SEGUIMIENTO DEL P R O D U C T 0
PLANIFICACI~N
Tanto PERT como CPM se han implementado en Ademas, se asignan las tareas a individuos especificos.
varias herramientas automaticas disponibles virtual-
mente para todos 10s ordenadores personales [THE93].
Tales herramientas son faciles de usar y hacen asequi-
bles 10s mCtodos de la planificacion temporal descritos
g
anteriormente a todos 10s gestores de proyectos de soft- CLAVE
ware. Un grafico de tiempo le permite conocer que tureus serun
conducidos en un punto determinudo en el tiempo.
7.7.1. Graficos de tiempo
Cuando se crea una planificacion temporal de un pro-
yecto de software, el planificador empieza un con- Como consecuencia de esta entrada, se genera un
junto de tareas (la estructura de descomposici6n del grhfico de tiempo, tambiCn denominado Grafico Gantt.
trabajo). Si se emplean herramientas automaticas, la Se puede desarrollar un grafico de tiempo para todo el
descomposicion del trabajo es introducida como una proyecto. Altemativamente, se pueden desarrollar dife-
red de tareas o esquema de tareas. El esfuerzo, dura- rentes graficos para cada funci6n del proyecto o para
ci6n y fecha de inicio son las entradas de cada tarea. cada individuo que trabaje en el proyecto.
La Figura 7.4 ilustra el formato de un grifico de tiem- progreso hasta la fecha y 10s problemas que se ave-
po. Muestra una parte de la planificacidn temporal de cinan, o
un proyecto de software que enfatiza la tarea de Bmbi- utilizando el anilisis del valor ganado (Secci6n 7.8)
to del concepto (Secci6n 7.5) para un nuevo producto para evaluar el progreso cuantitativamente.
de software de procesador de textos. Todas las tareas
del proyecto (para Bmbito del concepto) se listan en la
columna de la izquierda. Las barras horizontales indi-
can la duraci6n de cada tarea. Cuando aparecen mlilti- N mejor indicador del progreso es lo finolizacion
ples barras a1 mismo tiempo en la planificaci6n temporal, y la revisibn exitosa de on praducto de software.
implican concurrencia de tareas. Los rombos indican
hitos. El control lo usa el gestor para administrar 10s recur-
Una vez que se ha introducido la information nece- sos del proyecto, enfrentarse a 10s problemas y dirigir
saria para generar el grBfico de tiempo, la mayoria de a1 personal del proyecto. Si las cosas van bien (es decir,
las herramientas de la planificaci6n temporal de pro- el proyecto va seglin la planificaci6n temporal y dentro
yectos de software producen tablas de proyecto -un del presupuesto, las revisiones indican que se estB
1istado.tabular de todas las tareas del proyecto, sus haciendo un progreso real y que se e s t b alcanzando 10s
fechas previstas y reales de inicio y finalizaci6n, e hitos), el control es liviano. Pero cuando aparecen 10s
informaci6n varia relativa a1 tema- (Fig. 7.5). Em- problemas, el gestor debe ejercer el control para solu-
pleando las tablas junto con 10s grificos de tiempo, le cionarlos tan pronto como sea posible. Una vez que el
permiten a1 gestor del proyecto hacer un seguimiento problema se ha diagnosticadolo, se pueden concentrar
del progreso. recursos adicionales en el irea del problema: se puede
redistribuir la plantilla, o se puede redefinir la planifi-
caci6n temporal del proyecto.
7.7.2. Seguimiento de la planificacibn temporal Cuando se enfrentan a la presi6n de una fecha de
La planificaci6n temporal del proyecto le proporcio- entrega muy ajustada, 10s gestores de proyecto utilizan
na a1 gestor un mapa de carreteras. Si se ha desarro- a veces una planificaci6n temporal de proyecto y una
llado apropiadamente, define las tareas e hitos que tecnica de control denominada time-boxing (tiempo
deben seguirse y controlarse a medida que progresa el encajonado) [ZAH95]. Esta estrategia reconoce que qui-
proyecto. El seguimiento se puede hacer de diferentes zBs no se pueda entregar el producto completo para la
maneras: fecha limite predefinida. Por tanto, se elige un paradig-
realizando reuniones peri6dicas del estado del pro- ma incremental del software (Capitulo 2) y se crea una
yecto en las que todos 10s miembros del equipo infor- planificaci6n temporal para cada entrega de un incre-
man del progreso y de 10s problemas; mento.
evaluando 10s resultados de todas las revisiones reali- Las tareas asociadas con cada incremento se enca-
zadas a lo largo del proceso de ingenieria del software; jonan en el tiempo. Esto significa que la planificacih
temporal para cada tarea se ajusta trabajando hacia atris
desde la fecha de entrega para cada incremento. Se pone
una <<caja>> alrededor de cada tarea. Cuando una tarea
estodo del alcanza el limite de su caja de tiempo (mBs o menos un
mse: (( j ninguno 10 por loo), se termina el trabajo y se empieza la
siguiente tarea.
La primera reacci6n frente a1 enfoque de encajona-
miento de tiempo es a menudo negativa: <<Sino se ha
terminado el trabajo, jc6m0 podemos proseguir?,, La
determinando si se han conseguido 10s hitos forma- respuesta se encuentra en la manera en que se realiza el
les del proyecto (10s rombos mostrados en la Fig. 7.4) trabajo. Cuando se llega a1 limite de la caja de tiempo,
en la fecha programada; es probable que se haya completado el 90 por 100 de la
comparando la fecha real de inicio con las previstas tarea". El restante 10 por 100, aunque importante, pue-
para cada tarea del proyecto listada en la tabla del de (1) retrasarse hasta el siguiente incremento, o (2)
proyecto (Fig. 7.5); completarse mis tarde si es necesario. En vez de estar
reuniendose informalmente con 10s profesionales del <<estancado>> en una tarea, el proyecto progresa hacia la
software para obtener sus valoraciones subjetivas del fecha de entrega.
l o Es importante resaltar que un retraso del programa e s un sintoma Un cinico podria recordar el dicho: ((Elprimer 90 por 100 de un sis-
de algun problema oculto. El papel del gestor e s diagnosticar cual e s tema se lleva el 10 por 100 del tiempo. El ultimo 10 por 100 del sistema
el problema y actuar para corregirlo. se lleva el 90 por 100 del tiempo..
CAPfTULO 7 P L A N I F I C A C I ~ NT E M P O R A L Y SEGUIMIENTO DEL P R O D U C T 0
En la seccih 7.7.2, ya discutimos un numero de aproxi- Para determinar el valor ganado se desarrollan 10s
maciones cualitativas a1 seguimiento del proyecto. Cada siguientes pasos:
una de ellas proporciona al gestor del proyecto una indi- 1. El coste presupuestado del trabajoplanificado (CPTP)
caci6n del progreso, pero teniendo en cuenta que esta eva- se determina para cada tarea de trabajo que se repre-
luacih proporcionada de la informaci6n es en cierto modo senta en el plan. Durante la actividad de estimaci6n
subjetiva. Ahora bien, jes razonable preguntarse si exis- (Capitulo 3,el trabajo (en personas-hora, personas-
te una tkcnica cuantitativapara evaluar el progreso a medi- dia) de cada tarea de ingenieria del software es con-
da que el equipo de software avanza a travCs de las tareas venientemente planificada. Por consiguiente, CPTPi
de trabajo asignadas en la planificacih del proyecto? En es el trabajo que se ha planificado para una cierta tarea
efecto, una tkcnica para desarrollar anilisis cuantitativo i. Para determinar el progreso en un punto dado a lo
del progreso realizado existe. Es denominada andisis de largo de la planificacih del proyecto, el valor de CPTP
valor ganado (AVG). es la suma de 10s valores CFTPi para todas las tareas
del trabajo que deberian haber sido completadas en ese
momento en el plan del proyecto.
~Comose calcula el valor
El valor gonodo proporciono uno indicocibn cuontitotivo
del progreso.
ganado para evaluar
el progreso?
Humphrey [HUM951 estudia el valor ganado de la
manera siguiente: 2. Los valores CPTP para todas las tareas del trabajo
se suman para obtener el presupuesto a la termina-
El sistema de valor ganado proporciona una escalade valor
comun para cada tarea [proyecto de software], independiente-
cidn que se denomina PAT. Por consiguiente,
mente del tipo de trabajo que est6 siendo llevado a cabo. Se PAT = C (CPTP,) para todas las tareas k
estiman entonces el total de horn para realizar el proyecto com-
pleto y a cada tarea se le da un valor ganado basado en su por- 3. A continuacih, se calcula el valor para el coste pre-
centaje estimado respecto al total. supuestado del trabajo desarrollado (CPTD). El
valor para CPTD es la suma de 10s valores CPTP
Dicho de forma mas simple, el valor ganado es una
para todas las tareas de trabajo que hayan sido real-
medida del progreso. Nos permite evaluar el ccporcen-
mente terminadas en un punto determinado de la pla-
taje de realizaci6n~de un proyecto utilizando el anali-
nificaci6n del proyecto.
sis cuantitativo mis que la opini6n particular que de ello
tengamos. En efecto, Fleming y Koppleman [FLE98] Wilkens [WIL99] afirma que ccla distinci6n entre el
aducen que el anfilisis de valor ganado ccproporcionan CPTP y el CPTD es que el primer0 representa el pre-
unas lecturas exactas y fiables del desarrollo desde esta- supuesto de las actividades que estaban planificadas para
dos iniciales como cuando tan s610 se haya realizado un ser completadas, y el ultimo representa el presupuesto
15 por ciento del proyecto>>. de las actividades que realmente estaban acabadaw.
INGENIERfA DEL SOFTWARE. U N ENFOQUE PRACTICO
Dados 10s valores para CPTP, PAT, CPTD, pueden ser po de la planificacion del proyecto. Es entonces posi-
~calculados10s siguientes indicadores de progreso: ble calcular:
indice de desarrollo de planificacidn, IDP = CP'TD/ClTP indice de desarrollo del coste, IDC = CPTPICRTR
Varianza de la planificacidn, VP = CPTD - CPTP Varianza del coste, VC = CPTP - CRTR
IDP es una indicaci6n de la eficiencia con que el pro-
yecto esth utilizando 10s recursos de la planificacion.
Un valor IDP cercano a 1.0 indica una ejecuci6n efi-
ciente de la planificaci6n del proyecto. VP es simple-
mente una indicaci6n absoluta de la varianza de la Se puede encontror un gron conjunto de recunos
para el onalisis del valor gonodo (bibliogrofio complete,
planificaci6n prevista.
documentos, enlaces) en www.acq.osd.mil/pm/.
Porcentaje planijicado para terminar = CPTDPAT Un valor de IDC cercano a 1.0 proporciona una indi-
proporciona una indicaci6n del porcentaje de trabajo caci6n evidente de que el proyecto esth dentro del pre-
que deberia estar terminado en el instante t. supuesto que para Cl se ha definido. VC es una indicaci6n
absoluta de 10s ahorros en coste (en relaci6n con 10s cos-
Porcentaje completado = CPTPPAT
tes planificados) o de las carencias en una etapa parti-
proporciona una indicaci6n cuantitativa del <<grad0de cular del proyecto.
avance en la realizaci6n en tanto por cienton del pro- Como ya ocurri6 en la aparici6n del radar, el anhli-
yecto en un instante determinado de tiempo t. sis del valor ganado aclara las dificultades de planifica-
Es tambiCn posible calcular el coste real de traba- ci6n antes de que ellas puedan aparecer. Esto permite
jo realizado, CRTR. El valor para CRTR es la suma a1 gestor del proyecto de software tomar las acciones
del esfuerzo realmente desarrollado en tareas de tra- correctivas adecuadas antes de que la crisis del proyec-
bajo que hayan sido realizadas en un instante de tiem- to estalle.
A travCs del proceso de software, un equipo que se dedi- han encontrado en tareas posteriores) se considera que son
ca a1 proyecto crea productos de trabajo (por ejemplo, defectos llamados D. La eficiencia de eliminaci6n de
especificaciones de 10s requisitos o prototipos, docu- defectos (Capitulo 4) ha sido definida como:
mentos de diseiio, c6digo fuente). Pero este equipo tam- EED = EI(E+D)
biCn crea (y comge afortunadamente) errores asociados
con cada product0 de trabajo realizado. Si las medidas EED es una mCtrica de proceso que proporciona una indi-
relacionadas con 10s errores y las metricas resultantes caci6n clara de la efectividad de las actividades de garan-
son registradas a lo largo de muchos proyectos de soft- tia de calidad, per0 EED y el chlculo de errores y defectos
ware, un gestor de proyectos puede utilizar estos datos asociados con ella puede ser tambiCn usada para ayudar
como una linea base para comparar esto con 10s datos a1 gestor de proyectos a determinar el progreso que se esti
de errores recogidos en tiempo real. El seguimiento del realizando a medlda que el proyecto de software se mue-
error puede utilizarse como una medida para evaluar el ve a travCs de las tareas de trabajo planificadas.
estado del proyecto actual. Asumamos que una organizaci6n de software ha
registrado datos de errores y defectos durante 10s 24
meses pasados y ha desarrollado promedios para las
mCtricas siguientes:
Errores por pigina de especificaci6n de requisitos,
El seguimiento del error nos permite comporar Ereq
el hobajo octuol con esfuerzos posodos y proporciono Errores por componentes a nivel de diseiio, Ediseiio
uno indication cuontitotivo de lo colidod del troboio
que estemos reolizondo. Errores por componente a nivel de c6dig0, Ecodigo
EED-andisis de requisitos
En el Capitulo 4, el concept0 de eficiencia de elimi- EED-diseiio arquitect6nico
nation de defectos ya fue discutido. Para recordarlo bre-
EED-diseiio a nivel de componentes
vemente, el equipo de software desarrolla revisiones
tCcnicas formales (y, mhs tarde, comprobaciones) para EED-codification
encontrar y corregir 10s errores, E, en productos realiza- A medida que el proyecto progresa a travCs de cada
dos durante las tareas de ingenieria de software. Cual- paso de la ingenieria de software, el equipo de soft-
quiera de 10s errores que no se hayan descubierto (pero se ware registra e informa del n6mero de errores encon-
CAP~TULO7 P L A N I F I C A C I ~ NTEMPORAL Y SEGUIMIENTO DEL P R O D U C T 0
trados en 10s requisitos, disefio y revisiones de c6di- si6n. Si el segundo escenario parece mis probable, el
go. El gestor del proyecto calcula 10s valores actua- gestor de proyecto deberia adoptar 10s pasos necesarios
les para Ereq, Edisefio y Ecodigo. Estos son despuCs para construir un tiempol* de disefio adicional dentro
comparados con 10s promedios de proyectos anterio- del plan con el fin de acomodar 10s defectos de requisi-
res. Si 10s resultados actuales discrepan en mas de un tos que probablemente hayan podido propagarse a tra-
20 por 100 de dicho promedio, ello puede ser causa vCs de la actividad propia de disefio.
de preocupaci6n, y debe ser objeto de una investiga- La mCtrica de seguimiento de errores descrita ante-
ci6n posterior. riormente puede ser utilizada tambiCn para 10s recur-
sos de comprobaci6n y/o revisi6n de objetivos. Por
ejemplo, si un sistema se compone de 120 compo-
nentes, per0 32 de dichos componentes muestran valo-
Cuanto mas cuantihtivo seo su enfoque para el res Edisefio que tengan una varianza sustancial a partir
seguimiento y control del proyecto, eshrd probablemente
del promedio, el gestor del proyecto puede elegir dedi-
mas preporodo pora prevenir problemas potenciales y
car recursos de revisi6n de c6digo a 10s 32 compo-
responder ante ellos de un mod0 proactive. Utilice
metricas de seguimiento y de valor ganado.
nentes y permitir a otros pasar a su comprobaci6n con
una revisi6n de c6digo. Aunque todos 10s componen-
tes deberian ser sometidos a una revisi6n de c6digo en
Por ejemplo, si Ereq =2.1 en el proyecto X, y el pro- una supuesta revisi6n ideal, para 10s proyectos que se
medio de la organizaci6n es 3.6, es posible uno de estos hayan pasado de presupuesto puede ser un medio efec-
dos escenarios: (1) que el equipo de software haya desa- tivo realizar una aproximacion selectiva (revisando
rrollado el trabajo preferente de desarrollar las especi- s610 aquellos m6dulos que tengan una calidad dudosa
ficaciones de requisitos o (2) que el equipo haya prestado basindose en el valor Edisefio) con el fin de recupe-
una atenci6n secundaria en la aproximaci6n a la revi- rar el tiempo perdido y/o ahorrar 10s costes.
Cada paso en el proceso de ingenieria del software debe- cionado con el proyecto, y (5) describir c6mo se garan-
ria obtener una entrega que pueda revisarse y que pueda tizari la calidad y se gestionan 10s cambios.
hacer de fundamento para 10s siguientes pasos. El Plan
del Proyecto de Software se produce a la culminaci6n de
las tareas de planificaci6n. Proporciona informaci6n bhi-
ca de costes y planificaci6n temporal que sera empleada
a lo largo del proceso de software.
El Plan del Proyecto de Software es un documento
relativamente breve dirigido a una audiencia diversa. Plan del Proyecto de Software
Debe (1) comunicar el imbito y recursos a 10s gestores Es importante sefialar que el Plan del Proyecto del Soft-
del software, personal tCcnico y a1 cliente; (2) definir ware no es un documento estitico. Esto es, el equipo del
10s riesgos y sugerir tCcnicas de aversi6n a1 riesgo; (3) proyecto consulta el plan repetidarnente -actualizando
definir 10s costes y planificaci6n temporal para la revi- riesgos, estimaciones, planificaciones e informaci6n rela-
si6n de la gesti6n; (4) proporcionar un enfoque general cionada- a la vez que el proyecto avanza y es mis cono-
del desarrollo del software para todo el personal rela- cido.
La planificaci6n temporal es la culminaci6n de una acti- nificaci6n temporal se convierte en un mapa de carre-
vidad de planificaci61-1,componente primordial de la teras a seguir por el gestor del proyecto.
direcci6n de proyectos de software. Cuando se combi- La planificacion temporal empieza con la des-
nan mCtodos de estimaci6n y anilisis de riesgo, la pla- composici6n del proceso. Las caracteristicas del pro-
yecto se emplean para adaptar un conjunto de tare- tico del proyecto, un grafico de tiempo e informa-
.as apropiado a1 trabajo a realizar. Una red de tareas cion diversa del proyecto. El gestor del proyecto pue-
muestra todas las tareas de ingenieria, sus depen- de seguir y controlar todos 10s pasos del proceso de
dencias con otras tareas y sus duraciones previstas. software usando la planificacion temporal como
La red de tareas se usa para calcular el camino cri- directriz.
[BR095] Brooks, M., The Mythical Man-Month, ed. Aniver- [PRE99] Pressman, R. S., Adaptable Process Model, R. S.
sario, Adison-Wesley, 1995. Pressman&Associates, 1999.
[FLE98] Fleming, Q.W., y J.M. Koppelman, <<EarnedValue [PUT921 Putman, L., y W. Myers, Measures for Excellence,
Project Management,,, Crosstalk, vol. 11, n.V, Julio 1998, Yourdon Press, 1992.
p. 19.
[RIG811 Riggs, J., Production Systems Planning, Analysis
[HUM951 Humphrey, W., A Discipline for Software Engine- and Control, 3.%d., Wiley, 1981.
ering, Addison-Wesley, 1995. [THE931 ThC, L., <<ProjectManagement Software That's IS
Friendly,,, Datamation, Octubre 1993, pp. 55-58.
[MOD831 Moder, J. J., C. R. Philips y E. W. Davis, Pro-
ject Management with CPM, PERTand Precedence Dia- [WIL99] Wilkens, T.T., <<EarnedValue, Clear and Simple,,,
gramming, 3.+d., VanNostrad Reinhold, 1983. Primavera Systems, Inc, Abril 1999, p. 2.
[PAG85] Page-Jones, M., Practical Project Management, [ZAH95] Zahniser, R., <<Time-boxingfor Top Team Perfor-
Dorset House, 1985, pp. 90-91. mance,,, Software Development, Marzo 1995, pp. 34-38.
7.1. Las fechas limite ccirracionales,, son un hecho consuma- 7.6. La relacidn entre el personal y el tiempo no es lineal.
do del negocio del software. iC6m0 procederia si se encuen- Usando la ecuacidn del software de Putman (descrita en la
tra en esta situacibn? Secci6n 7.2.2), desarrolle una tabla que relacione el ndme-
ro de gente con la duraci6n del proyecto para un proyecto
7.2. iCuil es la diferencia entre una planificaci6n temporal de software que requiera 50.000 LDC y 15 personas-afio
macrosc6pica y una detallada? iEs posible dirigir un proyec- de esfuerzo (el parimetro de productividad es 5.000 y
to si s610 se desarrolla una planificaci6n temporal macrosc6- B = 0,37). Asuma que el software debe entregarse en 24
pica? iPor quC? meses, mis/menos 12 meses.
7.3. iHay algdn caso en el que un hito de un proyecto no esti 7.7. Asuma que ha sido contratado por una universidad para
sujeto a una revisibn? Si es asi, proporcione uno o mis ejem- desarrollar un sistema interactive para apuntarse a cursos
plos. (OLCRS).Primero, actlie como el cliente (jsi usted es un estu-
diante, le resultari ficil!) y especifique las caracteristicas de
7.4. En la Secci6n 7.2.1, se presenta un ejemplo de <<sobre- un buen sistema. [Alternativamente, su profesor le propor-
carga de comunicaciones~~ que puede ocumr cuando mucha cionari un conjunto de requisitos preliminares para el sistema.]
gente trabaja en un proyecto de software. Desarrolle un Usando 10s mCtodos de estimaci6n estudiados en el Capitulo
ejemplo que ilustre c6mo unos ingenieros expertos, y con 5, desarrolle una estimaci6n de esfuerzo y duraci6n para un
buenas experiencias en ingenieria del software y que utili- OLCRS. Sugiera c6mo:
zan revisiones tCcnicas formales, pueden mejorar el ritmo a) definiria las actividades paralelas de trabajo durante el pro-
de producci6n de un equipo (comparado con la suma de 10s yecto OLCRS;
ritmos individuales de producci6n). Pista: puede asumir que
las revisiones reducen el retrabajo y que estas repeticiones b) distribuiria el esfuerzo a lo largo del proyecto;
del trabajo suponen de un 20 a un 40 por 100 del tiempo C) estableceria hitos para el proyecto.
de una persona.
7.8. Usando la Secci6n 7.3 como directriz, calcule el SCT
7.5. Aunque agregar gente a un proyecto atrasado lo puede para OLCRS. Asegdrese de mostrar todo su trabajo. Selec-
retrasar adn mis, hay circunstancias en las que no es verdad. cione un tip0 de proyecto y Cree un conjunto apropiado de
Descnialas. tareas para el proyecto.
CAP~TULO
7 P L A N I F I C A C ~ ~TNE M P O R A L Y S E G U I M I E N T O DEL P R O D U C T 0
McConnel (Rapid Development, Microsoft Press, 1996) TambiCn se puede obtener informaci6n que merece la pena
presenta un estudio excelente acerca de 10s aspectos que con- en 10s libros de gesti6n de proyectos de prop6sito general.
ducen a una planificacidn de proyectos de software demasia- Entre ellos se encuentran:
do optimists y lo que se puede hacer con ella. O'Connell (How
to Run Successful Projects 1l:The Silver Bullet, Prentice Hall, Kezner, H., Project Management: A Systems Approach to
1997) presenta un enfoque paso a paso para la gestidn de pro- Planning, Schrduling, and Controlling, Wiley, 1998.
yectos que pueden ayudarle a desarrollar una planificaci6n Lewis, J. P., Mastering Project Management: Applying
temporal realista para sus proyectos. Advanced Concepts of Systems Thinking, Control and Eva-
Los aspectos de la planificacidn temporal estin cubier- luation, McGraw-Hill, 1988.
tos en la mayoria de 10s libros sobre gesti6n de proyectos
de software. McConnell (Software Project Survival Gui- Fleming y Koppelman (Earned Value Project Manage-
d e , Microsoft Press, 1998), Hoffman y Beaumont (Appli- ment, Project Management Institute Publications, 1996) tra-
cation Development: Managing a Project's Life Cycle, tan con mucho detalle el uso de tCcnicas de valor ganado para
Midrange Computing, 1997), Wysoki y sus colegas (Effec- el seguimiento y control de proyectos.
tive Project Management, Wiley, 1995) y Whitten (Mana- En Intemet e s t h disponibles una gran variedad de fuentes
ging Software Development Projects, 2.%d., Wiley, 1995)
de informacion relacionadas con ternas de gesti6n y planifica-
consideran el tema en detalle. Boddie (Crunch Mode, Pren-
tice-Hall, 1987) han escrito un libro para todos 10s gesto- ci6n temporal de proyectos. Se puede encontrar una lista actua-
res que {{tienen 90 dias para hacer un proyecto de seis lizada con referencias a sitios (piginas) web que son relevantes
mesew. para la planificaci6n en http:llwww.pressman5.com.
I N G E N I E R ~ ADEL SOFTWARE. UN ENFOQUE PRACTICO
Se dice que dos copos de nieve no son iguales. Cierta- iC6mo se aplica esto a1 software? iC6m0 puede
mente cuando se obsema caer la nieve, es dificil ima- una organizaci6n de desarrollo de software necesitar
ginar que son totalmente diferentes, por no mencionar controlar la variacibn? De un proyecto a otro, quere-
que cada cop0 posee una estructura dnica. Para obser- mos reducir la diferencia entre 10s recursos necesa-
var las diferencias entre 10s copos de nieve, debemos rios planificados para terminar un proyecto y 10s
examinar 10s especimenes muy de cerca, y quizi con recursos reales utilizados, entre 10s que se incluyen
un cristal de aumento. En efecto, cuanto rnis cerca 10s personal, equipo y tiempo. En general, nos gustaria
obsememos, mis diferencias podremos detectar. aseguramos de que nuestro programa de pruebas abar-
Este fenomeno, variacidn entre muestras, se aplica ca un porcentaje conocido del software de una entre-
a todos 10s productos del hombre asi como a la creaci6n ga a otra. No s610 queremos reducir el numero de
natural. Por ejemplo, si dos tarjetas de circuit0 ccidknti- defectos que se extraen para ese campo, sino tambiCn
caw se examinan muy de cerca, podremos obsemar que nos gustaria asegurarnos de que 10s errores ocultos
las lineas de cobre sobre las tarjetas difieren ligeramente tambikn se reducen de una entrego a otra. (Es proba-
en la geometria, colocaci6n y grosor. Ademis, la loca- ble que nuestros clientes se molesten si la tercera
lizaci6n y el d i h e t r o de 10s orificios de las tarjetas tam- entrega de un producto tiene diez veces rnis defectos
biCn varian. que la anterior.) Nos gustaria reducir las diferencias
en velocidad y precisi6n de nuestras respuestas de
soporte a 10s problemas de 10s clientes. La lista se
podria ampliar rnis y mis.
8.1.1. Calidad
El American Heritage Dictionary, define la calidad como
El control de variacidn es el centro del control de ccuna caracteristica o atributo de alga>>. Como un atri-
calidad. Un fabricante quiere reducir la variaci6n entre but0 de un elemento, la calidad se refiere a las caracte-
10s productos que se fabrican, incluso cuando se reali- risticas mensurables - c o s a s que se pueden comparar
za algo relativamente sencillo como la duplicaci6n de con estindares conocidos como longitud, color, propie-
disquetes. Seguramente, esto puede no ser un problema dades elkctricas, maleabilidad, etc.-. Sin embargo, el
-la duplicaci6n de disquetes es una operacidn de fabri- software en su gran extensibn, como entidad intelectual,
caci6n trivial y podemos garantizar que se crean dupli- es mhs dificil de caracterizar que 10s objetos fisicos.
cados exactos de software-. No obstante, si existen las medidas de caracteristi-
ipodemos?. Necesitamos asegurar que las pistas se cas de un programa. Entre estas propiedades se inclu-
situen dentro de una tolerancia especifica para que la yen complejidad ciclom6tica, cohesidn, numero de
gran mayoria de las disqueteras puedan leer 10s dis- puntos de funcibn, lineas de c6digo y muchas otras estu-
quetes. Ademis, necesitamos asegurar que el flujo mag- diadas en 10s Capitulos 19 y 24. Cuando se examina un
nCtico para distinguir un cero de un uno sea suficiente elemento segiin sus caracteristicas mensurables, se pue-
para que 10s detecten las cabezas de lectura/escritura. den encontrar dos tipos de calidad: calidad del diseiio
Las miquinas de duplicaci6n de discos aceptan o recha- y calidad de concordancia.
zan la tolerancia. Por consiguiente, incluso un proceso
<<simple>>,como la duplicaci61-1,puede encontrarse con
problemas debidos a la variaci6n entre muestras.
Controlor lo vorioci6n es lo clove de un producto de alto La calidad de diseiio se refiere a las caracteristicas
colidod. En el context0 del software, nos esforzornos que especifican 10s ingenieros de software para un ele-
en controlar lo vorioci6n en el proceso que oplicomos, mento. El grado de materiales, tolerancias y las especi-
recursos que consumimos y 10s otributos de colidad ficaciones del rendimiento contribuyen a la calidad del
del producto final. diseiio. Cuando se utilizan materiales de alto grado y se
especifican tolerancias mas estrictas y niveles rnis altos cificaciones mensurables en las que se puedan com-
de rendimiento, la calidad de disefio de un producto parar 10s resultados de cada proceso. El bucle de rea-
aumenta, si el producto se fabrica de acuerdo con las limentaci6n es esencial para reducir 10s defectos
especificaciones. producidos.
La calidad de concordancia es el grado de cumpli-
miento de las especificaciones de disefio durante su rea- 8.1.3. Garantia de calidad
lizaci6n. Una vez mhs, cuanto mayor sea el grado de
cumplimento, rnis alto seri el nivel de calidad de con- La garantia de calidad consiste en la auditona y las fun-
cordancia. ciones de informaci6n de la gesti6n. El objetivo de la
En el desarrollo del software, la calidad de disefio garantia de calidad es proporcionar la gesti6n para infor-
comprende 10s requisitos, especificaciones y el disefio mar de 10s datos necesarios sobre la calidad del pro-
del sistema. La calidad de concordancia es un aspect0 d u c t ~por
, lo que se va adquiriendo una visi6n rnis
centrado principalmente en la implementacibn. Si la profunda y segura de que la calidad del producto esti
implementacih sigue el disefio, y el sistema resultan- cumpliendo sus objetivos. Por supuesto, si 10s datos pro-
te cumple 10s objetivos de requisitos y de rendimiento, porcionados mediante la garantia de calidad identifican
la calidad de concordancia es alta. problemas, es responsabilidad de la gesti6n afrontar 10s
Pero, json la calidad del disefio y la calidad de problemas y aplicar 10s recursos necesarios para resol-
concordancia 10s linicos aspectos que deben consi- ver aspectos de calidad.
derar 10s ingenieros de software? Robert Glass
[GLA98] establece para ello una relacion mas <<intui-
tiva>>:
satisfacci6n del usuario = producto satisfactorio+buenacali-
Referencia web /'
dad+ entrega dentro de presu- Se puede encontror uno gron voriedod de recursos de
puesto y del tiempo establecidos tolidod del software en
www.qualitytree.com/links/links.htm
En la ultima linea, Glass afirma que la cahdad es impor-
tante, per0 si el usuario no queda satisfecho, ninguna otra
cosa realmente irnporta. DeMarco [DEM99] refuerza este 8.1.4. Coste de calidad
punto de vista cuando afirma: <<Lacalidad del producto El coste de calidad incluye todos 10s costes acarreados
es una funci6n de cuhnto cambia el mundo para mejor.>> en la busqueda de la calidad o en las actividades rela-
Esta visi6n de la calidad establece que si el producto de cionadas en la obtenci6n de la calidad. Se realizan estu-
software proporciona un beneficio sustancial a 10s usua- dios sobre el coste de calidad para proporcionar una linea
nos finales, pueden estar dispuestos para tolerar proble- base del coste actual de calidad, para identificar oportu-
mas ocasionales del rendimiento o de fiabilidad. nidades de reducir este coste, y para proporcionar una
base normalizada de comparaci6n. La base de normali-
zaci6n siempre tiene un precio. Una vez que se han nor-
8.1.2. Control de calidad
malizado 10s costes de calidad sobre un precio base,
El control de cambios puede equipararse a1 control de tenemos 10s datos necesarios para evaluar el lugar en
calidad. Pero, jc6m0 se logra el control de calidad? El donde hay oportunidades de mejorar nuestros procesos.
control de calidad es una serie de inspecciones, revi- Es mas, podemos evaluar c6mo afectan 10s cambios en
siones y pruebas utilizados a lo largo del proceso del tkrminos de dinero.
software para asegurar que cada producto cumple con Los costes de calidad se pueden dividir en costes
10s requisitos que le han sido asignados. El control de asociados con la prevencibn, la evaluaci6n y 10s fallos.
calidad incluye un bucle de realimentaci6n (feedback) Entre 10s costes de prevencidn se incluyen:
del proceso que cre6 el producto. La combinaci6n de
medici6n y realimentaci6n permite afinar el proceso planificaci6n de la calidad,
cuando 10s productos de trabajo creados fallan a1 cum- revisiones tCcnicas formales,
plir sus especificaciones. Este enfoque ve el control de equipo de pruebas,
calidad como parte del proceso de fabricaci6n. formaci6n.
iCuiles son
iQu6 es el control de calidad
del software? 10s componentes
del coste de calidad?
Las actividades de control de calidad pueden ser Entre 10s costes de evaluacidn se incluyen activida-
manuales, completamente automiticas o una combi- des para tener una visi6n rnis profunda de la condici6n
naci6n de herramientas automiticas e interacci6n del producto <<laprimera vez a travCs de>>cada proce-
humana. Un concept0 clave del control de calidad es so. A continuation se incluyen algunos ejemplos de cos-
que se hayan definido todos 10s productos y las espe- tes de evaluaci6n:
~ N G E N I E R ~DEL
A SOFTWARE. U N ENFOQUE PRACTICO
inspecci6n en el proceso y entre procesos, Se han dedicado 7.053 horas inspeccionando 200.000 li-
neas de c6digo con el resultado de 3.112 errores potenciales
: calibrado y mantenimiento del equipo,
descubiertos. Dando por sentado un coste de programador de
pruebas. 40 dolares por hora, el coste de eliminar 3.1 12 defectos ha sido
de 282.120 ddares, o aproximadamente unos 91 d6lares por
defecto.
Compare estos nlimeros con el coste de eliminaci6n de
No tenga miedo de incurrir en costes siynfirotivos defectos una vez que el producto se ha enviado a1 cliente.
de prevencibn. €st6 seguro de que su inversion Suponga que no ha habido inspecciones, per0 que 10s progra-
le proporcionarb un beneficio excelente. madores han sido muy cuidadosos y solamente se ha escapa-
do un defecto por 1.000 lineas de c d i g o [significativamente
mejor que la media en industrial] en el producto enviado. Eso
Los costes de fallos son 10s costes que desapare- significan'a que se tendrian que corregir todavia 200 defectos
cerian si no surgieran defectos antes del envio de un en la casa del cliente o desputs de la entrega. A un coste esti-
producto a 10s clientes. Estos costes se pueden sub- mado de 25.000 dolares por reparation decamp, el coste seria
dividir en costes de fallos internos y costes de fallos de 5 millones de dolares, o aproximadamente 18 veces mas
externos. Los internos se producen cuando se detec- caro que el coste total del esfuerzo de prevention de defectos.
ta un error en el producto antes de su envio. Entre
estos se incluyen:
40-1000
retrabajo (revision), veces
reparacibn,
analisis de las modalidades de fallos. 30-70
veces
Los costes de fallos externos son 10s que se asocian 15-40
a 10s defectos encontrados una vez enviado el produc- veces
to a1 cliente. A continuacion se incluyen algunos ejem- 10
veces
plos de costes de fallos extemos: 3-6
resoluci6n de quejas, veces
devolucion y sustitucion de productos, 1
vez
soporte de linea de ayuda,
trabajo de garantia.
Como es de esperar, 10s costes relativos para encon-
trar y reparar un defecto aumentan dramaticamente a
Requisitos Diseho Codigo Prueba
Prueba En fase de
medida que se cambia de prevenci6n a deteccion y des- dr, de explotacion
de el fallo intemo a1 extemo. La Figura 8.1, basada en desarrollo sisterna
datos recopilados por Boehm [BOE81], ilustra este f e d - FIGURA 8.1. Coste relativo de corregir un error.
meno.
Es verdad que IBM produce software utilizado por
cientos de miles de clientes y que sus costes por repa-
10s pruebas son necesarias, pen, tombien raci6n en casa del cliente o despuCs de la entrega pue-
es uno f o r m costosa de encontrar errores. Goste den ser mhs altos que 10s de organizaciones de software
el tiempo en enrontrar errores 01 comienzo del praceso que construyen sistemas personalizados. Esto, de nin-
y podro reducir significotivomente10s castes de pruebos guna manera, niega 10s resultados sefialados anterior-
y depurocion. mente. Aunque la organization media de software tiene
costes de reparaci6n despuCs de la entrega que son el
Kaplan y sus colegas [KAP95] refuerzan las esta- 25 por 100 de 10s de IBM (ila mayoria no tienen ni idea
disticas de costes anteriores informando con datos anec- de cuales son sus costes!), se esthn imponiendo ahorros
doticos basados en un trabajo realizado en las en el coste asociados con actividades de garantia y con-
instalaciones de desarrollo de IBM en Rochester: trol de calidad.
Hoy en dia 10s responsables expertos de compafiias de La tendencia de la calidad comenz6 en 10s afios cuarenta
todo el mundo industrializadoreconocen que la alta cali- con el influyente trabajo de W. Edwards Deming
dad del producto se traduce en ahorro de coste y en una [DEM86], y se hizo la primera verification en Jap6n.
mejora general. Sin embargo, esto no era siempre el caso. Mediante las ideas de Deming como piedra angular, 10s
CAPfTULO 8 G A R A N T ~ ADE CALIDAD DEL SOFTWARE
japoneses han desarrollado un enfoque sistematico para Mientras que 10s dos primeros pasos se centran en
la eliminaci6n de las causas raiz de defectos en produc- el proceso, el paso siguiente llamado kansei (traducido
tos. A lo largo de 10s aiios setenta y ochenta, su trabajo como 4 0 s cinco sentidow) se centra en el usuario del
emigr6 a1 mundo occidental y a veces se llama <<gesti6n producto (en este caso, software). En esencia, exami-
total de calidad (GTC)))~. Aunque la terminologia difiere nando la forma en que el usuario aplica el producto,
seg6n 10s diferentes paises y autores, normalmente se kansei conduce a la mejora en el producto mismo, y
encuentra una progresi6n basica de cuatro pasos que cons- potencialmente a1 proceso que lo cre6.
tituye el fundamento de cualquier programa de GTC. Finalmente, un paso llamado miryokuteki hinshitsu
amplia la preocupaci6n de la gesti6n mas all5 del pro-
ducto inmediato. Este es un paso orientado a la gesti6n
que busca la oportunidad en areas relacionadas que se
pueden identificar obsemando la utilizacih del pro-
Se puede oplitar GTC al software de tomputadoro. ducto en el mercado. En el mundo del software, miwo-
El enfoque GTC se tentro en lo meiora tontinua kuteki hinshitsu se podria ver como un intento de
del proteso.
detectar productos nuevos y beneficiosos, o aplicacio-
El primer paso se llama kaizen y se refiere a un sis- nes que sean una extension de un sistema ya existente
tema de mejora continua del proceso. El objetivo de kai- basado en computadora.
Zen es desarrollar un proceso (en este caso, proceso del
software) que sea visible, repetible y mensurable.
El segundo paso, invocado solo una vez que se ha
al~anzadokaizen, se llama atarimae hinshitsu. Este paso
examina lo intangible que afecta a1 proceso y trabaja
Referencia web/ '
Se puede entontrar una gran variedad de retursos
para optimizar su impacto en el proceso. Por ejemplo, para la meiora tontinua del proteso y GTC en
el proceso de software se puede ver afectado por la alta deming.eng.clemsom.edu/
rotacion de personal que ya en si mismo se ve afectado
por reorganizaciones dentro de una compaiiia. Puede Para la mayoria de las compaiiias, kaizen deberia
ser que una estructura organizativa estable haga mucho ser de preocupacion inmediata. Hasta que se haya logra-
para mejorar la calidad del software. Atarimae hinshit- do un proceso de software avanzado (Capitulo 2), no
su llevaria a la gestion a sugerir cambios en la forma en hay muchcs argumentos para seguir con 10s pasos
que ocurre la reorganizacion. siguientes.
Hasta el desarrollador de software mas agobiado esta- ware. Para 10s propositos de este libro, la anterior defini-
ra de acuerdo con que el software de alta calidad es una cion sine para hacer hlncapii en tres puntos importantes:
meta importante. Pero, jc6m0 definimos la calidad? Un 1. Los requisitos del software son la base de las medi-
bromista dijo una vez: <<Cualquierprograma hace algo das de la calidad. La falta de concordancia con 10s
bien, lo que puede pasar es que no sea lo que nosotros requisitos es una falta de calidad.
queremos que hags,>. 2. Los estandares especificados definen un conjunto de
~ C o m ose define ((talidad criterios de desarrollo que guian la forma en que se
del software))? aplica la ingenieria del software. Si no se siguen esos
criterios, casi siempre habra falta de calidad.
En 10s libros se han propuesto muchas definiciones 3. Existe un conjunto de requisitos implicitos que a
de calidad del software. Por lo que a nosotros respecta, menudo no se mencionan (por ejemplo: el deseo por
la calidad del software se define como: facilitar el uso y un buen mantenimiento). Si el soft-
Concordancia con 10s requisitos funcionales y de rendi- ware se ajusta a sus requisitos explicitos per0 falla
miento explicitamenteestablecidos, con 10s estkndares de desa- en alcanzar 10s requisitos implicitos, la calidad del
rrollo explicitamente documentados, y con las caracteristicas software queda en entredicho.
implicitas que se espera de todo software desarrollado profe-
sionalmente. 8.3.1. Problemas de fondo
No hay duda de que la anterior definici6n puede ser La historia de la garantia de calidad en el desarrollo de
modificada o ampliada. De hecho, no tendria fin una dis- software es paralela a la historia de la calidad en la crea-
cusion sobre una definicion formal de calidad del soft- ci6n de hardware. Durante 10s primeros aiios de la infor-
Consulte [ART921 para un estudio mas completo del GTC y su uso
en un context0 de software, y [KAP95] para un estudio sobre el uso
de criterio ~BalbridgeAward. en el mundo del software.
INGENIERIA DEL SOFTWARE. UN ENFOQUE PRACTICO
mitica (10s aiios cincuenta y sesenta), la calidad era res- des de SQA que se enfrentan con la planificaci6n de garan-
ponsabilidad 6nicamente del programador. Durante 10s tia de calidad, supe~isi6n,mantenimiento de registros,
afios setenta se introdujeron estindares de garantia de anfilisis e informes. st as son las actividades que realizan
calidad para el software en 10s contratos militares para (o facilitan) un grupo independiente de SQA:
desarrollo de software y se han extendido ripidamente Establecimiento de un plan de SQA para un proyec-
a 10s desarrollos de software en el mundo comercial to. El plan se desarrolla durante la planificaci6n del pro-
[IEE94]. Ampliando la definici6n presentada anterior- yecto y es revisado por todas las partes interesadas. Las
mente, la garantia de calidad del software (SQA) es un actividades de garantia de calidad realizadas por el equi-
<<patr6n de acciones planificado y sistemitico>>[SCH97] po de ingenieria del software y el grupo SQA son gober-
que se requiere para asegurar la calidad del software. El nadas por el plan. El plan identifica:
fimbito de la responsabilidad de la garantia de calidad se
evaluaciones a realizar,
puede caracterizar mejor parafraseando un popular anun-
cio de coches: <<Lacalidad es la l."area.>> La implica- auditonas y revisiones a realizar,
ci6n para el software es que muchos de 10s que esthdares que se pueden aplicar a1 proyecto,
constituyen una organization tienen responsabilidad de procedimientos para informacibn y seguimiento de
garantia de calidad del software -ingenieros de soft- errores,
ware, jefes de proyectos, clientes, vendedores, y aque- documentos producidos por el grupo SQA,
llas personas que trabajan dentro de un grupo de SQA-.
realimentaci6n de informaci6n proporcionada a1
equipo de proyecto del software.
Las revisiones del software son un c<filtronpara el pro- defecto como una ccanomalia del producto,,. La defini-
ceso de ingenieria del software. Esto es, las revisiones ci6n de ccfallon en el contexto del hardware se puede
se aplican en varios momentos del desarrollo del soft- encontrar en IEEE Standard 610. 12-1990:
ware y sirven para detectar errores y defectos que pue- (a) Un defecto en un dispositivo de hardware o componen-
dan asi ser eliminados. Las revisiones del software sirven te: por ejemplo, un corto circuit0 o un cable roto.
para ccpurificar,, las actividades de ingenieria del soft- (b) Un paso incorrecto, proceso o definicion de datos en
ware que suceden como resultado del analisis, el diseAo un programa de computadora. Nota: Esta definicion
y la codificaci6n. Freedman y Weinberg [FRE90] argu- se usa principalmente por la disciplina de tolerancia
mentan de la siguiente forma la necesidad de revisiones: de fallos. En su uso normal, 10s tCrminos <<error>> y
ccfallo~~se utilizan para expresar este significado. Con-
El trabajo tCcnico necesita ser revisado por la misma raz6n sulte tambiCn: fallo sensible a1 dato; fallo sensible a1
que 10s Iapices necesitan gomas: e m es humano. La segunda programa; fallos equivalentes; enmascaramiento de
razon por la que necesitarnos revisiones tCcnicas es que, aun- fallos; fallo intermitente.
que la gente es buena descubriendo algunos de sus propios erre
res, algunas clases de errores se le pasan por alto m b ficilmente Dentro del contexto del proceso del software, 10s ter-
al que 10s origina que a otras personas. El proceso de revision minos defecto y fallo son sin6nimos. Ambos implican
es, por tanto, la respuesta a la plegaria de Robert Bums: un problema de calidad que es descubierto despue's de
~QuCgran regalo seria poder vemos wmo nos ven 10s demb! entregar el software a 10s usuarios finales (o a otra acti-
Una revision +ualquier revision- es una forma de apro-
vidad del proceso del software). En 10s primeros capi-
vechar la diversidad de un grupo de personas para: tulos, se utilizo el tCrmino error para representar un
I. seiialar la necesidad de mejoras en el producto de una
problema de calidad que es descubierto por 10s inge-
sola persona o un equipo; nieros del software (u otros) antes de entregar el soft-
2. confirmar las partes de un producto en las que no es nece- ware a1 usuario final (o a otra actividad del proceso del
saria o no es deseable una mejora; y software).
3. conseguir un trabajo tCcnico de una calidad mas unifor-
me, o a1 menos mis predecible, que la que puede ser con-
seguida sin revisiones, con el fin de hacer mhs manejable
el trabajo tCcnico. Paso de desarrollo
Defectos Deteccion
el proceso del software. Sin embargo, se ha demostra- corrige el 50 por 100 de 10s errores que le llegan, sin intro-
d o que las revisiones tCcnicas formales son efectivas en ducir ningun error nuevo (una suposici6n muy optimis-
un 75 por 100 a la hora de detectar errores [JON86]. ta). Antes de que comience la prueba, se han amplificado
Con la detecci6n y la eliminaci6n de un gran porcenta- diez errores del diseiio preliminar a 94 errores. A1 termi-
je de errores, el proceso de revisi6n reduce substan- nar quedan 12 errores latentes. La Figura 8.4 considera
cialmente el coste de 10s pasos siguientes en las fases las mismas condiciones, per0 llevando a cab0 revisiones
de desarrollo y de mantenimiento. del diseiio y de la codificaci6n dentro de cada paso del
Para ilustrar el impact0 sobre el coste de la detec- desarrollo. En este caso 10s 10 errores del diseiio preli-
ci6n anticipada de errores, consideremos una serie de minar se amplifican a 24 antes del comienzo de la prue-
costes relativos que se basan en datos de coste realmente ba. So10 quedan 3 errores latentes. Recordando 10s costes
recogidos en grandes proyectos de software 1 1 ~ ~ 8 1 1 ~relativos
. asociados con el descubrimiento y la correction
Supongamos que un error descubierto durante el dise- de errores, se puede establecer el coste total (con y sin
iio cuesta corregirlo 1,O unidad monetaria. De acuerdo revisiones para nuestro ejemplo hipotktico). El numero
con este coste, el mismo error descubierto justo antes de errores encontrado durante cada paso mostrado en las
de que comienza la prueba costar6 6,5 unidades; duran- figuras 8.3 y 8.4 se multiplica por el coste de eliminar un
te la prueba 15 unidades; y despuCs de la entrega, entre error (1.5 unidades de coste del diseiio, 6.5 unidades de
60 y 100 unidades. coste antes de las pruebas, 15 unidades de coste durante
las pruebas, y 67 unidades de coste despuCs de la entre-
ga. Utilizmdo estos datos, se puede ver que el coste total
8.4.2. Arnplificacion y eliminaci6n de defectos para el desarrollo y el mantenimiento cuando se realizan
Se puede usar un modelo de amplificacion de defectos revisiones es de 783 unidades. Cuando no hay revisio-
[IBM81] para ilustrar la generation y detecci6n de erro- nes, el coste total es de 2.177 unidades - c a s i tres veces
res durante 10s pasos de disefio preliminar, disefio deta- mas c a r e .
llado y codificaci6n del proceso de ingenieria del
software. En la Figura 8.2 se ilustra esquematicamente
el modelo. Cada cuadro representa un paso en el desa-
rrollo del software. Durante cada paso se pueden gene-
rar errores que se pasan inadvertidos. La revisi6n puede
fallar en descubrir nuevos errores y errores de pasos
anteriores, produciendo un mayor ndmero de errores
que pasan inadvertidos. En algunos casos, 10s errores
que pasan inadvertidos desde pasos anteriores se ampli-
fican (factor de amplificacion, x) con el trabajo actual.
Las subdivisiones de 10s cuadros representan cada una Para llevar a cab0 revisiones, el equipo de desarrollo
de estas caracteristicas y el porcentaje de eficiencia para debe dedicar tiempo y esfuerzo, y la organizaci6n de
la detecci6n de errores, una funci6n de la profundidad desarrollo debe gastar dinero. Sin embargo, 10s resulta-
de la revisi6n. dos del ejemplo anterior no dejan duda de que hemos
La Figura 8.3 ilustra un ejemplo hipotCtico de la ampli- encontrado el sindrome de ccpague ahora o pague, des-
ficaci6n de defectos en un proceso de desarrollo de soft- puCs, mucho m&>. Las revisiones tkcnicas formales (para
ware en el que no se llevan a cab0 revisiones. Como el diseiio y otras actividades tCcnicas) producen un bene-
muestra la figura, se asume que cada paso descubre y ficio en coste demostrable. Deben llevarse a cabo.
Una revisi6n tCcnica formal (RTF) es una actividad de desarrollado de forma uniforme y (5) hacer que 10s
garantia de calidad del software llevada a cab0 por 10s proyectos Sean mas manejables. Ademas, la RTF sir-
ingenieros del software (y otros). Los objetivos de la ve como campo de entrenamiento, permitiendo que 10s
RTF son: ( I ) descubrir errores en la funcibn, la 16gi- ingenieros mas j6venes puedan obsemar 10s diferen-
ca o la implementaci6n de cualquier representaci6n tes enfoques de analisis, disefio e implementaci6n del
del software; (2) vsrificar que el software bajo revi- software. La RTF tambiCn sine para promover la segu-
si6n alcanza sus requisitos; (3) garantizar que el soft- ridad y la continuidad, ya que varias personas se fami-
ware ha sido representado de acuerdo con ciertos liarizaran con partes del software que, de otro modo,
estandares predefinidos; (4) conseguir un software no hubieran visto nunca.
Aunque estos datos son de hace mas de 20 aAos, pueden ser apli-
cados en un context0 moderno.
C A P ~ T U L O8 G A R A N T f A DE CALIDAD DEL S O F T W A R E
A1 final de la revision, todos 10s participantes en la Revisar el producto, no a1productor. Una RTF invo-
RTF deben decidir si (I) aceptan el producto sin poste- lucra gente y egos. Conducida adecuadamente, la
riores modificaciones; (2) rechazan el producto debido RTF debe llevar a todos 10s participantes a un senti-
a 10s serios errores encontrados (una vez corregidos, ha miento agradable de estar cumpliendo su deber. Si
de hacerse otra revisi6n) o (3) aceptan el producto pro- se lleva a cab0 incorrectamente, la RTF puede tomar
visionalmente (se han encontrado errores menores que el aura de inquisition. Se deben seiialar 10s errores
deben ser corregidos, per0 sin necesidad de otra poste- educadamente; el tono de la reuni6n debe ser dis-
rior revisi6n). Una vez tomada la decisibn, todos 10s tendido y constructive; no debe intentarse dificultar
participantes terminan firmando, indicando asi que han o batallar. El jefe de revision debe moderar la reu-
participado en la revision y que esthn de acuerdo con ni6n para garantizar que se mantiene un tono y una
las conclusiones del equipo de revisi6n. actitud adecuados y debe inmediatamente cortar cual-
quier revisi6n que haya escapado a1 control.
8.5.2. Registro e informe d e la revision
Durante la RTF, uno de 10s revisores (el registrador)
procede a registrar todas las pegas que vayan surgien-
do. A1 final de la reuni6n de revisibn, resume todas las No seiole broscomente10s errores. Uno formo de ser
pegas y genera una lista de sucesos de revision. Ade- educodo es hocer uno pregunmito que permimitool productor
mhs, prepara un informe sumario de la revisi6n tCcnica descubrir su propio error.
formal. El informe sumario de revisi6n responde a tres
preguntas: Fijar una agenda y mantenerla. Un ma1 de las reu-
niones de todo tipo es la deriva. La RTF debe seguir
I. ~ Q u Cfue revisado? un plan de trabajo concreto. El jefe de revisi6n es el
2. ~QuiCnlo revis6? que carga con la responsabilidad de mantener el plan
3. ~ Q u Cse descubri6 y cuhles son las conclusiones? de la reuni6n y no debe tener miedo de cortar a la
El informe sumario de revisi6n es una phgina sim- gente cuando se empiece a divagar.
ple (con posibles suplementos). Se adjunta a1 registro 5 . Limitar el debate y las impugnaciones. Cuando un
hist6rico del proyecto y puede ser enviada a1 jefe del revisor ponga de manifiesto una pega, podrA no haber
proyecto y a otras partes interesadas. unanimidad sobre su impacto. En lugar de perder el
tiempo debatiendo la cuestibn, debe registrarse el
hecho y dejar que la cuesti6n se lleve a cab0 en otro
momento.
4. Enunciar h e a s de problemas, pero no intentar resol-
ver cualquier problema que se ponga de manijiesto.
Una revisi6n no es una sesi6n de resoluci6n de pro-
Inform Sumoriol y Listo de Sucesos de Revision TBcnico.
blemas. A menudo, la resolution de 10s problemas
puede ser encargada a1 productor por si solo o con
La lista de sucesos de revisidn sirve para dos pro- la ayuda de otra persona. La resolucibn de 10s pro-
p6sitos: (I) identificar hreas problemhticas dentro del blemas debe ser pospuesta para despuCs de la reu-
producto y (2) servir como lista de comprobacion de ni6n de revisi6n.
puntos de acci6n que guie a1 productor para hacer las
correcciones. Normalmente se adjunta una lista de con-
clusiones a1 informe sumario.
Es importante establecer un procedimiento de segui- i ~ m m a c i o n e smas bonitos
miento que asegure que 10s puntos de la lista de suce-
sos son corregidos adecuadamente. A menos que se haga
asi, es posible que las pegas surgidas cccaigan en sac0
rota>>. Un enfoque consiste en asignar la responsabili-
dad del seguimiento a1 revisor jefe 5. Tomar notas escritas. A veces es buena idea que el
registrador tome las notas en una pizarra, de forma
8.5.3. Directrices para la revision que las declaraciones o la asignaci6n de prioridades
Se deben establecer de antemano directrices para con- pueda ser comprobada por el resto de 10s revisores,
ducir las revisiones tCcnicas formales, distribuyhdolas a medida que se va registrando la informaci6n.
despuCs entre 10s revisores, para ser consensuadas y, 6. Limitar el numero de participantes e insistil- en lapre-
finalmente, seguidas. A menudo, una revisi6n incon- paracidn anticipada. Dos personas son mejores que
trolada puede ser peor que no hacer ning6n tip0 de revi- una, per0 catorce no son necesariamente mejores que
sion. A continuaci6n se muestra un conjunto minimo de cuatro. Se ha de mantener el numero de participantes
directrices para las revisiones tCcnicas formales: en el minimo necesario. Ademhs, todos 10s miembros
del equip0 de revisi6n deben prepararse por anticipado. Llevar a cabo un buen entrenamiento de todos 10s
El jefe de revisi6n debe solicitar comentarios (que revisores. Por razones de efectividad, todos 10s par-
muestren que cada revisor ha revisado el material). ticipantes en la revisi6n deben recibir algdn entre-
Desarrollar una lista de comprobacidn para cada namiento formal. El entrenamiento se debe basar en
producto que huya de ser revisado. Una lista de com- 10s aspectos relacionados con el proceso, asi como
probaciones ayuda a1 jefe de revisi6n a estructurar las consideraciones de psicologia humana que ata-
la reunidn de RTF y ayuda a cada revisor a centrarse Aen a la revisi6n. Freedman y Weinberg [FRE90]
en 10s asuntos importantes. Se deben desarrollar lis- estiman en un mes la curva de aprendizaje para cada
tas de comprobaciones para 10s documentos de an& veinte personas que vayan a participar de forma efec-
lisis, de disefio, de codificaci6n e incluso de prueba. tiva en las revisiones.
10. Repasar las revisiones anteriores. Las sesiones de
informaci6n pueden ser beneficiosas para descubrir
problemas en el propio proceso de revisi6n. El pri-
mer producto que se haya revisado puede estable-
cer las propias directivas de revisi6n.
Como existen muchas variables (por ejemplo, ndme-
Listos de comprobocibn de RTF
ro de participantes, tip0 de productos de trabajo, tiem-
Disponer recursos y una agenda para las RTF. Para po y duraci61-1,enfoque de revisi6n especifico) que tienen
que las revisiones Sean efectivas, se deben planificar impact0 en una revisi6n satisfactoria, una organizaci6n
como una tarea del proceso de ingenieria del soft- de software deberia determinar quC mCtodo funciona
ware. Ademas se debe trazar un plan de actuaci6n mejor en un context0 local. Porter y sus'colegas
para las modificaciones inevitables que aparecen [POR95] proporcionan una guia excelente para este tip0
como resultado de una RTF. de experimentos.
Interfaz hombre-mhquina arnbigua o inconsistente En cada etapa del proceso de ingenieria del softwa-
(IHM) . re se calcula un indice de fase, IFi:
Varios (VAR).
IFi = W, (Si/Ei) +W, (MiiEi) + W, (Ti/Ei)
El indice de errores (IE) se obtiene mediante el calcu-
lo del defect0 acumulativo de cada IFi, asignando mhs
peso a 10s errores encontrados mhs tarde en el proceso de
l o Asocioci6n Chino de Colidod del Software present0 ingenieria del software, que a 10s que se encuentran en las
uno de 10s sitios web rn6s cornpletos poro lo colidod en primeras etapas:
www.cosq.org
IE = E (i x IF,) I PS
Para aplicar la SQA estadistica se construye la Tabla = (IF, + 2IF, + 3IF, + ... iIFi) I PS
8.1. La tabla indica que EIE, MCC y ERD son las cau-
sas vitales que contabilizan el 53 por 100 de todos 10s
errores. Sin embargo, debe observarse que si s610 se Total Grave Moderado Leve
consideraran errores serios, se seleccionan'an las siguien-
tes causas vitales: EIE, ERD, TLP y ELD. Una vez deter- Error No. % No. % No. % No. %
minadas las causas vitales, la organizaci6n de desarrollo
de software puede comenzar la accidn correctiva. Por IEE
ejemplo, para corregir la MCC, el equipo de desarrollo
del software podria implementar tCcnicas que facilita- MCC
ran la especificaci6n de la aplicacidn (Capitulo 11) para
mejorar la calidad de la especificaci6n y la comunica- DDE
ci6n con el cliente. Para mejorar el ERD, el equipo de
desarrollo del software podria adquirir herramientas IEP
CASE para la modelizaci6n de datos y realizar revisio-
nes del diseiio de datos mAs rigurosas. ERD
Es importante destacar que la accidn correctiva se
IMI
centra principalmente en las causas vitales. Cuando Cstas
son corregidas, nuevas candidatas saltan a1 principio de ELD
la lista.
Se han mostrado las tkcnicas de garantia de calidad PIE
del software estadisticas para proporcionar una mejora
sustancial en la calidad [ART97]. En algunos casos, las DII
organizaciones de software han conseguido una reduc-
ci6n anual del50 por 100 de 10s errores despuCs de la TLP
aplicacidn de estas tCcnicas.
Junto con la recopilaci6n de informaci6n sobre defec- IHM
tos, 10s equipos de desarrollo del software pueden cal-
cular un indice de errores (IE) para cada etapa principal VAR
del proceso de ingenieria del software [IEE94]. Des-
puks del analisis, el diseiio, la codificacidn, la prueba y Totales 942 100% 128 100% 379 100% 435 100%
la entrega, se recopilan 10s siguientes datos:
TABLA 8.1. Recoleccion de datos para la SQA estadistica
Ei= numero total de defectos descubiertos durante la eta-
pa i-Csima del proceso de ingenieria del software;
Si= numero de defectos graves; Se puede utilizar el indice de errores junto con la
M i=numero de defectos moderados; informacidn recogida en la Tabla 8.1, para desarrollar
Ti= numero de defectos leves; una indicacidn global de la mejora en la calidad del soft-
ware.
PS =tamaiio del product0 (LDC, sentencias de disefio, La aplicacidn de la SQA estadistica y el principio de
paginas de documentacibn) en la etapa i-ksima. Pareto se pueden resumir en una sola frase: iUtilizar el
W s, W , , W ,= factores de peso de errores graves, mode- tiempo para centrarse en cosas que realmente intere-
rados, y leves, en donde 10s valores recomendados san, pero primer0 asegurarse que se entiende que' es lo
son W s = 10, W , = 3, Wt = 1. Los factores de peso que realmente interesa!
de cada fase deberian agrandarse a medida que el Un estudio exhaustivo de la SQA estadistica se sale
desarrollo evoluciona. Esto favorece a la organi- del alcance de este libro. Los lectores interesados debe-
zacidn que encuentra 10s errores a1 principio. rian consultar [SCH98], [KAP95] y [KAN95].
CAPfTULO 8 GARANTfA DE CALIDAD DEL SOFTWARE
Si William Shakespeare hubiera escrito sobre las con- Para llevar a cab0 la entrada adecuada del menu para cada apli-
diciones del ingeniero de software modemo, podria per- cacion, un cdocalizadorn (una persona que habla en el idioma
local y con la terminologia de ese lugar) traduce 10s menus de
fectamente haber escrito: <<Errares humano, encontrar acuerda con el idioma en uso. El problema es asegurar que (1)
el error rapida y correctamente es divine.,, En 10s afios cada entrada de menu (pueden existir cientos de ellas) se ade-
sesenta, un ingeniero industrial japonCs, Shigeo Shin- cue a 10s estindares apropiados y que no existan conflictos,
go [SHI86], que trabajaba en Toyota, desarroll6 una tCc- independientemente del lenguaje que se esti utilizando.
nica de garantia de calidad que conducia a la prevention El uso del poka-yoke para la prueba de diversos
y/o a la temprana correcci6n de errores en el proceso de mends de aplicacion desarrollados en diferentes len-
fabricaci6n. Denominado poka-yoke (prueba de erro- guajes, tal y como se ha descrito anteriormente, se dis-
res), el concepto de Shingo hacia uso de dispositivos cute en un articulo de Harry Robinson [ROB97]:
poka-yoke -mecanismos que conducen (1) a la pre- Nosotros primero decidimos dividir el problema de prue-
venci6n de un problema de calidad potencial antes de bas de menus en partes que puedan ser resueltas mis facil-
que Cste ocurra, o (2) a la rhpida detecci6n de proble- mente. Nuestro primer avance para la resolucion del problema
mas de calidad si se han introducido ya-. Nosotros fue el comprender que existian dos aspectos separados para 10s
encontramos dispositivos poka-yoke en nuestra vida catilogos de mensaje. Habia por una parte el aspecto de con-
cotidiana (incluso si nosotros no tenemos conciencia de tenidos: las traducciones de texto muy simples tales como cam-
biar meramente &losen por la palabra ccFermern. Puesto que
este concepto). Por ejemplo, el interruptor de arranque el equipo que realizaba las comprobaciones no hablaba de for-
de un coche no trabaja si esth metida una marcha en la ma fluida el lenguaje en el que se pretendia trabajar, teniamos
transmision automatics (un dispositivo de prevencidn); que dejar estos aspectos a traductores expertos del lenguaje.
un pitido de aviso del coche sonar6 si 10s cinturones de El segundo aspecto de 10s catalogos del mensaje era
seguridad no esthn bien sujetos (un dispositivo de detec- la estructura, las reglas sinticticas que debia obedecer
cidn de fallos). un cathlogo de objetivos adecuadamente construido. A
Un dispositivo de poka-yoke presenta un conjunto diferencia del contenido, en este caso si que era posible
de caracteristicas comunes: para el equipo de comprobaci6n el verificar 10s aspec-
Es simple y barato -si un dispositivo es demasiado tos estructurales de 10s cat8logos.
complicado y caro, no sera efectivo en cuanto a Como un ejemplo de lo que significa estructura, con-
cost*; sideremos las etiquetas y 10s mnem6nicos de un mend
Es parte del proceso +st0 es, el dispositivo poka- de aplicacion. Un mend esta constituido por etiquetas
yoke esta integrado en una actividad de ingenieria-; y sus mnem6nicos (abreviaturas) asociados. Cada mend,
Esth localizado cerca de la tarea del proceso donde independientemente de su contenido o su localizaci6n,
esthn ocurriendo 10s errores -por consiguiente pro- debe obedecer las siguientes reglas listadas en la Guia
porciona una realimentacion rhpida en cuanto a la de Estilo Motif:
correcci6n de errores se refiere-. Cada nemotCcnico debe estar contenido en su eti-
queta asociada;
2
Referencia Web
Se puede obtener uno coleccibn cornpleta de recursos
de poko-yoke en
Cada nemotkcnico debe ser dnico dentro del mend;
Cada nemotCcnico debe ser un carhcter dnico;
Cada nemotkcnico debe estar en ASCII.
Estas reglas son invariantes a travCs de las localiza-
www.campbell.berry.edu/faculty/igrout/ ciones, y pueden ser utilizadas para verificar que un mend
pokayoke.shtml esth correctamente construido en la localizaci6n objetivo.
Existen varias posibilidades para realizar la prueba
de errores de 10s mnem6nicos del mend:
Aunque el poka-yoke fue originariamente desarro- Dispositivo de prevencidn. Nosotros podemos escri-
llado para su uso en <<controlde calidad cero,, [SHI86] bir un programa para generar 10s mnem6nicos automh-
para el hardware fabricado, puede ser adaptado para su ticamente, dada una lista de etiquetas en cada mend.
uso en ingenieria del software. Para ilustrar esto, con- Este enfoque evitaria errores, per0 el problema es que
sideremos el problema siguiente [ROB97]: escoger un mnem6nico adecuado es dificil, y el esfuer-
Una compaiiia de productos de software vende el software zo requerido para escribir el programa no estaria justi-
de aplicacion en el mercado intemacional. Los menus desple- ficado con el beneficio obtenido.
gables y todos 10s codigos asociados proporcionados con cada
aplicacion deben reflejar el lenguaje que se ernplea en el lugar
Dispositivo de prevencidn. Podriamos escribir un
donde se usa. Por ejemplo, el elemento del menu del lenguaje programa que prevendria a1 localizador de elegir unos
inglCs para c<Closen,tiene el mnem6nico <<Cnasociado con ello. mnemdnicos que no satisfagan el criterio. Este enfoque
Cuando la aplicacion se vende en un pais de habla francesa, el tarnbiCn evitaria errores, per0 el beneficio obtenido seria
mismo elemento del menu es ctFermen) con el mnem6nico <<F,). minimo; 10s mnem6nicos incorrectos son lo suficiente-
I N G E N I E R ~ ADEL SOFTWARE. UN ENFOQUE PRACTICO
mente f a d e s de detectar y corregir despuCs de que apa- estructurales de 10s men6s . Un pequeiio <<script>> poka-
. rezcan. yoke leeria la tabla, recuperaria 10s mnemhicos y eti-
Dispositivo de deteccidn. Nosotros podriamos pro- quetas a partir del catalog0 de mensajes, y compararia
porcionar un programa para verificar que las etiquetas posteriormente las cadenas recuperadas con el criterio
del men6 escogidas y 10s mnem6nicos satisfacen 10s establecido descrito anteriormente.
criterios anteriores. Nuestros localizadores podnan eje- Los <<scripts>>poka-yoke eran pequefios (aproximada-
cutar 10s programas sobre 10s catalogos de mensaje tra- mente 100 lineas), fhciles de escribir (algunos de 10s escri-
ducidos antes de enviarnos a nosotros dichos catalogos. tos estaban en cuanto a1 tiempo por debajo de una hora)
Este enfoque proporcionan'a una realimentacion rapida y faciles de ejecutar. Nosotros ejecutabamos nuestros
sobre 10s errores y sera, probablemente, un paso a dar c<scripts>>poka-yoke sobre 16 aplicaciones en la ubicaci6n
en el futuro. en inglCs por defect0 y en 11 ubicaciones extranjeras. Cada
Dispositivo de deteccidn. Nosotros podnamos escri- ubicaci6n contenia 100 menus para un total de 1.200
bir un programa que verificase las etiquetas y mnem6ni- menus. Los dispositivospoka-yoke encontraron 3 11 erro-
cos del men6, y ejecutara el programa sobre catalogos de res en menus y mnem6nicos. Pocos de 10s problemas que
mensajes despuCs de que nos 10s hayan devuelto 10s loca- nosotros descubrimos eran como muy llamativos, pero en
lizadores. Este enfoque es el camino que actualmente total habnan supuesto una gran preocupacion en la prue-
estamos tomando. No es tan eficiente como alguno de 10s ba y ejecuci6n de nuestras aplicaciones localizadas.
mCtodos anteriormente mencionados y puede requerir El ejemplo descrito antes representa un dispositivo
que se establezca una comunicacion fluida hacia delan- poka-yoke que ha sido integrado en la actividad de prue-
te y hacia atras con 10s localizadores, per0 10s errores bas de ingenieria del software. La tecnica poka-yoke
detectados son incluso faciles de corregir en este punto. puede aplicarse a 10s niveles de disefio, codificaci6n y
Varios textos pequefios de poka-yoke se utilizaron pruebas y proporciona un filtro efectivo de garantia de
como dispositivos poka-yoke para validar 10s aspectos calidad.
Esta seccion contiene varios objetivos, siendo el prin- IS0 9004-2. Quality Management and Quality Sys-
cipal describir el cada vez mas importante esthdar inter- tem Elements -Part 2-. Este documento propor-
national I S 0 9001. El estandar, que ha sido adoptado ciona las directrices para el semicio de facilidades
por mas de 130 paises para su uso, se esta convirtiendo del software como soporte de usuarios.
en el medio principal con el que 10s clientes pueden juz- Los requisitos se agrupan bajo 20 titulos:
gar la competencia de un desarrollador de software. Uno
de 10s problemas con el estandar I S 0 9001 esta en que Responsabilidad de la gesti6n.
no es especifico de la industria: esta expresado en tCr- Inspecci6n, medicion y equipo de pruebas.
minos generales, y puede ser interpretado por 10s desa- Sistema de calidad.
rrolladores de diversos productos como cojinetes de Inspecci6n y estado de pruebas.
bolas (rodamientos), secadores de pelo, autom6viles, Revision de contrato.
equipamientos deportivos y televisiones, asi como por Acci6n correctiva.
desarrolladores de software. Se han realizado muchos Control de disefio.
documentos que relacionan el estandar con la industria Control de producto no aceptado.
del software, per0 no entran en una gran cantidad de Control de documento.
detalles. El objetivo de esta secci6n es describir lo que Tratamiento, almacenamiento, empaquetamiento y
significa el I S 0 9001 en tCrminos de elementos de cali- entrega.
dad y tCcnicas de desarrollo. Compras.
Para la industria del software 10s estandares rele- Producto proporcionado a1 comprador.
vantes son: Registros de calidad.
IS0 9001. Quality Systems- Model for Quality Assu- Identficaci6n y ysibilidad de seguimiento del producto.
Auditonas internas de calidad.
rance in Design, Development, Production, Insta-
llation and Servicing. Este es un esthndar que Formaci6n
describe el sistema de calidad utilizado para mante- Control del proceso
Semicios.
ner el desarrollo de un producto que implique disefio.
IS0 9000-3. Guidelinesfor Application of I S 0 9001 Inspeccion y estado de prueba.
to the Development, Supply and Maintainance of Tkcnicas estadisticas.
Software. Este es un documento especifico que Merece la pena ver un pequefio extract0 de la I S 0
interpreta el I S 0 9001 para el desarrollador de soft- 9001. Este le darh a1 lector una idea del nivel con el que
ware. la I S 0 9001 trata la garantia de calidad y el proceso de
CAPiTULO 8 GARANTLA DE CALIDAD DEL SOFTWARE
desarrollo. El extract0 elegido proviene de la secci6n ci6n del parrafo -es pretendido obviamente por 10s
1.11: procesos estandar de ingenieria donde equipos tales
4.11. El equipo de Inspecci6n, medici6n y pruebas. como indicadores de calibraci6n y potenci6metros son
habituales-.
El suministradordebe controlar,calibrar y mantener la ins-
pecci6n, medir y probar el equipo, ya sea el dueiio el suminis- Una interpretaci6n del parrafo anterior es que el dis-
trador, prestado o proporcionado por el comprador, para tribuidor debe asegurar que cualquiera de las herramien-
demostrar la conformidad del producto con 10s requisitos espe- tas de software utilizadas para las pruebas tiene, por lo
cificados. El equipo debe utilizarse de un mod0 que asegure menos, la misma calidad que el software a desarrollar, y
que se conoce la incertidumbre de la medici6n y que es con- que cualquier prueba del equipo produce valores de medi-
sistente con la capacidad de medici6n requerida.
ci6n, por ejemplo, 10s monitores del rendimiento, tienen
Lo primer0 a destacar es su generalidad; se puede una precisi6n aceptable cuando se compara con la preci-
aplicar a1 desarrollador de cualquier producto. Lo si6n especificada para el rendimiento en la especificaci6n
segundo a considerar es la dificultad en la interpreta- de 10s requisitos.
. . . .
. . .
DE SOA
El plan de SQA proporciona un mapa para institucio- : documentos de usuario (por ejemplo: archivos de
nalizar la garantia de calidad del software. El plan, desa- ayuda).
rrollado por un grupo de SQA, sirve como plantilla para AdemAs, esta secci6n define el conjunto minimo de
actividades de SQA instituidas para cada proyecto de productos de trabajo que se pueden aceptar para lograr
software. alta calidad.
Los esthndares, practicas y convenciones muestran
todos 10s estAndares/practicasque se aplican durante el
proceso de software (por ejemplo: estindares de docu-
mentos, estandares de codificaci6n y directrices de revi-
si6n). Ademas, se listan todos 10s proyectos, procesos y
El Plan GCS (en algunos casos) mktricas de producto que se van a reco-
ger como parte del trabajo de ingenieria del software.
El IEEE [IEEE94] ha recomendado un esthndar para La secci6n Revisiones y Auditorias del plan identi-
10s planes de SQA. Las secciones iniciales describen el fica las revisiones y auditorias que se van a llevar a cab0
prop6sito y el alcance del documento e indican aque- por el equipo de ingenieria del software, el grupo de
llas actividades del proceso del software cubiertas por SQA y el cliente. Proporciona una visi6n general del
la garantia de calidad. Se listan todos 10s documentos enfoque de cada revisi6n y auditoria.
seiialados en el plan de SQA y se destacan todos 10s La secci6n Prueba hace referencia a1 Plan y Procedi-
estandares aplicables. La secci6n de Gestidn del plan miento de Pruebas del Sofh~are(Capitulo 18). TambiCn
describe la situaci6n de la SQA dentro de la estructura define requisitos de mantenimiento de registros de prue-
organizativa; las tareas y las actividades de SQA y su bas. La Informacibn sobre problemas y accidn correcti-
emplazamiento a lo largo del proceso del software; asi va define procedimientos para informar, hacer segui-
como 10s papeles y responsabilidades organizativas rela- miento y resolver errores y defectos, e identifica las res-
tivas a la calidad del producto. ponsabilidades organizativas para estas actividades.
La secci6n de Documentacibn describe (por referen- El resto del plan de SQA identifica las herramientas
cia) cada uno de 10s productos de trabajo producidos como y mCtodos que soportan actividades y tareas de SQA;
parte del proceso de software. Entre estos se incluyen: hace referencia a 10s procedimientos de gesti6n de con-
figuraci6n del software para controlar el cambio; defi-
documentos del proyecto (por ejemplo: plan del pro- ne un enfoque de gesti6n de contratos; establece mCtodos
yecto), para reunir, salvaguardar y mantener todos 10s registros;
modelos (por ejemplo: DERs, jerarquias de clases), identifica la formaci6n que se requiere para cumplir las
documentos tCcnicos (por ejemplo: especificaciones, necesidades del plan y define mCtodos para identificar,
planes de prueba), evaluar, supervisar y controlar riesgos.
lNGENIERiA DEL SOFTWARE. U N ENFOQUE PRACTICO
[ALV64] von Alvin, W. H. (ed.), Reliability Engineering, [GLA98] Glass, R., <<Defining
Quality Intuitively>>,
IEEE Soft-
Prentice-Hall, 1964. ware, Mayo 1998, pp. 103-104 y 107.
[ANS87] ANSIJASQC A3-1987, Quality Systems Termino- [HOY98] Hoyle, D., Iso 9000 Quality Systems Development
logy, 1987. Handbook: A Systems Engineering Approach, Buttenvorth-
Heinimann, 1998.
[ART921Arthur, L. J., Improving Software Quality: An Insi-
der's Guide to TQM, Wiley, 1992. [IBM81] cdmplementating Software Inspections>>,notas del
curso, IBM Systems Sciences Institute, IBM Corporation,
[ART971 Arthur, L. J., <<QuantumImprovements in Softwa- 1981.
re System Quality,,, CACM, vol. 40, n." 6, Junio 1997, pp.
47-52. [LEE901 Software Quality Assurance: Model Procedures, Ins-
titution of Electrical Engineers, 1990.
[BOE8 I] Boehm, B., Software Engineering Economics, Pren-
tice-Hall, 1981. [IEE94] Soffware Engineering Standards, ed. de 1994, IEEE
Computer Society, 1994
[CR075] Crosby, P., Quality is Free, McGraw-Hill, 1975. [JAN861 Jahanian, F., y A. K. Mok, <<SafetyAnalysis of
[CR079] Crosby, P., Quality is Free, McGraw-Hill, 1979. Timing Properties of Real Time Systems*, IEEE Trans.
Software Engineering, vol. SE-12, n." 9, Septiembre 1986,
[DEM86] Deming, W. W., Out of the Crisis, MIT Press, 1986.
pp. 890-904.
[DEM99] DeMarco, T., ((Management Can Make Quality [JON861 Jones, T. C., Programming Productivity, McGraw-
(Irn)possible>>,presentacidn de Cutter Summit '99, Bos- Hill, 1986.
ton, MA, 26 de Abril 1999.
[KAN95] Kan, S. H., Metrics and Models in Software Qua-
[DIJ76] Dijkstra, E., A Discipline of Programming, Prentice- lity Engineering, Addison Wesley, 1995.
Hall, 1976.
[ U P 9 5 1 Kaplan, C., R. Clark y V. Tang, Secrets of Softwa-
[DUN821 Dunn, R., y R. Ullman, Quality Assurance for Com- re Quality: 40 Innovations from IBM, McGraw-Hill, 1995.
puter Software, McGraw-Hill, 1982.
[LEV861 Leveson, N.G., <<SoftwareSafety: Why, What, and
[FRE90] Freedman, D. P., y G. M. Weinberg, Handbook of How>>,ACM Computing Surveys, vol. 18, n.", Junio 1986,
Walkthroughs, Inspections and Technical Reviews, 3.%d., pp. 125-163.
Dorset House, 1990. [LEV871 Leveson, N. G., y J.L. Stolzy, ((SafetyAnalysis using
[GIL93] Gilb, T., y D. Graham, Software Inspections, Addi- Petri Netsa, IEEE Trans. Software Engineering, vol. SE-13,
son-Wesley, 1993. n." 3, Marzo 1987, pp. 386-397.
CApfTULO 8 G A R A N T f A D E CALIDAD DEL S O F T W A R E
[LEV951 Leveson, N.G., Safeware: System Safety and Com- [ROO901Rook, J., Sofhvare Reliability Handbook, Elsevier,
puters, Addison-Wesley, 1995. 1990.
[LIN79] Linger, R., H. Mills y B. Witt, Structured Program- [SCH98] Schulmeyer, G. C., y J.I. McManus (eds.), Hand-
ming, Addison-Wesley, 1979. book of Software Quality Assurance, Prentice-Hall, 3.%d.,
[LIT891 Littlewood, B., <<ForecastingSoftware Reliability>>, 1998.
en Sofhvare Reliability: Modelling and identification (S. [SCH94] Schmauch, C.H., IS0 9000 for Sofiware Develo-
Bittanti, ed.), Springer-Verlag, 1989, pp. 141-209. pers, ASQC Quality Press, Milwaukee, WI, 1994.
[MAN961 Manns, T. y M. Coleman, Sofhvare Quality Assu- [SCH97] Schoonmaker, S.J., IS0 9000 for Engineers and
rance, MacMillan Press, 1996. Designers, McGraw Hill, 1997.
[MUS87] Musa, J. D., A. Iannino y K. Okumoto, Enginee-
[SHI86] Shigeo Shingo, Zero Quality Control: Source Ins-
ring and Managing Sofiware with Reliability Measures,
pection and the Poka-Yoke System, Productivity Press,
McGraw-Hill, 1987.
1986.
[PAU93] Paulk, M., et al., Capability Maturiry Model for
Software, Software Engineering Institute, Carnegie Mellon [SOM96] Somerville, I., Software Engineering, 5.%d., Addi-
University, Pittsburgh, PA, 1993. son-Wesley, 1996.
[POR95] Porter, A., H. Siv, C. A. Toman, y L. G. Votta, aAn [TIN961 Tingey, M., Comparing IS0 9000, Malcolm Bal-
Experiment to Assess the Cost-Benefits of Code Inspec- dridge y a1 SEI CMM para Software, Prentice-Hall, 1996.
tions in Large Scale Software Development>>,Proc. Third [TRI97] Tricker, R., IS0 9000 for Small Bussinesses, But-
ACM SIGSOFT Symposium on the Foundations of Soft- terworth-Heinemann, 1997.
ware Engineering, Washington DC, Octubre 1996, ACM
Press, pp. 92-103. [VES81] Veseley, W.E., et al., Fault Tree Handbook, U S
Nuclear Regulatory Commision, NUREG-0492, Enero
[ROB971 Robinson, H., <<UsingPoka-Yoke Techniques for 1981.
Early Error Detection>>,Proc. Sixth International Confe-
rence on Sofhvare Testing Analysis and Review (STAR'97), [WI494] Wilson, L. A., 8 stp to Succesful IS0 9000, Cam-
1997, pp. 119-142. bridge Interactive Publications, 1996.
, 8.15. Considere dos sistemas de seguridad critica que estCn 8.17. Sugiera unos cuantos dispositivos poka-yoke que pue-
. controlados por una computadora. Liste a1 menos tres peligros dan ser usados para detectar y/o prevenir errores que son
para cada uno de ellos que se puedan relacionar directamen- encontrados habitualmente antes de ccenviam un mensaje
te con 10s fallos del software. por e-mail.
8.16. Utilizando recursos web y de impresidn, desarrolle un 8.18. Adquiera una copia de I S 0 9001 e I S 0 9000-3. Prepa-
tutorial de 20 minutos sobrepoka-yoke y exp6ngaselo a su cla- re una presentacidn que trate tres requisitos I S 0 9001 y cdmo
se. se aplican en el context0 del software.
Los libros de Moriguchi (Software Excellence: A Total Qua- Sanders, J., Software Quality: A Framework for Success
lity Management Guide, Productivity Press, 1997), Horch in Software Development, Addison-Wesley, 1994.
(Practical Guide to Software Quality Management, Artech Sumner, F. H. Software Quality Assurance, MacMillan,
Publishing, 1996) son unas excelentes presentaciones a nivel 1993.
de gestion sobre 10s beneficios de 10s programas formales de Wallmuller, E., Software Quality Assurance: A Practical
garantia de calidad para el software de computadora. Los Approach, Prentice-Hall, 1995.
libros de Deming IDEM861 y Crosby [CR079], aunque no
se centran en el software, ambos libros son de lectura obli- Weinberg, G. M., Quality Software Management, 4 vols.,
gada para 10s gestores senior con responsabilidades en el desa- Dorset House, 1992, 1993, 1994 y 1996.
rrollo de software. Gluckrnan y Roome (Every day Heroes of Wilson, R. C., Software Rx: Secrets of Engineering Qua-
the Quality Movement, Dorset House, 1993) humaniza 10s lity Software, Prentice-Hall, 1997.
aspectos de calidad contando la historia de 10s participantes Una antologia editada por Wheeler, Bryczynsky y Mee-
en el proceso de calidad. Kan (Metrics and Models in Soft- son (Software Inspection: lndustry Best Practice, IEEE Com-
ware Quality Engineering, Addison-Wesley, 1995) presenta puter Society press, 1996) presenta informacidn util sobre
una visidn cuantitativa de la calidad del software. Manns (Soft- esta importante actividad de GCS. Friedman y Voas (Software
MqareQuality Assurance, Macmillan, 1996) es una excelente Assessment, Wiley, 1995) estudian 10s soportes y mCtodos
introduccidn a la garantia de calidad del software. pricticos para asegurar la fiabilidad y la seguridad de pro-
Tingley (Compering I S 0 9000, Malcom Baldridge, and gramas de computadora.
the SEI CMM for Software, Prentice-Hall, 1996) proporciona Musa (Software Reliability Engineering: More Reliable
una guia util para las organizacionesque se esfuerzan en mejo- Software, Faster Development and Testing, McGraw-Hill,
rar sus procesos de gestion de calidad. Oskarsson (An I S 0 1998) ha escrito una guia practica para aplicar a las tCcnicas
9000 Approach to Building Quality Software, Prentice-Hall, de fiabilidad del software. Han sido editadas antologias de
1995) estudia cdmo se aplica el estandar I S 0 a1 software. articulos importantes sobre la fiabilidad del software por Kapur
Durante 10s ultimos aiios se han escrito docenas de libros y otros (Contributions to Hardware and Software Reability
sobre aspectos de garantia de calidad. La lista siguiente es Modelling, World Scientific Publishing Co., 1999), Gritzails
una pequeiia muestra de fuentes dtiles: (Reliability, Quality and Safety of Software-Intensive Systems,
Clapp, J. A., et al., Software Quality Control, ErrorAnaly- Kluwer Academic Publishing, 1997), y Lyu (Handbook of
sis and Testing, Noyes Data Corp.. Park Ridge, NJ,1995. Software Reliability Engineering, McGraw-Hill, 1996). Sto-
Dunn, R. H., y R.S. Ullman, TQM for Computer Softwa- rey (Safety-Critical Computer Systems, Addison-Wesley,
re, McGrawHill, 1994. 1996) y Leveson [LEV951continuan siendo 10s estudios mas
Fenton, N., R. Whitty y Y. Iizuka, Software QualityAssu- completos sobre la seguridad del software publicados hasta
ranee and Measurement: Worldwide Industrial Applications, la fecha.
Chapman & Hall, 1994. Adem& de [SHI86], la tCcnica poka-yoke para el software
Ferdinand, A. E., Systems, Software, and Quality Enginee- de prueba de errores es estudiada Shingo (The Shingo Pro-
ring, Van Nostrand Reinhold, 1993. duction Management System: Improving Product Quality by
Preventing Defects, Productivity Press, 1989) y por Shimbun
Ginac, F. P., Customer Oriented Software Quality Assu-
(Poka-Yoke:Improving Product Quality by Preventing Defects,
rance, Prentice-Hall, 1998.
Productivity Press, 1989).
Ince, D., I S 0 9001 and Software Quality Assurance, En Internet e s t h disponibles una gran variedad de fuen-
McGraw-Hill, 1994. tes de informacidn sobre la garantia de calidad del software,
Ince, D., An Introduction to Software Quality Assurance fiabilidad del software y otros temas relacionados. Se puede
and Implementation, McGraw-Hill, 1994. encontrar una lista actualizada con referencias a sitios (pagi-
Jarvis, A., y V. Crandall, Inroads to Soft~vareQuality: nas) web que son relevantes para la calidad del software en
CHOWTONGuide and Toolkit, Prentice-Hall, 1997.
~ NLA
O E S T ~ DE
DEL SOFTWARE
Palabras c l a v e
C
UANDO se construye software de computadora, 10s cambios son inevitables. Ademzis,
auditoria 10s cambios aumentan el grado de confusi6n entre 10s ingenieros del software que estAn
de la cdguracih ..I58 trabajando en el proyecto. La confusi6n surge cuando no se han analizado 10s cambios
control antes de realizarlos, no se han registrado antes de implementarlos, no se les han comunicado a
de rlncronizw6n....I58 aquellas personas que necesitan saberlo o no se han controlado de manera que mejoren la cali-
control deversii. .. 155 dad y reduzcan 10s errores. Babich [BAB86] se refiere a este asunto cuando dice:
control del accm. ..I58 El arte de coordinar el desmollo de software para minimizar...la confusi6n, se denomina gesti6n de con-
control del cambio. ..I58 figuraci6n. La gesti6n de contiguraci6n es el arte de identificar, organizar y controlar las modificaciones que
sufre el software que construye un equipo de programacibn. La meta es rnaximizar la productividad rnini-
ECSs .............,152 rnizando 10s errores.
identificadh .......I54
informe de estado.. .I59 La gestion de configuraci6n del software (GCS) es una actividad de autoproteccih que se
aplica durante el proceso del software. Como el carnbio se puede producir en cualquier momen-
fineas base.. .......I52
to, las actividades de GCS sirven para (1) identificar el carnbio, (2) controlar el carnbio, (3)
obletos garantizar que el carnbio se implementa adecuadamente y (4) informar del carnbio a todos aque-
de configuraciC ....I53
110s que puedan estar interesados.
p r o c c ~GCS. .......I54 Es importante distinguir claramente entre el mantenimiento del software y la gestion de con-
figuration del software. El mantenimiento es un conjunto de actividades de ingenieria del soft-
ware que se producen despuCs de que el software se haya entregado a1 cliente y este en
funcionamiento. La gesti6n de configuraci6n del software es un conjunto de actividades de
seguimiento y control que comienzan cuando se inicia el proyecto de ingenieria del software y
termina s61o cuando el software queda fuera de la circulaci6n.
--
Configuration Management
151
I N G E N I E R ~ ADEL SOFTWARE. UN ENFOQUE PRACTICO
nuevas necesidades del cliente que demandan la Una linea base es analoga a la cocina de un restau-
modificaci6n de 10s datos producidos por sistemas rante. Antes de que un elemento de configuraci6n de
de informaci6n, funcionalidades entregadas por pro- software se convierta en una linea base, el cambio se
ductos o semicios entregados por un sistema basado puede llevar a cab0 rapida e informalmente. Sin embar-
en computadora; go, una vez que se establece una linea base, pasamos,
reorganizacidn o crecimiento/reducci6n del negocio de forma figurada, por una puerta de un solo sentido.
que provoca cambios en las prioridades del proyecto Se pueden llevar a cab0 10s cambios, per0 se debe apli-
o en la estmctura del equipo de ingenieria del software; car un procedimiento formal para evaluar y verificar
cada cambio.
restricciones presupuestarias o de planificaci6n que En el context0 de la ingenieria del software, defini-
provocan una redefinition del sistema o producto. mos una linea base como un punto de referencia en el
La gesti6n de configuraci6n del software (GCS) es un desarrollo del software que queda marcado por el envio
conjunto de actividades desarrolladas para gestionar 10s de uno o mas elementos de configuraci6n del software
cambios a lo largo del ciclo de vida del software de com- y la aprobaci6n del ECS obtenido mediante una revi-
putadora. si6n tCcnica formal (Capitulo 8). Por ejemplo, 10s ele-
9 GESTI6N DE LA C O N F I G U R A C I ~DEL
CAP~TULO N SOFTWARE
mentos de una Especifrcacibn de Diseiio se documen- so de ingenieria del software. Llevado a1 extreme, se pue-
- tan y se revisan. Se encuentran errores y se corrigen. de considerar un ECS como una secci6n individual de
Cuando todas las partes de la especificaci6n se han revi- una gran especificaci6n o cada caso de prueba de un gran
sado, corregido y aprobado, la EspecijicucYbrz de Dise- conjunto de pruebas. De forma mhs realista, un ECS es
fio se convierte en una linea base. Solo se pueden realizar un documento, un conjunto completo de casos de prue-
cambios futuros en la arquitectura del software (docu- ba o un componente de un prograrna dado (p. ej., una fun-
mentado en la Especijkuc-idnde Disefio)trns haber sido ci6n de C++ o un paquete de ADA).
evaluados y aprobados. Aunque se pueden definir las En realidad, 10s ECSs se organizan como ol,jc.tos de
lineas base con cualquier nivel de detalle, las lineas base configumcibn que han de ser catalogados en la base de
rnlis comunes son las que se muestran en la Figura 9.1. datos del proyecto con un nombre dnico. Un objeto de
configuraci6n tiene un nombre y unos atributos y estri
ccconectado~a otros objetos mediante relaciones. De acuer-
do con la Figura 9.2,los objelos de configuraci6n, Espe-
Aseglirese que lo bose de dotos del proyecto se montiene
cificacion de Diseno, modelo de datos, componente N,
sobre un entorno controlado, centrolizodo.
codigo fuente y Especificacion de Prueba, esthn detini-
La progresi6n de acontecimientos que conducen a un dos por separado. Sin embargo, cada objeto estli relacio-
linea base esth tambiin ilustrada en la Figura 9.1. Las nado con otros como muestran las flechas. Una flecha
lareas de la ingenieria del software producen uno o mris curvada representa una relacibn de composicih. Es decir,
ECSs. Una vez que un ECS se ha revisado y aprobado, modelo de datos y componente N son parte del objeto
se coloca en una hase ck dotes del pr-oycro (tambiCn Especificaci6n de DiseAo. Una flecha recta con dos pun-
denonlinada bibliorecn d d pi-oyecro o depbsiro dc sojl- tas representa una interrelaci6n. Si se lleva a crtbo un cam-
ware).Cuando un miembro del equipo de ingenieria del bio sobre el objeto c6digo fuente, las interrelaciones
software quiere hacer moditicaciones en un ECS de linea permiten a1 ingeniero de software determinar quC otros
base, se copia de la base de datos del proyecto a un Area objetos (y ECSs) pueden verse afectados'.
de trabajo privada del ingeniero. Sin embargo, este ECS
extraido puede modificarse s61o si se siguen 10s contro-
les GCS (tratados mris adelante en este capitulo). Las
flechas punteadas de la Figura 9.1 muestran el camino
de modificaci6n de una linea base ECS.
modificada
9i4 Elemenlos de conhguration del software.
* 2
/
Base de datos del proyecto
v aprobada 1I
Tareas
d e ingenieria
del software - A
.
Revisiones
tknicas
formales
w r""
-I /
extraida \
controles
GCS >*
1
L~NEASBASE:
Especificacion del sistema Description de la intetfaz
Requisitos del software Descripcidn del algoritmo
Especificaciones de disetio PDL
Codigo fuente
Planes1Procedimientosl
Datos de prueba
Sistema de funcionamiento
La gesti6n de configuraci6n del software es un elemento iC6m0 identifica y gestiona una organizaci6n las
importante de garantia de calidad del software. Su res- diferentes versiones existentes de un programa (y su
ponsabilidad principal es el control de cambios. Sin documentacibn) de forma que se puedan introducir
embargo, la GCS tambiCn es responsable de la identi- cambios eficientemente?
ficaci6n de ECSs individuales y de las distintas versio-
nes del software, de las auditorias de la configuraci6n iC6m0 controla la organizaci6n 10s cambios antes
del software para asegurar que se desarrollan-adecua- y despuCs de que el software sea distribuido a1
damente y de la generaci6n de informes sobre todos 10s cliente?
cambios realizados en la configuraci6n. LQuiCn tiene la responsabilidad de aprobar y de asig-
nar prioridades a 10s cambios?
iC6m0 podemos garantizar que 10s cambios se han
llevado a cab0 adecuadamente?
10s paginos omorillos de gestion de configurocibn
contienen el listodo mas complejo de los recursos de GCS ~ Q u Cmecanismo se usa para avisar a otros de 10s
en lo web. Poro mbs informocibn, consultor: cambios realizados?
www.ts.tolorado.edu/users/andre/
configuration-management.html
Estas cuestiones nos llevan a la definici6n de cinco
tareas de GCS: ldentijicacibn, control de versiones, con-
Cualquier estudio de la GCS plantea una serie de pre- trol de cambios, auditorias de configuracibn y genera-
guntas complejas: cibn de informes.
mtidades
componentes)
En este contexto, el terrnino ((cornponente. se refiere a todos 10s Aunque muchas de las peticiones de carnbio se reciben durante la
objetos compuestos y objetos basicos de un ESC de linea base. Por fase de mantenimiento, en este estudio tornamos un punto de vista
ejemplo, un componente de (lentrada))puede estar constituido por mas amplio. Una peticion de carnbio puede aparecer en cualquier
seis componentes de sottware distintos, cada uno responsable de rnomento durante el proceso del sottware.
una subfuncion de entrada.
C A P ~ T U L O9 G E S T I ~ NDE LA C O N F I G U R A C I ~ NDEL SOFTWARE
como un informe de cambios a la autoridad de control de y de auditoria. El objeto a cambiar es <<dadode baja>>de
cambios (ACC)-una persona o grupo que toma la deci- la base de datos del proyecto; se realiza el cambio y se apli-
si6n final del estado y la prioridad del c a m b i e . Para cada can las adecuadas actividades de SQA. Luego, el objeto
carnbio aprobado se genera una orden de carnbio de inge- es <<dado de altan en la base de datos y se usan 10s meca-
nieria (OCI).La OCI describe el cambio a realizar, las res- nismos de control de versiones apropiados (Secci6n 9.4)
tricciones que se deben respetar y 10s criterios de revisi6n para crear la siguiente versi6n del software.
Objeto de configuracion
(version de linea
Base de datos
\
Objeto de configuracion Bloqueo Objeto de configuracion
sistencia con otros ECSs, las omisiones o 10s posibles iSe ha seguido el proceso del software y se han apli-
efectos secundarios. Se debe llevar a cab0 una revisi6n cad0 adecuadamente 10s estindares de ingenieria del
tkcnica formal para cualquier cambio que no sea trivial. software?
Una auditoria de configuracibn del software com- iSe han ccresaltadou 10s cambios en el ECS? iSe han
plementa la revision tCcnica formal a1 cornprobar carac- especificado la fecha del cambio y el autor? ~Reflejan
teristicas que generalmente no tiene en cuenta la 10s cambios 10s atributos del objeto de configuracibn?
revisi6n. La auditoria se plantea y responde las siguien-
tes preguntas: iSe han seguido procedimientos de GCS para sefia-
lar el cambio, registrarlo y divulgarlo?
L Cuales son las principales
preguntas que hacemos en iSe han actualizado adecuadamente todos 10s ECSs
una auditoria de configuraciin? relacionados?
En algunos casos, las preguntas de auditoria se inclu-
1. iSe ha hecho el cambio especificado en la OCI? iSe yen en la revisi6n tkcnica formal. Sin embargo, cuando
han incorporado modificaciones adicionales? la GCS es una actividad formal, la auditoria de la GCS
2. iSe ha llevado a cab0 una revisi6n tkcnica formal se lleva a cab0 independientemente por el grupo de
para evaluar la correcci6n tkcnica? garantia de calidad.
La gesti6n de configuraci6n del software es una activi- La configuraci6n del software esti compuesta por un
dad de protecci6n que se aplica a lo largo de todo el pro- conjunto de objetos interrelacionados, tambiCn deno-
ceso del software. La GCS identifica, controla, audita e minados elementos de configuracidn del software, que
informa de las modificaciones que invariablemente se se producen como resultado de alguna actividad de inge-
dan a1 desarrollar el software una vez que ha sido dis-. nieria del software. Ademis de 10s documentos, 10s pro-
tribuido a 10s clientes. Cualquier informaci6n produci- gramas y 10s datos, tambiCn se puede poner bajo control
da como parte de la ingenieria del software se convierte de configuraci6n el entomo de desarrollo utilizado para
en parte de una configuraci6n del software. La confi- crear el software.
guraci6n se organiza de tal forma que sea posible un Una vez que se ha desarrollado y revisado un obje-
control organizado de 10s cambios. to de configuraci6n, se convierte en una linea base. Los
INGENIERfA DEL SOFTWARE. UN ENFOQUE P R A C T I C O
cambios sobre un objeto de linea base conducen a la da que se realizan cambios en 10s objetos de la con-
creacion de una nueva version del objeto. La evolution figuration. El proceso de control de cambios comien-
de un programa se puede seguir examinando el histo- za con una petici6n de cambio, lleva a una decision
rial de las revisiones de todos 10s objetos de su confi- de proseguir o no con el cambio y culmina con una
guracion. Los objetos basicos y 10s compuestos forman actualizaci6n controlada del ECS que se ha de
un asociacion de objetos que refleja las variantes y las cambiar.
versiones creadas. El control de versiones es un con- La auditoria de configuraci6n es una actividad de
junto de procedimientos y herramientas que se usan para SQA que ayuda a asegurar que se mantiene la calidad
gestionar el uso de 10s objetos. durante la realization de 10s cambios. Los informes de
El control de cambios es una actividad procedi- estado proporcionan informaci61-1sobre cada cambio a
mental que asegura la calidad y la consistencia a medi- aquellos que tienen que estar informados.
[ADA891 Adams, E., M. Honda y T. Miller, <<ObjectMana- [IEE94] Software Engineering Standards, edici6n de 1994,
gement in a CASE Environment,,, Proc. 11 th Intl. Conf IEEE Computer Society, 1994.
Software Engineering, IEEE, Pittsburg, PA, Mayo 1989,
[LIE891 Lie, A. et al., ((Change Oriented Versioning in a Soft-
pp. 154-163. ware Engineeering Database,,, Proc. 2nd Intl. Workshop
[BAC98] Bach, J., <<TheHighs and Lows of Change Con- on Software Configuration Management, ACM, Prince-
trol,,, Computer, vol. 3 1, n.", Agosto 1998. pp. 113-115. ton, NJ, Octubre 1989, pp. 56-65
{BER80] Bersoff, E.H., V.D. Henderson y S. G. Siegel, Soft- [NAR87] Narayanaswamy, K., y W. Scacchi, <<Maintatning
ware Configuration Management, Prentice-Hall, 1980. Configurations of Evolving Software Systems>>,IEEE
[BRY80] Bryan, W., C. Chadboume, y S. Siegel, SoMare Con- Trans. Software Engineering, vol. SE-13, n." 3, Marzo
figuration Management. IEEE Computer Society Press, 1980. 1987, pp. 324-334.
[CH089] Choi, S. C.. y W. Scacchi, <<Assuringthe Correct- [RE1891 Reichenberger, C., <<OrthogonalVersion Manage-
ness of a Configured Software Description>>,Proc. 2nd ment>>,Proc. 2nd lntl. Workshop on Software Confrgura-
Intl. Workshop on Software Conftguration Management, tion Management, ACM, Princeton, NJ, Octubre 1989,
ACM, Princeton, NJ, Octubre 1989, pp. 66-75. pp. 137-140.
[CLE89] Clemm, G. M., <<ReplacingVersion Control with [ROC751 Rochkind, M., <<TheSource Code Control System,,,
Job Control>>,
Proc. 2nd lntl. Workshop on Software Con- IEEE Trans.Sofi7at-eEngineering, vol. SE-I, n." 4, Diciem-
figuration Management, ACM, Princeton, NJ, Octubre bre 1975, pp. 364-370.
1989, pp. 162-169. [TAY85] Taylor, B., <<ADatabase Approach to Configuration
[GUS891 Gustavsson, A., <<Maintainingthe Evaluation of Management for Large Projects,,, Proc. Conf. Software
Software Objects in an Integrated Environment)), Proc. Maintenance-1985, IEEE, Noviembre 1985, pp. 15-23.
2nd Intl. Workshop on Software Configuration Manage- [TIC821 Tichy, W. F., <<Design,Implementation and Evalua-
ment, ACM, Princeton, NJ, Octubre 1989, pp. 1 14-117. tion of a Revision Control System,,, Proc. 6IhIntl. Conf.
[HAR89] Harter, R., <<ConfigurationManagement,,, HP Pro- Sofijare Engineering, IEEE, Tokyo, Septiembre 1982, pp.
fessional, vol. 3, n.", Junio 1989. 58-67.
9.1. iPor quC es cierta la primera ley de la ingenieria de sis- mo programa? iSe manejaria de forma diferente el c6digo
temas? iC6m0 afecta a nuestra percepci6n de 10s paradigmas fuente que la documentaci6n? iC6m0 se evitaria que dos pro-
de la ingenieria del software? gramadores hicieran cambios diferentes sobre el mismo ECS
a1 mismo tiempo?
9.2. Exponga las razones de la existencia de lineas base con
sus propias
- - -palabras. 9.5. Investigue un poco sobre bases de datos orientadas a
objetos y escriba unarticulo que describa c6mo se podrian
9.3. Asuma que es el gestor de un pequeiio proyecto. ~ Q u C
usar en el context0 de la GCS.
lineas base definiria para el proyecto y cdmo las controlaria?
- ~
9.8. Las relaciones ccparte-de>>e ccinterrelacionadon repre- 9.1O.Utilizando la Figura 9.5 como guia, desarrolle un
sentan relaciones sencillas entre 10s objetos de configuracion. esquema de trabajo miis detallado a6n para el control de cam-
Describa cinco relaciones adicionales que pudieran ser utiles bios. Describa el papel de la ACC y sugiera formatos para la
en el context0 de la base de datos del proyecto. peticidn de cambio, el informe de cambios e IEC.
9.9. Investigue sobre una herramienta de GCS existente y 9.11. Desarrolle una lista de comprobaciones que se pueda
describa c6mo implementa 10s mecanismos de control de ver- utilizar en las auditorias de configuracion.
siones. Alternativamente, lea dos o tres de 10s articulos a 10s
que se hace referencia en este capitulo e investigue en las 9.1 2.iCuiil es la diferencia entre una auditoria de GCS y una
estructuras de datos y 10s mecanismos que se usan para el con- revision tkcnica formal? iSe pueden juntar sus funciones en
trol de versiones. una sola revision? iCuiiles son 10s pros y 10s contras?
Uno de 10s pocos libros escritos sobre la GCS en 10s ultimo~ de las principales actividades de GC). Rawlings (SCM for
aiios lo realizaron Brown et al. (AntiPatterns and Patterns in Network Development Environments, McGraw-Hill, 1994)
Software Configuration Management. Wiley, 1989). es el primer libro de GCS en tratar el asunto con un Cnfasis
Los autores tratan las cosas que no hay que hacer (anti- especifico en el desarrollo de software en un entorno de red.
patrones) cuando se implementa un proceso de GCS y enton- Whitgift (Methods and Tools for Software Configuration
ces consideran sus remedios. Management, Wiley, 1991) contiene una razonable cobertu-
Lyon(Practica1 CM: Best Configuration Management ra de todos 10s temas importantes de GCS, pero se distingue
Practices for the 21StCentury, Raven Publishing, 1999) y por su estudio del diccionario de datos y tratamiento de aspec-
Mikkelsen y Pherigo (Practical Soft~,areConfiguration tos de entomos CASE. Arnold y Bohner (Software Change
Management: The Latenight Developer's Handbook, Allyn & Impact Analysis, IEEE Computer Society Press, 1996) han
Bacon, 1997) proporcionan tutoriales practicos importantes editado una antologia que estudia como analizar el impact0
de GCS. Ben-Menachem (Software Configuration Manage- del cambio dentro de sistemas complejos basados en soft-
ment Guidebook, McGraw-Hill, 1994), Vacca (Implementing ware.
a Successful. Configuration. Change. Management. Program, Puesto que la GCS identifica y controla documentos de
I S . Management Group, 1993), y Ayer y Patrinnostro (Soft- ingenieria del software, 10s libros de Nagle (Handbook for
ware Configuration Management, McGrawHill, 1992) pre- Preparing Engineering Documents: From Concept to Com-
sentan correctas visiones para aquellos que todavia no se han pletion, IEEE, 1996), Watts (Engineering Documentation
introducido en la materia. Berlack (Software Configuration Control Handbook: Configuration Management for Industry,
Management, Wiley, 1992, presenta una estudio iitil de con- Noyes Publication, 1993). Ayer y Patrinnostro (Documenting
ceptos de la GCS, haciendo incapik en la importancia del dic- the Softcl!are Process, McGraw-Hill, 1992) proporciona un
cionario de datos (repository) y de las herramientas en la complemento con textos mas centrados en la GCS. La edi-
gestion del cambio. Babich [BAB86] es un tratado abrevia- ci6n de Marzo de 1999 de Crosstalk contiene varios articu-
do, aunque eficaz, de temas practicos sobre la gesti6n de con- 10s utiles de la GCS.
figuration del software. En Internet estiin disponibles una gran variedad de fuen-
Buckley (Implementing Configuration Management, IEEE tes de information relacionadas con temas de gesti6n y de
Computer Society Press, 1993) estudia enfoques de gestion software. Se puede encontrar una lista actualizada con refe-
de configuracionpara todos 10s elementos de un sistema (hard- rencias a sitios (pkginas) web que son relevantes para el Soft-
ware, software y firmware con unos detallados tratamientos ware en http://www.pressman5.com.
PARTE
MSTODOS CONVENCIONALES
DEL SOFTWARE
E
N esta parte de Ingenieria del Soylware: Un Enfoque Practico considera-
mos 10sconceptos tecnicos, metodos y mediciones que son aplicables
a! analisis, disefio y pruebas del software. En 10s capitulos siguientes,
aprenderas las respuestas a las siguientes cuestiones:
cQu6 en Antes dle que el software s e pue- es el sistema, y los drrboles son l w ele- LCo&le s el producto obtenido? Se debe
d a construir, el -sistemaa e n el que mentos tecno16gicos (incluido el soft- obtener una correcta representaci6n
residirdr s e i e b e comprender. Para ware) que son requeridos para realizar del sistema como consecuencia de la
lograrla se d,eben definir 10s objetivos el sistema. El empeiio en construir ele- ingenieria de sislemas. Se puede rea-
generales de'I sistema; se debe identi- mentos tecnol6gicos, antes de com- lizar a traves d e un prototipo, una
ficar el papel del hardware, software, prender el sistema, lleva a cometer especificaci6n o,incluso, un modelo
personas, bcxses de datos, procedi- errores que desagradar6n a 10s clientes. simb6lic0, debiendo comunicar la
mientos y otnw elementos del sistema; operativa. l a iuncionalidad y l a s
~ C u 6 l e eon
s 10s pasos? Los objetivos y
y 10s requer imientos operacionales 10s requisitos operacionales de mayor caracteristicas de comportamiento del
deben ser idcmtificados; analizados, sistema que se va a construir e incor-
detalle son identificados gracias a la
;.
especificados modelizados, validados
informacibn facllitada por el cliente. porarlo dentro d e la arquirectura del
y gestionadoB. Estas actividades son sistema.
Los requisitos son analizados p r o
la base de la ingenieria de sistemas.
valorar su claridad, complelitud y ~ C d m opuedo estar neguro d e que lo he
GQulbn 10 hace? IUn ingenieto d e sistemas consistencia. Una especificacih, hecho correctamente? El producto obte-
trabaja para :omprender 10s requisitos incorporada a un modelo del sistema. nido, a travbs d e la aplicacion d e la
del sistema e n colaboraci6n con el s e crea y valida posteriormente por ingenieria de sistemas. debe ser revi-
cliente, 10s fuiluros usuarios y otras par- 10sclientes y l a s partes interesadas. sado para determinar su claridad, cam-
tes interesad as. Finalmente, 10s requisitos del siste- pletitud y consistencia. Es importante
iPor q d er i m prtante? Hay un viejo dicho ma son gestionados para asegurar que 10scambios en 10s requisitos d e un
que dice que nlos drrboles no dejan ver q u e 10s cumbios s e controlan ade- sistema Sean gestionados ulilizando
el bosque*.EnL este mntexto, el d x s q e * cuadamente. mbtodos solidos d e GCS (Capitulo 9).
Es decir, tanto la ingenieria de procesos de negocio' como la de producto trabajan para asignar un
papel a1 software de computadora y para establecer 10s enlaces que unen a1 software con otros ele-
mentos de un sistema basado en computadora.
En este capitulo, profundizamos en las necesidades de gesti6n y en las actividades especificas del
proceso que permitan asegurar una organizaci6n del software que consiga resultados satisfactorios en
el tiernpo fijado y por el mCtodo definido.
' En realidad, el terrnino ingenieria desistcmas se ernplea a rnenudo en este contexto. Sin embargo, en cste libro, el
terrnino .ingenieria de sisternasn e s generic0 y s e usa para abarcar a la ingenieria d e proceso de negocio y a la inge-
nieria de producto.
lNGENIERfA DEL SOFTWARE. UN ENFOQUE PRACTICO
La palabra sistemu es posiblemente el tCrmino mhs usa- ciones especificas, en un conjunto de seiiales de control
do y abusado del ltxico tkcnico. Hablamos de sistemas que provocan alguna acci6n fisica especifica. Tanto la
politicos y de sistemas educativos, de sistemas de avia- creaci6n de un sistema de informaci6n para asesorar a un
ci6n y de sistemas de fabricacibn, de sistemas banca- departamento de marketing, como el software de control
rios y de sistemas de locomoci6n. La palabra no nos para el robot, requieren de la ingenieria de sistemas.
dice gran cosa. Usarnos el adjetivo para describir el sis- Una caracteristica complicada de 10s sistemas basa-
tema y para entender el contexto en que se emplea. El dos en computadora es que 10s elementos que compo-
diccionario Webster define sistema como: nen un sistema pueden tambiCn representar un
I. un conjunto o disposici6n de cosas relacionadas de rnane- macroelemento de un sistema atin mhs grande. El macro-
ra que forman una unidad o un todo orghico; 2. un conjunto elemento es un sistema basado en computadora que es
de hechos, principios, reglas, etc., clasificadas y dispuestas de parte de un sistema miis grande basado en computado-
rnanera ordenada rnostrando un plan logico de union de las par- ra. Por ejemplo, consideremos un ccsistema de automa-
tes; 3. un rnetodo o plan de clasificaci6n o disposicion; 4. una tizacion de una fhbrica>>que es esencialmente una
manera establecida de hacer algo; mCtodo; procedimiento ...
jerarquia de sistemas. En el nivel inferior de la jerar-
Se proporcionan cinco definiciones mas en el dic- quia tenemos una mhquina de control numCrico, robots
cionario, pero no se sugiere un sinonimo preciso. Sis- y dispositivos de entrada de informaci6n. Cada uno es
tema es una palabra especial. un sistema basado en computadora por derecho propio.
Tomando prestada la definition del diccionario Webs- Los elementos de la maquina de control numCrico inclu-
ter, definimos un sistema busado en computudora como: yen hardware electrhico y electromechnico (por ejem-
Un conjunto o disposicion de elernentos que estin organi- plo, procesador y memoria, motores, sensores); software
zados para realizar un objetivo predefinido procesando infor- (para comunicaciones, control de la mhquina e interpo-
rnacion. lacion); personas (el operador de la mhquina); una base
El objetivo puede ser soportar alguna funci6n de de datos (el programa CN almacenado); documentacion
negocio o desarrollar un producto que pueda venderse y procedimientos. Se podria aplicar una descomposi-
para generar beneficios. Para conseguir el objetivo, un cion similar a 10s dispositivos de entrada de informa-
sistema basado en computadora hace uso de varios ele- ci6n y a1 robot. Todos son sistemas basados en
mentos del sistema: computadora.
Software. Programas de cornputadora, estructuras de datos
y su documentacion que sirven para hacer efectivo el metodo
16gic0, procedimiento o control requerido.
Hardware. Dispositivos electr6nicos que proporcionan
capacidad de calculo, dispositivos de interconexion (por 10s sistemos tomplejos son actuolmentd uno jerorquio
ejemplo, conmutadores de red, dispositivos de telecornuni- de macro elementos que son sistemos en si mismos.
caci6n) y dispositivos electrornecanicos (por ejemplo, sen-
sores, rnotores, bornbas) que proporcionan una funci6n En el siguiente nivel de la jerarquia, se define una
extema, del mundo real. cClula de fabricaci6n. La cClula de fabricaci6n es un sis-
Personas. Usuarios y operadores del hardware y software. tema basado en computadora que puede tener elemen-
tos propios (por ejemplo, computadoras, fijaciones
Documentacion. Manuales, formularios y otra informa-
cidn descriptiva que plasma el empleo y/o funcionarniento
mechicas) y tambiCn integra 10s macroelementos que
del sisterna. hemos denominado mhquina de control numCrico, robot
y dispositivo de entrada de informaci6n.
Procedimientos. Los pasos que definen el ernpleo especi-
fico de cada elemento del sisterna o el contexto procedimental Para resumir, la cClula de fabricaci6n y sus macroe-
en que reside el sisterna. lementos esthn compuestos de elementos del sistema
con las etiquetas genCricas: software, hardware, perso-
nas, base de datos, procedimientos y documentaci6n.
En algunos casos, 10s macroelementos pueden compartir
No e s l otraido por hoblor de un plonteomiento un elemento genirico. Por ejemplo, el robot y la mhqui-
((centrodo en el s o b r e ) ) . Comience por consideror na CN podrian ser manejadgs por el mismo operador
todos 10s elementos de un sistemo ontes de concentrorse (el elemento personas). En otros casos, 10s elementos
en el sofhvore. genCricos son exclusivos de un sistema.
El papel del ingeniero de sistemas es definir 10s ele-
Los elementos se combinan de varias maneras para mentos de un sistema especifico basado en computa-
transformar la informaci6n.Por ejemplo, un departamento dora en el contexto de la jerarquia global de sistemas
de marketing transforma la inforrnacion bruta de ventas (macroelementos).
en un perfil del tipico comprador del producto; un robot En las siguientes secciones, examinarnos las tareas que
transforma un archivo de ordenes, que contiene instruc- constituyen la ingenieria de sistemas de computadoras.
CAPfTULO 10 I N G E N ~ E R ~DAE S I S T E M A S
Dorninio
de negocio Vista global
o de producto
Dorninio d e interes
Elernento
del sisterna
Independientemente del dominio de enfoque, la ingenie- definan 10s procesos que satisfagan las necesidades
ria de sistemas comprende una colecci6n de mCtodos para de la vision en consideraci6n;
navegar de arriba abajo y de abajo arriba en la jerarquia representen el comportamiento de 10s procesos y 10s
ilustrada en la Figura 10.1. El proceso de la ingenieria de supuestos en 10s que se basa el comportamiento;
sistemas empieza normalmente con una ccvisi6n global,,. definan explicitamente las entradas exbgenas3y end6-
Es decir, se exarnina el dominio entero del negocio o del genas de information a1 modelo;
producto para asegurarse de que se puede establecer el representen todos las uniones (incluyendo las sali-
contexto de negocio o tecnol6gico apropiado. La visi6n das) que permitan a1 ingeniero entender mejor la
global se refina para enfocarse totalmente en un dominio visi6n.
de inter& especifico. Dentro de un dominio especifico, se
analiza la necesidad de elementos del sistema (por ejem-
plo, informaci6n, software, hardware, personas). Final-
mente, se inicia el analisis, disefio y construcci6n del
elemento del sistema deseado. En la parte alta de la jerar-
quia se establece un contexto muy amplio y en la parte 10sbuenos sistemas de ingenierio comienzan por
baja se llevan a cabo actividades t6cnicas detalladas, rea- clarificar el comportamiento de contexto -lo vision
lizadas por la disciplina de ingenieria correspondiente (por globoC y progresivomente se von estrechando hasto
ejemplo, ingenieria hardware o software12. el nivel de detolle necesario.
10.2.1. Modelado del sistema Para construir un modelo del sistema, el ingeniero
La ingenieria de sistemas de computadora es un proce- deberia considerar algunas restricciones:
so de modelado. Tanto si el punto de mira esta en la 1. Supuestos que reducen el numero de permutaciones
visi6n global o en la visi6n detallada, el ingeniero crea y variaciones posibles, permitiendo asi a1 modelo
modelos que [MOT92]: reflejar el problema de manera razonable. Por ejem-
' En algunas situaciones, sin embargo, 10s ingenieros del sistema Las entradas exogenas unen un elemento de una vision dada con
deben considerar primero 10s elementos individuales del sistema y/o otros elementos al mismo o a otros niveles; las entradas endogenas
10s requisitos detallados. Empleando este enfoque, 10s subsistemas unen componentes individuales de un elemento en una vision par-
se escriben de abajo a arriba considerando primero 10scomponen- ticular.
tes de detalle del subsistema.
plo, considere un product0 de representacion en tres cliente es a menudo tomada en cuenta hasta el punto
dimensiones usado por la industria de entretenimiento de realizar su enfoque preferido.
para crear animaciones realistas. Un dominio del pro- El modelo de sistema resultante (desde cualquier
ducto permite la representacion de formas humanas vision) puede reclamar una soluci6n completamente
en 3D. Las entradas a este dominio comprenden la automatics, semiautomatics o un enfoque manual. De
habilidad de introducir movimiento de un ccactor,, hecho, es posible a menudo caracterizar modelos de
humano vivo, desde video o creando modelos grhfi- cada tip0 que sirven de soluciones alternativas para el
cos. El ingeniero del sistema hace ciertos supuestos problema que tenemos entre manos. En esencia, el
sobre el rango de movimientos humanos permitidos ingeniero del sistema modifica simplemente la influen-
(por ejemplo, las piernas no pueden enrollarse alre- cia relativa de 10s diferentes elementos del sistema
dedor del tronco) de manera que puede limitarse el (personas, hardware, software) para crear modelos de
proceso y el rango de entradas. cada tipo.
Simplificaciones que permiten crear el modelo a
tiempo. Para ilustrarlo, considere una compafiia de 10.2.2. Simulacidn del sistema
productos de oficina que vende y suministra una
amplia variedad de fotocopiadoras, faxes y equipos En 10s aiios 60, R.M. Graham [GRA69] hizo un comen-
similares. El ingeniero del sistema esta modelando tario critic0 sobre la manera en que se construian 10s sis-
las necesidades de la organizacion suministradora y temas basados en computadora: ccConstruimos sistemas
esta trabajando para entender el flujo de informaci6n igual que 10s hermanos Wright construian aviones: cons-
que engendra una orden de suministro. Aunque una truimos todo el sistema, lo empujamos barranco abajo,
orden de suministro puede generarse desde muchos le dejamos que se estrelle y empezamos de nuevo.>>De
origenes, el ingeniero categoriza solamente dos fuen- hecho, para a1 menos un tip0 de sistema -el sistema
tes: demanda interna o petici6n externa. Esto per- reactive- lo continuamos haciendo hoy en dia.
mite una particion simplificada de entradas necesaria Muchos sistemas basados en computadora interac-
para generar una orden de trabajo. cionan con el mundo real de forma reactiva. Es decir,
10s acontecimientos del mundo real son vigilados por
Limitaciones que ayudan a delimitar el sistema. Por
el hardware y el software que componen el sistema, y
ejemplo, se esta modelando un sistema de avionica
basandose en esos sucesos, el sistema aplica su control
para un avion de proxima generacion. Como el avion
sobre las maquinas, procesos e incluso las personas que
tendra un diseiio de dos motores, todos 10s dominios
motivan 10s acontecimientos. Los sistemas de tiempo
de supervision de la propulsion se modelaran para
real y sistemas empotrados pertenecen a menudo a la
albergar un maximo de dos motores y sus sistemas
categoria de sistemas reactivos.
redundantes asociados.
Si el sistema falla, podrian ocurrir pCrdidas econ6- ficaci6n del sistema. En el Capitulo 31 se estudian
micas o humanas significativas. Por este motivo, el enfo- brevemente 10s detalles tCcnicos y tCcnicas especia-
que descrito por Graham es penoso y peligroso. les de modelado que se emplean para llevar a cab0
Hoy en dia se utilizan herramientas software para estas pruebas.
el modelado y simulacion de sistemas para ayudar a
eliminar sorpresas cuando se construyen sistemas
reactivos basados en computadora. Estas herramien-
tas se aplican durante el proceso de ingenieria de sis-
temas, mientras se estan especificando las necesidades
del hardware, software, bases de datos y de personas.
Las herramientas de modelado y simulacion capaci- Herrornientos CASE
tan a1 ingeniero de sistemas para probar una especi- Modelodo y Sirnuloci6n
El objetivo de la ingenieria de proceso de negocio (IPN) Se deben analizar y diseiiar tres arquitecturas dife-
es definir arquitecturas que permitan a las empresas rentes dentro del context0 de objetivos y metas de
emplear la infomacion eficazmente. Michael Guttman negocio:
[GUT991 describe el desafio cuando dice: arquitectura de datos
El actual entomo computacional consiste en un poder de arquitectura de aplicaciones
computacion distribuido en toda la empresa con multiples
unidades diferentes de procesamiento, dividido y configura- infraestructura de la tecnologia
do por una amplia variedad de tareas. Nuevos planteamien-
tos como la computaci6n cliente-servidor, procesamiento
distribuido, el trabajo en red (por nombrar algunos de 10s ttr- 10s obiptos de dotos son trotodos en detolle
minos mas sobreusados) permiten gestionar las demandas
en el Copitulo 12.
aportando mayor funcionalidad y flexibilidad.
Sin embargo, el coste de estos cambios es ampliamente La arquitectura de datos proporciona una estructu-
discutido por la organizaciones de TI (Tecnologiasde la Infor-
n~acidn)que deben soportar esta poliglota configuraci6n. ra para las necesidades de infomacion de un negocio o
Hoy, cada organizaci6n de TI debe favorecer la integration de una funci6n de negocio. Los ladrillos de la arquitq-
de sus sistemas. Debe diseiiar, implementar y soportar su tura son 10s objetos de datos que emplea la empresa. ~n
propia configuraci6n de recursos de computacion heterogC- objeto de datos contiene un conjunto de atributos que
nea, distribuidos ldgica y geogrificamente por toda la empre- definen aspectos, cualidades, caracteristicas o descrip-
sa, conectindola a travts de un esquema apropiado para el tor de 10s datos que han sido descritos. Por ejemplo, un
trabajo en red.
ingeniero de la infomacion puede definir el objeto de
Por otra parte, esta configuracion debe ser diseiiada para
datos: cliente. Para describir mas en detalle a1 cliente,
cambios continuos, desigualmente localizados en la empre-
sa, debido a cambios en requisitos del negocio y en las pro- se definen 10s siguientes atributos:
pias tecnologias. Estos diversos e incrementales cambios Objeto: Clienre
deben ser coordinados a traves del entorno distribuido, con- Atributos:
sistente en hardware y software suministrado por decenas,
cuando no cientos, de vendedores. Por supuesto, esperamos nombre
que estos cambios 10s incorporemos sin ruptura con la ope- nomhre de la compaiiia
rativa habitual permitiendo ademas ampliar la operativa.
clasijicacidn del trabajo y autoridad en compra
Cuando hablamos de una vision general de las nece- direccidn comercia1 e informacidn de conracto
sidades de tecnologia de infomaci6n de una compaiiia,
existen pequeiias incertidumbres que son planteadas a compra(s) anteriores
la ingenieria de sistemas. La ingenieria de proceso de
negocio es un acercamiento para crear un plan gene- fecha de iltimo contacto
ral para implementar la arquitectura de computacion situacidn del contacto
[SPE93]. Una vez definido el conjunto de datos, se identifican
sus relaciones. Una relacion indica como 10s objetos
e s t h conectados. Como ejemplo, considerar 10s obje-
tos: cliente y producto A. Los dos objetos pueden conec-
Tres orquitecturos diferentes son desorrollodos duronte tarse por la relaci6n compra; es decir, un cliente compra
lo IPN: lo orquitecturo de dotos, la arquitectura el producto A o el producto A es comprado por un clien-
de aplicocion y la infraestructura tecnologica. te. Los objetos de datos (pueden existir cientos o miles
INGENIERIA DEL SOFTWARE. UN ENFOQUE P R A C T l C O
para una actividad de negocio importante) fluyen entre dad de la empresa. La PEI define 10s objetos de datos
las funciones de negocio, estAn organizados dentro de visibles a nivel empresa, sus relaciones y c6mo fluyen
una base de datos y se transforman para proveer infor- entre 10s dominios del negocio [MAR90].
maci6n que sirva a las necesidades del negocio.
La arquitecrura de aplicacidn comprende aquellos
elementos de un sistema que transforman objetos den-
lomo ingeniero del sohare, no debes profundizar en PEI
tro de la arquitectura de datos por alg6n proposito del
ni en el A N . No obstante, si no esW dm que estas
negocio. En el contexto de este libro, consideramos
actividades hayon sido realizadas, informe o su superior
normalmente que la arquitectura de aplicacion es el sis- que el riesgo del proyecto es muy alto.
tema de programas (software) que realiza esta trans-
formation. Sin embargo, en un contexto mhs amplio, La vista del dominio se trata con una actividad IPN
la arquitectura de aplicacion podna incorporar el papel denominada analisis del area de negocio (AAN).Hares
de las personas (por ejemplo, cliente/servidor) que ha [HAR93] describe AAN de la siguiente manera:
sido disefiado para implementar estas tecnologias. El AAN se ocupa de identificaren detalle la informaci6n (en
la forma de tipos de entidad [objeto datos]) y 10s requisitos de
las funciones (en la forma de procesos) de areas de negocio
Eldetolle sobre lo orquitecturo del software seleccionadas [dominios] identificadas durante el PEI, averi-
es presentodo en el Capitulo 14. guando sus interacciones (en forma de matrices). Se ocupa sola-
rnente de especificar qut se requiere en un Area de negocio.
Cada uno de 10s productos obtenidos debe ser revi- El ingeniero del sistema debe resolver estos conflic-
sad0 por las personas que hayan participado en la obten- tos a traves de un proceso de negociaci6n. Los clientes,
ci6n de sus requisitos. usuarios y el resto de intervinientes deberan clasificar
sus requisitos y discutir 10s posibles conflictos segun su
10.5.2. Analisis y negociaci6n de requisitos prioridad. Los riesgos asociados con cada requisito s e r h
identificados y analizados (ver Capitulo 6). Se efectuan
Una vez recopilados 10s requisitos, el producto obteni- ccestimacionesn del esfuerzo de desarrollo que se utili-
do configura la base del ancilisis de requisitos. Los requi- zan para valorar el impact0 de cada requisito en el cos-
sitos se agrupan por categorias y se organizan en te del proyecto y en el plazo de entrega. Utilizando un
subconjuntos, se estudia cada requisito en relaci6n con procedimiento iterativo, se iran eliminando requisitos,
el resto, se examinan 10s requisitos en su consistencia, se iran combinando y/o modificando para conseguir
completitud y ambiguedad, y se clasifican en base a las satisfacer 10s objetivos planteados.
necesidades de 10s clientes/usuarios.
Requisitos
Codigo Comandos
de barras Sisterna de conlrol MecanisrnO
de codigo - *
de clasificacion
I
de clasificaci6n
de cinta
transportadora MOS form ateados del informe
Mantenirniento L a Estructura
transportadora lndicador de la
y autocornprobacion Datos de
velocidad de la cinta diagnostic0
*-
-
principal
4
9
Subsistema Nlimero
lector decodificador de piezas Subsistema
de codigo del codigo decontrol - Controlador
de barras de barras de maniobras de maniobras
I
4
I Datos I I Posicion
del codigo del contenedo~ 0rdenes de maniobra
Codigo de barras
de barras --
Subsistema c
de acceso lnforrnes de SCCT
a la base de datos Subsistema -
de configuracion
Velocidad 4 Clave
Subsistema de informes
del sensor de la cinta I ---+ i
de adquisicion Clasificacion \
Controlador
de datos de registros de las
-1
-
Estado BCR cornunicaciones
con la computadora
Estado de maniobra central
Estado del sensol Subsistema
~nttada
de tacometro de diagnosticOs Estado de cornunicaciones configuracion
de impulsos de 10s datos
Estado del lector
del informe
de codigo de barras
lnterfaz de adquisicion
de datos lnterfaz de diagnostic0 lnterfaz de salida
Un sistema de alta tecnologia coniprende varios com- prende una planificicncicin cle In e.wicnre,qi'n d e la itlfor-
ponentes: hardware, software, personas, bases de datos, tnac.iciti (PEI), un uncjlisis del Area do t y q o c i o ( A A N ) y
documentaci6n y procedimientos. La ingenieria de sis- un analisis especifico de aplicaci6n que de hecho for-
temas ayuda a traducir las necesidades del cliente en un man parte de la ingenieria del software.
modelo de sistenia que utiliza uno o m i s de estos com- La ingenieria de productos es un enfoque de la inge-
ponentes. nieria de sistemas que empieza con el an;ilisis del sis-
La ingenieria de sistemas comienza tomando una tema. El ingeniero de sistemas identifica las necesidades
ccvision global>>.Se analiza el dominio de negocio o del cliente, determina la viabilidad econ6mica y tkcni-
product0 para establecer todos 10s requisitos basicos. ca, y asigna funciones y rendimientos a1 software, hard-
El enfoque s e estrecha entonces a una ccvisi6n d e ware, personas y bases de datos; 10s componente claves
dominie>>, donde cada uno de 10s elementos del sis- de la ingenieria.
terna se analiza individualmente. Cada elemento es La ingenieria del sistema demanda una intensa
asignado a uno o m8s componentes de ingenieria que comunicaci6n entre el cliente y el ingeniero del siste-
son estudiados por la disciplina de ingenieria corres- ma. Esto se realiza a travCs de un conjunto de activi-
pondiente. dades bajo la denominaci6n de ingenieria de requisitos
La ingenieria de procesos de negocio es un enfoque -identificaci6n, andisis y negociaci611,especificaci611,
de la ingenieria de sistemas que se usa para definir arqui- modelizaci6n, validaci6n y gesti6n-.
tecturds que permitan a un negocio utlizar la informa- Una vez que 10s requisitos hayan sido aislados, el
cioii eficazmente. La intenci6n de la ingenieria de niodelado del sistema puede ser realizado, y las repre-
procesos de negocio es crear minuciosas arquitecturas sentaciones de 10s subsistemas principales pueden ser
de datos, una arquitectura de aplicaci6n y una infraes- desarrolladas. La tarea de la ingenieria del sistema fina-
tructura tecnol6gica que satisfaga las necesidades de la liza con la elaboraci6n de una Especificicnc.idti del Si.src.-
estrategia de negocio y 10s objetivos de cada rirea de ma -un documento que sirve de base para las tareas de
negocio. La ingenieria de procesos de negocio com- ingenieria que se realizarin posteriormente-.
ICRI921 Christel, M.G., y K C . Kang, ctlssuesin Requirernents [MAR901 Martin, J., Itformution Engineering: Book I 1 -
Elicitation)),Software Engineering Institute, CMU/SEI- Plannitrg und Anulysrs, Prentice Hall, 1990.
92-TR- 12 7, September 1992. [MOT921 Motamarri, S., <<SystemsModelling and Descrip-
[GRA69] Graham, R.M., en Proceedings 1969 NATO Con- tion)), Softwut~eEngitreer.ing Notes, vol. 17, n." 2, Abril
fer.encv on Softwurc~Engineering, 1969. 1992, pp. 57-63.
[GUT991 Guttnian, M., ccArchitectural Requirements for a ISOM971 Sornerville, I., y P. Sawyer, Re~lrrirumentsEngitwe-
Changing Business World)),R~sc~urr.11 Briefs jrotn Cutter ring, Wiley, 1997
Con.\ortirwr (un onlitre service), June 1 , 1999. [SPE93]Spewak, S., Enterprise Alrhitectrit-c Plutmitzg, QED
[HAR93] Hares. J.S., Itlformcrtion Engineeringfcv-the Advan- Publishing, 1993.
red Pructition~r.,Wiley, 1993, pp. 12-13. [THA97] Thayer, R.H., y M. Dorfnian, Softuwe Reqrrire-
[HAT871 Hatley, D.J., e I.A. Pirbhai, Str.utegics,forReul-Time ments Engineering, 2." ed., IEEE Computer Society Press,
Systetn Specification, Dorset House, 1987. 1997.
CAPfTULO 10 I N G E N I E R ~ AD E S I S T E M A S
10.1. Encuentre tantos sinonimos como pueda de la palabra 10.10. Investigue las tCcnicas de contabilidad que se emplean
ccsistema>>.iBuena suerte! para un analisis detallado de coste/beneficio de un sistema
10.2. Construya una descripci6n en estructura jerirquica para que requiera algo de fabricacion y montaje de hardware.
un sistema, producto o servicio que le sea familiar. El plantea- Intente escribir un libro de directrices que pueda aplicar un
miento abarcari 10s elementos fundamentales del sistema (hard- gestor tCcnico.
ware, software, etc.) de una rama concreta de dicha estructura. 10.11. Desarrolle el diagrama de context0 DCS y el resto de
10.3. Seleccione un gran sistema o producto con el que estC diagramas de flujo de un sistema a su eleccidn (o definido por
familiarizado. Defina el conjunto de dominios que describen la su profesor).
vision global de 61. Describa el conjunto de elementos que com- 10.12. Escriba una descripcion de un modulo del sistema que
pongan uno o dos dominios. Para un elemento, identifique 10s pudiera estar contenido en la especificacion de diagrama de
componentes tCcnicos con 10s que hay que hacer ingenieria. arquitectura de uno o mis de 10s subsistemas definidos en 10s
10.4. Seleccione un gran sistema o producto con el que estC DFA desarrollados para el problema 10.1 1.
familiarizado. Establezca 10s supuestos, simplificaciones, limi- 10.13. Investigue documentacion sobre herramientas CASE
taciones, restricciones y preferencias que deberian haberse y escriba un breve documento describiendo como trabajan las
hecho para construir un modelo de sistema eficaz y realizable. herramientas de modelado y sirnulacion. Altemativa: Relina
10.5. La ingenieria de proceso de negocio requiere definir informacidn de dos o miis vendedores de CASE que suminis-
datos, arquitectura de aplicaciones, ademas de una infraes- tren herramientas de modelado y sirnulacion y valore las simi-
tructura tecnologica. Describa cada uno de estos tCrminos litudes y las diferencias.
mediante un ejemplo.
10.14. Basindose en la documentacion que le proporcione su
10.6. La planificacidn de la estrategia de la informacion empie- profesor, desarrolle una pequefia Especificacidn de Sistema
za por la definition de objetivos. Ponga ejemplos de cad0 uno para uno de 10s siguientes sistemas:
de 10s dominios de negocio.
a. Un sistema de edicion de video digital no lineal
10.7. Un ingeniero de sistemas puede venir de una de tres pro-
b. Un escAner digital para ordenador personal
cedencias: el desarrollo de sistemas, el cliente o una tercera
organizacion. Discuta 10s pros y contras de cada procedencia. c. Un sistema de correo electronico
Describa a un ingeniero de sistemas ccidealn. d. Un sistema para apuntarse a la universidad
10.8. Su profesor les repartira una descripcion de alto nivel de e. Un proveedor de acceso a internet
un sistema o producto.
f. Un sistema interactivo de reserva de hoteles
a. Desarrolle un conjunto de cuestiones que deberia pre-
guntar como ingeniero de sistemas. g. Un sistema de inter& local
b. Proponga a1 menos dos asignaciones diferentes para el Aseglirese de crear 10s modelos de arquitectura descritos en
sistema basandose en las respuestas de su profesor a la Seccidn 10.6
sus preguntas. 10.15. existe en caractensticas de un sistema que no se pue-
c. En clase, compare sus respuestas con las de sus com- dan establecer durante las actividades de ingenieria de siste-
paiieros. mas? Describa las caracteristicas, si existen, y explique por
quC se debe retrasar su consideration a fases posteriores de la
10.9. Desarrolle una lista de comprobacion para 10s atributos ingenieria.
a considerar cuando hay que evaluar la ccviabilidadr de un sis-
tema o producto. Estudie la interaction entre 10s atributos e 10.16. existe en situaciones en las que se pueda abreviar o eli-
intente proporcionar un mCtodo para puntuar cada uno de minar completamente la especificacicin formal del sistema?
manera que se obtenga una ccpuntuacion de viabilidad,,. Expliquelo.
Se han publicado relativamente pocos libros sobre inge- ring Guidebook, CRC Press, 1996), Wymore (Model-Based
nieria de sistemas en 10s filtimos aiios. Entre ellos desta- Systems Engineering, CRC Press, 1993), Lacy (System Engi-
camos: neering Management, McGraw-Hill, 1992), Aslaksen y Bel-
Blanchard, B.S., System Engineering Management, 2.a ed., cher (Systems Engineering, Prentice-Hall,l992), Athey
Wiley, 1997. (Systematic Systems Approach, Prentice-Hall, 1982), y Blan-
Rechtin, E., y M.W. Maier, The Art of Systems Architec- chard y Fabrycky (Systems Engineering and Analysis, Pren-
ting, CRC Press, 1996. tice-Hall, 1981) presentan el proceso de la ingenieria del
Weiss, D., et al., Sofhzare Product-Line Engineering, Addi- sistema (con un Cnfasis diferente de la ingenieria) y ofrecen
son-Wesley, 1999. una valiosa guia.
Libros como 10s de Armstrong y Sage (Intoduction to Sys- En 10s liltimos aiios, 10s textos de ingenieria de la infor-
tems Engineering, Wiley, 1997), Martin (Systems Enginee- macion han sido reemplazados por libros que se centran en
I N G E N I E R ~ ADEL SOFTWARE. UN ENFOQUE PRACTICO
la ingenieria de proceso de negocio. Scheer (Business Pro- ware Requirements Engineering, IEEE Computer Society
cess Engineering: Reference Models for Industrial Enterpri- Press, 1990) presenta un planteamiento de estkndares y direc-
ses, Springer-Verlag, 1998) describe rnCtodos de rnodelado trices para el trabajo de anklisis.
de procesos de negocio para ernpresas con arnplios sisternas Para aquellos lectores involucrados activarnente en el tra-
de informacion. Lozinsky (Enterprise-Wide Sofiware Solu- bajo de sisternas o interesados en un tratarniento mas sofisti-
tions: Integration Strategies and Practices, Addison-Wesley, cado sobre el terna. se propone 10s libros de Gerald Weinberg's
1998) plantea el uso de paquetes software corno una soluci6n (An Introduction to General System Thinking, Wiley- Inters-
que permita a una cornpafiia rnigrar de 10s sisternas hereda- cience, 1976, y On the Design of Stable Systems, Wilwy-
dos a procesos de negocio modernos. Martin (Information Interscience, 1979) permiten una excelente discusion sobre
Engineering. 3 volurnenes, Prentice-Hall, 1989, 1990, 1991) el ccpensamiento general de sisternas>> que irnplicitamente Ile-
presenta un plantearniento cornprensivo sobre 10s topicos de va a un acercarniento general al anhlisis y disefio de sisternas.
la ingenieria de la inforrnacion. Libros corno 10s de Hares Libros mas recientes son 10s de Weinberg (General Princi-
[HAR93], Spewak [SPE93] y Flynn y Fragoso-Diaz (Infor- ples of Systems Design, Dorset House, 1998, y Rethinking
mation Modeling: An International Perspective. Prentice- systems Analysis and Design, Dorset House, 1988) continuan
Hall, 1996) tratan este terna con detalle. en la tradicion de su mas avanzado trabajo.
Davis y Yen (The Information system Consultant's Hand- Una amplia variacidn de fuentes de informacion sobre inge-
book: Systems Analysis and Design, CRC Press, 1998) pre- nieria de sisternas y elernentos relacionados estan disponibles
sentan una cobertura enciclopCdica de 10s resultados del en internet. Una lista actualizada de referencias a paginas web
analisis y disefio de sisternas en el dorninio de 10s sitemas de sobre ingenieria de sisternas, ingenieria de la inforrnacion,
inforrnacion. Un volurnen mas reciente de 10s misrnos auto- ingenieria de procesos de negocio e ingenieria de productos
res (Standards, Guidelines and Exanples: System and Soft- pueden ser encontradas en http://www.pressman5.com
TULO
L
A ingenieria de requisitos del software es un proceso de descubrimiento, refinamiento,
modelado y especificacicin. Se refinan en detalle 10s requisitos del sistema y el papel
asignado a1 software -inicialmente asignado por el ingeniero del sistema-. Se crean
modelos de 10s requisitos de datos, flujo de informaci6n y control, y del comportamiento ope-
rativo. Se analizan soluciones alternativas y el modelo completo del andlisis es creado. Donald
Reifer [RE1941 describe el proceso de ingenieria de requisitos del software en el siguiente
pdrrafo:
La ingeniesia de requisitos es el uso sisterndtico de psocedirnientos, tecnicas, lengu;ijes y hermrnientas para
obtenes con un coste seducido el andisis, docurnentaci6n, evoluci6n continua de las necesidades del usuasio
y la especificacicin clel cornportamiento externo de un sistema que satisfaga las necesidades del usu;isio. Tenp;i
cn cuenta que todas las disciplinas de la ingenieria son semejantes, la ingeniesia de requisitos no se guia pol
conductas esporidicas, aleatol-ias o pos modns pasajeras. si no que se debe basar en el uso sisterndtico de i~pso-
x irnaciones contr;istadas.
El atztilisis de 10s requisitos es una tarea de ingenieria informaci6n se le proporcionarh a1 sistema. Por ejem-
del software que cubre el hueco entre la definicibn del plo, el cliente desea un informe diario que indique quC
software a nivel sistema y el disefio del software (Fig. piezas se han tomado del inventario y cuhntas piezas
1 1.1). El anhlisis de requisitos permite a1 ingeniero de sirnilares quedan. El cliente indica que 10s encargados
sistemas especificar las caracteristicas operacionales del del inventario registrarin el nfimero de identificacibn de
software (funci61-1,datos y rendimientos), indica la inter- cada pieza cuando salga del inventario.
faz del software con otros elementos del sistema y esta-
blece las restricciones que debe cumplir el software.
/ Ingenieria
de sisternas
Gastamos mucho hempa -lo mayor porte
del tiernpo del poyectc- no implementando
o probando, sino intentando decidir qu8 construir.
lMan lawream
Durante la actividad de evaluaci6n y sintesis de la En el Capitulo 2, indicamos que puede no ser posi-
solucion, el analista crea modelos del sistema en un ble una especificaci6n detallada en esta etapa. El clien-
esfuerzo de entender mejor el flujo de datos y de control, te puede no estar seguro de lo que quiere. El
el tratamiento funcional y el comportamiento operativo desarrollador puede no estar seguro de que un enfoque
y el contenido de la informaci6n. El modelo siwe como especifico consiga apropiadamente el funcionamiento
fundamento para el diseiio del software y como base para y rendimiento adecuados. Por estas y otras muchas razo-
la creaci6n de una especificaci6n del software. nes, se puede llevar a cabo un enfoque alternativo del
anhlisis de requisitos, denominado creacih de prototi-
@ kCubl serb mi primer pos o prototipado. El prototipado se comenta m i s tar-
objetivo en esta etapa? de en este capitulo.
- - - --------
, 1-1.2 I D E N T I F I C A C ~ ~DE
N REQUISITOS PARA EL SOFTWARE --
Antes que 10s requisitos puedan ser analizados, mode- Estas preguntas ayudan a identificar todos 10s purti-
lados o especificados, deben ser recogidos a travCs de cipantes que tienen un inter& en el software a construir.
un proceso de obtenci6n. Un cliente tiene un problema Ademis, las preguntas identifican 10s beneficios medi-
que pretende sea resuelto con una soluci6n basada en bles en una implementaci6n correcta de posibles alter-
computadora. Un desarrollador responde a la solicitud nativas para un desarrollo normal del software.
de ayuda del cliente. La comunicaci6n ha empezado. El siguiente conjunto de preguntas permite a1 ana-
Pero como ya hemos seiialado, el camino de la comuni- lista obtener un mejor entendimiento del problema y a1
caci6n a1 entendimiento esth a menudo lleno de baches. cliente comentar sus opiniones sobre la soluci6n:
iC6m0 caracterizaria una ccbuenan salida (resultado)
11.2.1. Inicio del proceso generada para una buena solucion?
La tCcnica de obtenci6n de requisitos mis usada es Ile- LAquC tipo de problema(s) va dirigida esta soluci6n?
var a cabo una reunion o entrevista preliminar. La pri- iPuede mostrarme (o describirme) el entorno en que
mera reuni6n entre el ingeniero del software (el analista) se utilizarh la soluci6n?
y el cliente puede compararse con la primera cita entre iHay aspectos o restricciones especiales del rendi-
dos adolescentes. Nadie sabe quC decir o preguntar; 10s miento que afecten a la manera de enfocar la soluci6n?
dos estin preocupados de que lo que digan sea malen-
tendido; ambos piensan quC pasarri (10s dos pueden tener
expectativas radicalmente diferentes); 10s dos esthn dese-
ando que aquello ternline, pero, a1 mismo tiempo, ambos Reguntas doras y resp muchas
desean que la cita sea un Cxito.
y respuesta,, no es un enfoque que haya tenido mucho lo suficientemente informal como para animar el libre
Cxito. De hecho, esta sesi6n de preguntas y respuestas flujo de ideas.
deberia emplearse solamente en el primer encuentro y un cccoordinador>>(que puede ser un cliente, un desa-
sustituirse despuCs por una modalidad que combine ele- rrollador o un tercero) que controle la reuni6n.
mentos de resoluci6n del problema, negociaci6n y espe- se usa un ccmecanismo de definici6nn (que puede ser
cificaci6n. En la siguiente secci6n se presenta un enfoque hojas de trabajo, grAficos, carteles o pizarras).
a reuniones de este tipo.
el objetivo es identificar el problema, proponer ele-
mentos de soluci6n, negociar diferentes enfoques y
11.2.2. Tecnicas para facilitar las especificacio- especificar un conjunto preliminar de requisitos de
nes de una aplicacidn la soluci6n en una atn16sfera que permita alcanzar el
Los clientes y 10s ingenieros del software a menudo tie- objetivo.
nen una mentalidad inconsciente de ccnosotros y ellos>>.
En vez de trabajar como un equipo para identificar y refi-
'9
iQu6 diferendas eristen
entre una reunion TFEA
nar 10s requisitos, cada uno define por derecho su propio y una reunion ordinaria?
ccterritorio>>y se comunica a travb de una serie de memo-
randos, papeles de posiciones formales, documentos y Para coniprender mejor el flujo de acontecimientos
sesiones de preguntas y respueslas. La historia ha demos- tal y como ocurren en una reunion TFEA, presentamos
trado que este mktodo no funciona muy bien. Abundan un pequeiio escenario que esboza la secuencia de acon-
lo.; malentendidos, se omite informaci6n importante y tecimientos que llevan a la reunion, 10s que ocurren en
nunca se establcce una buena relaci6n de trabajo. la reunion y 10s que la siguen.
dad, precision). Se informa a 10s asistentes que no se producto, pues todo el mundo deberia estar de acuer-
. espera que las listas Sean exhaustivas, per0 que si que do en que el desarrollo (o adquisicion) del producto
reflejen su punto de vista del sistema. esta justificada. Una vez que se ha conseguido el acuer-
Por ejemplo3,imaginese que a un equipo de trabajo do, cada participante presenta sus listas para su estu-
TFEA de una compafiia de productos para el consumi- dio. Las listas pueden exponerse en las paredes de la
dor se le ha dado la siguiente description del producto: habitation usando largas hojas de papel, pinchadas o
Nuestras investigaciones indican que el mercado de siste- pegadas, o escritas en una pizarra. Idealmente deberia
mas de seguridad para el hogar esta creciendo a un ritmo del poderse manejar separadamente cada entrada de las
40 por 100 anual. Nos gustaria entrar en este mercado cons- listas para poder combinarlas, borrarlas o afiadir otras.
truyendo un sistema de seguridad para el hogar basado en un En esta fase, esta estrictamente prohibido el debate o
microprocesador que proteja ylo reconozca varias situaciones
indeseables tales como irmpciones ilegales, fuego, inundacio-
las criticas.
nes y otras. El producto, provisionalmente llamado HogarSe-
guro, utilizara 10s sensores adecuados para detectar cada
situacion, puede programarse por el propietario del hogar y lla-
mara automaticamente a una agencia de vigilancia cuando se Evita el impulso de cortor lo idea de un cliente
detecte alguna de estas situaciones. por sdemasiado castosa)) o ((poco practice)).
l a idea es negaciar algo que sea oceptoble para tadas.
En realidad, se proporcionaria considerablemente mas Es decir, debes tener una mente obierto.
informacion en esta fase. Pero incluso con informacih
adicional, habria ambigiiedades presentes, existiran omi- Una vez que se han presentado las listas individua-
siones probablemente y podrian ocunir errores. Por aho- les sobre un tema, el grupo crea una lista combinada.
ra, la ccdescripci6n de producto>>anterior bastarh. La lista combinada elimina las entradas redundantes y
El equipo TFEA esth compuesto por representantes de aiiade las ideas nuevas que se les ocurran durante la pre-
marketing, ingenieria del software y del hardware, y de la sentacion, per0 no se elimina nada mhs. Cuando se han
fabricacion tarnbiCn participara un coordinador extemo. creado las listas combinadas de todos 10s temas, sigue
el estudio -moderado por el coordinador-. La lista
combinada es ordenada, ampliada o redactada de nue-
vo para reflejar apropiadamente el producto o sistema
que se va a desarrollar. El objetivo es desarrollar una
10s objetos deben ser monipulodos por servicios y deben lista de consenso por cada tema (objetos, semicios, res-
((contemplor)) 111s restricciones y rendimientos definidos tricciones y rendimiento). DespuCs estas listas se ponen
por el equipo FAST.
aparte para utilizarlas posteriormente.
Todos 10s componentes del equipo TFEA desarrollan Una vez que se han completado las listas de con-
las listas descritas anteriormente. Los objetos descritos senso, el equipo se divide en subequipos; cada uno tra-
para HogarSeguro podrian incluir detectores de humo, baja para desarrollar una mini-especificacion de una o
sensores de ventanas y puertas, detectores de movimien- mas entradas de cada lista4. La mini-especificacion es
tos, una alarma, un acontecimiento (se ha activado un una elaboration de la palabra o frase contenida en una
sensor), un panel de control, una pantalla, n6meros lista. Por ejemplo, la mini-especificacion del objeto
de telkfono, una llamada de telCfono, etc. La lista de panel de control de HogarSeguro podna ser: montado
semicios podria incluir la instalacion de la alarma, vigi- en la pared; tamafio aproximado 23 * 13 centimetros;
lancia de 10s sensores, marcado de telCfono, programa- contiene el teclado esthndar de 12 teclas y teclas espe-
cion del panel de control y lectura de la pantalla (fijese ciales; contiene una pantalla LCD de la forma mostra-
que 10s servici0.s act6an sobre 10s objetos). De igual da en el bosquejo (no presentado aqui); toda la
manera, todos 10s asistentes TFEA desarrollarhn una lis- interacci6n del cliente se hace a travCs de las teclas usa-
ta de restricciones (por ejemplo, el sistema debe tener das para activar o desactivar el sistema; software para
un coste de fabricacion de menos de £80, debe tener proporcionar una directriz de empleo, recordatorios,
una ccinterfaz amigable,, con el usuario y debe conectar etc., conectado a todos 10s sensores.
directamente con una linea telefonica esthndar) y de cri- Cada subequipo presenta entonces sus mini-especi-
terios de rendimiento (por ejemplo, un acontecimiento ficaciones a todos 10s asistentes TFEA para estudiarlas.
detectado por un sensor debe reconocerse en un segun- Se realizan nuevos afiadidos, eliminaciones y se sigue
do; se deberia implementar un esquema de prioridad de elaborando. En algunos casos, el desarrollo de algunas
acontecimientos). mini-especificaciones descubrirh nuevos objetos, ser-
Cuando empieza la reunion TFEA, el primer tema vicios, restricciones o requisitos de rendimiento que se
de estudio es la necesidad y justification del nuevo aiiadirdn a las listas originales. Durante todos 10s estu-
' Este ejemplo (con extensiones y variaciones) se empleara para ilus- Una alternativa puede ser la creacion de casos de uso. Ver Seccion
trar metodos importantes de ingenieria del software en muchos de 1 1.2.4 para
mas detalles.
10s capitulos siguientes. Como ejercicio, seria ~itilque realizara su
propia reunion TFEA y desarrollara un conjunto de listas.
~ A SOFTWARE. UN ENFOQUE PRACTICO
~ N G E N ~ E RDEL
Durante las dos pasadas decadas, se han desarrollado reducir la complejidad. Son necesarias las visiones esen-
un gran nlimero de mitodos de modelado. Los inves- ciales y de implementation del software para acomo-
tigadores han identificado 10s problemas del analisis y dar las restricciones logicas impuestas por 10s requisitos
sus causas y han desarrollado varias notaciones de del procesamiento y las restricciones fisicas impuestas
modelado y sus correspondientes conjuntos de heuris- por otros elementos del sistema.
ticas para solucionarlos. Cada metodo de anilisis tie- Ademas de 10s principios operativos de anaisis men-
ne su punto de vista. Sin embargo, todos 10s metodos cionados anteriormente, Davis [DAV95a] sugiere un
de analisis se relacionan por un conjunto de principios conjunto6 de principios directrices para la <<ingenieria
operativos: de requisitos,,:
1. Debe representarse y entenderse el dominio de infor- Entender el problema antes de empezar a crear el
maci6n de un problema. modelo de andisis. Hay tendencia a precipitarse en
2. Deben definirse las funciones que debe realizar el busca de una soluci6n, incluso antes de entender el
software. problema. ~ E s ~ lleva
o a menudo a un elegante soft-
3. Debe representarse el comportamiento del software ware para el problema equivocado!
(como consecuencia de acontecimientos extemos). Desarrollar prototipos que permitan a1 usuario
4. Deben dividirse 10s modelos que representan infor- entender cdmo serci la interacci6n hombre-mdquina.
macidn, funci6n y comportamiento de manera que Como el concept0 de calidad del software se basa a
se descubran 10s detalles por capas (o jerirquica- menudo en la opini6n sobre la ccamigabilidad,, de la
mente). interfaz, el desarrollo de prototipos (y la iteraci6n
que se produce) es altamente recomendable.
5. El proceso de anilisis deberia ir desde la informa-
Registrar el origen y la raz6n de cada requisito. Este
ci6n esencial hasta el detalle de la implementaci6n.
es el primer paso para establecer un seguimiento
i C ~ 6 l e sson 10s prindpios hasta el cliente.
subyocentes que guian el Usar mdtiples planteamientos de requisitos. La cons-
trabaio de analisis? trucci6n de modelos de datos, funcionales y de com-
Aplicando estos principios, el analista se aproxima portamiento, le proporcionan a1 ingeniero del
a1 problema sistemiticamente. Se examina el dominio software tres puntos de vista diferentes. Esto reduce
de informaci6n de manera que pueda entenderse com- la probabilidad de que se olvide algo y aumenta la
pletamente la funci6n. Se emplean modelos para poder probabilidad de reconocer la falta de consistencia.
comunicar de forma compacta las caracten'sticas de la Darprioridad a 10s requisitos. Las fechas ajustadas
hnci6n y su comportamiento. Se aplica la partici6n para de entrega pueden impedir la implementaci6n de
Lo ideal e s que la evaluacion sea realizada por funciones indi- Aqui se menciona solo un pequeiio subconjunto de 10s principios
viduales de la organizacion o negocio representadas por un actor. de ingenieria de requisitos de Davis. Para obtener mas informacion.
vease [DAV95a].
C A P ~ T U L O11 CONCEPTOS Y PRINCIPIOS DEL ANALISIS
todos 10s requisitos del software. Si se aplica un un modelo de datos. Este dominio contiene tres visio-
modelo de proceso incremental (Capitulo 2), se deben nes diferentes de 10s datos y del control a medida que
identificar 10s requisitos que se van a entregar en la se procesa cada uno en un programa de computadora:
primera entrega. (1) contenido de la informacion y relaciones, (2) flujo
Trabajar para eliminar la ambigiiedad. Como la de la informacion y (3) estructura de la informacion.
mayoria de 10s requisitos estan descritos en un len- Para entender completamente el dominio de la infor-
guaje natural, abunda la oportunidad de ambigueda- macion, deberia estudiarse cada una de estas visiones.
des. El empleo de revisiones tCcnicas formales es
una manera de descubrir y eliminar la ambiguedad.
Deberia resaltarse que la estructura de datos, un con- na rnanera. Un rnodelo de cornportarniento crea una repre-
cepto afin que se estudiara mis adelante en este libro, sentaci6n de 10s estados del software y 10s sucesos que cau-
se refiere a1 disefio e implementaci6n de la estructura san que carnbie de estado.
de la informaci6n. Los modelos creados durante el anilisis de requisi-
tos desempefian unos papeles muy importantes:
11.3.2. Modelado El modelo ayuda a1 analista a entender la informa-
ci6n, la funci6n y el comportamiento del sistema,
Los modelos se crean para entender mejor la entidad que haciendo por tanto mis facil y sistematica la tarea de
se va a construir. Cuando la entidad es algo fisico (un edi- analisis de requisitos.
ficio, un avion, una mhquina), podemos construir un
modelo idintico en forma, per0 mis pequefio. Sin embar- El modelo se convierte en el punto de mira para la
go, cuando la entidad que se va a construir es software, revisi6n y por tanto la clave para determinar si se ha
nuestro modelo debe tomar una forma diferente. Debe completado, su consistencia y la precisi6n de la espe-
ser capaz de modelar la informaci6n que transforma el cificacion.
software, las funciones (y subfunciones) que permiten El modelo se convierte en el fundamento para el
que ocurran las transformaciones y el comportamiento disefio, proporcionando a1 disefiador una represen-
del sistema cuando ocurren estas transformaciones. taci6n esencial del software que pueda trasladarse a1
El segundo y tercer principios operativos del anili- contexto de la implementaci6n.
sis requieren la construction de modelos de funci6n y
comportamiento. i Como usor 10s modelos
creados durante el trabajo
i Que tipos de modelos de analisis de requisitos?
debemos crear durante
Los mCtodos de analisis estudiados en 10s Capitulos
el analisis de requisitos?
12 y 2 1 son de hecho metodos de modelado. ~ u n ~ elu e
Modelos funcionales. El software transforma la infor- mktodo de modelado empleado es a menudo cuestion
rnaci6n y, para hacerlo, debe realizar a1 rnenos tres funcio- de preferencias personales (o de la organization), la acti-
nes genkricas: entrada, procesarniento y salida. Cuando se vidad de modelado es fundamental para un buen traba-
crean rnodelos funcionales de una aplicacibn, el ingeniero
del software se concentra en funciones especificas del pro-
jo de analisis.
blema. El rnodelo funcional ernpieza con un sencillo rnode-
lo a nivel de contexto (por ejernplo, el nornbre del software
que se va a construir). DespuCs de una serie de iteraciones,
se consiguen mas y mas detalles funcionales, hasta que se
A menudo 10s problemas son demasiado grandes o com-
consigue representar una rninuciosa definici6n de toda la fun- plejos para entenderlos globalmente. Por este motivo,
cionalidad del sisterna. tendemos a hacer una partici6n (dividir) de estos pro-
blemas en partes que puedan entenderse facilmente y
Datos
Objeto(s)
establecer las interacciones entre las partes de manera
y control que se pueda conseguir la funci6n global. El cuarto prin-
'de salida
cipio operativo del anilisis sugiere que se pueden par-
tir 10s dominios de la informacion, funcional y de
comportamiento.
Alrnacen
Lo descomposici6nes un proceso que resulto
de lo elabaracion de dotas, funtiones o comportamientas.
Puede ser realizada horizontal a veriicalmente.
FIGURA 11.3. Flujo y transforrnacion de la inforrnacion.
En esencia, la particidn descompone un problema en
Modelos de comportamiento. La rnayoria del software sus partes constitutivas.Conceptualmente,establecemos
responde a 10s acontecirnientos del rnundo exterior. Esta
caracten'stica estirnulo-respuesta forma la base del rnodelo una representacion jerarquica de la informaci6n o de la
del cornportamiento. Un prograrna de cornputadora siernpre funcion y despuCs partimos el elemento de orden supe-
esta en un estado, un rnodo de cornportarniento observable rior (I) exponiendo mas detalles cada vez a1 movernos
exteriormente (por ejernplo, esperando, calculando, irnpri- verticalmente en la jerarquia o (2) descomponiendo el
rniendo, haciendo cola) que cambia so10 cuando ocurre algun problema si nos movemos horizontalmente en la jerar-
suceso. Por ejernplo, el software permanecera en el estado quia. Para ilustrar estos enfoques de particibn, reconsi-
de espera hasta que (1) un reloj interno le indique que ha
pasado cierto interval0 de tiernpo, (2) un suceso extemo (por deremos el sistema de seguridad HogarSeguro descrito
ejernplo, un rnovirniento del rat6n) provoca una intempci6n, en la Secci6n 11.2.2. La asignaci6n de software para
o (3) un sisterna externo seiiala a1 software que actue de algu- HogarSeguro (obtenido como consecuencia de las acti-
C A P ~ T U L OI 1 CONCEPTOS Y PRINCIPIOS DEL ANALISIS
vidades de ingenieria del sistema y de las reuniones en el Capitulo 12) proporcionara una vision mas profun-
TFEA) puede establecerse en 10s parrafos siguientes: da de 10s requisitos del sistema. A medida que se parte el
El software de HogarSeguro permite a1 propietario con- sistema, se obtienen las interfaces entre las funciones. Los
figurar el sisterna de seguridad cuando se instala, vigila todos datos y elementos de control que se mueven a travCs de
10s sensores conectados a1 sisterna de seguridad e interactkt una interfaz deberian restringirse a las entradas necesa-
con el propietario a travts de un teclado y t e c h funciona- rias para realizar la funcion en cuestion y a las salidas
les del panel de control de HogarSeguro rnostrado en la Figu- requeridas por otras funciones o elementos del sistema.
ra 11.2.
Durante la instalacidn, el panel de control de HogarSegu- Sotfware de HogarSeguro
ro se ernplea para aprogramx* y configurar el sisterna.A cada
sensor se le asigna un nhrnero y un tipo, se prograrna una con-
traseiia para activar y desactivar el sisterna y se introducen el
(10s) n6rnero(s) de telCfono que se rnarcarh(n) cuando un sen- Configurar Monitorizar lnteractuar
sor detecte un suceso que haga saltar la alarma. sistema sensores con el usuario
Cuando un sensor detecta un acontecirniento,el software Particion horizontal
invoca una alarma sonora asociada a1 sisterna. DespuCs de un
retardo especificado por el propietario durante la configuracidn FIGURA 11.4. Particion horizontal de una funcion
del sisterna, el software rnxca un nhrnero de telCfono de una de Hogar Seguro.
ernpresa de seguridad y proporciona informaci6n sobre la direc-
cion. informando de la naturalem del acontecirniento detecta- 1 1.3.4. Visiones esenciales y de implementaci6n7
do. El nlirnero se volverfi a rnarcar cada 20 segundos hasta que
se obtenga la conexidn telefdnica. Una visidn esencial de 10s requisitos del software presenta
las funciones a conseguir y la informacion a procesar sin
Toda la interacc~oncon HogarSeguro es rnanejada por un tener en cuenta 10s detalles de la implementacion. Por
subsisterna de interaccidn con el usuario que lee la entrada de
informacidn proporcionada a travCs del teclado y las teclas fun- ejemplo, la vision esencial de la funcion de HogarSegu-
cionales, las pantallas que presentan rnensajes y el estado del ro leer el estado del sensor no tiene nada que ver con
sisterna en la pantalla LCD. La interaccidn con el teclado torna la forma fisica de 10s datos o el tip0 de sensor que se
la siguiente forma... emplea. De hecho, se podria argumentar que leer esta-
Los requisitos del software de HogarSeguro pueden do seria un nombre mas apropiado para esta funcion, ya
analizarse partiendo 10s dominios de informaci6n, fun- que ignora totalmente 10s detalles del mecanismo de
cional y de comportamiento del producto. Para ilus- entrada. Igualmente, un modelo de datos esencial del
trarlo, partiremos el dominio funcional del problema. elemento datos numero de telefono (implicado en la
La Figura 11.4 ilustra una descomposicibn horizontal funci6n marcar numero de telkfono) puede represen-
del software HogarSeguro. El problema se parte median- tarse en esta fase independientemente de la estructura
te la representacion de las funciones constitutivas del de 10s datos (si es que hay alguna) usada para imple-
software HogarSeguro, movikndose horizontalmente en mentar el elemento datos. Enfocando nuestra atenci6n
la jerarquia funcional. En el primer nivel de la jerarquia en la esencia del problema en las primeras fases del an&
aparecen tres funciones principales. lisis de requisitos, dejamos abiertas nuestras opciones
para especificar 10s detalles de implementacion duran-
te fases posteriores de especificacion de requisitos y
disefio del software.
El anhlisis hay que hacerlo independientemente del para- do prototipo deseclzable. Este prototipo sirve linicarnente
digma de ingenieria del software que se aplique. Sin como una basta demostracidn de 10s requisitos. DespuCs
embargo, la forma que toma este anhlisis van'a. En algu- se desecha y se hace una ingenieria del software con un
nos casos es posible aplicar 10s principios operativos paradigma diferente. Un enfoque abierto, denominado
del anhlisis y obtener un modelo de software del que se prototipo evolutivo, emplea el prototipo como primera
pueda desarrollar un disefio. En otras situaciones, se rea- parte de una actividad de anhlisis a la que seguirh el dise-
lizan recopilaciones de requisitos (por TFEA, DFC u fio y la construcci6n. El prototipo del software es la pri-
otras tkcnicas de cctormenta de ideas>>[JOR89]), se apli- mera evolucidn del sistema terminado.
can 10s principios del anhlisis y se construye un mode-
lo del software a fabricar denominado prototipo para L Que debemos mirar para
que lo valore el cliente y el desarrollador. Finalmente, determinar si un prototipo
hay circunstancias que requieren la construccidn de un es o no una alternativa viable?
prototipo a1 comienzo del anhlisis, ya que el modelo es Antes de poder elegir un enfoque abierto o cerrado,
el tinico medio a travCs del cual se pueden obtener efi- es necesario determinar si se puede crear un prototipo
cazmente 10s requisitos. El modelo evoluciona despuCs del sistema a construir. Se pueden definir varios facto-
hacia la producci6n del software. res candidatos a la creacidn de prototipos [BOA84]: Area
de aplicacion, complejidad, caracten'sticas del cliente y
del proyecto8.
probar
En general, cualquier aplicacidn que Cree panta-
son 10s que llas visuales dinhmicas, interactiie intensamente con
rativa actual. el ser humano, o demande algoritmos o procesamiento
de combinaciones que deban crearse de manera pro-
gresiva, es un buen candidato para la creaci6n de un
prototipo. Sin embargo, estas Areas de aplicacidn
11.4.1. Seleccion del enfoque de creation de deben ponderarse con la complejidad de la aplica-
prototipos ci6n. Si una aplicacidn candidata (una con las carac-
El paradigma de creaci6n de prototipos puede ser cerra- teristicas reseiiadas anteriormente) va a requerir el
do o abierto. El enfoque cerrado se denomina a menu- desarrollo de decenas de miles de lineas de c6digo
En la Descripcidn funcional se describen todas las dacidn. iC6m0 reconocemos el Cxito de una imple-
funciones requeridas para solucionar el problema. Se mentacibn? ~ Q u Cclases de pruebas se deben llevar a
proporciona una descripci6n del proceso de cada fun- cab0 para validar la funcibn, el rendimiento y las res-
ci6n; se establecen y justifican las restricciones del dise- tricciones? Ignoramos esta seccion porque para com-
fio; se establecen las caracteristicas del rendimiento; y pletarla se necesita una profunda comprension de 10s
se incluyen uno o mas diagramas para representar gri- requisitos del software, algo que a menudo no posee-
ficamente la estructura global del software y las inte- mos en esta fase. Sin embargo, la especificacion de 10s
racciones entre las funciones software y otros elementos criterios de validaci6n act6a como una revision impli-
del sistema. La secci6n de las especificaciones Des- cita de todos 10s demas requisitos. Es esencial invertir
cripcidn del comportamiento examina la operativa del tiempo y prestar atenci6n a esta secci6n. Finalmente, la
software como consecuencia de acontecimientos exter- especificaci6n incluye una Bibliografia y un Ape'ndice.
nos y caracteristicas de control generadas intemamente. En muchos casos la Especificacidn de requisitos del
software puede estar acompafiada de un prototipo eje-
cutable (que en algunos casos puede sustituir a la espe-
cificaci6n), un prototipo en papel o un Manual de
luondo desorrolles criterios de volidocibn, responde
usuario preliminar. El Manual de usuario preliminar
o 10 siguiente cuestibn: ((lorno reconocer si un sistemo
es correct0 si no lo muevo de mi meso?))
presenta a1 software como una caja negra. Es decir, se
pone gran Cnfasis en las entradas del usuario y las sali-
Probablemente la mis importante, e ironicamente, das (resultados) obtenidas. El manual puede sewir como
la secci6n mas a menudo ignorada de una especifica- una valiosa herramienta para descubrir problemas en la
ci6n de requisitos del software son 10s Criterios de vali- interfaz hombre-miquina.
La revision de la Especificacihn de requisitos del soft- a veces, normalmente, corrientemente, mucho, o prin-
ware (y/o prototipo) es llevada a cab0 tanto por el desa- cipalmente), el revisor sefialari la sentencia para su
rrollador del software como por el cliente. Como la clarificaci6n.
especificaci6n f o m a el fundamento para el disefio y las Una vez que se ha completado la revisibn, se fir-
subsiguientes actividades de la ingenieria del software, ma la especificaci6n de requisitos del software por el
se deberia poner extremo cuidado a1 realizar la revisi6n. cliente y el desarrollador. La especificaci6n se con-
viene en un <<contrato>> para el desarrollo del softwa-
re. Las peticiones de cambios en 10s requisitos una
vez que se ha finalizado la especificaci6n no se eli-
minarin, per0 el cliente debe saber que cada cambio
a posteriori significa una ampliaci6n del imbito del
software, y por tanto pueden aumentar 10s costes y
Requisitos Software prolongar 10s plazos de la planificaci6n temporal del
Revision de lo Espetifitatih proyecto.
Incluso con 10s mejores procedimientos de revisibn,
Inicialmente la revisi6n sc lleva a cab0 a nivel siempre persisten algunos problemas comunes de espe-
macrosc6pico. A este nivel, 10s revisores intentan ase- cificaci6n. La especificaci6n es dificil de <<probar>>
de
gurarse de que la especificacion sea completa, con- manera significativa, por lo que pueden pasar inadver-
sistente y correcta cuando la informaci6n general, tidas ciertas inconsistencias y omisiones. Durante la
funcional y de 10s dominios del comportamiento son revisibn, se pueden recomendar cambios a la especifi-
considerados. Asimismo, una exploration completa de caci6n. Puede ser extremadamente dificil valorar el
cada uno de estos dominios, la revisi6n profundiza en impact0 global de un cambio; es decir, jc6m0 afecta el
el detalle, examinando no solo las descripciones super- cambio en una funci6n a 10s requisitos de las demas?
ficiales, sino la via en la que 10s requisitos son expre- Los modemos entomos de ingenieria del software (Capi-
sados. Por ejemplo, cuando una especificaci6n contiene tulo 3 1) incorporan herramientas CASE desarrolladas
un cctCrmino vago>>(por ejemplo, algo, algunas veces, para ayudar a resolver estos problemas.
lNGEN1EFlfA DEL SOFTWARE. UN ENFOQUE PRACTICO
El analisis de requisitos es la primera fase tkcnica del En muchos casos, no es posible especificar completa-
proceso de ingenieria del software. En este punto se refi- mente un problema en una etapa tan temprana. La crea-
na la declaracion general del ambito del software en una ci6n de prototipos ofrece un enfoque alternativo que
especificacion concreta que se convierte en el funda- produce un modelo ejecutable del software en el que
mento de todas las actividades siguientes de la inge- se pueden refinar 10s requisitos. Se necesitan herra-
nieria del software. mientas especiales para poder realizar adecuadamente
El analisis debe enfocarse en 10s dominios de la la creacion de prototipos.
informacion, funcional y de comportamiento del pro- Como resultado del analisis, se desarrolla la Especi-
blema. Para entender mejor lo que se requiere, se crean ficacidn de requisitos del sofmare. La revision es esen-
modelos, 10s problemas sufren una particion y se desa- cia1 para asegurarse que el cliente y el desarrollador
rrollan representaciones que muestran la esencia de 10s tienen el mismo concept0 del sistema. Desgraciada-
requisitos y posteriormente 10s detalles de la imple- mente, incluso con 10s mejores metodos, la cuestion es
mentacion. que el problema sigue cambiando.
[AKA901Akao, Y. (de.), Quality Function Dep1oyment:Inte- [HOL95] Holtzblatt, K., y E. Camel (eds.), <<Requirements
grating Customer Requirements in Product Design (tra- Gathering: The Human Factor,,, un resultado especial de
ducido por G. Mazur), Productivity Press, Cambridge MA, CACM, vol. 38, n." 5, Mayo 1995.
1990
[JAC92] Jacobson, I., Object-Oriented Software Engineering,
[BAL86] Balzer, R., y N. Goodman, ccPrinciples of Good Spe- Addison-Wesley, 1992.
cification and their Implications for Specification Lan-
[JOR89] Jordan, P.W. et al., <<SoftwareStorming: Combining
guages,,, in Software Specification Techniques (Gehani
Rapid Prototyping and Knowledge Engineering,,, IEEE
and McGetrick, eds.), Addison-Wesley, 1986, pp. 25-39.
Computer, vol. 22, n." 5, Mayo 1989, pp. 39-50.
[BOA841 Boar, B., Application Prototyping, Wiley-lnters-
cience, 1984. [RE1941 Reifer, D.J., <<RequirementsEngineering,,, in Ency-
clopedia of Sofh~areEngineering (J.J Marciniak, editor),
[BOS9 11 Bossert, J.L., Quality Function Deployment: A Prac- Wiley, 1994, pp. 1043-1054.
titioner's Approach, ASQC Press, 1991.
[TAN891 Tanik, M.M., y R.T. Yeh (eds.), <<RapidPrototyping
[CUR851 Curtis, B., Human Factors in Software Develop- in Software Development,, (resultado especial), IEEE
ment, IEEE Computer Society Press, 1985. Computer, vol. 22, n." 5, Mayo 1989.
[DAV93] Davis, A., Software requirements: Objetcs, Func- [WYD96] Wyder, T., <<CapturingRequirements with use-
tions and States, Prentice-Hall, 1993. cases,, Sofbjare Development, Febrero 1996, pp. 37-40.
[DAV95a] Davis, A., 201 Principles of Software Develop- [ZAH90] Zahniser, R.A., <<BuildingSoftware in Groups,>,
ment, McGraw-Hill, 1995. American Programmer, vol. 3, n."V/8. Julio-Agosto
[DAV95b] Davis, A., <<SoftwarePrototyping,,, in Advances 1990.
in Computers, vol. 40, Academic Press, 1995. [ZUL92] Zultner, R., <<QualityFunction Deployment for Soft-
[GAU89] Gause, D.C., y G. M. Weinberg, Exploring Requi- ware: Satisfying Customersn, American Programmer,
rements:Quality Before Design, Dorset House, 1989. Febrero 1992, pp. 28-41.
11.1. El anilisis de requisitos del software es indudablemente pueden llevar a cab0 las tareas de analisis de manera que se
la fase de comunicacidn mas intensa del proceso de ingenie- minimicen estas repercusiones politicas?
ria del software. i,Por quC suele romperse frecuentemente este
enlace de comunicacidn? 11.3. Estudie su percepcidn ideal de la formacidn y curricu-
lum de un analista de sistemas.
11.2. Suele haber serias repercusiones politicas cuando
comienza el anilisis de requisitos del software (y/o anilisis 11.4. A lo largo de todo el capitulo nos referimos a1 ccclien-
de un sistema). Por ejemplo, 10s trabajadores pueden creer te*. Describa el ccclienter desde el punto de vista de 10s
que la seguridad de su trabajo puede verse amenazada por un desarrolladores de sistemas de informacion. de 10s cons-
nuevo sistema automitico. iQuC origina tales problemas? iSe tructores de productos basados en computadora y cje 10s
C A P ~ T U L O1 1 CONCEPTOS Y PRINCIPIOS DEL ANALISIS
constructores de sistemas. iTenga cuidado, el problema pue- el contenido y cualquier estructura de la informacion que le
de ser miis complejo de lo que parece! parezca relevante.
11.5.Desarrolle un <<kit>> de tecnicas de especificacion de apli- 11.9. Haga una particidn del dominio funcional de HogarSe-
cacidn (TFEA). El kit debena incluir un conjunto de directri- guro. Inicialmente haga una particidn horizontal; despuCs haga
ces para llevar a cab0 una reunion TFEA, materiales para la particion vertical.
facilitar la creacidn de listas y otros elementos que pudieran 11.lo. Construya la representation esencial y de implemen-
ayudar en la definition de requisitos. tacion del sistema HogarSeguro.
11.6. Su profesor dividira la clase en grupos de cuatro a seis 11.11.Construya un prototipo en papel (o uno real) de Hogm-
estudiantes. La mitad del grupo hara el papel del departamento
Seguro. Asegdrese de mostrar la interaccion del propietario y
el funcionamiento global del sistema.
de marketing y la otra mitad el de la ingeniena del software.
Su trabajo consiste en definir 10s requisitos del sistema de segu- 11.12. Intente identificar componentes software de Hogar-
ridad HogurSeguro descrito en este capitulo. Celebre una reu- Seguro que podnan ser <<reutilizables>, en otros productos o
nion TFEA usando las directrices estudiadas en el capitulo. sistemas. Intente clasificar esos componentes.
11.13. Desarrolle una especificacion escrita de HogarSegu-
11.7. &3e puede decir que un Manual preliminar de usuario ro usando el esquema propuesto en la pagina web SEPA. (Nota:
es una forma de prototipo? Razone su respuesta. Su profesor le sugeriri quC secciones completar en este
11.8. Analice el dominio de informacion de HogurSeguro. momento.) Asegurese de aplicar las cuestiones descritas en la
Represente (usando la notacidn que crea apropiada) el flujo, revision de la especificacion.
Los libros que indicamos sobre la ingeniena de requisitos per- (Applying Use-cases: A Practical Guide, Addison-Wesley,
miten una buena base para el estudio de 10s conceptos y prin- 1998), y Texel y Williams (Use-Cases Combined With
cipios basicos del analisis. Thayer y Dorfman (Software BoochlOMTIUML. Prentice-Hall, 1997) facilitan una guia
Requirements Engineering, 2." ed., IEEE Computer Society detallada y muchos ejemplos utiles.
Press, 1997) presentan una amplia antologia sobre el tema. El analisis del dominio de la informaci6n es un principio
Graham y Graham (Requirements Engineering and Rapid fundamental del analisis de requisitos. Los libros de Matti-
Development, Addison-Wesley, 1989, destaca el d e s m l l o rapi- son (The Object-Oriented Enterprise. McGraw-Hill, 1993),
do y el uso de metodos orientados a objetos en su planteamiento y Modell (Data Anulysis, Datu Modelling and Classijcation,
sobre la ingenieria de requisitos, mientras MacCauley (Requi- McGraw-Hill, 1992) cubre distintos aspectos de este impor-
rements Engineering, Springer Verlag, 1996) presenta un bre- tante tema.
ve tratado acadCmico sobre el tema. Un reciente libro de Harrison (Prototyping and Sofkware
En 10s ultimos atios, la literatura hacia enfasis en el Development, Springer Verlag, 1999) facilita una moderna
modelo de requisitos y en 10s mktodos de especificacion. perspectiva sobre el prototipado del software. Dos libros de
pero hoy se hace igual Cnfasis en 10s metodos eficientes Connell y Shafer (Structl~edRapid Prototyping, Prentice-
para la obtencion de requisitos del software. Wood y Sil- Hall, 1989) y (Object-Oriented Rapid Prototyping, Yourdon
ver (Joint Application Development, segunda edicion, Wiley, Press, 1994) muestra como esta importante tecnica de aniili-
1995) han escrito un tratado definitivo para el desarrollo sis puede ser utilizada tanto para entornos convencionales
de apllcacione\ enlazadas. Cohen y Cohen (Quality Function como para entornos orientados a objetos.
Deployment, Addicon-Wesley, 1995), Terninko (Step-By- Otros libros como 10s de Pomberger et al. (Object Orien-
Step QFD: Customer-Driven Product Design, Saint Lucie tation und Prototyping in Software Engineering, Prentice-
Press, 1997), Gause y Weinberg [GAU89] y Zahniser Hall, 1996) y Krief et al. (Prototyping With Objects,
[ZAH90] estudia 10s mecanismos para tener reuniones efec- Prentice-Hall, 1996) examina el prototipado desde la pers-
tivas, mktodos de brainstorming y obtencion de requisitos pectiva de la orientacidn a objetos. La IEEE Proceedings ~f
que pueden usarse para clarificar resultados y una variedad Internationul Workshop on Rapid System Prototyping (publi-
de otras necesidades. Los casos de uso configuran una par- cado el pasado atio) presenta una vision actual en esta area.
te importante del analisis de requisitos orientado a objetos, Una amplia variedad de fuentes de informacion sobre el
que pueden usarse de forma independiente de la imple- analisis de requisitos y otros temas relacionados estan dispo-
mentacidn tecnologica que se seleccione. Rosenburg y Scott nibles en internet. Una lista actualizada de paginas web que
(Use-Case Driven Object Modelling with UML: A Pructi- son significativas sobre 10s conceptos y metodos de analisis
cul Approach. Addison-Wesley, 1999), Schneider et al. se encuentran en http://www.pressrnan5.corn
Palabras clave
ampliadones
para sistmas
m
en tiempo rml ...... .207
E
MODELADO DEL ANALMS
N un nivel tCcnico, la ingenieria del software empieza con una serie de tareas de mode-
lado que llevan a una especificaci6n completa de 10s requisitos y a una representaci6n
del diseiio general del software a construir. El modelo de uncilisis, realmente un conjunto
de modelos, es la primera representaci6n ticnica de un sistema. Con 10s aiios se han propuesto
anhlisis gramotical. ...215 muchos mitodos para el modelado del anrilisis. Sin embargo, ahora dos tendencias dominan el
DERi.. ............. .204 panorama del modelado del anhlisis. El primero, andlisis estr-uctirr-udu,es un mitodo de mode-
DFDs.. ..............206 lado clhsico y se describe en este capitulo. El otro enfoque, andlisis or-ientntfo( I objetos, se estu-
8cdodo de datos .215 . dia con detalle en el Capitulo 2 1. En la Seccion 12.8 se presenta una breve visi6n general de
ECs.. .............. .214 otros mCtodos de anilisis comlinmente usados.
IPS.. .............. .214 El anBlisis estructurado es una nctividad de construcci6n de modelos. Mediante una nota-
metanismos del d f i s i s cidn que satisfaga 10s principios de anhlisis operational estudiada en el Capitulo 11, creamos
estructwada.. ...... .210 modelos que representan el contenido y flujo de la inforniaci6n (datos y control); partimos el
-
modelada de dafos . .201 sistema funcionalmente, y seglin 10s distintos coniportaniientos establecemos la esencia de lo
modelado que se debe construir. El anilisis estructurado no es un mCtodo sencillo aplicado siempre de la
del comportamiento.. -209 misma forma por todos 10s que lo usan. Mris bien, es una amalgamn que ha evolucionado duran-
modelado funcional . .205 te 10s Liltimos 30 afios.
..
modelo de aJfisii. ,200 En su principal libro sobre este tema, Tom DeMarco [DEM79] describe el anrilisis estruc-
modelo de fluio turado de la siguiente forma:
de &tor ...........213
~ Q u e6s ? La palabra escrita e s un vehicu- vista. El anulisis representa 10s requi- especificacion incorporada e n el mode-
l o maravilloso para Ia comunicacion, sifos e n Ires wdimensionesn, por e s a lo e s creada y luego validada, tanto por
per0 no e s necesariamente e l mejor r a z h , se incrementa la probabilidad d e el ingenierodel software, corno por los
camlno para representar 10s requisitos encontrar errores, descubrir inconsis- clientes/usuarios.
del software. El analisis utiliza una corn- tencias y detectar omisiones. ~Cndrle s e l product0 obtenido? Las des-
binaci6n d e texto y d e diagramas, para cripciones d e 10s objetos d e datos, 10s
&Cu6lesson 10s pasos? Las requisitos d e
representar 10s requisitos de datos, fun- diagramas entidad-relacion, 10s dia-
datos, lunciones y comportamientos
ciones y comportamientos, que e s rela- g r a m a s d e flujo d e datos, 10s diagra-
son modelados utilizando diferentes
tivamente facil d e enlender y, mus m a s d e transition d e estados, l a s
diagramas. El modelado d e datos defi-
importanteah, sencillo p a reviscrr s u especificaciones d e l proceso y l a s
ne objetos d e datos, atributos y rela-
coneccion, completitud y consistencia. especificaciones d e control son crea-
ciones. El modelado d e funciones
~ Q u lo h hace? El ingenierodel software indica como 10s datos son transforma- d a s como resultado d e las actividades
(a veces llamado analista) construye e l d o s dentro d e l sistema. El modelado del andlisis.
modelo utilizando 10s requisitosdefini- del comportamiento representa e l ~ C d m opaedo estar seguro d e q u e lo he
dos por e l cliente. impacto d e 10s sucesos. Se crean unos hecho correctamente? El resultado del
LPor qu6 es importante? Para validar 10s modeIos preliminares q u e son anali- modelado del an6lisis debe ser revisa-
requisitos d e l software necesitarnos zados y refinados para valorar su cla- do para verificar s u correcci6n, comple-
examinarlos desde diferentes puntos d e ridad, completitud y consistencia. Una titud y consistencia,
Observando 10s problemas y fallos reconocidos para la fase de anilisis, se puede sugerir que necesita-
mos afiadir 10s siguientes objetivos a la fase de anrilisis.
Los productos del anilisis han de ser de mantenimiento muy Phcil. Esto concierne concretamente al
documento final [Especificaci6n de Requisites del Software].
Se deben tratar 10s problemas de gran tamaiio mediante alglin mCtodo efectivo de particicin. La espe-
cificaci6n mediante novelas victorianas ya no sirve.
Siempre que sea posible, se deben utilizar grhficos.
Tenemos que diferenciar las consideraciones 16gicas [esenciales] y las fisicas [de implementaci6nl. ..
Como minimo, necesitamos ....
Algo que nos ayude a hacer una partici6n de 10s requisitos y a documentar esas divisiones antes de
especificar ...
Algun mCtodo de seguimiento y evaluaci6n de interfaces ...
Nuevas herramientas para describir la 16gica y la tdctica, algo mejores que descripciones narrativas ...
I N G E N I E R I A DEL SOFTWARE. U N ENFOQUE PRACTICO
Es muy probable que ninglin otro mCtodo de ingenieria del software haya generado tanto interis, haya sido pro-
.bad0 (y a veces rechazado y vuelto a probar) por tanta gente, criticado y haya provocado tanta controversia. Pero
el mCtodo ha subsistido y ha alcanzado un importante seguimiento dentro de la comunidad de la ingenieria del
software.
durante el analisis del dominio de informaci6n y sir- siciones de estado a estado. El DTE sime como la base
ve como base para el modelado de funci6n. En una del modelado de comportamiento. Dentro de la especi-
especijiicacibn de proceso ( E P ) se encuentra una des- ficacibn de control (EC) se encuentra miis informaci6n
cripcion de cada funci6n presentada en el DFD. sobre 10s aspectos de control del software.
El diagrama de transicibn de estados (DTE) indica El modelo de analisis acornpaha a cada diagrama,
como se comporta el sistema como consecuencia de especificacion y descripcion, y a1 diccionario sefialado
sucesos externos. Para lograr esto, el DTE representa en la Figura 12.1. Un estudio miis detallado de estos ele-
10s diferentes modos de comportamiento (llamados esta- mentos del modelo de analisis se presenta en las sec-
dos) del sistema y la manera en que se hacen las tran- ciones siguientes.
carroceria
Para responder estas preguntas, 10s mCtodos de mode- Color
lado de datos hacen uso del diagrama de entidad-rela-
cion (DER). El DER, descrito con detalle posteriormente FIGURA 12.2. Objetos de datos, atributos y relaciones.
en esta seccion, permite que un ingeniero del software
identifique objetos de datos y sus relaciones mediante 12.3.1. Objetos de datos. atributos y relaciones
una notacion grafica. En el context0 del analisis estruc- El modelo de datos se compone de tres piezas de infor-
turado, el DER define todos 10s datos que se introdu- maci6n interrelacionadas: el objeto de datos, 10s atri-
cen, se almacenan, se transforman y se producen dentro butos que describen el objeto de datos y la relacion que
de una aplicaci6n. conecta objetos de datos entre si.
Objetos de datos. Un objeto de datos es una repre-
sentacion de cualquier composicion de informacion com-
puesta que deba comprender el software. Por composicion
to en la habilidad
de informacion, entendemos todo aquello que tiene un
del munda real y
numero de propiedades o atributos diferentes. Por tanto,
el ccancho>>(un valor sencillo) no seria un objeto de datos
vhlido, per0 las c<dimensiones>> (incorporando altura,
ancho y profundidad) se podria definir como objeto.
3
Referencia Web
Informaci6n htil sobre el madelo de datos puede
encontrarse en www.datamodel.org
10s atributos definen un obieto de datos,
describen sus caracteristicas, y en algunos ocasiones,
estoblecen referencias a otros obietos.
'.
Atributos Ata un objeto de datos a otro, 10s relaciones indican la monera en que 10s obietos
identificativos en este caso, el propietario de datos estan ccconectadosr entre si.
* ldentificador
Atributos
descriptivos
Atributos
Relaciones. Los objetos de datos se conectan entre
de referencia
-A,-"-, si de muchas formas diferentes. Considere dos objetos
N'de Tipo de de datos, libro y libreria. Estos objetos se pueden repre-
sentar mediante la notacibn simple sefialada en la Figu-
Lexus LS400 ABl23 ... Sedan Blanco RSP ra 12.4a. Se establece una conexion entre libro y libreria
Ocurrencia Honda CRV X456... terrene Rojo CCD porque 10s dos objetos se relacionan. Pero, iquk son
relaciones? Para determinar la respuesta, debemos com-
BMW 750iL X n 6 5 ... Coupe Blanco LJL
Ford Taurus Q12A45.. Sedan Azul BLF
prender el papel de libro y libreria dentro del contexto
del software que se va construir. Podemos definir un
FIGURA 12.3. R e p r e s e n t a c i o n t a b u l a r del objeto de d a t o s . conjunto de parejas objeto-relaci6n que definen las rela-
ciones relevantes. Por ejemplo,
Atributos. Los atributos definen las propiedades una libreria pide libros
de un objeto de datos y toman una de las tres caracte- una libreria muestra libros
risticas diferentes. Se pueden usar para (1) nombrar
una ocurrencia del objeto de datos, (2) describir la ocu- una libreria almacena libros
rrencia, o (3) hacer referencias a otra ocurrencia en una libreria vende libros
otra tabla. AdemBs. uno o varios atributos se definen una libreria devuelve libros
se aplica para transformar la entrada y la salida que se vise la velocidad de la turbina, la temperatura del
produce. Ademas, el EP indica las restricciones y limi- combustible y varias sondas de presion, todo ello de
taciones impuestas a1 proceso (funcion), las caracteris- forma continua. La notaci6n del flujo de datos con-
ticas de rendimiento que son relevantes a1 proceso y las vencional no hace distinciones entre datos discretos
restricciones de disefio que puedan tener influencia en y datos continuos en el tiempo. Una ampliacion de la
la forma de implementar el proceso. notaci6n bisica del analisis estructurado que se mues-
tra en la Figura 12.12 proporciona un mecanismo para
12.4.2. Ampliaciones para sistemas de tiempo real representar el flujo de datos continuo en el tiempo.
Para representar el flujo continuo en el tiempo se usa
Muchas aplicaciones de software son dependientes del la flecha de dos cabezas, mientras que el flujo de
tiempo y procesan mas informacion orientada a1 con- datos discreto se representa con una flecha de una
trol de datos. Un sistema de tiempo real debe inter- sola cabeza. En la figura, se mide continuamente la
actuar con el mundo real en marcos temporales que temperatura supervisada, mientras que so10 se pro-
vienen dados por el mundo real. El control de naves o porciona un valor para el ajuste de temperatura. El
de procesos de fabricacih, 10s productos de consumo proceso de la figura produce una salida continua,
y la instrumentacion industrial son algunas de entre valor corregido.
cientos de aplicaciones del software de tiempo real.
Para que resulte adecuado el analisis del software de
tiempo real, se han propuesto varias ampliaciones para
la notacion basica del analisis estructurado.
Poro odecuor el rnodelo o un sisterno en tiernpo real,
lo notocibn del onolisis estructurodo debe perrnitir
12.4.3. Ampliaciones d e Ward y Mellor procesor eventos y lo llegodo de continuos datos.
Ward y Mellor [WAR851 amplian la notacion basica La distincion entre flujo de datos discreto y con-
del analisis estructurado para que se adapte a las tinuo en el tiempo tiene implicaciones importantes,
siguientes demandas impuestas por 10s sistemas de tanto para el ingeniero de sistemas como para el dise-
tiempo real: Aador del software. Durante la creacion del modelo
Flujo de informacion que es recogido o producido del sistema, podra aislar 10s procesos que pueden ser
de forma continua en el tiempo. criticos para el rendimiento (es muy usual que la
Informaci6n de control que pasa por el sistema y el entrada y salida de datos continuos en el tiempo
procesamiento de control asociado. dependan del rendimiento). A1 crear el modelo fisi-
Ocurrencias multiples de la misma transformaci6n co o de implernentacion, el disefiador debe estable-
que se encuentran a menudo en situaciones de mul- cer un mecanismo para la recoleccion de datos
titarea. continuos en el tiempo. Obviamente, el sistema digi-
tal recolecta datos en una forma casi continua utili-
Estados del sistema y mecanismos que producen tran- zando tkcnicas de muestreo de alta velocidad. La
sicion de estados en el sistema. notacion indica ddnde se necesita hardware de con-
version anal6gica a digital y quk transformaciones
requerirhn, con mayor probabilidad, un software de
Entrada alto rendimiento.
([continua))
Tem~eratura / Salida En 10s diagramas de flujo de datos convenciona-
supervisada (continua)) les no se representa explicitamente el control o f l u -
jos de sucesos. De hecho, a1 analista se le advierte
de que ha de excluir especificamente la representa-
y ajustar Valor ci6n del flujo de control del diagrama de flujo de
el nivel de corregido
datos. Esta exclusi6n es demasiado restrictiva cuan-
do se trata de aplicaciones de tiempo real y, por este
motivo, se ha desarrollado una notaci6n especiali-
Ajuste
de temperatura zada para la representacidn del flujo de sucesos y del
procesamiento de control. Siguiendo con 10s conve-
FIGURA 12.12. Flujo de datos continuo en el tiempo. nios establecidos para 10s diagramas de flujo de
datos, el flujo de datos se representa mediante fle-
En un porcentaje significative de aplicaciones de chas con trazo continuo. Sin embargo, el flujo de
tiempo real, el sistema debe controlar la informacidn control se representa mediante flechas de trazo dis-
continua en el tiempo generada por a l g h proceso del continuo o sombreadas. Un proceso que so10 mane-
mundo real. Por ejemplo, puede que se haga necesa- ja flujos de control de,nominadoproceso de control,
rio un sistema de control de pruebas en tiempo real se representa analdgicamente mediante una burbuja
para maquinas de turbina de gas, para que se super- con trazo discontinuo.
I N G E N I E R ~DEL
A SOFTWARE. UN ENFOQUE PRhCTICO
\kl ./
Presion absoluta
maxima
FIGURA 12.14. La relacion entre 10s modelos de datos FIGURA 12.15. DFC de nivel 1 para el software de una foto-
y 10s de control lHAT871. copiadora.
Para ilustrar el uso de las ampliaciones de compor- zolparada para activarldesactivar el proceso de ges-
tamiento y de control de Hatley y Pirbhai, consideremos ti6n de copiado. De forma similar, el suceso atasca-
el software ernpotrado en una miquina fotocopiadora de da (parte del estado de alimentacion del papel)
oficina. En la Figura 12.15 se muestra un flujo de con- activaria realizar diagnbstico del problema. Se debe-
trol para el software de fotocopiadora. Las flechas del ria destacar que todas las barras verticales dentro del
flujo de datos se han sombreado ligeramente con pro- DFC se refieren a la misrna EC. Un flujo de suceso
positos ilustrativos, per0 en realidad se muestran como se puede introducir directamente en el proceso como
parte de un diagrama de flujo de control. muestra fallo de reproduccion. Sin embargo, este flu-
Los flujos de control se muestran de cada proceso jo no activa el proceso, sino que proporciona infor-
individual y las barras verticales representan las even- maci6n de control para el algoritmo de proceso.
tanas>>EC. Por ejemplo, 10s sucesos estado de ali- Un diagrama de transicion de estados simplificado
mentacion del papel y de comienzolparada fluyen para el software de fotocopiadora descrito anterior-
dentro de la barra de EC. Esto implica que cada uno mente se muestra en la Figura 12.16. Los rectangulos
de estos sucesos hara que se active algun proceso representan estados del sistema y las flechas repre-
representado en el DFC. Si se fueran a exarninar las sentan transiciones entre estados. Cada flecha esti eti-
interioridades del EC, se mostraria el suceso cornien- quetada con una expresion en forma de fraccion. La
parte superior indica el suceso (o sucesos) que hace(n)
que se produzca la transicion. La parte inferior indica
la accion que se produce como consecuencia del suce-
so. Asi, cuando la bandeja de papel esta llena, y el
b o t h de comienzo ha sido pulsado, el sistema pasa
del estado leyendo brdenes a1 estado realizando copias.
iI Copias hechas
invocar leer-op-ent
I ~l&a
invocar leer-op-ent
I
Observe que 10s estados no se corresponden necesa-
riamente con 10s procesos de forma biunivoca. Por
ejemplo, el estado realizando copius englobaria tanto
el proceso gesti6n de copiado como el proceso pro-
ducir visualizacibn de usuario que aparecen en la Figu-
~taScada
ra 12.15.
invocar realizar diagnostic0 del problema
En la seccion anterior, hernos visto las notaciones 10s completos y precisos mediante el analisis estruc-
basica y ampliada del analisis estructurado. Para turado. A lo largo de este estudio, se usarh la notacion
poder utilizarlas eficienternente en el analisis de presentada en la Seccion 12.4 y se presentarhn, con
requisitos del software, se ha de combinar esa nota- algun detalle, otras formas de notacion ya aludidas
ci6n con un conjunto de heuristicas que permitan a1 anteriormente.
ingeniero del software derivar un buen rnodelo de
analisis. Para ilustrar el uso de esas heuristicas, en el 12.6.1. Creaci6n de un diagrama Entidad-Relaci6n
resto de este capitulo utilizarernos una version adap-
tada de las arnpliaciones de Hatley y Pirbhai [HAT871 El diagrama de entidad-relacion permite que un ingeniero
a la notacion basica del analisis estructurado. del software especifique 10s objetos de datos que entran y
salen de un sistema, 10s atributos que definen las propie-
dades de estos objetos y las relaciones entre 10s objetos. A1
igual que la mayoria de 10s elernentos del modelo de ana-
El modelo de onblisis permite on eximen critito lisis y las relaciones entre objetos, el DER se construye de
de 10s requisitos del sohare desde tres puntos una forma iterativa. Se toma el enfoque siguiente:
diferentes de visto. Asegurondo lo utilidod de 10s DERs,
DFDs y DT€s cuondo constroyes el modelo
$uales son 10s pasos
En las secciones siguientes, se examina cada uno requeridos para construir
de 10s pasos que se debe seguir para desarrollar mode- un DER?
CAPfTULO 12 MODELADO DEL ANALISIS
1. Durante la recopilacion de requisitos, se pide que 10s ta entre el propietario y panel de control, sistema de
clientes listen las <<cosasnque afronta el proceso de seguridad y servicio de vigilancia. Existe una cone-
la aplicacion o del negocio. Estas mosasn evolu- xion unica entre el sensor y el sistema de seguridad, y
cionan en una lista de objetos de datos de entrada y asi sucesivamente.
de salida, asi como entidades extemas que producen Una vez que se han definido todas las conexiones,
o consumen informacion. se identifican una o varias parejas objeto-relacion para
2. Tomando objetos uno cada vez, el analista y el cliente cada conexion. Por ejemplo, se determina la conexion
definen si existe una conexion (sin nombrar en ese entre sensor y sistema de seguridad para que tenga las
punto) o no entre el objeto de datos y otros objetos. parejas objeto-relacion siguientes:
el sistema de seguridad supervisa el sensor
3. Siempre que existe una conexion, el analista y el
el sistema de seguridad activaldesactiva el sensor
cliente crean una o varias parejas de objeto-relacion.
el sistema de seguridad prueba el sensor
4. Para cada pareja objeto-relacion se explora la cardi- el sistema de seguridad programa el sensor
nalidad y la modalidad. Cada una de las parejas objeto-relacion anteriores se
5. Interactivamente se continuan 10s pasos del 2 a1 4 analizan para determinar la cardinalidad y la modali-
hasta que se hayan definido todas las parejas objeto- dad. Por ejemplo, en la pareja objeto-relacion el siste-
relacion. Es normal descubrir omisiones a medida ma de seguridad supervisa el sensor, la cardinalidad
que el proceso continua. Objetos y relaciones nue- entre sistema de seguridad y sensor es una a muchos.
vos se afiadirin invariablemente a medida que crezca La modalidad es una incidencia de sistema de seguri-
el numero de interacciones. dad (obligatoria) y a1 menos una incidencia de sensor
6. Se definen 10s atributos de cada entidad. (obligatorio).Mediante la notacion DER introducida en
7. Se formaliza y se revisa el diagrama entidad-relacion. la Seccion 12.3, la linea de conexion entre sistema de
8. Se repiten 10s pasos del 1 a1 7 hasta que se termina seguridad y sensor se modificaria, como se muestra en
el modelado de datos. la Figura 12.18. Se aplicaria un analisis similar a1 res-
to de 10s objetos de datos.
Para ilustrar el uso de estas directrices basicas, usa-
remos el ejemplo del sistema de seguridad HogarSe-
Supervisa
guro tratado en el Capitulo 11. A continuaci6n,
reproducimos la narrativa de procesamiento para Hogar-
Seguro (Seccion 11.3.3), la siguiente lista (parcial) de
<<cosas>>son importantes para el problema:
propietario
panel de control
sensores
sistema de seguridad I Prograrna I
servicio de vigilancia
FIGURA 12.18. Desarrollo de relaciones y cardinalidad1
rnodalidad.
Q
datos que deban almacenarse para permitir que opere el
Panel
de control Sensor sistema. Por ejemplo, el objeto sensor podria tener 10s
atributos siguientes: tipo de sensor, numero de identifi-
caci6n intema, localizaci6n de zona, y nivel de alarma.
~Existealguna guia util para nombres y 10s verbos que son sinonimos y no se apoyan
trear DFD's? directamente en el proceso de model ad^)^.
€I
De acuerdo con el ccanilisis gramaticab, comienza
Alarrna a aparecer un patron. Todos 10s verbos son procesos
de HogarSeguro, es decir, deben estar en liltima ins-
tancia representados como burbujas en el consiguien-
0-
Sensores
del sensor
del nhero
de telefono
// -,/
Dar formato \
-I- I- Tipo FIGURA 12.22. DFD de nivel I para HogarSeguro.
lnformacion de configuracion I Ya hemos seiialado que 10s sucesos o 10s elementos
de control se implementan como valores 16gicos (por
del tip0 serial ejemplo, verdadero o falso, si o no, 1 6 0) o como una
y ubicacion de alarma
lista discreta de condiciones (vacia, atascada, llena).
Datos Para seleccionar posibles candidatos a sucesos, se pue-
den sugerir las siguientes directrices:
con 10s valores
Listar todos 10s sensores que son <deidos>>por el soft-
ware.
Listar todas las condiciones de interrupci6n.
Listar todos 10s <<interruptores>>que son accionados
por el operador.
Listar todas las condiciones de datos.
De acuerdo con el analisis de nombres y verbos que
se aplic6 a la narrativa de procesamiento, revisar
FIGURA 12.21. DFD de nivel 2 que refina el proceso todos 10s ccelementos de control>>como posibles
monitorizar sensores. entradaslsalidas de ECs.
~ N G E N ~ E RDEL
~ A SOFTWARE. UN ENFOQUE PRACTICO
Describir el comportamiento del sistema identifi- La Figura 12.23 refleja un diagrama de transicibn de
cando sus estados; identificar como se alcanza cada estados para el modelo de flujo de nivel 1 de HogarSegu-
estado y definir las transiciones entre 10s estados. ro. Las flechas de transicion etiquetadas indican c6mo res-
Centrarse en las posibles omisiones -un error muy ponde el sistema a 10s sucesos a medida que pasa por 10s
comlin en la especificaci6n del control (por ejemplo, cuatro estados definidos en este nivel. Estudiando el DTE,
preguntarse si existe alguna otra forma en la que se un ingeniero del software puede determinar el comporta-
puede llegar a un estado o salir de 61)-. miento del sistema y, lo que es mas importante, compro-
bar si hay <<lagunas>> en el comportamiento especificado.
~ C O seleccionas
~ O eventos Una representaci6n algo diferente del mod0 de com-
potenciales para DFC, DTE y EC? portamiento es la tabla de activaci6n de procesos (TAP).
La TAP representa la informaci6n contenida en el DTE
En la Figura 12.22 se ilustra un DFC de nivel 1 para el dentro del context0 de 10s procesos, no de 10s estados.
software HogarSeguro. Entre 10s sucesos y 10s elementos Es decir, la tabla indica 10s procesos (burbujas) del
de control que aparecen e s t h suceso de sensor (por ejem- modelo de flujo que seran invocados cuando se pro-
plo, un sensor ha detectado una anomalia), indicador de duzca un suceso. Se puede usar la TAP como una guia
parpadeo (una seiial para que el monitor LCD parpadee), para el diseiiador que tenga que construir un controla-
e interruptor de comienzolparada (una seiial para encen- dor que controle 10s procesos representados en ese nivel.
der y apagar el sistema). Un suceso fluye a una ventana En la Figura 12.24 se muestra una TAP para el modelo
EC desde el mundo exterior, ello implica la activaci6n por de flujo de nivel 1 de HogarSeguro.
la EC de uno o mas procesos de 10s que aparecen en el La EC describe el comportamiento del sistema, pero no
DFC. Cuando un elemento de control emana de un pro- nos proporciona informaci6n sobre el funcionamiento inter-
ceso y fluye a una ventana EC, ello implica el control y la no de 10s procesos que son activados como resultado de ese
activaci6n de algun proceso o de una entidad extema. comportamiento. En la siguiente secci6n se estudia la nota-
ci6n del modelado que proporciona esa informaci6n.
lnterruptor de cornienzolparada
lnvocar monitory control
del sistema Leyendo 12.6.5. La especificaci6n del proceso
- entrada
del usuario
.
I
Para ilustrar el uso de la EP consideremos el proce- ta secundaria de contraseiias (estas pueden asignarse a
so que representa la transformaci6n del modelo de flu- invitados o trabajadores que necesitan entrar en la casa
jo de Hogarseguro (Figura 12.20). La EP para esta cuando el propietario no esti presente). Si la contraseiia
coincide con alguna de las de la lista, aontraseiia vali-
funci6n puede tomar la siguiente forma: dada = true> es pasada a la funcion visualizar mensajes
EP: proceso y estado. Si no existe coincidencia, <contraseiia valida-
da = false> se pasa a la funcion visualizar mensajes y
Procesar la contraseiia lleva a cab0 la validation de
estado.
todas las contraseiias del sistema HogarSeguro. Proce-
sar la contraseiia recibe una contraseiia de 4 digitos des- Si en esta etapa se desea incluir detalles algorit-
de la funcion interactuar con el usuario. La contraseiia micos adicionales, se puede incluir como parte de la
primer0 se compara con la contraseiia maestra almace-
nada en el sistema. Si a1 contrastar con la contraseiia
EP su representation en lenguaje de descripci6n de
maestra, <contraseiia validada = true> se pasa a la fun- programa. Sin embargo, muchos piensan que se debe
ci6n visualizar mensajes y estado. Si la comparacion no posponer la versi6n en LDP hasta que comience el
es correcta, 10s cuatro digitos se comparan con una lis- diseiio.
El modelo de analisis acompaiia representaciones de c6mo lo usan (por ejemplo, como entrada a1 proceso,
objetos de datos, funciones y control. En cada repre- como salida del proceso, como almacCn de datos,
sentaci6n 10s objetos de datos y/o elementos de control como entidad extema).
juegan un papel importante. Por consiguiente, es nece- Descripcibn del contenido+l contenido represen-
sario proporcionar un enfoque organizado para repre- tad0 mediante una notation.
sentar las caracteristicas de cada objeto de datos y
Inforrnacidn adicional--otra informaci6n sobre 10s
elemento de control. Esto se realiza con el diccionario
de datos. tipos de datos, 10s valores implicitos (si se conocen),
Se ha propuesto el diccionario de datos como gra- las restricciones o limitaciones, etc.
mhtica casi formal para describir el contenido de 10s Una vez que se introducen en el diccionario de
objetos definidos durante el anhlisis estructurado. Esta datos un nombre y sus alias, se debe revisar la con-
importante notaci6n de modelado ha sido definida de la sistencia de las denominaciones. Es decir, si un equi-
siguiente forma [YOU89]: po de anhlisis decide denominar un elemento de datos
El diccionario de datos es un listado organizado de todos reciCn derivado como xyz, per0 en el diccionario ya
10s elementos de datos que son pertinentes para el sistema, con existe otro llamado xyz, la herramienta CASE que
definiciones precisas y rigurosas que permiten que el usuario soporta el diccionario muestra un mensaje de alerta
y el analista del sistema tengan una misma comprensi6n de las sobre la duplicidad de nombres. Esto mejora la con-
entradas, salidas, de las componentes de 10s almacenes y [tam- sistencia del modelo de analisis y ayuda a reducir
biCn] de 10s cdculos intermedios.
errores.
La informacion de ~ d 6 n d ese usa/c6mo se usa>>se
~ C O representar
~ O
el contenido de 10s objetos
registra automhticamente a partir de 10s modelos de
de datos que han sido
flujo. Cuando se crea una entrada del diccionario, la
identificados?
herramienta CASE inspecciona 10s DFD y 10s DFC
para determinar 10s procesos que usan el dato o la
Actualmente, casi siempre se implementa el dic- informacion de control y como lo usan. Aunque esto
cionario de datos como parte de una <<herramienta pueda no parecer importante, realmente es una de las
CASE de analisis y diseiio estructurados>>.Aunque mayores ventajas del diccionario. Durante el anhli-
el formato del diccionario varia entre las distintas sis, hay una corriente casi continua de cambios. Para
herramientas, la mayoria contiene la siguiente infor- proyectos grandes, a menudo es bastante dificil deter-
maci6n: minar el impact0 de un cambio. Algunas de las pre-
nornbre+l nombre principal del elemento de datos guntas que se plantea el ingeniero del software son
cridonde se usa este elemento de datos? iquC mas hay
o de control, del almacCn de datos, o de una entidad
externa. que cambiar si lo modificamos? j c d l sera el impac-
to general del cambia?,,. A1 poder tratar el dicciona-
alias-otros nombres usados para la primera rio de datos como una base de datos, el analista puede
entrada. hacer preguntas basadas en ~ d 6 n d ese usa/c6mo se
ddnde se usalcdrno se usa-un listado de 10s proce- usa>>y obtener respuestas a peticiones similares a las
sos que usan el elemento de datos o de control y anteriores.
lNGENlERfA DEL SOFTWARE. UN ENFOQUE PRACTICO
Durante 10s dltimos afios se han utilizado otros mCto- Te'cnicas de analisis y disefio estructurado (TADE)
dos valiosos de analisis de requisitos del software en la [ROS77, ROS851
industria. Mientras que todos siguen 10s principios del son presentadas dentro del sitio web SEPA para 10s lecto-
anilisis operational tratados en el Capitulol 1,cada uno res interesados en profundizar en el modelado del an6lisis.
introduce una notacidn y heunstica diferentes para cons-
truir el modelo de anhlisis. Una revision de tres irnpor-
tantes mCtodos de anhlisis:
Desarrollo de sistemas estructurados de datos
(DSED) [WAR81,ORR811
Desarrollo de sistemas Jackson (DSJ) [SAC831 DSSD, JSD, y SADT
El anhlisis estructurado es el mCtodo mhs usado para el de todos 10s objetos de datos que son importantes para
modelado de requisitos, utiliza el modelo de datos y el el sistema. Los sistemas de datos y flujo de control son
modelo de flujos para crear la base de un adecuado la base de representation de la transformaci61-1de datos
modelo de anhlisis. Utilizando el diagrama entidad-rela- y control. A1 mismo tiempo, estos mCtodos son usados
cion, el ingeniero del software crea una representacitin para crear un modelo funcional del software y proveer-
CAPiTULO 12 M O D E L A D O DEL ANALISIS
se de un mecanismo para dividir funciones. DespuCs, de datos convencionales, per0 ahora hay ampliacio-
. crea un modelo de comportamiento usando el diagra- nes que permiten aplicar el mCtodo a 10s sistemas de
ma de transici6n de estados y un modelo de contenido tiempo real.
de 10s datos con un diccionario de datos. Las especifi- El analisis estructurado esta soportado por una
caciones de 10s procesos y del control proporcionan una larga lista de herramientas CASE que ayudan en la
elaboration adicional de 10s detalles. creacion de cada elemento del modelo y tambiCn
La notacion original para el andisis estructurado en el mantenimiento de la consistencia y de la
fue desarrollada para aplicaciones de procesamiento correccion.
[BRU88] Bruyn, W. et al., ((ESML: An Extended Systems [ROS77] Ross, D., y K. Schoman, ((StructuredAnalysis for
Modeling Language Based on the Data Flow Diagram,,, Requirements Definitions)),IEEE Trans. Software Engi-
ACM Software Engineering Notes, vol. 13, n." 1, Enero neering, vol. 3, n." 1 , Enero 1977, pp. 6-15.
1988, pp. 58-67. [ROS84] Ross, D., ((Applications and Extensions of SADTD,
[CHE77] Chen, P., The Entity-Relationship Approach to Logi- IEEE Computer, vol. 18, n." 4, Abril 1984, pp. 25-35.
cal Database Design, QED Information systems, 1977. [STE74] Stevens, W.P., G.J. Myers y L.L. Constantine,
[DEM79] DeMarco, T., Structured Analysis and System Spe- ccstructured Design,,, IBM Systems Journal, vol. 13, n." 2,
rrfirartion, Prentice-Hall, 1979. 1974, pp. 115-139.
[GAN82] Gane, T., y C. Sarson, Structured Systems Analy- [TIL93] Tillman, G.A., A Practical Guide to Logical Data
sis, McDonnell Douglas, 1982. Modeling, McGraw-Hill, 1993.
[HAT871 Hatley, D.J., e LA. Pirbhai, Strategies,for Real- [WAR811 Wamier, J.D., Logical Construction of Programs,
Time System Specification, Dorset House, 1987. Van Nostrand Reinhold, I98 1.
[JAC83] Jackson, M.A., System Development, Prentice-Hall, [WAR851 Ward, P.T., y S.J. Mellor, Structured Development
1983. for Real-Time Systems, tres volumenes, Yourdon Press, 1985.
[ORR8 11 Orr, K.T., Structured Requirements Definition, Ken [YOU781 Yourdon, E.N., y L.L. Constantine, Structured
Orr & Associates, Inc., Topeka, KS, 1981. Design, Yourdon Press, 1978.
[PAC801 Page-Jones, M., The Practical Guide to Structured [YOU891 Yourdon, E.N., Modern StructuredAnalysis, Pren-
Systems Design, Yourdon Press, 1980. tice Hall, 1990.
12.1. Obtenga al menos tres de las diferencias que se men- 12.4. Dibuje un modelo de nivel de contexto (DFD de nivel
cionan en la secci6n 12.1 y escriba un breve articulo que 0) para uno de 10s cinco sistemas que se listan en el problema
refleje el cambio a lo largo del tiempo de la concepci6n 12.2. Escriba una descripcidn de procesamiento a nivel de con-
del aniilisis estructurado. En una secci6n de conclusiones, texto para el sistema.
sugiera formas en las que crea que cambiarh el mCtodo en 12.5. Mediante el DFD de nivel de contexto desarrollado en
el futuro. el problema 12.4, desarrolle diagramas de flujo de datos de
12.2. Se le pide que construya uno de 10s sistemas siguientes: nivel 1 y nivel2. Utilice un ccanalizador gramaticaln en la des-
un sistema de registro en cursos basado en red para su uni- cripcidn de procesamiento a nivel de contexto para que se ini-
versidad cie en ese tema. Recuerde especificar todo el flujo de
informacidn etiquetando todas las flechas entre burbujas. Uti-
un sistema procesamiento de transacciones basado en inter-
lice nombres significativos para cada transformaci6n.
net para un almacCn de computadoras
un sistema simple de facturas para una empresa pequeiia 12.6. Desarrolle DFC, EC, EP y un diccionario de datos para
el sistema que seleccion6 en el problema 12.2. Intente cons-
un producto de software que sustituya a rolodex construi- truir su modelo tan completo como sea posible.
do en un telCfono inaliimbrico
12.7. ~Significael concept0 de continuidad del flujo de infor-
un producto de libro de cocina automatizado construido en
macidn que si una flecha de flujo aparece como entrada en el
una cocina elkctrica o en un microondas
nivel 0, entonces en 10s subsiguientes niveles debe aparecer
Seleccione el sistema que le sea de inter& y desarrolle un una flecha de flujo como entrada? Explique su respuesta.
diagrama entidad-relacid; que describa 10s objetos de datos,
relaciones y atributos. 12.8. Usando las arnpliaciones de Ward y Mellor descritas en
las figuras 12.13. iC6m0 encaja la EC que se indica en la figu-
12.3. ~ Q u C
diferencia hay entre cardinalidad y modalidad? ra 12.13? Ward y Mellor no usan esa notacidn.
DEL SOFTWARE. UN ENFOQUE PRACTICO
INGENIER~A
12.9. Usando las ampliaciones de Hatley y Pirbhai, rehaga el (determinada a partir de su tamafio). A cada bache se le
modelo de flujo contenido en la Figura 12.13. iC6mo encaja asocian datos de-petici6n de obra, incluyendo la ubicaci6n
el modelo de control que se indica en la Figura 12.13? Hatley y el tamaiio, la brigada, el equipamiento asignado, las horas
y Pirbhai no usan esa notaci6n. de reparacibn, el estado del bache (obra en curso, repara-
12.10. Describa con sus propias palabras un flujo de sucesos. do, reparaci6n temporal, no reparado), la cantidad de mate-
rial de relleno usado y el coste de la reparacidn (calculado
12.11. Desarrolle un modelo de flujo completo para el soft- con las horas dedicadas, el numero de trabajadores, el mate-
ware de fotocopiadora discutido en la secci6n 12.5. Puede uti- rial y el equipamiento usados). Finalmente, se crea un archi-
lizar las ampliaciones de Ward y Mellor o las de Hatley y vo de dafios para mantener la informaci6n sobre 10s dafios
Pirbhai. Aseglirese de desarrollar para el sistema un diagrama reportados debidos a la existencia del bache, incluyendo
de transicion de estados detallado. el nombre del ciudadano, su direccion, su numero de tele-
12.12. Complete la description de procesamiento para el soft- fono, el tipo de dafio y el coste de subsanamiento del dafio.
ware HogarSeguro que se ha presentado en la Figura 12.20, El sistema SSRB es un sistema interactive.
describiendo 10s mecanismo de interaccion entre el usuario y Utilice el anilisis estructurado para modelar SSRB.
el sistema. ~ C a m b i a rsu
i informacidn adicional 10s modelos
de flujo de HogarSeguro que aparecen en este capitulo? Si es 12.14. Se va a desarrollar un sistema de procesamiento de tex-
asi, jcomo? tos basados en computadoras personales. Investigue durante algu-
nas horas sobre el area de aplicacion y lleve a cab0 una reunion
12.13. El departamento de obras publicas de un gran ciudad TFEA (Capitulo 11) con sus compaiierosde clase para un mode-
ha decidido desarrollar un sistema de seguimiento y repara- lode requisitos del sistema utilizando el anilisis estructurado (su
cicin de baches (SSRB)basado en pagina web. Con 10s siguien- profesor le ayudar5a coordinarlo). Construya un modelo de requi-
tes requisitos: sitos del sistema mediante el anilisis estructurado.
Los ciudadanos pueden conectarse a la pagina e infor-
12.15. Se va a desarrollar el software para un videojuego. Pro-
mar sobre la situacidn y la importancia del bache. A medi-
ceda como en el problema 12.14.
da que se informa sobre cada bache, se le asigna un numero
de identificacion y se guarda con la calle en la que se 12.16. Contacte con cuatro o cinco vendedores de herramien-
encuentra, su tamafio (en una escala de 1 a lo), su posi- tas CASE para anilisis estructurado. Revise sus folletos y escri-
cidn (en el medio, a un lado, etc.), su distrito (determina- ba un breve articulo que resuma las caracteristicas generales
do a partir de la calle) y una prioridad de reparacidn y las que se distingan a unas herramientas de las otras.
Existen literalmente docenas de libros publicados sobre el ani- Analysis and Design Methodology, Van Nostrand Reinhlod,
lisis estructurado. Todos cubren el tema de forma adecuada, 1990) y Hares (SSADMfor the Advanced Practitioner, Wiley,
per0 solo unos pocos constituyen magnificos trabajos. El libro 1990) describe SSADM como una variacion del anilisis
de DeMarco [DEM79] sigue siendo una buena introduccion estructurado que se utiliza enormemente por toda Europa y
de la notacidn basica. Los libros de Hoffer et al. (Modern Sys- Estados Unidos.
tems Anulysis and Design, Addison-Wesley, 2.aed., 1998),Ken- Flynn et al. (Information Modelling: An International Pers-
dall y Kendall (Systems Analysis and Design, 2." ed., Prentice pective, Prentice Hall, 1996), Reingruber y Gregory (Data
Hall, 1998), Davis y Yen (The Information System Consultant's Modeling Handbook, Wiley, 1995) y Tillman [TIL93] pre-
Handbook: Systems Analysis and Design, CRCPress,1998), sentan manuales detallados para crear modelos de datos de
Modell (A Professional's Guide to Systems Analysis, 2." ed., calidad de industria. Kim y Salvatores (&omparing Data
McGraw-Hill, 1996),Robertson and Robertson (Complete Sys- Modeling Formalisms)), Communications of the ACM, June
tems Analysis, 2 vols., Dorset House, 1994), y Page-Jones (The 1995) han escrito una comparacion excelente de mCtodos de
Practical Guide to Structured Systems Design, 2." ed., Prenti- modelado de datos. Un libro interesante de Hay (Data Mode-
ce Hall, 1988) son referencias muy valiosas. El libro de Your- ling Patterns, Dorset House, 1995) presenta 10s qatronesx
don sobre este tema [YOU891 sigue siendo el tratado m i s comunes de modelos de datos que se encuentran en muchas
extenso publicado hasta la fecha. empresas diferentes. En Kowal (Behaviour Models: Speci-
Para mayor Cnfasis en la ingenieria, [WAR851 y [HAT871 fying User's E.xpectations, Prentice-Hall, 1992) se puede
son 10s libros preferidos. En cualquier caso, Edwards (Real- encontrar un tratamiento detallado del modelado de compor-
Time Structured Methods: Systems Analysis, Wiley, 1993) tra- tamiento.
ta el anilisis de sistemas en tiempo real con gran profundidad, Una amplia variedad de fuentes de information sobre
presentando diagramas de ejemplos litiles sobre aplicaciones el anilisis estructurado estin disponibles en internet. Una
reales. lista actualizada de paginas web que son interesantes sobre
Se han desarrollado muchas variaciones sobre el analisis el concept0 y mCtodos d e anilisis se encuentran en
estructuradodurante la ultima dkada. Cutts (StructuredSystems
CONCEPTOS Y PRlNClPlOS
DE DISENO
Palabras c l a v e
abstracci6n
atoplamiento
arquitedura
223
231
226
E L objetivo de 10s disefiadores es producir un modelo o representaci6n de una entidad que
se sera construida a posteriori. Belady describe el proceso mediante el cual se desarro-
Ila el modelo de disefio [BEL8 11:
En coalquier proceso de disefio existen dos fases importantes: la diversificacicin y la convergencia. La
cohesi6n 230 diversificacidn es la adqrrisicidrr de un repertorio de alternativas, de un material primitivo de diseiio: com-
conceptos de diseiio 223 ponentes, soluciones de componentes y conocimiento, todo dentro de cattilogos, de libros de texto y en la
mente. Durante la convergencia, el diseiiador elige y combina 10s elementos adecuados y extraidos de este
criterios de calidad 221
repertorio para aatisfacer 10s objetivos del diseiio, de la misma manera a como se establece en el documento
cstructura de datos 228 de 10s requisites, y de la manera en que se acordd con el cliente. La segunda fase es la elitnirruc,idt~gradual
heuristica de diseiio 231 de cualquier configuracicin de componentes except0 de una en particular. y de aqui la creacicin del product0
independencia final.
funtional . 229 La diversificaci6n y la convergencia combinan intuicidn y juicio en funci6n de la experien-
modularidad 224 cia en construir entidades similares; un conjunto de principios y/o heuristics que proporcionan
ocultackn la forma de guiar la evoluci6n del modelo; un conjunto de criterios que posibilitan la calidad
de informacih 229 que se va a juzgar, y un proceso de iteracidn que por liltimo conduce a una representacidn final
particion 227 de disefio.
principios de diseiio 222
refinamiento 224
~QuiCn
lo hacc? El ingeniero del soft-
ware e s quien diseiia 10s sistemas ~CBrnopuedo edar seguro de que lo
basados en computadora, pero 10s he hecho correctamente?En cada
conocimientos que se requieren en LCuLles sen 10s pasos? El diseiio etapa se revison 10sproductos del dise-
cadu nivel de diseiio Iuncionan de dife- camienza con el modelo de 10s requi- iio del software en cuanto a claridad,
rentes maneras. En el nivel de datos y sites. Se trabaja por transformar este canecci6n. fiializaci6n y consistencia,
de arquitectura, el diseiio se centra en mode10 y abtener cuatro niveles de y se comparan con 10s requisitos y unos
10s p ~ t r o n e sde la misma manera a detalles de diseiio: la estructura de con otros.
El disefio del software, a1 igual que 10s enfoques de disefio de ingenieria en otras discipli-
nas, va cambiando continuamente a medida que se desarrollan mCtodos nuevos, anilisis mejo-
res y se amplia el conocimiento. Las metodologias de disefio del software carecen de la
profundidad, flexibilidad y naturaleza cuantitativa que se asocian normalmente a las discipli-
nas de diseiio de ingenieria mAs cliisicas. Sin embargo, si existen mdtodos para el diseiio del
software; tambidn se dispone de calidad de disefio y se pueden aplicar notaciones de diseiio.
En este capitulo se explorariln los conceptos y principios fundamentales que se pueden aplicar
a todo diseiio de software. En los Capitulos 14, 15, 16 y 22 se examinan diversos mCtodos de
disefio de software en cuanto a la manera en que se aplican a1 disefio arquitect6nic0, de inter-
faz y a nivel de componentes.
--- - - -----
, 13.1 .DISERO DEL SOFTWARE E I N G E N I E R ~ ADEL SOFTWARE __
El disefio de software es tanto un proceso como un El disefio deberci presentar uniformidad e integracibn.
modelo. El proceso de diseiio es una secuencia de pasos Un disefio es uniforme si parece que fue una persona
que hacen posible que el disefiador describa todas 10s la que lo desarroll6 por completo. Las reglas de estilo
aspectos del software que se va construir. Sin embargo, y de formato deberin definirse para un equipo de
es importante destacar que el proceso de diseiio sim- disefio antes de comenzar el trabajo sobre el disefio.
plemente no es un recetario. Un conocimiento creativo, Un disefio se integra si se tiene cuidado a la hora de
experiencia en el tema, un sentido de lo que hace que definir interfaces entre 10s componentes del disefio.
un software sea bueno, y un compromiso general con El diseiio deberci estructurarse para admitir cam-
la calidad son factores criticos de Cxito para un disefio bios. Los conceptos de disefio estudiados en la sec-
competente. ci6n siguiente hacen posible un disefio que logra este
El modelo de disefio es el equivalente a 10s planes principio.
de un arquitecto para una casa. Comienza representan- El disefio deberci estructurarse para degradarse poco
do la totalidad de todo lo que se va a construir (por ejem- a poco, incluso cuando se enfrenta con datos, suce-
plo, una representaci6n en tres dimensiones de la casa) sos o condiciones de operacibn aberrantes. Un soft-
y refina lentamente lo que va a proporcionar la guia para ware bien disefiado no deberi nunca explotar como
construir cada detalle (por ejemplo, el disefio de fonta- una <<bombs>>. Deberi disefiarse para adaptarse a cir-
neria). De manera similar, el modelo de disefio que se cunstancias inusuales, y si debe terminar de funcio-
crea para el software proporciona diversas visiones dife- nar, que lo haga de forma suave.
rentes de software de computadora.
Los principios bisicos de disefio hacen posible que
el ingeniero del software navegue por el proceso de dise-
fio. Davis [DAV95] sugiere un conjunto' de principios
para el disefio del software, 10s cuales han sido adapta- l o consistencio del diseiio y lo uniformidod es crucial
dos y ampliados en la lista siguiente: cuondo se von o construir sistemus grondes. Se deber6
En el proceso de disefio no deberci utilizarse <<ore- estoblecer un coniunto de reglos de diseiio poro el equipo
jerasu. Un buen disefiador deberi tener en cuenta del sohore ontes de comenzor o troboior.
enfoques alternativos, juzgando todos 10s que se El disefio no es escribir cbdigo y escribir cbdigo no
basan en 10s requisitos del problema, 10s recursos es disefiar. Incluso cuando se crean disefios proce-
disponibles para realizar el trabajo y 10s conceptos dimentales para componentes de programas, el nivel
de disefio presentados en la Secci6n 13.4. de abstracci6n del modelo de disefio es mayor que
El disefio deberci poderse rastrear hasta el modelo el c6digo fuente. Las dnicas decisiones de disefio
de ancilisis. Dado que un solo elemento del modelo realizadas a nivel de codificaci6n se enfrentan con
de disefio suele hacer un seguimiento de 10s mdlti- pequefios datos de implementaci6n que posibilitan
ples requisitos, es necesario tener un medio de ras- codificar el disefio procedimental.
trear como se han satisfecho 10s requisitos por el El disefio deberci evaluarse enfuncibn de la calidad
modelo de disefio. mientras se va creando, no despuks de terminarlo.
El diseiio no deberci inventar nada que ya este' Para ayudar a1 disefiador en la evaluaci6n de la cali-
inventado. Los sistemas se construyen utilizando dad se dispone de conceptos de disefio (Secci6n 13.4)
un conjunto de patrones de disefio, muchos de 10s y de medidas de disefio (Capitulos 19 y 24).
cuales probablemente ya se han encontrado antes. El diseiio deberci revisarse para minimizar 10s errores
Estos patrones deberin elegirse siempre como una conceptuales (semcinticos).A veces existe la tenden-
alternativa para reinventar. Hay poco tiempo y 10s cia de centrarse en minucias cuando se revisa el disefio,
recursos son limitados. El tiempo de disefio se olvid5ndose del bosque por culpa de 10s irboles. Un
debera invertir en la representaci6n verdadera de equipo de disefiadores deberi asegurarse de haber
ideas nuevas y en la integraci6n de esos patrones afrontado 10s elementos conceptuales principales antes
que ya existen. de preocuparse por la sintaxis del modelo del disefio.
El diseho deberci ccminimizar la distancia intelec-
tualu [DAV95] entre el software y el problema como
si de la misma vida real se tratara. Es decir, la estruc-
tura del disefio del software (siempre que sea posi- En el Capitulo 8 se presenton Im direchices porn llevar
o cabo revisiines de diiao deaivas.
ble) imita la estructura del dominio del problema.
Cuando 10s principios de diseiio descritos anterior- ejemplo, velocidad, fiabilidad, grado de correcci611, usa-
. mente se aplican adecuadamente, el ingeniero del soft- bilidad)2. Losfactores de calidad internos tienen impor-
ware crea un diseiio que muestra 10s factores de calidad tancia para 10s ingenieros del software. Desde una
tanto intemos como extemos [MEY88]. Losfactores de perspectiva tCcnica conducen a un disefio de calidad alta.
calidad externos son esas propiedades del software que Para lograr 10s factores de calidad intemos, el disefiador
pueden ser observadas fhcilmente por 10s usuarios (por deberh comprender 10s conceptos de diseiio bhsicos.
Durante las 6ltimas cuatro dCcadas se ha experimenta- mentarse directamente. Wasserman [WAS831 propor-
do la evoluci6n de un conjunto de conceptos funda- ciona una definici6n 6til:
mentales de diseiio de software. Aunque el grado de La noci6n psicol6gica de ccabstracci6n~permite concen-
inter& en cada concept0 ha variado con 10s aiios, todos trarse en un problema a algbn nivel de generalizaci6n sin tener
han experimentado el paso del tiempo. Cada uno de ellos en consideraci6n 10s datos irrelevantes de bajo nivel; la utili-
proporcionarhn la base de donde el diseiiador podra apli- zaci6n de la abstracci6n tambikn permite trabajar con concep
car 10s mCtodos de diseiio rnhs sofisticados. Cada uno tos y t6rminos que son familiares en el entorno del problema
sin tener que transformarlos en una eshuctura no familiar.. .
ayudarh a1 ingeniero del software a responder las pre-
guntas siguientes: Cada paso del proceso del software es un refina-
~ Q u Ccriterios se podrhn utilizar para la partici6n del miento en el nivel de abstracci6n de la soluci6n del soft-
software en componentes individuales? ware. Durante la ingenieria del sistema, el software se
iC6m0 se puede separar la funci6n y la estructura de asigna como un elemento de un sistema basado en com-
putadora. Durante el anhlisis de 10s requisitos del soft-
datos de una representacibn conceptual del software?
ware, la soluci6n del software se establece en estos
existe en criterios uniformes que definen la calidad tkrminos: ccaquellos que son familiares en el entomo del
tCcnica de un diseiio de software? problema~.A medida que nos adentramos en el proce-
M.A. Jackson una vez dijo: <<Elcomienzo de la sabi- so de diseiio, se reduce el nivel de abstracci6n. Final-
dun'a para un ingeniero del software es reconocer la dife- mente el nivel de abstracci6n rnhs bajo se alcanza cuando
rencia entre hacer que un programa funcione y conseguir se genera el c6digo fuente.
que lo haga correctamente,,. [JAC875] Los conceptos de A medida que vamos entrando en diferentes niveles
diseiio de software fundamentales proporcionan el mar- de abstracci6n, trabajarnos para crear abstracciones pro-
co de trabajo necesario para conseguir ccque lo haga cedimentales y de datos. Una abstraccidn procedimen-
correctamenten. tales una secuencia nombrada de instrucciones que tiene
una funci6n especifica y limitada. Un ejemplo de abs-
tracci6n procedimental seria la palabra ccabrir~para una
puerta. ccAbrir* implica una secuencia larga de pasos
procedimentales (por ejemplo, llegar a la puerta; alcan-
zar y agarrar el pomo de la puerta; girar el pomo y tirar
de la puerta; separarse a1 mover la puerta, etc.).
13.4.1. Abstraccion
Cuando se tiene en consideracion una soluci6n modu- Como diseiodor, troboje mucho y duro poro derivor
lar a cualquier problema, se pueden exponer muchos obstmcciones tonto procedimentales coma de dotos
niveles de abstraccidn. En el nivel rnhs alto de abstrac- que sirvon poro el problemo que tenyo en ese momento,
ci6n, la soluci6n se pone como una medida extensa pero que tombiin se puedon volver o utilizor en oms
empleando el lenguaje del entorno del problema. En situociones.
niveles inferiores de abstracci6n, se toma una orienta-
ci6n rnhs procedimental. La terminologia orientada a Una abstraccidn de datos es una colecci6n nombra-
problemas va emparejada con la terminologia orienta- da de datos que describe un objeto de datos (Capitulo
. da a la implementaci6n en un esfuerzo por solucionar 12). En el context0 de la abstracci6n procedimental
el problema. Finalmente, en el nivel rnhs bajo de abs- abrir, podemos definir una abstracci6n de datos llama-
traccibn, se establece la soluci6n para poder imple- da puerta. A1 igual que cualquier objeto de datos, la
que la complejidad percibida cuando se considera cada iComo se puede evaluar un metodo
problema por separado. Teniendo en cuenta la ecuacion de diseiio para determinar si va a
(13.2) y la condicion implicada por la ecuacion (13. l), tondutir a una modularidad efettiva?
se establece que
Capacidad de descomposicion modular. Si
un mCtodo de disefio proporciona un mecanismo
Esto lleva a una conclusion: <<divide
y vencerasn --es
sistematico para descomponer el problema en sub-
mas fhcil resolver un problema complejo cuando se rom-
problemas, reducira la complejidad de todo el pro-
pe en piezas manejables-. El resultado expresado en la
blema, consiguiendo de esta manera una solution
ecuacion (13.3) tiene implicaciones importantes en lo que
modular efectiva.
respecta a la modularidad y a1 software. Es, de hecho, un
argument0 para la modularidad. Capacidad de empleo de componentes modu-
lares. Si un mCtodo de disefio permite ensamblar 10s
componentes de disefio (reusables) existentes en un
sistema nuevo, producira una solucion modular que
No modulorice de mbs. lo simplicidod de coda modulo no inventa nada ya inventado.
se eclipsorb con lo complejidod de lo integrocion. Capacidad de comprension modular. Si un
modulo se puede comprender como una unidad auto-
Es posible concluir de la ecuacion (13.3) que si sub- noma (sin referencias a otros modulos) sera mas facil
dividimos el software indefinidamente, el esfuerzo que de construir y de cambia.
se requiere para desarrollarlo sena minimo. Desgracia-
damente, intervienen otras fuerzas, que hacen que esta Caste total
I del software
conclusion sea (tristemente) falsa. Como muestra la
Figura 13.2, el esfuerzo (coste) para desarrollar un modu-
lo de software individual disminuye a medida que
aumenta el numero total de modulos. Dado el mismo
conjunto de requisitos, tener mas modulos conduce a un
tamafio menor de modulo. Sin embargo, a medida que
aumenta el numero de modulos, tambiCn crece el esfuer-
zo (coste) asociado con la integracion de modulos. Estas
caractensticas conducen tambiCn a la curva total del cos- I II
t
te o esfuerzo que se muestra en la figura. Existe un nume- Nurnero de rnodulos
ro M de modules que daria como resultado un coste FIGURA 13.2. Modularidad y costes de software.
minimo de desarrollo, aunque no tenemos la sofistica-
ci6n necesaria para predecir M con seguridad. Continuidad modular. Si pequefios cambios en
Las curvas que se muestran en la Figura 13.2 pro- 10s requisitos del sistema provocan cambios en 10s
porcionan en efecto una guia util cuando se tiene en modulos individuales, en vez de cambios generali-
consideracion la modularidad. La modularidad debe- zados en el sistema, se minimizara el impacto de 10s
ra aplicarse, per0 teniendo cuidado de estar proximo efectos secundarios de 10s cambios.
a M. Se debera evitar modularizar de mas o de menos.
Proteccion modular. Si dentro de un modulo se
Pero, jc6m0 conocemos el entorno de M? ~ C u a n t ose
produce una condicion aberrante y sus efectos se
debera modularizar el software? Para responder a estas
limitan a ese modulo, se minimizara el impacto de
preguntas se deberan comprender 10s conceptos de
10s efectos secundarios inducidos por 10s errores.
disefio que se estudiaran mas adelante dentro de este
capitulo. Finalmente, es importante destacar que un sistema
se puede disefiar modularmente, incluso aunque su
implernentacion deba ser ccmonolitica>>. Existen situa-
Los rnbtodos de diseiio se estudion en 10s CopVulos 14, ciones (por ejemplo, software en tiempo real, software
15,16y22. empotrado) en donde no es admisible que 10s subpro-
gramas introduzcan sobrecargas de memoria y de velo-
Cuando se tiene en consideracion la modularidad cidad por minimos que Sean (por ejemplo, subrutinas,
surge otra pregunta importante. jC6mo se define un procedimientos). En tales situaciones el software podra
modulo con un tamafio adecuado? La respuesta se y debera disefiarse con modularidad como filosofia pre-
eilcuentra en 10s mCtodos utilizados para definir 10s dominante. El c6digo se puede desarrollar <<enlines,,.
m6dulos dentro de un sistema. Meyer [MEY88] define Aunque el c6digo fuente del programa puede no tener
cinco criterios que nos permitirh evaluar un mCtodo de un aspect0 modular a primera vista, se ha mantenido la
disefio en relacion con la habilidad de definir un siste- filosofia y el programa proporcionaa 10s beneficios de
ma modular efectivo: un sistema modular.
INGENlERfA DEL SOFTWARE. UN ENFOQUE PRACTICO
3
Referencia Web
La STARS Software Architecture Technology Guide
proporciono mas informocion y recursos en la direction
tipos similares de aplicaciones. Los modelos dink-
micos tratan 10s aspectos de comportamiento de la
arquitectura del programa, indicando c6mo puede
cambiar la estructura o la configuraci6n del sistema
en funci6n de 10s acontecimientos externos. Los
www-ast.tds-gn.lmco.com/arch/guide.html
modelos de proceso se centran en el diseiio del pro-
ceso tCcnico de negocios que tiene que adaptar el sis-
Un objetivo del diseiio del software es derivar una
tema. Finalmente 10s modelos funcionales se pueden
representaci6n arquitect6nica de un sistema. Esta repre-
utilizar para representar la jerarquia funcional de un
sentaci6n sime como marco de trabajo desde donde se
sistema.
llevan a cabo actividades de disefio mhs detalladas. Un
conjunto de patrones arquitect6nicos permiten que el
ingeniero del software reutilice 10s conceptos a nivel de
disefio.
Para representar el diseiio arquitecthnicose utilizon
cinco fipos diferentes de modelos.
Para representar la jerarquia control de aquellos esti- La jerarquia de control tambien representa dos carac-
10s arquitect6nicos que se avienen a la representation se tensticas sutiles diferentes de la arquitectura del soft-
utiliza un conjunto de notaciones diferentes. El diagra- ware: visibilidad y conectividad. La visibilidad indica
ma mas corntin es el de forrna de arb01 (Fig. 13.3) que el conjunto de componentes de programa que un com-
representa el control jerirquico para las arquitecturas de ponente dado puede invocar o utilizar como datos, inclu-
llamada y de retorno4. Sin embargo, otras notaciones, so cuando se lleva a cab0 indirectamente. Por ejemplo,
tales como 10s diagramas de Warnier-Orr [ORR77] y un modulo en un sistema orientado a objetos puede acce-
Jackson [JAC83] tambien se pueden utilizar con igual der a1 amplio abanico de objetos de datos que haya here-
efectividad. Con objeto de facilitar estudios postenores dado, ahora bien solo utiliza una pequefia cantidad de
de estructura, definiremos una sene de medidas y terrni- estos objetos de datos. Todos 10s objetos son visibles
nos simples. Segun la Figura 13.3, la profundidad y la para el modulo. La conectividad indica el conjunto de
anchura proporcionan una indicacion de la cantidad de componentes que un componente dado invoca o utiliza
niveles de control y el cimbito de control global, respec- directamente como datos. Por ejemplo, un modulo que
tivamente. El grado de salida es una medida del nume- hace directamente que otro modulo empiece la ejecu-
ro de modulos que se controlan directamente con otro cion esta conectado a el5.
modulo. El grado de entrada indica la cantidad de modu-
10s que controlan directamente un modulo dado.
13.4.6. Divisi6n estructural
Si el estilo arquitectonico de un sistema es jerarquico,
Grado de salida la estructura del programa se puede dividir tanto hori-
zontal como verticalmente. En la Figura 13.4.a la par-
ticion horizontal define ramas separadas de la jerarquia
Profundidad
modular para cada funcion principal del programa. Lo
mddulos de control, representados con un sombreado
mis oscuro se utilizan para coordinar la comunicaci6n
entre ellos y la ejecucion de las funciones. El enfoque
mas simple de la division horizontal define tres parti-
ciones --entrada, transformation de datos (frecuente-
mente llamado procesamiento) y salida-. La division
horizontal de la arquitectura proporciona diferentes
ventajas:
FIGURA 13.3.Terminologias de estructura para un estilo proporciona software mas facil de probar
arquitectonico de llarnada y retorno.
conduce a un software mas facil de mantener
La relacion de control entre 10s modulos se expresa propaga menos efectos secundarios
de la manera siguiente: se dice que un mbdulo que con-
trola otro modulo es superior a 61, e inversamente, se proporciona software mas facil de ampliar
dice que un modulo controlado por otro modulo es
subordinado del controlador [YOU79]. Por ejemplo, en
iCubles son las ventajas
la Figura 13.3 el modulo M es superior a 10s modulos
de la partition horizontal?
a , b y c. El modulo h esta subordinado a1 modulo e y
por ultimo esta subordinado a1 modulo M. Las relacio-
nes en anchura (por ejemplo, entre 10s modulos d y e), Como las funciones principales se desacoplan las
aunque en la practica se puedan expresar, no tienen que unas de las otras, el cambio tiende a ser menos com-
definirse con terrninologia explicita. plejo y las extensiones del sistema (algo muy comun)
tienden a ser mas faciles de llevar a cab0 sin efectos
secundarios. En la parte negativa la division horizontal
Si desorrollomos un sofhvore orientodo o objetos,
suele hacer que 10s datos pasen a traves de interfaces de
no se oplicoron 10s medidos estruchrroles destocodos modulos y que puedan complicar el control global del
oqui Sin embargo, se oplicoron otros (10s que se flujo del programa (si se requiere un movimiento ripi-
obordon en lo Porte Cuorto). do de una funcion a otra).
Una arquitectura de llamada y de retomo (Capitulo 14) es una estruc- En el Capitulo 20, exploraremos el concept0 de herencia para el
tura de programa clasica que descornpone la funcion en una jerar- software orientado a objetos. Un cornponente de prograrna puede
quia de control en donde el prograrna *principal))invoca un nurnero heredar una Iogica de control y/o datos de otro componente sin refe-
de componentes de prograrna que a su vez pueden invocar aun a rencia explicita en el codigo fuente. Los componentes de este tip0
otros cornponentes. seran visibles, pero no estaran conectados directamente. Un dia-
grama de estructuras (Capitulo 14) indica la conectividad.
CAP~TULO
13 CONCEPTOS Y PRINCIPIOS DE DISENO
Los conceptos fundamentales de diseiio descritos en la tacion de informaci6n. En referencias obligadas sobre
seccion anterior sirven para incentivar diseiios modula- el diseiio del software, Parnas [PAR721y Wirth [WR7 11
res. De hecho, la modularidad se ha convertido en un aluden a las tCcnicas de refinamiento que mejoran la
enfoque aceptado en todas las disciplinas de ingenieria. independencia de modulos. Trabajos posteriores de Ste-
Un diseiio modular reduce la complejidad (vCase la Sec- vens, Wyers y Constantine [STE74] consolidaron el con-
cion 13.4.3), facilita 10s cambios (un aspect0 critico de cepto.
la capacidad de mantenimiento del software), y da como
resultado una implementaci6n mas ficil a1 fomentar el
desarrollo paralelo de las diferentes partes de un sistema.
Un cbdigo es (&terminante)) si se describe con
13.5.1. Independencia funcional uno solo orocibn -sujeto, verbo y predicodo-.
s i 6 n ~a una interacci6n excesiva con otros m6dulos. tiene tareas que est6n relacionadas entre si por el hecho
Dicho de otra manera, queremos diseiiar el software de de que todas deben ser ejecutadas en el mismo interva-
manera que cada m6dulo trate una subfunci6n de requi- lo de tiempo, el m6dulo muestra cohesidn temporal.
sitos y tenga una interfaz sencilla cuando se observa des- Como ejemplo de baja cohesi611, tomemos en con-
de otras partes de la estructura del programa. Es justo sideraci6n un m6dulo que lleva a cab0 un procesamiento
preguntarse por quC es importante la independencia. El de errores de un paquete de analisis de ingenieria. El
software con una modularidad efectiva, es decir, m6du- m6dulo es invocado cuando 10s datos calculados exce-
10s independientes, es mas f a d de desarrollar porque la den 10s limites preestablecidos. Se realizan las tareas
funci6n se puede compartimentary las interfaces se sim- siguientes: (1) calcula 10s datos complernentarios basa-
plifican (tengarnos en consideraci6n las ramificaciones dos en 10s datos calculados originalmente; (2) produce
cuando el desarrollo se hace en equipo). Los m6dulos un informe de errores (con contenido grafico) en la esta-
independientes son mas faciles de mantener (y probar) ci6n de trabajo del usuario; (3) realiza 10s cilculos de
porque se limitan 10s efectos secundarios originados por seguimiento que haya pedido el usuario; (4) actualiza
modificaciones de disefio/c6digo; porque se reduce la una base de datos, y ( 5 ) activa un menu de selecci6n
propagaci6n de errores; y porque es posible utilizar para el siguiente procesamiento. Aunque las tareas ante-
m6dulos usables. En resumen, la independencia fun- riores estin poco relacionadas, cada una es una entidad
cional es la clave para un buen diseiio y el diseiio es la funcional independiente que podra realizarse mejor
clave para la calidad del software. como un m6dulo separado. La combinaci6n de funcio-
La independencia se mide mediante dos criterios cua- nes en un solo m6dulo puede servir s610 para incre-
litativos: la cohesi6n y el acoplamiento. La cohesidn es mentar la probabilidad de propagaci6n de errores cuando
una medida de la fuerza relativa funcional de un m6du- se hace una modificaci6n a alguna de las tareas proce-
lo. El uc.oplumiento es una medida de la independencia dimentales anteriormente mencionadas.
relativa entre 10s mbdulos.
Lo cohesion es uno indicationtuolitotivo del grodo Los niveles moderados de cohesi6n estan relativa-
que tiene un modulo para centrone en uno solo coso. mente cerca unos de otros en la escala de independen-
cia modular. Cuando 10s elementos de procesamiento
La cohesidn se puede representar como un ccespectro,,.
de un m6dulo estan relacionados, y deben ejecutarse en
Siempre debemos buscar la cohesidn mis alta, aunque la
un orden especifico, existe cohesidn procedimental.
parte media del espectro suele ser aceptable. La escala de
Cuando todos 10s elementos de procesamiento se cen-
cohesidn no es lineal. Es decir, la parte baja de la cohe-
tran en un Area de una estructura de datos, tenemos pre-
si6n es mucho <<peon> que el rango medio, que es casi tan
sente una cohesidn de comunicacidn. Una cohesi6n alta
crbueno>>como la pate alta de la escala. En la prhctica, un
se caracteriza por un m6dulo que realiza una unica tarea.
diseiiador no tiene que preocuparse de categorizar la cohe-
si6n en un m6dulo especifico. Mas bien, se debera enten-
der el concepto global, y asi se deberan evitar 10s niveles
bajos de cohesi6n a1 diseiiar 10s cbdigos. Si nos concentromos en uno solo coso duronte el disefio
En la parte inferior (y no deseable) del espectro, o nivel de componentes, hoy que reolizorlo con cohesibn.
encontraremos un m6dulo que lleva a cab0 un conjunto
de tareas que se relacionan con otras dCbilmente, si es Como ya se ha mencionado anteriormente, no es
que tienen algo que ver. Tales m6dulos se denominan necesario determinar el nivel precis0 de cohesibn. Mas
coincidentalmente cohesivos. Un m6dulo que realiza bien, es importante intentar conseguir una cohesi6n alta
tareas relacionadas ldgicamente (por ejemplo, un m6du- y reconocer cuando hay poca cohesi6n para modificar
lo que produce todas las salidas independientementedel el diseiio del software y conseguir una mayor indepen-
tipo) es ldgicamente cohesivo. Cuando un m6dulo con- dencia funcional.
C A P ~ T U L O13 CONCEPTOS Y PRINCIPIOS DE DISENO
Una vez que se ha desarrollado una estructura de pro- nado se convierte en dos m6dulos o m& en la
grama, se puede conseguir una modularidad efectiva estructura final de programa. Un mddulo implosio-
aplicando 10s conceptos de disefio que se introdujeron nado es el resultado de combinar el proceso impli-
a1 principio de este capitulo. La estructura de programa cad0 en dos o mas m6dulos.
se puede manipular de acuerdo con el siguiente con-
jun t o de heuristicas:
I. Evaluar la ccprimera iteracidnw de la estructura de
programa para reducir a1 acoplamiento y mejorar
la cohesibn. Una vez que se ha desarrollado la
estructura del programa, se pueden explosionar o
implosionar 10s modules con vistas a mejorar la
independencia del modulo. Un mddulo explosio-
231
INGENIERfA DEL SOFTWARE. UN ENFOQUE PRACTICO
Un modulo explosionado se suele dar cuando modulo r, tenemos una violation de la heuristica
existe un proceso comdn en dos o mas m6dulos 111, porque el modulo r se encuentra fuera del h b i t o
y puede redefinirse como un modulo de cohesion de control del modulo e.
separado. Cuando se espera un acoplamiento alto, IV. Evaluar las interfaces de 10s mddulos para reducir
algunas veces se pueden implosionar 10s m6du- la complejidad y la redundancia, y mejorar la con-
10s para reducir el paso de control, hacer refe- sistencia. La complejidad de la interfaz de un
rencia a 10s datos globales y a la complejidad de modulo es la primera causa de 10s errores del soft-
la interfaz. ware. Las interfaces deberan disefiarse para pasar
infonnacion de manera sencilla y deberan ser con-
secuentes con la funcion de un modulo. La incon-
sistencia de interfaces (es decir, datos aparentemente
sin relacionar pasados a travks de una lista de argu-
mentos u otra tkcnica) es una indication de poca
cohesion. El modulo en cuestion debera volverse a
evaluar.
V. Definir m6dulos cuya funcidn se pueda predecir,
pero evirar mddulos que sean demasiado restric-
tivos. Un modulo es predecible cuando se puede
tratar como una caja negra; es decir, 10s mismos
datos externos se produciran independientemente
de 10s datos internos de procesamiento7. Los
modulos que pueden tener <<memoria>> interna no
podran predecirse a menos que se tenga mucho
cuidado en su empleo.
Un m6dulo que restringe el procesamiento a una
Evitar estructuras planas
sola subfuncidn exhibe una gran cohesion y es
bien visto por el disefiador. Sin embargo, un
modulo que restringe arbitrariamente el tamafio
FIGURA 13.7. Estructuras de programa. de una estructura de datos local, las opciones den-
tro del flujo de control o 10s modos de interfaz
II. Intentar minimizar las estructuras con un alto externa requerira invariablemente mantenimiento
grado de salida; esforzarse por la entrada a para quitar esas restricciones.
medida que aumenta la profundidad. La estruc-
tura que se muestra dentro de la nube en la Figura
13.7 no hace un uso eficaz de la factorization.
Todos 10s m6dulos estin ccplanos>>, a1 mismo nivel
y por debajo de un solo modulo de control. En En lo direction de Internet www.dats.dtic.mil/teths/
general, una distribucion mas razonable de con- design/Design.ToC.html se puede encontror un inforrne
trol se muestra en la estructura de la derecha. La detollodo sobre 10s rnetodos de diseiio de software entre 10s
estructura toma una forma oval, indicando la can- que se incluyen el esiudio de todos 10s conceptos
tidad de capas de control y m6dulos de aka utili- y principios de diseiio que se oborcon en este copitulo.
dad a niveles inferiores.
III. Mantener el a'mhito del efecto de un mddulo denrro VI. Intentar conseguir mddulos de ccentrada controladaw,
del a'mhito de control de ese mddulo. El a'mhito del evitando ((conexionespatoldgicasw. Esta heuristica
efecto de un modulo e se define como todos lo otros de disefio advierte contra el acoplamiento de conte-
modules que se ven afectados por la decision nido. El software es mas facil de entender y por tanto
tomada en el modulo e. El ambito de control del mas facil de mantener cuando 10s modulos que se
modulo e se compone de todos 10s modulos subor- interaccionan estin restringidos y controlados. Las
dinados y superiores a1 modulo e. En la Figura 13.7, conexiones patoMgicas hacen referencia a bifurca-
si el modulo e toma una decision que afecta a1 ciones o referencias en medio de un modulo.
232
C A P ~ T U L O13 CONCEPTOS Y PRINCIPIOS DE DISENO
Los principios y conceptos de diseiio abordados en este nosotros queremos crear un disefio de software que sea
capitulo establecen las bases para la creacion del mode- estable. Crearemos un modelo de disefio que se tam-
lo de diseiio que comprende representaciones de datos, balee facilmente con vientos de cambio a1 establecer
arquitectura, interfaces y componentes. A1 igual que en una base amplia en el diseiio de datos, mediante una
el modelo de analisis anterior a1 modelo, cada una de region media estable en el disefio arquitectonico y de
estas representaciones de diseiio se encuentran unidas interfaz, y una parte superior aplicando el diseiio a
unas a otras y podran sufrir un seguimiento hasta 10s nivel de componentes.
requisitos del software. Los mCtodos que conducen a la creacion del mode-
En la Figura 13.1, el modelo de disefio se repre- lo de diseiio se presentan en 10s Capitulos 14, 15, 16 y
sento como una piramide. El simbolismo de esta for- 22 (para sistemas orientados a objetos). Cada mCtodo
ma es importante. Una piramide es un objeto permite que el disefiador Cree un disefio estable que se
extremadamente estable con una base amplia y con un ajuste a 10s conceptos fundamentales que conducen a
centro de gravedad bajo. A1 igual que la piramide, un software de alta calidad.
La Especificacidn dcl disefio aborda diferentes aspec- de diseiio procedimental para convertir esa estructu-
tos del modelo de diseiio y se completa a medida que ra en una description estructural.
el disefiador refina su propia representacion del soft- La Especificacibn del diseiio contiene una refe-
ware. En primer lugar, se describe el ambit0 global rencia cmzada de requisitos. El proposito de esta refe-
del esfuerzo realizado en el diseiio. La mayor parte rencia cruzada (normalmente representada como una
de la informacion que se presenta aqui se deriva de matriz simple) es: (1) establecer que todos 10s requi-
la Especificacibn del sistema y del modelo de ana- sitos se satisfagan mediante el diseiio del software, y
lisis (Especificacidn de 10s requisitos del software). (2) indicar cuales son 10s componentes criticos para
A continuacion, se especifica el diseiio de datos. la implementacion de requisitos especificos.
Se definen tambiCn las estructuras de las bases de El primer paso en el desarrollo de la documenta-
datos, cualquier estructura externa de archivos, cidn de pruebas tambiCn se encuentra dentro del docu-
estructuras internas de datos y una referencia cruza- mento del disefio. Una vez que se han establecido las
da que conecta objetos de datos con archivos espe- interfaces y la estructura de programa podremos desa-
cificos. rrollar las lineas generales para comprobar 10s modu-
El diseiio arquitectonico indica como se ha deri- 10s individuales y la integracion de todo el paquete.
vado la arquitectura del programa del modelo de an& En algunos casos, esta section se podra borrar de la
lisis. Ademas, para representar la jerarquia del modulo Especificacidn del disefio.
se utilizan graficos de estructuras. Las restricciones de disefio, tales como limitacio-
nes fisicas de memoria o la necesidad de una interfaz
externa especializada, podran dictar requisitos espe-
ciales para ensamblar o empaquetar el software. Con-
sideraciones especiales originadas por la necesidad
de superposition de programas, gestion de memoria
virtual, procesamiento de alta velocidad u otros fac-
Especificacibndel diseio del software tores podran originar modificaciones en disefio deri-
vadas del flujo o estructura de la informacion. Ademas,
Se representa el disefio de interfaces intemas y exter- esta section describe el enfoque que se utilizara para
nas de programas y se describe un diseiio detallado de transferir software a1 cliente.
la interfaz hombre-maquina. En algunos casos, se podra La ultima seccion de la Especificacidn del disefio
representar un prototipo detallado del IGU. contiene datos cornplementarios. Tambien se presen-
Los componentes -elementos de software que se tan descripciones de algoritmos, procedimientos alter-
pueden tratar por separado tales como subrutinas, fun- nativos, datos tabulares, extractos de otros documentos
ciones o procedimientos- se describen inicialmente y otro tip0 de informacion relevante, todos mediante
con una narrativa de procesamiento en cualquier idio- notas especiales o apCndices separados. Sera aconse-
ma (Castellano, InglCs). La narrativa de procesamiento jable desarrollar un Manual preliminar de Operacio-
explica la funci6n procedimental de un componente nesllnstalacidn e incluirlo como apCndice para la
(modulo). Posteriormente, se utiliza una herramienta documentaci6n del disefio.
INGENIERfA DEL SOFTWARE. U N E N F O Q U E PRACTICO
El disefio es el nucleo tCcnico de la ingenieria del soft- vision global de la arquitectura del software, mientras
ware. Durante el disefio se desarrollan, revisan y docu- que el procedimiento proporciona el detalle necesario
mentan 10s refinamientos progresivos de la estructura para la implementaci6n de 10s algoritmos. La oculta-
de datos, arquitectura, interfaces y datos procedimen- ci6n de informaci6n y la independencia funcional pro-
tales d e 10s componentes del software. El disefio d a porcionan la heun'stica para conseguir una modularidad
como resultado representaciones del software para eva- efectiva.
luar la calidad. Concluiremos nuestro estudio de 10s fundamentos del
Durante las cuatro 6ltimas dCcadas se han propuesto diseiio con las palabras de Glendord Myers [MYE78]:
diferentes principios y conceptos fundamentales del
diseiio del software. Los principios del disefio sirven Intentamos resolver el problema dhdonos prisa en el pro-
ceso de diseiio de forma que quede el tiempo suficiente hash
d e guia a1 ingeniero del software a medida que avan- el final del proyecto como para descubrir 10s errores que se
za el proceso d e disefio. Los conceptos d e diseiio pro- cometieron por comer en el proceso de diseiio.. .
porcionan 10s criterios biisicos para la calidad del
disefio. La moraleja es: NO te precipites durante el diseiio!
L a modularidad (tanto en el programa como en 10s Merece la pena esforzarse por un buen disefio.
datos) y el concept0 de abstraccidn permiten que el dise- N o hemos terminado nuestro estudio sobre el dise-
iiador simplifique y reutilice 10s componentes del soft- fio. En 10s capitulos siguientes, se abordan 10s mCtodos
ware. El refinamiento proporciona un mecanismo para de diseiio. Estos mCtodos combinados con 10s funda-
representar sucesivas capas, de datos funcionales. El pro- mentos de este capitulo, forman la base de una visi6n
grama y la estructura de datos contribuyen a tener una completa del disefio del software.
[AH0831 Aho, A.V.J., Hopcroft, y J. Ullmann, Data Struc- [JAC92] Jacobson, I., Object-Oriented Software Engineering,
tures and Algorithms, Addison-Wesley, 1983. Addison-Wesley, 1992.
[BAS891 Bass, L., P. Clements y R. Kazman, SofnYare Archi- [KRU84] Kruse R.L., Data Structures and Program Design,
tecture in Practice, Addison-Wesley, 1998. Prentice-Hall, 1984.
[BEL8 11 Belady, L., Foreword to Software Design: Methods [MCG91] McGlaughlin, R., <<SomeNotes on Program
and Techniques (L.J. Peters, autor), Yourdon Press, 1981. Design,,, Software Engineering Notes, vol. 16, n." 4, Octu-
[BR098] Brown, W.J. et a]., Anti-Patterns, Wiley, 1998. bre 1991, pp. 53-54.
[BUS961 Buschmann, F. et al., Pattern-Oriented Software [MYE78] Myers, G., Composite Structured Design, Van Nos-
Architecture, Wiley, 1996. trand, 1978.
[DAV95] Davis, A., 201 Principles of Software Development, [MEY88] Meyer, B., Object-Oriented Software Construction,
McGraw-Hill, 1995. Prentice-Hall, 1988.
[MIL721 Mills, H.D., <<MathematicalFoundations for Struc-
[DEN731 Dennis, J., <<Modularity>>, in Advanced Course on
tured Programming,>,Technical Report FSC7 1-6012, IBM
Software Engineering, F.L. Bauer, ed., Springer-Verlag,
Corp., Federal Systems Division, Gaithersburg,Maryland,
Nueva York, 1973, pp. 128-182.
1972.
[GAM95] Gamma, E., et al, Design Patterns, Addison-Wes-
[NAS73] Nassi, I., y B. Shneiderman, <<FlowchartTechni-
ley, 1995.
ques for Structured Programming>>,SIGPLAN Notices,
[GAN89] Gannet, G., Handbook of Algorithms and Data ACM, Agosto 1973.
Structures, 2." ed, Addison-Wesley, 1989.
[ORR77] Orr, K.T., Structured Systems Development, Your-
[GAR951 Garlan, D., y M. Shaw, <<AnIntroduction to Soft- don Press, Nueva York, 1977.
ware Architecturer, Advances in Software Engineering [PAR721 Parnas, D.L.,<cOnCriteria to be used in Decompo-
and Knowledge Engineering, vol. 1, V. Ambriola y G. Tor-
sing Systems into Modules,,, CACM, vol. 14, n." 1, Abril
tora (eds.), World Scientific Publishing Company, 1995. 1972, pp. 221-227.
[JAC75] Jackson, MA., Principles of Program Design, Aca- [ROS75] Ross, D., J. Goodenough y C. Irvine, <<Software
demic Press, 1975. Engineering: Process, Principles and Goals,,, IEEE Com-
[JAC83] Jackson, M.A., System Development, Prentice-Hall, puter, vol. 8, n." 5, Mayo 1975.
1983. [SHA95a] Shaw, M., y D. Garlan, <<Formulationsand For-
[KAI83] Kaiser, S.H., The Design of Operating Systems for Small malisms in Software Architecture,,, Volume 1000-Lectu-
Computer Systems, Wiley-herscience, 1983, pp. 594 ss. re Notes in Computer Science, Springer Verlag, 1995.
CAPfTULO 13 CONCEPTOS Y PRINCIPIOS DE DISENO
[SHA95b] Shaw, M. et al., ccAbstractions for Software Archi- [WAR741 Warnier, J., Logical Construction of Programs, Van
tecture and Tools to Support Them,,, IEEE Trans. Software Nostrand-Reinhold, 1974.
Engineering, vol. 21, n.' 4, Abril 1995, pp. 314-335. [WAS831 Wasserman, A., ceInformation System Design
[SHA96] Shaw, M., y D. Garlan, Software Architecture, Methodology,,, in Software Design Techniques (P. Free-
Prentice-Hall, 1996. man y A. Wasserman, eds.), 4.= ed., IEEE Computer
[SOM96] Sommerville, I., Software Engineering, 3." ed., Society Press, 1983, p. 43.
Addison-Wesley, 1989. [WIR71] Wirth, N., <<ProgramDevelopment by Stepwise
[STE74] Stevens, W., G. Myers y L. Constantine, ccstructu- Refinement,,, CACM, vol. 14, n.' 4, 1971, pp. 221-227.
red Design,,, IBM Systems Journal, vol. 13, n.' 2, 1974, [YOU791 Yourdon, E., y L. Constantine, Structured Design,
pp. 115-139. Prentice-Hall, 1979.
P R O W Y PUNTOS KCONSIDERAR
13.1. Cuando se ccescriben un programa, jse esta disefian- e. cualquier problema que hayan acordado usted y su pro-
do software? i E n quC se diferencia el disefio del software fesor.
de la codificacibn?
Conforme disminuye el grado de abstraccion, su foco de
13.2. Desarrolle tres principios de disefio adicionales que atencion puede disminuir de manera que en la ultima abs-
afiadir a 10s destacados en la Seccion 13.3. traction (codigo fuente) solo se necesite describir una uni-
ca tarea.
13.3. Proporcione ejemplos de tres abstracciones de datos
y las abstracciones procedimentales que se pueden utilizar 13.8. Obtenga el trabajo original de Parnas [PAR721 y resu-
para manipularlos. ma el ejemplo de software que utiliza el autor para ilustrar
la descomposici6n en m6dulos de un sistema. iC6m0 se
13.4. Aplique un ccenfoque de refinamiento paso a pason
utiliza la ocultacion de informacion para conseguir la des-
para desarrollar tres niveles diferentes de abstraccion pro-
composicibn?
cedimental para uno o m i s de 10s programas que se mues-
tran a continuation: 13.9. Estudie la relacion entre el concepto de ocultacion de
a. Desarrolle un dispositivo para rellenar 10s cheques que, informacion como atributo de modularidad eficaz y el con-
dada la cantidad numCrica en pesetas, imprima la canti- cepto de independencia del modulo.
dad en letra tal y como se requiere normalmente. 13.10. Revise algunos de 10s esfuerzos que haya realiza-
b. Resuelva iterativamente las raices de una ecuacidn trans- do recientemente en desarrollar un software y realice un
cendental. analisis de 10s grados de cada modulo (con una escala
ascendente del 1 a1 7). Obtenga 10s mejores y 10s peores
c. Desarrolle un simple algoritmo de planificacion round- ejemplos.
robin para un sistema operativo
13.11. Un grupo de lenguajes de programacion de alto nivel
13.5. ~ E posible
s que haya algiin caso en que la ecuacidn soporta el procedimiento interno como construccion modu-
(13.2) no sea verdad? iC6m0 podria afectar este caso a la lar. iC6m0 afecta esta construccion a1 acoplamiento y a la
modularidad? ocultaci6n de informaci6n?
13.6. ~ C u a n d odeberi implementarse un diseiio modular 13.12. ~ Q u Crelacion tienen 10s conceptos de acoplamien-
como un software monolitico? iC6m0 se puede llevar a to y de movilidad del software? Proporcione ejemplos que
cabo? ~ E els rendimiento la unica justification para la apoyen esta relacion.
implementacion de software monolitico?
13.13. Haga un estudio de la manera en que ayuda la par-
13.7. Desarrolle a1 menos cinco niveles de abstraccion para ticion estructural para ayudar a mantener el software.
uno de 10s problemas de software siguientes:
13.14. iCuil es el proposito de desarrollar una estructura
a. un video-juego de su eleccion. de programa descompuesta en factores?
b. un software de transformacion en tres dimensiones para 13.15. Describa el concepto de ocultacion de informacion
aplicaciones graficas de computador. con sus propias palabras.
c. un intCrprete de lenguajes de programacion.
13.16. iPor quC es una buena idea mantener el efecto de
d. un controlador de un robot con dos grados de libertad. alcance de un modulo dentro de su alcance de control?
lNGENIERfA DEL SOFTWARE. UN ENFOQUE PRhCTlCO
Donald Norman ha escrito dos libros (The Design of Every- Dentro de una antologia editada por Freeman y Wasser-
day Things, Doubleday, 1990, y The Psychology of Everyday man (Software Design Techniques, 4."d., IEEE, 1983) se
Things, Harpercollins, 1988) que se han convertido en cla- encuentra un estudio hist6rico excelente de trabajos impor-
sicos de literatura de disefio y es una lectura ccobligadan para tantes sobre disefio del software. Este trabaio de ensefianza
todos 10s que disefian cualquier cosa que el ser humano va reimprime muchos de 10s trabajos clasicos que han formado
utilizar. Adams (Conceptual Blockbusting, 3." ed. Addison- la base de las tendencias actuales en el disefio del software.
Wesley, 1986) ha escrito un libro que es una lectura esencial Buenos estudios sobre 10s fundamentos del disefio de soft-
para 10s disefiadores que quieren ampliar su forma de pen- ware se pueden encontrar en 10s libros de Myers [MYE78],
sar. Finalmente un texto clasico de Polya (How to Solve It, Peters (Soft~l~are Design: Methods and Techniques, Yourdon
2." ed., Princeton University Press, 1988) proporciona un Press, Nueva York, 1981), Macro (Software Engineering:
proceso genkrico de resolver problemas que puede servir de Concepts and Management, Prentice-Hall, 1990) y Som-
ayuda a 10s disefiadores cuando se enfrentan con problemas merville (Software Engineering, Addison-Wesley, 5.%d.,
complejos. 1995).
Siguiendo la misma tradition, Winograd et al. (Bringing Tratamientos matematicamente rigurosos del software de
to Software, Addison-Wesley, 1996) aborda 10s disefios del computadora se pueden encontrar en 10s libros de Jones (Soft-
software que funcionan, 10s que no funcionan y las razones. ware Development: A Rigourous Approach, Prentice-Hall,
Un libro fascinante editado por Wixon y Ramsey (Field 1980), Wulf (Fundamental Structures of Computer Science,
Methods Casebook for Software Design, Wiley, 1996) sugie- Addison-Wesley, 1981) y Brassard y Bratley (Fundamental
re 10s ccmktodos de investigaci6n de campos,> (muy similares of Algorithmics, Prentice-Hall, 1995).
a 10s que utilizan 10s antrop6logos) para entender como rea- Todos estos libros ayudan a proporcionar el fundarnento te6-
lizan 10s usuarios el trabajo que realizan y entonces disefiar rico necesario para comprender el software de computadora.
el software que cubra sus necesidades. Beyer y Holtzblatt Kruse (Data Structures and Program Design, Prentice-Hall,
(Contextlial Design: A Customer-Centrered Approach to Sys- 1994) y Tucker et al. (Fundamental of Computing II: Abstrac-
tems, Academic Press, 1997) ofrecen otra visi6n del diseiio tion, Data Structures, and Large Sojhvare Systems, McGraw-
de software que integra a1 cliente/usuario en todos 10s aspec- Hill, 1995) presentan una information valiosa sobre estructuras
tos del proceso de diseiio del software. de datos. Las medidas de calidad de diseiio presentadas desde
McConnell (Code Complete, Microsoft Press, 1993) pre- una perspectiva tkcnica y de gestidn son abordadas por Card y
senta un estudio excelente de 10s aspectos practicos para el Glass (Measuring Design Quality, Prentice-Hall, 1990).
disefio de software de computadora de alta calidad. Robert- Una amplia variedad de fuentes de informaci6n sobre el
son (Simple Program Design, 3.%d., Boyd & Fraser Publis- disefio del software y otros temas relacionados estan dispo-
hing) presenta un estudio introductorio de disefio del software nibles en Internet. Una lista actualizada de referencias rele-
que es util para aquellos que empiezan a estudiar sobre el vantes para 10s conceptos y mktodos de disefio se puede
tema. encontrar en http://www.pressman5.com
transacctnes .......252
analisis de far
transformationes.. . -247
~ Q u es?
6 El disefio arquitecthico repre- sites derivados durante el a n d i s i s d e el fin d e obtener la estructura que
senta la estructura d e 10s datos y 10s la ingenieria del sistema y d e 10s mejor s e ajusta a 10s requisitos del
componentes del programa que s e requisitos del software. cliente y a las normas de calidad. Una
requieren para construir un sistema ~ P o qu6
r es impartante? En la secci6n vez que e s seleccionada una d s las
basado e n computadora. Constituye Vistazo rapido del capitulo anterior pre- alternativas, la arquitectura s e elabo-
e l estilo arquitectonico que tendra el guntamos: -No serias capaz de inten- ra utilizando el mbtodo d e disefio
sistema, la estructura y l a s propie- tar construir una casa sin un plano. arquitectbnico.
d a d e s de 10s componentes que e s e ~ v e r d a d ?Tu~ tampoco comenzarias el tCu&l e s el product0 abtenida?
sistema comprende, y l a s Interrela- esbozo del plano por 10s bosquejos del Durante el diseiio urquitect6nico s e
ciones que tienen lugar entre todos diseiio de tuberlas d e la casa. Necesi- crea un modelo d e arquitectura que
10s componentes arquitect6nicos del tarias ver la foto completa-la casa en abarca la arquitectura d e datos y la
sistema. si misma- antes de preocuparte por estructura del programa. Ademas. se
tQui6n lo hace? Aunque 10s ingenie- 10sdetalles. Esto es lo que el disefio describen las propiedudes de 10scom-
ros del software pueden disefiar tan- arquitectbnico hace -proprciona la ponentes y s u s relaciones (inlerac-
to 10s datos como la arquitectura, foto completa y asegura que lo estds ciones).
cuanda se trata de constmir sistemas haciendo bien-. LCirno puedo estar seguro de pus
grandes y complejos, el trabajo es, a &u&lessari 10s pasas? El diseiioarqui- lo he hecho correctamente? En
menudo, asignado a especialistas. El tect6nico comienza con el disefio d e cada etapa, 10s productos tesultantes
diseiiador de una base d e datos o un datos y despubs procede a la deriva- del diseiio del software son revisados
almacbn d e dafos crea la arquitectu- ci6n d e una o mas represexitaciones de para clarificar, corregir, completar y
ra de datos para el sistema. El narqui- la estructura arquitecthica del siste- dar consistencia acorde a 10s requi-
tecto del sisteman selecciona un estilo ma. Los estilos arquitectdnicos alter- sites establecidos, y entre unos y
arquitect6nico apropiado a 10s requi- nativos o patrones son analizados con otros.
~ N G E N ~ E RDEL
~ A SOFTWARE. UN ENFOQUE PRACTICO
Shaw y Garlan [SHA96], en su libro de referencia sobre altemativas arquitect6nicas en una etapa en la cud hacer
la materia, tratan la arquitectura del software de la cambios en el disefio es relativamente f6ci1, y (3) reducir
siguiente forma: 10s riesgos asociados a la construcci6n del software.
lncluso desde que el primer prograrna fue dividido en mMu-
los, 10s sistemas de software han tenido arquitecturas, y 10s pro-
gramadoreshan sido responsables de sus interaccionesa travCs
de m6dulos y de las propiedades globales de ensamblaje. His-
tbricamente, las arquitecturas han estado implicitas -bien
como accidentes en la implementation, bien como sistemas
legados del pasad*. Los buenos desarrolladoresde softwa-
re han adoptado, a menudo, uno o varios patrones arquitect6-
nicos como estrategias de organizaci6n del sistema, pero
utilizaban estos patrones de modo informal y no tenian ningun La definition presentada anteriormente enfatiza el
inter& en hacerlos explicitos en el sistema resultante. papel de 10s cccomponentes del software>>en cualquier
Hoy, la arquitectura de software operativa y su repre- representaci6n arquitect6nica. En el context0 del dise-
sentaci6n y diseiio explicitos se han convertido en temas iio arquitect6nic0, un componente del software puede
dominantes de la ingenieria de software. ser tan simple como un m6dulo de programa, per0 tam-
biCn puede ser algo tan complicado como incluir bases
de datos y software intermedio (<<middleware>>) que per-
14.1.1. ~ Q u e s urquitecturu?
miten la configuraci6n de una red de clientes y servi-
Cuando hablamos de la ccarquitecturau de un edificio, dores. Las propiedades de 10s componentes son aquellas
nos vienen a la cabeza diferentes atributos. A nivel mis caracteristicas necesarias para entender c6mo 10s com-
bisico, pensamos en la forma global de la estructura ponentes interactuan con otros componentes. A nivel
fisica. Pero, en realidad, la arquitectura es mucho mis. arquitect6nic0, no se especifican las propiedades inter-
Es la forma en la que 10s diferentes componentes del nas (por ejemplo, detalles de un algoritmo). Las rela-
edificio se integran para formar un todo unido. Es la for- ciones entre 10s componentes pueden ser tan sencillas
ma en la que el edificio encaja en su entorno y con 10s como una llamada de procedimiento de un m6dulo a
otros edificios de su vecindad. Es el grado en el que el otro, o tan complicadas como el protocolo de acceso a
edificio consigue su proposito fijado y satisface las nece- bases de datos.
sidades de sus propietarios. Es el sentido estCtico de la En este libro, el diseiio de la arquitectura de software
estructura 1- impacto visual del edificio- y el mod0 tiene en cuenta dos niveles de la pirimide del disefio
en el que las texturas, 10s colores y 10s materiales son (Fig. 13.1) -1 diseiio de datos y arquitect6nice. En
combinados para crear la fachada extema y el ccentor- este sentido, el diseiio de datos nos facilita la represen-
no vivou intemo. Son 10s pequeiios detalles -1 dise- tacion de 10s componentes de datos de la arquitectura.
fio de las instalaciones electricas, del tip0 de suelo, de El diseiio arquitectonico se centra en la representation
la colocacidn de tapices y una lista casi interminable-. de la estructura de 10s componentes del software, sus
Y, finalmente, es arte. propiedades e interacciones.
A1 igual que otras actividades de la ingenieria del soft- Durante muchos afios, la arquitectura de datos estu-
ware, el diserio de datos (a veces llamado arquitectura vo limitada, generalmente, a las estructuras de datos a
de datos) crea un modelo de datos y/o informaci6n que nivel del programa y a las bases de datos a nivel de apli-
se representa con un alto nivel de abstracci6n (la visi6n caci6n. Pero hoy, las empresas grandes y pequefias esthn
de datos del cliente/usuario). Este modelo de datos, es inundadas de datos. No es inusual, incluso para una
entonces refinado en progresivas representaciones espe- mediana empresa, tener docenas de bases de datos sir-
cificas de la irnplementaci611, que pueden ser procesa- viendo diferentes aplicaciones de cientos de gigabytes
das por un sistema basado en computadora. En muchas de datos. El desafio de las empresas ha sido extraer
aplicaciones de software, la arquitectura de datos ten- informaci6n litil de su entorno de datos, particularmen-
dr8 una gran influencia sobre la arquitectura del soft- te cuando la informaci6n deseada esth funcionalmente
ware que debe procesarlo. interrelacionada (por ejemplo, informaci6n que s610
La estructura de datos ha sido siempre una parte puede obtenerse si 10s datos de marketing especificos
importante del disefio de software. A1 nivel de 10s com- se cruzan con 10s datos de la ingenieria del producto).
ponentes del programa, el disefio de las estructuras de Para resolver este desafio, la comunidad de empre-
datos y de 10s algoritmos asociados requeridos para su sas de TI ha desarrollado las tCcnicas de mineria de
manipulaci6n, son la parte esencial en la creaci6n de dutos, tambiCn llamadas descubrimiento de conoci-
aplicaciones de alta calidad. A nivel de aplicacibn, la miento en bases de datos (DCBC),que navegan a tra-
traducci6n de un modelo de datos (derivado como par- vCs de las bases de datos en un intento por extraer el
te de la ingenieria de requisitos) en una base de datos nivel de informaci6n de negocio apropiado. Sin embar-
es el punto clave para alcanzar 10s objetivos de nego- go, la existencia de mliltiples bases de datos, sus dife-
cio del sistema. A nivel de negocios, el conjunto de rentes estructuras, el grado de detalle contenido en las
informaci6n almacenada en las diferentes bases de bases de datos, y muchos otros factores hacen dificil la
datos y reorganizada en el almacCn de datos facilita la mineria de datos dentro de un entorno con bases de
mineria de datos o el descubrimiento de conocimien- datos existentes. Una soluci6n alternativa, llamada
to que puede influir en el propio Cxito del negocio. De almacCn de datos, afiade una capa adicional a la arqui-
cualquier modo, el disefio de datos juega un papel muy tectura de datos.
importante.
Orientacion por materia. Un almacCn de datos y revisarse, las de objetos de datos deberian identifi-
. esta organizado por las materias importantes del carse, se deberian estudiar las organizaciones alter-
negocio, mas que por 10s procesos o funciones del nativas de datos y deberia evaluarse el impact0 del
negocio. Esto nos lleva a una exclusi6n de datos que modelado de datos sobre el disefio del software. Por
podrian ser necesarios para una funci6n particular ejemplo, la especificaci6n de una lista enlazada con
del negocio, per0 que generalmente no son necesa- multiples anillos puede satisfacer 10s requisitos de 10s
rios para la mineria de datos. datos per0 puede llevar a un diseiio del software poco
Integracion. Sin tener en cuenta la fuente de datos, flexible. Una organizaci6n de datos altemativa nos
da consistencia nombrar convenciones, unidades y podria llevar a obtener mejores resultados.
medidas, estructuras de codificaci6n y atributos fisi-
cos incluso cuando la inconsistencia existe a travCs de iQue printipios son aplitables
las diferentes bases de datos orientadas a aplicaciones. para el diseiio de datos?
Restricciones de tiempo. Para un entomo de apli-
caci6n orientado a transacci6n, 10s datos son precisos 2. Todas las estructuras de datos y las operaciones a lle-
en el momento del acceso y por un period0 de tiempo var a caho en cada una de ellas deberian estar clara-
relativamente pequefio (normalmente de 60 a 90 dias) mente identificadas. El disefio de una estructura de
antes del acceso. Sin embargo, en un almacCn de datos, datos eficaz debe tener en cuenta las operaciones que
se accede a 10s datos en un momento especifico del se van a llevar a cab0 sobre dicha estructura de datos
tiempo (por ejemplo, 10s clientes con 10s que se ha (vea [AH083]). Por ejemplo, imaginese una estruc-
contactado el mismo dia que el nuevo product0 ha sido tura de datos hecha con un conjunto de elementos de
anunciado en la prensa comercial). El horizonte tipico datos diversos. La estructura de datos se va a manipu-
de tiempo de un almacCn de datos es de 5 a 10 afios. lar con varias funciones principales del software. Des-
No volatilidad. A diferencia de las tipicas bases puCs de la evaluaci6n de la operacion realizada sobre
de datos de aplicaciones de negocios que atraviesan la estructura de datos, se define un tipo de datos abs-
una continua corriente de cambios (insertar, borrar, tracto para usarlo en el disefio del software subsiguiente.
actualizar), en el almacCn de datos 10s datos se car- La especificacion de 10s tipos de datos abstractos puede
gan, pero despuCs de la primera transferencia, 10s simplificar considerablemente el disefio del software.
datos no cambian. 3. Se deberia establecer un diccionario de datos y
usarlo para definir el disefio de 10s datos y del pro-
grama. El concepto de diccionario de datos se intro-
dujo en el Capitulo 12. Un diccionario de datos
Un almocen de datos contiene todos 10s dotos utilizados
representa explicitamente las relaciones entre 10s
en una empresa. Su obietivo es facilitar el acceso objetos de datos y las restricciones de 10s elementos
a ccconocimiento)) que de otro mado no se dispondrio. de una estructura de datos. Los algoritmos que deben
aprovecharse de estas relaciones especificas pueden
Estas caracteristicas presentan un cuadro unico de definirse mas facilmente si existe una especificaci6n
desafios de disefio para el arquitecto de datos. de datos tip0 diccionario.
4. Las decisiones de disefio de datos de bajo nivel debe-
14.2.2. Disefio de datos a nivel de componentes rian dejarse para el final del proceso de disefia. Se
El diseiio de datos a nivel de componentes se centra puede usar un proceso de refinarnientopaso a paso para
en la representacidn de estructuras de datos a las que se el disefio de datos. Es decir, la organization general de
accede directamente a travCs de uno o mas componen- datos puede definirse durante el analisis de requisitos;
tes del software. Wasserman [WASSO] ha propuesto un refinarse durante 10s trabajos de diseiio de datos y espe-
conjunto de principios que pueden emplearse para espe- cificarse en detalle durante el disefio a nivel de com-
cificar y diseiiar dicha estructura de datos. En realidad, ponentes. El enfoque descendente del diseiio de datos
el diseiio de datos empieza durante la creaci6n del mode- proporciona ventajas analogas al enfoque descendente
lo de analisis. Recordando que el analisis de requisitos del diseiio de software: se diseiian y evallian primera-
y el diseiio a menudo se solapan, consideramos el mente 10s atributos estructurales principales de manera
siguiente conjunto de principios [WASSO] para la espe- que se pueda establecer la arquitectura de 10s datos.
cificacion de datos: 5. La representacibn de las estructuras de datos debe-
rian conocerla ~ 6 1 0aquellos mbdulos que deban
1. Los principios del analisis sistematico aplicados a la hacer uso directo de 10s datos contenidos dentro de
funcibn y a1 comportamiento deberian aplicarse tam- la estructura. El concepto de ocultaci6n de infor-
bie'n a 10s datos. Invertimos mucho tiempo y esfuerzo macion y el concepto relacionado de acoplamiento
en obtener, revisar y especificar 10s requisitos fun- (Capitulo 13) proporciona una importante vision de
cionales y el diseiio preliminar. Las representaciones la calidad del disefio del software. Este principio
de flujo de datos y contenido deberian desarrollarse alude a la importancia de estos conceptos asi como
a ccla importancia de separar la vision 16gica de un Un disefio del software y un lenguaje de programu-
objeto de datos de su vision fisica>>[WAS80]. cidn deberia soportar la especificaci6n y realizacidn
Deberia desarrollarse una biblioteca de estructuras de 10s tipos abstractos de datos. La implementacion
de datos litiles y de las operuciones que se les pue- de una estructura de datos sofisticada puede hacerse
den aplicar. Las estructuras de datos y las operacio- excesivamente dificil si no existen 10s medios de espe-
nes deberian considerarse como recursos para el cificacion cllrecta de la estructura en el lenguaje de pro-
diseiio del software. Las estructuras de datos pueden gramacion escogido para dicha implementacion.
diseiiarse para que se puedan reutilizar. Una biblio- Los principios descritos anteriormente forman una
teca de plantillas de estructuras de datos (tipos abs- base para un enfoque de diseiio de datos a nivel de com-
tractos de datos) puede reducir el esfuerzo del diseiio ponentes que puede integrarse en las fases de analisis y
y de la especificacion de datos. diseiio.
3
Referencia Web
El proyectoABLE de la CMU cuenta con trabaios y
ejemplos rnuy biiles sobre estilos orquitectbnicos:
pasivo. Esto significa que el software de cliente accede a 10s
datos independientemente de cualquier cambio en 10s datos o
de las acciones de otro software de cliente. Una variacih en
este acceso hansforma el almackn en una ccpizarra,, que envia
notificaciones a1 software de cliente cuando 10s datos de inte-
rCs del cliente cambian.
tom.ts.tmu.edu/oble/
Software Software
El software construido para sistemas basados en com- del del
putadoras tambiCn cuenta con diversos estilos arquitec- cliente cliente Software
t6nicos1.Cada estilo describe una categoria del sistema Software
-
del
cliente
que contiene: (1) un conjunto de componentes (por ejem- del
plo, una base de datos, mddulos computacionales) que cliente
realizan una funcion requerida por el sistema; (2) un con-
junto de conectores que posibilitan la cccomunicaci6n,la Almacen de datos
coordination y la cooperaci6n~entre 10s componentes; Software Software
(3) restricciones que definen como se pueden integrar
10s componentes que forman el sistema; y (4) modelos cliente cliente
semanticos que permiten a1 diseiiador entender las pro-
piedades globales de un sistema para analizar las pro- Software Software
piedades conocidas de sus partes constituyentes [BAS98]. cliente cliente
En la siguiente seccion, abordamos 10s patrones arqui-
tectonicos comunmente utilizados para el software. FIGURA 14.1. Arquitectura basada en 10s datos.
Las preguntas citadas en la section anterior proporcio- 2. Elicitacidn de requisitos. Esta informaci6n es reque-
nan una evaluacion preliminar del estilo arquitectonico rida como parte de 10s requisitos de ingenieria y se
escogido para un sistema concreto. Sin embargo, para utiliza para asegurarse de que todos 10s clientes, usua-
la consecucion efectiva del disefio, se necesita un mito- rios y participes implicados han sido atendidos.
do de evaluacion de la calidad de la arquitectura m6s
completo. En las siguientes secciones, consideramos
dos enfoques diferentes para el analisis de disefios arqui-
tectonicos alternativos. El primer enfoque utiliza un
mktodo iterativo para evaluar el disefio de 10s compro-
misos. El segundo enfoque aplica una pseudotkcnica
3
Referencia Web
Se puede entonhor informotion detollodo sobre onalisis
de tompromiso de softwore arquitettbniro en:
cuantitativa para evaluar la calidad del diseiio. www.sei.cmu.edu/ata/ataIImethod.html
Evaluar 10s atributos de calidad considerando cada Asada [SHA96] propone varios modelos simples para
atributo de forma aislada. El numero de atributos ayudar a1 disefiador a determinar el grado a1 cual una
de calidad escogidos para el anilisis depende del arquitectura particular alcanza 10s criterios de <<bondad>>
tiempo disponible para la revision y del grado de predefinidos. Estos criterios, a veces llamados dimen-
relevancia de dichos atributos para el sistema actual. siones del disefio, a menudo abarcan 10s atributos de
Los atributos de calidad para la evaluaci6n del disefio calidad definidos en la seccion anterior: fiabilidad, ren-
arquitectbnico incluyen: fiabilidad, rendimiento, dimiento, seguridad, facilidad de mantenimiento, flexi-
seguridad, facilidad de mantenimiento, flexibilidad, bilidad, capacidad de prueba, movilidad, reutilizaci6n
capacidad de prueba, movilidad, reutilizacion e inte- e interoperatibilidad, entre otros.
roperatibilidad. El primer modelo, denominado ancilisis del espectro,
evalua un diseiio arquitect6nico en un espectro de iibon-
ldentijicar la sensihilidad de 10s atrihutos de cali- dadn desde el mejor disefio posible hasta el peor. Una vez
dad con 10s diferentes atrib~itosarquitectdnicos en que la arquitectura del software ha sido propuesta, se ana-
un estilo arquitectdnico espec$ico Esto se puede liza asignando una ccpuntuaci6n~a cada una de las
conseguir realizando pequefios cambios en la arqui- dimensiones del diseiio. Estas notas de las dimensiones
tectura y determinando cu5n sensibles a1 carnbio son se suman para determinar la calificaci6n total, S, del
10s atributos de calidad, como el rendimiento. Aque- disefio como un todo. Los casos de notas mis bajas%on
110s atributos afectados significativamente por un asignados a un disefio hipotCtico, y se computa la suma
carnbio en la arquitectura son denominados puntos de notas de la peor arquitectura, S,. La mejor nota, Sh,
sensihles. se computa para un disefio bptimo5. Entonces calcu-
Analisis de las arquitecturas candidatas (desarro- lamos el indice del espectro. I,, ,mediante la ecuaci6n:
lladas en el paso 3 ) utilizando el andisis de sensi-
bilidad del paso 5. El SEI describe este enfoque de 1, = [ ( s- S,)/( Sb - S,)] )X 100
la siguiente forma [KAZ98]: El indice del espectro indica el grado a1 cual la arqui-
Una vez determinados 10s puntos sensibles de la arquitec- tectura propuesta se aproxima a1 sistema 6ptimo dentro
tura, encontrar 10s puntos de compromiso consiste sirnplemente del espectro de altemativas razonables para el disefio.
en la identificacih de 10s elementos arquitect6nicos en 10s cua-
les varios atributos son sensibles. Por ejemplo, el rendimiento
de una arquitectura cliente/servidor seria muy sensible al nume-
ro de servidores (el rendimiento aumenta, dentro de un grado,
aumentando en n6mero de servidores). La disponibilidad de
esa arquitectura tambiCn variaria directamente con el numero
de servidores. Sin embargo, la seguridad del sistema varim'a
inversamente a1 numero de servidores (porque el sistema con-
tiene mas puntos de ataque potenciales). El numero de servi-
dores, entonces, es un punto de compromiso con respecto a la Si se realizan modificaciones del disefio propuesto
arquitectura. Este es un elemento, potencialmente uno de
muchos, donde se h a r h 10s compromisos arquitecthicos, cons-
o si se propone un nuevo disefio entero, 10s indices de
ciente o inconscientemente. espectro de ambos deben ser comparados y se compu-
Estos seis pasos representan la primera iteraci6n tar6 un indice de mejora, I,,:
MACA. Tras 10s resultados de 10s pasos 5 y 6 algunas Is1 - Is2
'me=
arquitecturas altemativas se eliminarian, una o varias
Esto proporciona a1 diseiiador una indicaci6n relati-
de las arquitecturas restantes serian modificadas y pre-
va a la mejora asociada con 10s cambios arquitect6ni-
sentadas con mayor detalle, y despuCs 10s pasos MACA
cos realizados o con la nueva arquitectura propuesta. Si
se aplicarian de nuevo.
I,,, es positivo, entonces podemos concluir que el sis-
tema 1 ha sido mejorado en relacidn al sistema 2.
14.4.2. Guia cuantitativa para el diseiio arqui- El an6lisis de seleccibn del disefio es otro modelo
tectonic0 que requiere un cuadro de dimensiones de disefio para
Uno de 10s muchos problemas con 10s que se enfrentan ser definido. La arquitectura propuesta es entonces eva-
10s ingenieros del software durante el proceso de dise- luada para determinar el n6mero de dimensiones del
fio es la carencia general de mCtodos cuantitativos para disefio que se logran cuando se compara con un siste-
la evaluaci6n de la calidad de 10s diseiios propuestos. ma ideal (el mejor caso). Por ejemplo, si una arquitec-
El enfoque MACA recogido en la Secci6n 14.4.1 repre- tura propuesta alcanzara una reutilizacidn de
senta un enfoque innegablemente cualitativo y util para componentes excelente, y esta dimension es requerida
el anilisis del disefio. para el sistema ideal, la dimensi6n de reutilizaci6n ha
El diseiio debe ser todavia aplicable a1 problema actual, incluso si El diseno seria optimo, pero las restricciones,10s costes u otros fac-
la solucion no es particularmente buena. tores no permitiran su construccion.
sido lograda. Si la arquitectura propuesta tiene poca El EDC es bastante fhcil de implementar como un
. seguridad, y se necesita una gran seguridad, no se ha modelo de hoja de chlculo y puede ser utilizado para
alcanzado la dimensi6n del disefio. aislar porquC un cuadro de alternativas de disefio obtie-
Calculamos el indice de seleccidn del disefio, d , ne unas notas menores que otro.
como:
d=(N,lN,)x100 14.4.3. Complejidad arquitecthica
donde N, es el nlimero de dimensiones de disefio logra- Para evaluar la complejidad total de una arquitectura
das en la arquitectura propuesta y Noes el nlimero total dada, una tCcnica litil consiste en considerar las rela-
de dimensiones en el espacio de disefio. A mayor indi- ciones de dependencia entre 10s componentes de la
ce de selecci6n del disefio, mhs cerca estamos de que la arquitectura. Estas relaciones de dependencia son con-
arquitectura propuesta alcance el sistema ideal. ducidas a travCs de 10s flujos de informacibnlcontrol
dentro del sistema.
El andisis de contribucidn 4dentifica las razones por Zhao [ZHA98] propone tres tipos de dependencia:
las que un grupo de alternativas de disefio obtiene unas
Dependencias de compartimiento, representan las relacio-
notas menores que otro>>.[SHA96] Retomando el estu-
nes de dependencia entre 10s consumidores que utilizan 10s
dio del despliegue de la funcidn de calidad (DFC) vis- mismos recursos o 10s productores que producen para 10s mis-
to en el Capitulo 11, el anhlisis de valor se realiza para mos consumidores. Por ejemplo, tenemos dos componentes u
determinar la prioridad relativa de 10s requisitos deter- y v, si u y v se refieren a 10s rnismos datos globales, entonces
minados durante el despliegue de funciones, el desplie- existe una dependencia de cornpartimiento entre ambos.
gue de informaci6n y el despliegue de tareas. Se identifica Dependencias deflujo, representan las relaciones de depen-
un conjunto de <<mecanismosde realizaci6nn (caracte- dencia entre 10s productores y 10s consumidores de recursos.
risticas de la arquitectura). Se crea un listado con todos Por ejemplo, entre dos componentes u y I,, si 11 debe comple-
10s requisitos del cliente (determinados a travCs del DFC) tarse antes de que el control fluya a v (prerrequisito), o si u y v
se comunican a travCs de parhehos, entonces existiri una rela-
y una matriz de referencias cruzadas. Las celdas de la ci6n de dependencia de flujo entre ambos.
matriz indican (en una escala del 1 a1 10) la fuerza rela-
tiva de la relaci6n entre un mecanismo de realization y Dependencias restrictivas,representan las reshicciones de
un relativo flujo de control entre un cuadro de actividades. Por
un requisito para cada arquitectura propuesta. A esto se ejemplo, dos componentes u y v, si u y v no se pueden ejecu-
le conoce como espacio de disefio cuantificado (EDC). tar a1 mismo tiempo (por exclusi6n mutua), entonces existiri
una dependencia restrictiva entre u y v.
Las dependencias de compartimiento y de flujo reco-
gidas por Zhao se parecen de alguna forma a1 concep-
to de acoplamiento visto en el Capitulo 13. En el
Capitulo 19 se explicarhn mediciones sencillas para la
Hojo de cblculo DFC evaluaci6n de las dependencias.
En el Capitulo 13 ya dijimos que 10s requisitos del soft- Para ilustrar un enfoque de conversi6n arquitectbni-
ware pueden ser convertidos en varias representaciones ca, consideraremos la arquitectura de llamada y retorno
del modelo de disefio. Los estilos arquitect6nicos vis- -una estructura muy comlin para diferentes tipos de sis-
tos en la Secci6n 14.3.1 representan arquitecturas radi- temas6-. La tkcnica de conversi6n que se presenta capa-
calmente diferentes, por lo cual no deberia sorprendernos cita a1 disefiador para derivar arquitecturas de llamada y
que no exista una unica conversion que logre una tran- retorno razonablemente complejas en diagramas de flu-
sici6n del modelo de requisitos a1 modelo de disefio. De jo de datos dentro del modelo de requisitos.
hecho, todavia no existe una conversi6n para algunos La tCcnica, a veces denominada diseiio estructura-
modelos arquitect6nicos, y el disefiador debe lograr la do, tiene sus origenes en antiguos conceptos de disefio
traducci6n de 10s requisitos del disefio para esos estilos que defendian la modularidad [DEN73], el disefio des-
de una forma ad hoc. cendente [WIR71] y la programaci6n estructurada
' Debe recordarse que tambien durante el modelado de analisis se aUn analisis obvio de este tip0 de flujo de informacion lo encontra-
utilizan otros elernentos del metodo de analisis (por ejemplo; el mos en la Seccion 14.3.1 en la arquitectura de flujo de datos. Sin
diccionario de datos, EP, EC). embargo, hay muchos casos en 10s que la arquitectura de flujo de
datos no seria la mejor eleccion para un sistema cornplejo. Los ejem-
plos incluyen sisternas que sufririan carnbios sustanciales en el tiempo,
o sistemas en 10s cuales el procesamiento asociado con el flujo de
datos no es necesariamente secuencial.
CAPfTULO 14 DISENO ARQUITECT6NICO
El andisis de las transformaciones es un conjunto de de requisitos del software. Ambos documentos descri-
pasos de diseiio que permite convertir un DFD, con carac- ben el flujo y la estructura de la informaci6n en la inter-
tensticas de flujo de transformaci6n, en un estilo arqui- faz del software. Las Figuras 14.5 y 14.6 muestran el
tect6nico especifico. En esta secci6n se describe el andisis nivel 0 y 1 del flujo de datos del software HogarSeguro.
de las transformaciones aplicando 10s pasos de diseAo a Paso 2. Revisar y refinar 10s diagramas de flujo
un sistema de, por ejemplo, una parte del software de de datos del software. La informaci6n obtenida de 10s
HogarSeguro presentado en capitulos anteriores. modelos de anilisis contenidos en la Especijicacidn de
Requisitos del Software se refina para obtener mayor
14.6.1. Un ejemplo detalle. Por ejemplo, se examina el DFD del nivel2 de
El sistema de seguridad HogarSeguro, presentado ante- monitorizar sensores (Fig. 14.7) y se obtiene un dia-
riormente en este libro, es representativo de muchos grama de flujo de datos de nivel3 como se muestra en
productos y sistemas basados en computadora actual- la Figura 14.8. En el nivel 3, cada transformaci6n en
mente en uso. El product0 vigila el mundo real y reac- el diagrama de flujo de datos presenta una cohesi6n
ciona ante cambios que encuentra. TarnbiCn interacciona relativamente alta (Capitulo 13). Es decir, el proceso
con el usuario a travCs de una sene de entradas por tecla- implicado por una transformaci6n realiza una funci6n
do y visualizaciones alfanumCricas. El nivel 0 del dia- h i c a y distinta que puede implementarse como un
grama de flujo de datos de HogarSeguro, reproducido m6dulo9en el software HogarSeguro. Por tanto, el DFD
del Capitulo 12, se muestra en la Figura 14.5. de la Figura 14.8 contiene suficiente detalle para esta-
blecer un diseiio cciniciab de la arquitectura del sub-
sistema de monitorizar sensores y continuamos sin mis
refinamiento.
Qowuos
HogarSegum Si el DFD es refinodo mds de uno vez, se esforzord poi
Alarrna
derivor burbujos que presenton gron cohesion.
D
Tonos
Sensores del sensor Paso 3. Determinar si el DFD tiene caracteristicas
de flujo de transformacion o de transaccion. En gene-
ral, el flujo de informaci6n dentro de un sistema puede
FIGURA 14.5. DFD a nivel de context0 para HogarSeguro. representarse siempre como una transformaci6n. Sin
embargo, cuando se encuentra una caracteristica obvia
Durante el anhlisis de requisitos, se habrin creado de transacci6n (Fig. 14.4), se recomienda una estruc-
mis modelos detallados del flujo para HogarSeguro. tura de diseiio diferente. En este paso, el diseiiador selec-
Ademis, se crearhn las especificaciones de control y ciona la caracteristica general del flujo (de la amplitud
proceso, un diccionario de datos y varios modelos de del software) basindose en la propia naturaleza del DFD.
comportamiento. Ademis, se aislan regiones locales de flujo de transfor-
maci6n o de transacci6n. Estos subJEujospueden usarse
para refinar la estructura del programa obtenida por la
14.6.2. Pasos del diseiio caracteristica general que prevalece. Por ahora, con-
El ejemplo anterior se usari para il'ustrar cada paso en centraremos nuestra atenci6n solamente en el flujo de
el anilisis de las transformaciones. Los pasos empiezan datos del subsistema de monitorizaci6n de sensores mos-
con una reevaluaci6n del trabajo hecho durante el ani- trado en la Figura 14.7.
lisis de requisitos y despuCs evoluciona hacia el diseiio
de la arquitectura del software.
Paso 1. Revisar el modelo fundamental del sis-
tema. El modelo fundamental del sistema comprende A rnenudo se podran enconhar arnbos tipos de fluio de
el DFD de nivel 0 y la informaci6n que lo soporta. En datos denho del rnisrno modelo de anblisis. Los flujos se
realidad, el paso de diseiio empieza con una evaluaci6n dividen y la estructura del prograrna se deriva utilizando
de la especijicacidn del sistema y de la especificacidn el an6lisis adecuado.
Evaluando el DFD (Fig. 14.8), vemos que 10s datos dos limites sombreados que van de arriba abajo en el
, entran a1 software por un camino de entrada y salen por dibujo. Se podria argumentar alg6n cambio para rea-
tres caminos de salida. No se distingue ning6n centro justar 10s limites (por ejemplo, se podria proponer un
de transacci6n (aunque la transformaci6n establecer las limite del flujo de entrada que separe leer sensores, de
condiciones de alarma podria percibirse como tal). Por adquirir informacidn de respuesta). El Cnfasis en este
tanto, se asumirh una caracteristica general de transfor- paso del disefio deberia ponerse en seleccionar limites
maci6n para el flujo de informaci6n. razonables, en vez de largas disquisiciones sobre la colo-
caci6n de las separaciones.
Paso 5. Realizar una iidescomposicion de primer
decontrol
niveb. La estructura del programa representa una dis-
tribuci6n descendente del control. La descomposici6n
en partes provoca una estructura de programa en la que
Cofigurar 1
\ 10s m6dulos del nivel superior realizan la toma de deci-
el sistema \
siones y 10s m6dulos del nivel inferior realizan la mayo-
ria del trabajo de entrada, chlculos y salida. Los m6dulos
de nivel intermedio realizan alg6n control y cantidades
moderadas de trabajo.
nforrnacion
249
hacia fuera a lo largo de 10s caminos de entrada, y luego miento pueden llevar a cambios en la estructura, pero
de salida, las transformaciones se convierten en niveles puede servir como una primera iteraci6n del diseiio.
subordinados de la estructura del software. El enfoque
general del segundo nivel de descomposici6n del flujo
de datos HogarSegwu se ilustra en la Figura 14.10.
Monren bojos 10s controlodores de trobojo en lo esrructuro
Aunque la Figura 14.10 ilustra una correspondencia
del progromo. Asi, lo orquitecturo ser6 m6s f6cil de modificor.
una a uno entre las transformaciones del DFD y 10s
m6dulos del software, ocurren frecuentemente diferen-
tes conversiones. Se pueden combinar dos o incluso tres La descomposici6n de factores de segundo nivel del
burbujas y representarlas como un solo m6dulo flujo de entrada sigue de igual manera. La descompo-
(teniendo presente 10s problemas potenciales de la cohe- sici6n en factores se realiza de nuevo movihdose hacia
si6n), o una sola burbuja puede dividirse en dos o miis fuera desde el limite del centro de transformaci6n
m6dulos. Las consideraciones prkticas y las medidas correspondiente al flujo de entrada. El centro de trans-
de la calidad dictan el resultado de la descomposici6n formaci6n del software del subsistema de monitorizar
en factores de segundo nivel. La revisi6n y el refina- sensores se direcciona de manera algo diferente. Cada
de la monitorizacibn
Controlador
senal de alarma
visualizacidn
I Generar
visualizacidn
conversion de datos o transformaciones de cilculo de El texto explicative sime como una primera genera-
. la porci6n de transformacion del DFD se convierte en ci6n de la especificacion de disefio. Sin embargo, se dan
un modulo subordinado a1 controlador de transforma- mis refinamientos y adiciones regularmente durante este
cibn. En la Figura 14.11 se muestra una estructura de period0 de disefio.
programa completa de primera iteracion. Paso 7. Refinar la estructura inicial de la arquitec-
Los modulos direccionados de la manera descrita tura usando heuristicas para mejorar la calidad del
anteriormente y mostrados en la Figura 14.11 repre- software. Una primera estructura de arquitectura siempre
sentan un disefio inicial de la estructura del programa. puede refinarse aplicando 10s conceptos de independen-
Aunque 10s modulos se nombran de manera que indi- cia de modulos (Capitulo 13). Los modulos se incremen-
quen su funcion, se deberia escribir para cada uno un tan o reducen para producir una descomposici6n razonable,
breve texto que explique su procesamiento (adaptado buena cohesion, acoplamiento minimo y lo mis impor-
del EP creado durante la modelacion de anilisis). El tante, una estructura que se pueda implementar sin difi-
texto describe: cultad, probarse sin confusion y mantenerse sin problemas.
la informacion que entra y la que sale fuera del Los refinamientos se rigen por el analisis y 10s mCto-
m6dulo (una descripcion de la interfaz); dos de evaluacion descritos brevemente en la Seccion
la informacion que es retenida en el modulo, por 14.4, asi como por consideraciones practicas y por el
sentido comun. Hay veces, por ejemplo, que el contro-
ejemplo, datos almacenados en una estructura de
datos local; lador del flujo de datos de entrada es totalmente inne-
cesario, o se requiere cierto procesamiento de entrada
una descripcion procedimental que indique 10s prin- en un modulo subordinado a1 controlador de transfor-
cipales puntos de decision y las tareas; macion, o no se puede evitar un alto acoplamiento
un pequeiio estudio de las restricciones y caracteris- debido a datos generales, o no se pueden lograr las carac-
ticas especiales (por ejemplo, archivo 110, caracte- teristicas estructurales optimas (vea la Seccion 13.6).
risticas dependientes del hardware, requisitos Los requisitos del software junto con el buen juicio son
especiales de tiempo). 10s irbitros finales.
Elimino 10s rnodulos de control redundontes. Es decir, si Ontrese en lo independencio funcionol de 10s modulos
on m 6 d h de control no hoce o m coso que controlor que derive. Su objetivo debe ser uno cohesion alto
otro mhdolo, esto funcion de control deberh explotorse y un ocoplomiento dibil.
o moyor nivel.
de la monitorizacion
de sensores
u sensores
251
Se pueden hacer muchas modificaciones a la primera En la Figura 14.12 se muestra la estructura del soft-
estructura desarrollada para el subsistema de monitori- ware refinada del subsistema de monitorizar sensores.
zar sensores de HogarSeguro. Algunas de ellas son: El objetivo de 10s siete puntos anteriores es desarro-
El controlador del flujo de entrada se puede elimi- llar una representaci6n general del software. Es decir,
nar porque es innecesario cuando s6lo hay que mane- una vez que se ha definido la estructura, podemos eva-
jar un solo camino de flujo de entrada. luar y refinar la arquitectura del software viCndola en
La subestructura generada del flujo de transforma- su conjunto. Las modificaciones hechas ahora requie-
ci6n puede reducirse en el m6dulo establecer las ren poco trabajo adicional, per0 pueden tener un gran
condiciones de alarma (que incluirh ahora el pro- impact0 en la calidad del software.
cesamiento implicado por seleccionar numero de El lector deberia reflexionar un momento y consi-
telefono). El controlador de transformaci6n no sera derar la diferencia entre el enfoque de diseiio descri-
necesario y la pequeiia disminuci6n en la cohesi6n to anteriormente y el proceso de ccescribir programas,,.
es tolerable. Si el c6digo es la 6nica representaci6n del software,
Los modulos dar formato de visualizacion y gene- el desarrollador tendrh grandes dificultades en eva-
rar la visualizacion pueden unirse (asumimos que dar luar o refinar a nivel general u holistico y, de hecho,
formato de visualizaci6n es bastante simple) en un tendrh dificultad para que cclos arboles dejen ver el
nuevo modulo denominado producir visualizacion. bosque,,.
En muchas aplicaciones software, un solo elemento de 14.6. Refinando el flujo, se desarrolla un nivel 2 del
datos inicia uno o varios de 10s flujos de informaci6n diagrama de flujo (tambiCn se crearian un diccionario
que llevan a cab0 una funci6n derivada por el elemento de datos correspondiente, EC y EP) que se muestra en
de datos iniciador. El elemento de datos, denominado la Figura 14.13.
transaccibn, y sus caracteristicas de flujo correspon- Como se muestra en la figura, ordenes y datos del
dientes se trataron en la Secci6n 14.5.2. En esta sec- usuario fluye a1 sistema y provoca un flujo de infor-
ci6n consideramos 10s pasos de diseiio usados para maci6n adicional a lo largo de uno de tres caminos de
tratar el flujo de transaccibn. acci6n. Un elemento de datos, tipo de orden, hace que
el flujo de datos se expanda del centro. Por tanto, la
Gestor caracteristica general del flujo de datos es de tipo tran-
de la monitorizacion
de sensores sacci6n.
Debena recalcarse que el flujo de informaci6n a lo
largo de dos de 10s tres caminos de acci6n acomodan
flujos de entrada adicionales (por ejemplo, parametros
~nformacion las condiciones de salida y datos del sistema son entradas en el camino de acci6n
de respuesta de la alarma a ccconfigurar>>).Todos 10s caminos de acci6n fluyen a
una sola transformaci611, mostrar mensajes y estado.
Gestor
3rr
Distribuidor de la interaccion
Camino
de recepcion con el usuario
Gestor
de la interaccion
I Leer ordenes
del usuario
C
lnvocar
el procesamiento
Construir archivos
de la contraseha
Mostrar
un mensaje
mensaje
de contrasetia
y estado
FIGURA 14.16. Primera iteracion de la estructura del programa del subsistema interaccion del usuario.
254
Paso 6. Descomponer y refinar la estructura de y un mensaje de advertencia (flujo de salida) si no
. transaccion y la estructura de todos 10s caminos de coincide con ninguna.
accion. Cada camino de acci6n del diagrama de flujo El camino ccconfiguraru se dibuja similarmente
de datos tiene sus propias caracteristicas de flujo de usando el analisis de transformaci6n. La arquitectura de
informaci6n. Ya hemos dicho anteriormente que se software resultante se muestra en la Figura 14.16.
pueden encontrar flujos de transformaci6n o de tran-
sacci6n. La ccsubestructura>> relacionada con el camino Paso 7. Refinar la primera arquitectura del pro-
de acci6n se desarrolla usando 10s pasos estudiados grama usando heuristicas de diseno para mejorar la
en esta secci6n y en la anterior. calidad del software. Este paso del analisis de tran-
sacci6n es idCntico a1 correspondiente paso del analisis
Por ejemplo, considere el flujo de informacidn del
de transformaci6n.
procesamiento de contraseiia mostrado (dentro del
area sombreada) en la Figura 14.13. El flujo presenta En ambos mCtodos de disefio se deben considerar cui-
las caractensticas clasicas de transformaci6n. Se intro- dadosamente criterios tales como independencia del
duce una contrasefia (flujo de entrada) y se transmite m6dul0, conveniencia (eficacia de implementaci6n y
a un centro de transformaci6n donde se compara con prueba) y facilidad de mantenimiento a medida que se
las contrasefias almacenadas. Se produce una alarma proponen modificaciones estructurales.
El Cxito de la aplicaci6n del analisis de transformaci6n o memoria o de tiempo, la delimitaci6n de 10s valores o
de transacci6n se complernenta aiiadiendo la documenta- cantidades de las estructuras de datos, 10s casos espe-
ci6n adicional requerida como parte del diseiio arquitec- ciales no considerados y las caracteristicas especificas
tbnico. DespuCs de haber desarrollado y refinado la de un m6dulo individual. El propdsito de una secci6n
estructura, se deben completar las siguientes tareas: restricciones/limitaciones es reducir el numero de erro-
se debe desarrollar una descripci6n del procesamiento res debidos a caracteristicas funcionales asumidas.
para cada mbdulo. Una vez que se ha desarrollado la documentaci6n de
se aporta una descripci6n de la interfaz para cada diseiio para todos 10s m&lulos, se lleva a cab0 una revisidn
m6dulo. (vea las directrices de revisi6n en el Capitulo 8). La revi-
si6n hace hincapiC en el seguimiento de 10s requisitos del
se definen las estructuras de datos generales y locales.
software, la calidad de la arquitecturadel p r o p a , las des-
se anotan todas las limitaciones/restricciones del cripciones de las interfaces, las descripciones de las estruc-
diseiio. turas de datos, 10s datos prhcticos de la implementaci6n, la
se lleva a cab0 una revisi6n del disefio. capacidad de prueba y la facilidad de mantenimiento.
se considera un ccrefinamiento>>(si es necesario y esta
justificado).
La arquitectura del software nos proporciona una vision la eficacia de cada arquitectura propuesta. Esto se con-
global del sistema a construir. Describe la estructura y sigue determinando la sensibilidad de 10s atributos de
la organizaci6n de 10s componentes del software, sus calidad seleccionados (tambiCn llamados dimensiones
propiedades y las conexiones entre ellos. Los compo- del disefio) con diferentes mecanismos de realizaci6n
nentes del software incluyen m6dulos de programas y que reflejan las propiedades de la arquitectura.
varias representaciones de datos que son manipulados El mCtodo de disefio arquitect6nico presentado en
por el programa. Ademas, el disefio de datos es una par- este capitulo utiliza las caractensticas del flujo de datos
te integral para la derivation de la arquitectura del soft- descritas en el modelo de anilisis que derivan de un esti-
ware. La arquitectura marca decisiones de disefio lo arquitect6nico utilizado comtinmente. El diagrama
tempranas y proporciona el mecanismo para evaluar 10s de flujo de datos se descompone dentro de la estructu-
beneficios de las estructuras de sistema altemativas. ra del sistema a travCs de dos enfoques de analisis -1
El disefio de datos traduce 10s objetos de datos defi- analisis de las transformaciones y/o el analisis de las
nidos en el modelo de anilisis, en estructuras de datos transacciones-. Se aplica el analisis de las transfor-
que residen dentro del software. Los atributos que des- maciones a un flujo de informaci6n que presenta dife-
cribe el objeto, las relaciones entre 10s objetos de datos rentes limites entre 10s datos de entrada y de salida. El
y su uso dentro del programa influyen en la elecci6n de DFD se organiza en una estructura que asigna 10s con-
la estructura de datos. A mayor nivel de abstraccibn, el troles de entrada, procesamiento y salida a travCs de tres
disefio de datos conducira a lo que se define como una jerarquias separadas de modules de descomposici6n en
arquitectura para una base de datos o un almacen de datos. factores. El analisis de las transformaciones se aplica
El ingeniero del software cuenta con diferentes esti- cuando un tinico item de information bifurca su flujo a
10s y patrones arquitect6nicos. Cada estilo describe una travCs de diferentes caminos. El DFD se organiza en
categoria de sistema que abarca un conjunto de com- una estructura que asigna el control a una subestructu-
ponentes que realizan una funcion requerida por el sis- ra que adquiere y evaltia la transacci6n. Otra subes-
tema, un conjunto de conectores que posibilitan la tructura controla todas las acciones potenciales de
comunicaci6n, la coordinaci6n y cooperacion entre 10s procesamiento basadas en la transacci6n. Una vez que
componentes, las restricciones que definen c6mo se inte- la arquitectura ha sido perfilada se elabora y se analiza
gran 10s componentes para conformar el sistema, y 10s contrastandola con 10s criterios de calidad.
modelos semanticos que facilitan a1 disefiador el enten- El disefio arquitectonico agrupa un grupo inicial de
dimiento de todas las partes del sistema. actividades de disefio que conducen a un modelo com-
Han sido propuestos uno o varios estilos arquitect6- pleto del disefio del software. En 10s siguientes capitu-
nicos por sistema, y el mCtodo de anilisis de compro- los, se estudiari el disefio de las interfaces y de 10s
misos para la arquitectura podna utilizarse para evaluar componentes.
[AH0831 Aho, A.V., J. Hopcroft y J.Ullmann, Data Structu- [KAZ98] Kazman, R. The Architectural Tradeoff Analysis
res and Algorithms, Addison-Wesley, 1983. Method, Software Engineering Institute, CMU/SEI-98-
[BAS981 Bass, L., P. Clements y R. Kazman, Sofhlare Archi- TR-008, Julio 1998.
tecture in Practice, Addison-Wesley, 1998. [KIM981 Kimball, R., L. Reeves, M. Ross y W. Thornthwai-
[DAH72] Dah, O., E. Dijkstra y C. Hoare, Structured Pro- te, The Data Warehouse Lifecycle Toolkit: Expert Methods
gramming, Academic Press, 1972. for Designing, Developing, and Deploying, Data Ware-
houses, Willey, 1998.
[DAT95] Date, C.J., An Introduction to Database Systems,
Sexta Edicion, Addison-Wesley, 1995. [LIN79] Linger, R.C., H.D. Mills y B.I. Witt, Structured Pro-
[DEN731 Dennis, J.B., <<Modularity)>,
en Advanced Course gramming, Addison-Wesley, 1979.
on Software Engineering, F.L. Bauer (ed.), Springer-Ver-
lag, Nueva York, 1973, pp. 128-182. [MAT961 Mattison, R., Data Warehousing: Strategies, Tech-
nologies and Techniques, McGraw-Hill, 1996.
[FRE80] Freeman, P., <<TheContext of Design,), in Software
Design Techniques (L.P. Freeman y A. Wasserman, eds.), [MOR80] Moms, J., ccprogramming by Successive Refine-
IEEE Computer Society Press, 3." ed., 1980, pp. 2-4. ment of Data Abstractions>>,Software-Practice and Expe-
rience, vol. 10, num. 4, abril 1980, pp. 249-263.
[INM95] Inmon, W.H., <<Whatis a Data Warehouse?>)Prism
Solutions, Inc. 1995, presentada en: [MYE78] Myers, G., Composite Structures Design, Van-
http://www.cait.wustl.edu/cait/papers/prism/voIlpol. Nostrand, 1978.
C A P ~ T U L O14 DISENO ARQUITECT~NICO
[PET811 Peters, L.J., Software Design: Methods and Techni- [WAS801 Wasserman, A., <<Principlesof Systematic Data
ques, Yourdon Press, Nueva York, 1981. Design and Implementationn, en Software Design Tech-
[PRE98] Preiss, B.R. Data Structures and Algorithms: With niques (P. Freeman y A. Wasserman, eds.), 3." ed., IEEE
Object-Oriented Design Patterns in C + + , Wiley, 1998. Computer Society Press, 1980, pp. 287-293.
[SHA96] Shaw, M., y D. Garlan, Sofnyare Arquitecture, Pren- [WIR71] Wirth, N., <<ProgramDevelopment by Stepwise Refi-
tice Hall, 1996. nement,,, CACM, vol. 14, n." 4, 1971, pp. 22 1-227.
[SHA97] Shaw, M., y P. Clements, <<AField Guide to Boxo- [YOU791 Yourdon, E., y L. Constantine, Structures Design,
logy: Preliminary Classification of Architectural Styles for Prentice-Hall, 1979.
Software Systems>>,Proc. COMPSAC, Washington DC,
Agosto 1997. [ZHA98] Zhao, J., <<OnAssessing the Complexity of Soft-
ware Architectures)>,Proc. Intl. Softw~areArchitecture
[STE74] Stevens, W., G. Myers y L. Constantine, c<Structu- Workshop, ACM, Orlando, Florida, 1998, pp. 163-167.
red Design>>,IBM System Journal, vo1.13, n." 2 , 1974,
pp. 115-139.
14.1. Usando la arquitectura de una casa o un edificio a mod0 Estudie como afectari esta opinion a la estructura del soft-
de metafora, dibuje comparaciones con la arquitectura del ware que se obtiene cuando un flujo orientado a transaccih
software. iEn quC se parecen la disciplina de la arquitectura es tratado como de transfonnaci6n. Utilice un flujo de ejem-
clasica y la de la arquitectura del software? iEn quC se dife- plo para ilustrar 10s puntos importantes.
rencian?
14.12. Si no lo ha hecho, complete el Problema 12.12. Utili-
14.2. Escriba un documento de tres a cinco paginas que con- ce 10s mCtodos de diseiio descritos en este capitulo para desa-
tenga directrices para la seleccion de estructuras de datos rrollar una estructura de programa para el SSRB.
basandose en la naturaleza del problema. Empiece delimi-
tando las clasicas estructuras de datos que se encuentran en 14.13. Mediante un diagrama de flujo de datos y una des-
el software y despuCs describiendo 10s criterios para la selec- cripcidn del procesamiento, describa un sistema basado en
ci6n de Cstos para tipos particulares de problemas. computadora que tenga unas caracteristicas de flujo de trans-
fonnaci6n singulares. Defina 10s limites del flujo y transfor-
14.3. Explique la diferencia entre una base de datos que sir- me el DFD en la estructura software usando una tCcnica de las
ve a una o mas aplicaciones de negocios convencionales y un descritas en la Secci6n 14.6.
almacCn de datos.
14.14. Mediante un diagrama de flujo de datos y una des-
14.4. Escriba un documento de tres a cinco p5gina que des- cripcion de procesamiento, describa un sistema basado en
criba cdmo se utilizan las tCcnicas de mineria de datos en computadora que tenga unas caracteristicas de flujo de tran-
un entorno de negocio y el estado actual de las tCcnicas saccion claras. Defina 10s limites del flujo y direcciones el
DCBC. DFD en una estructura software utilizando la tCcnica descri-
14.5. Presente dos o tres ejemplos de aplicaciones para cada ta en la Seccidn 14.7.
estilo arquitect6nico citado en la Seccion 14.3.1. 14.15. Usando 10s requisitos obtenidos en un estudio hecho
14.6. Algunos de 10s estilos arquitectonicos citados en la Sec- en clase, complete 10s DFD y el diseiio arquitecthico para el
cion 14.3.1. son jerarquicos por naturaleza y otros no. Haga ejemplo HogarSeguro presentado en las Secciones 14.6 y 14.7.
una lista de cada tipo. iC6mo se implementan 10s estilos arqui- Valore la independencia funcional de todos 10s m6dulos. Docu-
tect6nicos no jerarquicos? mente su diseiio.
14.7. Seleccione una aplicaci6n que le sea familiar. Contes- 14.16. Estudie las ventajas y dificultades relativas de aplicar
te cada una de las preguntas propuestas para el control y 10s un diseiio orientado a1 flujo de datos en las siguientes fireas:
datos de la Secci6n 14.3.2. (a) aplicaciones de microprocesador empotrado, (b) analisis
14.8. Estudie el MACA (utilizando el libro de [KAZ98]) y de ingenieria/cientifico,(c) graficos por computadora, (d) dise-
presente un estudio detallado de 10s seis pasos presentados iio de sistemas operativos, (e) aplicaciones de negocio, (f) dise-
en la Seccidn 14.4.1. iio de sistemas de gesti6n de bases de datos, (g) disefio de
software de comunicaciones, (h) diseiio de compiladores, (i)
14.9. Seleccione una aplicaci6n que le sea familiar. Utili- aplicaciones de control de proceso y (j)aplicaciones de inte-
zando, donde sea requerido, su mejor intuicibn, identifique ligencia artificial.
el conjunto de dimensiones del diseiio y despuCs realice el
analisis del espectro y el analisis de la selecci6n del diseiio. 14.17. Dado un conjunto de requisitos que le proporcione
su profesor (o un conjunto de requisitos de un problema en
14.10. Estudie el EDC (utilizando el libro de [SHA96]) y el que estC trabajando actualmente) desarrolle un diseiio
desarrolle un espacio de diseiio cuantificado para una aplica- arquitect6nico completo. Lleve a cab0 una revisidn del dise-
cidn que le sea familiar. fio (Capitulo 8) para valorar la calidad de su diseiio. Este pro-
14.11. Algunos disefiadores defienden que todo el flujo de blema debe asignarse a un equipo en vez de a un solo
datos debe ser tratado como orientado a transfonnaciones. individuo.
INGENIERfA DEL SOFTWARE. U N ENFOQUE P R A C T I C O
Durante la ultima dCcada han aparecido muchisimos libros Docenas de libros actuales, a menudo abordan el disefio
sobre arquitectura de software. Los libros de Shaw y Cannon de datos y el disefio de estructuras desde un context0 especi-
[SHA96], Bass, Clements y Kazman [BAS981 y Buschmann fico del lenguaje de programacidn. Algunos ejemplos tipicos
y colaboradores[BUS98], proporcionan un tratamiento en 10s encontramos en:
profundidad sobre la materia. El primer trabajo de Garlan (An Horowitz, E. Y S. Sahni,Fundamentals of Data Structures
Introduction to Software Architecture, Software Engineering in Pascal, 4."ed., W.H. Freeman & Co., 1999.
Institute, CMUJSEI-94-TR-021, 1994) proporciona una exce-
Kingston, J.H., Algorithms and Data Structures: Design,
lente introduccidn a1 tema.
Correctness, Analysis, 2." ed., Addison-Wesley, 1997.
Los libros especificos de implementacibn de arquitectu-
ra, situan el disefio arquitectdnico dentro de un entorno espe- Main, M., Data Strucrures & Other Objects Using Java,
cifico de desarrollo o tecnologia. Mowray (CORBA Design Addison-Wesley, 1998.
Patterns, Wiley, 1997) y Mark y colaboradores (Object Mana- Preiss, B.R., Dara Structures and Algorithms: With Object-
gement Architecture Guide, Wiley, 1996) proporcionan para- Oriented Design Patterns in C++, Wiley, 1998.
metros de disefio detallados para el marco de soporte de las Sedgewick,R., Algorithms in C++: Fundamentals, Data
aplicaciones distribuidas de CORBA. Shanley (Protected Structures, Sorting, Searching, Addison-Wesley, 1999.
Mode Software Architecture, Addison-Wesley, 1996) pro- Standish,T.A., Data Structures in Ja\,a, Addison-Wesley,
porciona una guia de diseiio arquitectdnico para aquellos que 1997.
diseiien sistemas operativos a tiempo real basados en com- Standish,T.A., Data Structures,Algorithms, and Software
putadora, sistemas operativos multitarea o controladores de Principles in C , Addison-Wesley, 1995.
dispositivos.
Las investigaciones actuales sobre arquitectura de soft- En la mayoria de 10s libros dedicados a la ingenieria de soft-
ware estan recogidas en el anuario Proceedings of the Inter- ware se puede encontrar un tratarniento general del diseiio del
national Workshop on Sofmare Architecture, patrocinado por software en discusibn con el disefio arquitectdnico y el disefio
la ACM y otras organizaciones de computadoras y en el Pro- de datos. Los libros de Pfleeger (Sofnvare Engineering: Theory
ceedings of the International Conference on Software Engi- and Practice, Prentice may, 1998) y Sommerville (Sofmare
neering. Engineering, 5." ed., Addison-Wesley, 1995) son representati-
El modelado de datos es un prerrequisito para un buen vos de 10s libros que cubren en detalle el tema del diseiio.
diseiio de datos. Los libros de Teory (Database Modeling Se puede encontrar un tratarniento m k riguroso de la mate-
& Design, Academic Press, 1998), Schimdt (Data Modeling ria en Feijs (Formalization of Design Methods, Prentice may,
for Information Professionals, Prentice Hall, 1998), Bobak, 1993),Witt y colaboradores (SofnvareArchitecture and Design
(Data Modeling and Design for Today's Architectures, Principles, Thomson Publishing, 1994) y Budgen (Software
Artech House, 1997), Silverston, Graziano e Inmon (The Design, Addison-Wesley, 1994).
Dara Model Resource Book, Wiley, 1997), Date [DAT95], Se pueden encontrar representaciones completas de dise-
Reingruber y Gregory (The Data Modeling Handbook: A iios orientados a flujos de datos en Myers [MYE78], Yourdon
Best-Practice Approach to Building Quality Data Models, y Constantine [YOU79], Buhr (SystemDesign with Ada, Pren-
Wiley, 1994), Hay (Data Model Patterns: Conventions of tice may, 1984), y Page-Jones (The Practical Guide to Struc-
Thought, Dorset House, 1994) contienen una presentacidn tured Systems Design, segunda edicibn, Prentice may, 1988).
detallada de la notacidn de modelado de datos, heuristicas, Estos libros estan dedicados solamente a1 diseiio y propor-
y enfoques de diseiio de bases de datos. En 10s ultimos aiios cionan unas completas tutorias en el enfoque de flujo de datos.
el diseiio de almacenes de datos ha ido cobrando importan- En Internet estan disponibles una gran variedad de fuen-
cia. Los libros de Humphreys, Hawkins y Dy (Data Ware- tes de informacidn sobre diseiio de software y temas relacio-
housing: Architecture and Implementation, Prentice Hall, nados. Una lista actualizada de referencias web sobre
1999), Kimball [KIM981 e Inmon [INM95] cubren con gran conceptos y mCtodos de diseiio relevantes se puede encon-
detalle la materia. trar en: http://www.pressman5.com.
proteso d d diseiio.. ..262
reglas de oro ....... .260
A
.. . A . A ?I7
-
----Ex-
-
...---.-
prototipo d e i n t e r f a d e usuario.
mT". . .
. . - .,.a ..I. - .
identificacibn d e 10s requisites del usua-
w i n .-la l" *".a" .t Anl an+nrn,-. TT.." .
.a- -
e s quien disefia la interfaz d e usuario el desarrollo y mcdificacion iterativode
mediante la aplicacion del prmeso ite- prototip.
. .. . ..
- -
definidos del disefio. nes d e la interfaz. Esto e s 10 que forma - he h&ho c o d - e n b ? G u s u a -
~ P o qu6
r es impodante? Si el software la base para Ia creacion del formato d e rios controlan el prototipo mediante
e s dificil d e utilizar, si obIiga a cometer la p t a l l a que representa el disefio gra- p~ebX y la respuesta obtenida del con-
#---,---:A" *--1 A-1 --
,-..'- ...:!:-- -..- 1., -:-.:--
I N G E N I E R ~ ADEL SOFTWARE. U N E N F O Q U E PRACTICO
Theo Mantel [MAN971 en su libro crea tres aeglas de interactuar a travCs de las 6rdenes del teclado, con el
oron para el disefio de la interfaz: movimiento del raton, con un lipiz digitalizador, medlante
1. Dar el control a1 usuario 6rdenes para el reconocimiento de voz. Sin embargo, no
toda accion responde a todo mecanismo de interaccion.
2. Reducir la carga de memoria del usuario Considere por ejemplo, la dificultad de utilizar 6rdenes
3. Construir una interfaz consecuente del teclado (o entrada de voz) para dibujar una forma
Estas reglas de oro forman en realidad la base para compleja.
10s principios del disefio de la interfaz de usuario que Permitir que la interaccidn del usuario se pueda
servirin de guia para esta actividad de disefio de soft- interrumpir y deshacer. Cuando un usuario se ve
ware tan importante. involucrado en una secuencia de acciones, deberi poder
interrumpir la secuencia para hacer cualquier otra cosa
15.1.1. Dar el control a1 usuario (sin perder el trabajo que se hubiera hecho anteriormente).
El usuario deberi tambikn tener la posibilidad de
Durante la sesion de recopilacion de 10s requisitos para
c<deshacer>> cualquier accion.
un nuevo sistema de informaci6n, un usuario clave fue
preguntado a cerca de 10s atributos de la interfaz grafi- Aligerar la interaccidn a medida que avanza el nivel
ca orientada a ventanas. de conocimiento y permitir personalizar la interaccidn.
El usuario respondi6 solemnemente, <<Loque me gus- El usuario a menudo se encuentra haciendo la misma
taria realmente es un sistema que lea mi mente. Que secuencia de interacciones de manera repetida. Merece
conozca lo que quiero hacer antes de necesitarlo y que la pena sefialar un mecanismo de <<macros>> que
me facilite hacerlo. Eso es todo. Simplemente eso.>> posibilite a1 usuario personalizar la interfaz y asi facilitar
Mi primera reaccion fue mover la cabeza y sonreir, la interaccion.
y hacer una pausa por unos instantes. No habia nada
malo en la solicitud del usuario. Lo que queria era que
un sistema reaccionara ante sus necesidades y que le
ayudara a hacer las cosas. Queria controlar la compu-
tadora, y no dejar que la computadora le controlara.
La mayor parte de las restricciones y limitaciones
impuestas por el diseiiador se han pensado para sim-
plificar el mod0 de interaccion. Pero, ipara quienes? En
muchos casos es posible que el disefiador introduzca Ocultar a1 usuario ocasional 10s entresijos te'cnicos.
limitaciones y restricciones para simplificar la imple- La interfaz de usuario deberi introducir a1 usuario en el
mentacion de la interfaz. Y el resultado puede ser una mundo virtual de la aplicacion. El usuario no tiene que
interfaz ficil de construir, per0 frustrante de utilizar. conocer el sistema operativo, las funciones de gestion
Mandel [MAN971 define una serie de principios de de archivos, o cualquier otro secret0 de la tecnologia
diseiio que permiten dar control a1 usuario: inforrnatica. Esencialmente, la interfaz no debera
Definir 10s modos de interaccidn de manera que no requerir nunca que el usuario interactue a un nivel
obligue a que el usuario realice acciones innecesarias <<interno>> de la miquina (por ejemplo, el usuario no
y no deseadas. Un mod0 de interaccion es el estado tendri que teclear nunca las 6rdenes del sistema
actual de la interfaz. Por ejemplo, si en el procesador operativo desde dentro del software de aplicacion).
de textos se selecciona el corrector ortogr$ico, el Diseiiar la interaccibn directa con 10s objetos que
software pasa a mod0 corrector ortogrifico. No hay aparecen en la pantalla. El usuario tiene un sentimiento
ninguna razon por la que obligar a que el usuario de control cuando manipula 10s objetos necesarios para
permanezca en este mod0 si el usuario desea continuar llevar a cab0 una tarea de forma similar a lo que ocurriria
editando una parte pequeiia de texto. El usuario deberi si el objeto fuera algo fisico. Como ejemplo de
tener la posibilidad de entrar y salir de este mod0 sin manipulaci6n directa puede ser una interfaz de aplicacion
mucho o ningun esfuerzo. que perrnita a1 usuario ccalargm un objeto (cambiar su
tamaiio).
~Comose diseiian interfaces
que den el control al usuario? 15.1.2. Reducir la carga de memoria del usuario
Cuanto mis tenga que recordar un usuario, mas propen-
Tener en consideraci6n una interaccibnflexible. Dado sa a errores sera su interaccion con el sistema. Esta es la
que diferentes usuarios tienen preferencias de interaccion razon por la que una interfaz de usuario bien disefiada no
diferentes, se deberh proporcionar diferentes selecciones. pondri a prueba la memoria del usuario. Siempre que sea
Por ejemplo, un software que pueda permitir a1 usuario posible, el sistema debera <<recordan> la informacion per-
CAPfTULO 15 DISENO DE LA INTERFAZ DE USUARIO
El proceso global para el disefio de la interfaz de usua- usuarios esporadicos y con conocimientos: poseen
rio comienza con la creaci6n de diferentes modelos de un conocimiento semintico razonable, per0 una
funcionamiento del sistema (la percepci6n desde fue- retenci6n baja de la informaci6n necesaria para uti-
ra). Es entonces cuando se determinan las tareas orien- lizar la interfaz;
tadas a1 hombre y a la miquina que se requieren para usuarios frecuentes y con conocimientos: poseen
lograr el funcionamiento del sistema; se tienen en con- el conocimiento sintictico y semintico suficiente
sideraci6n 10s temas de disefio que se aplican a todos como para llegar a1 ccsindrome del usuario avanzado>>,
10s disefios de interfaces; se utilizan herramientas para esto es, individuos que buscan intermpciones breves
generar prototipos y por 6ltimo para implementar el y modos abreviados de interacci6n.
modelo de disefio, y evaluar la calidad del resultado.
' Por supuesto esto no es como deberia ser. Para sistemas interactivos, El conocimiento semantic0 se reliere al sentido subsiguiente de apli-
el diseiio de la interfaz es tan importante como el disefio de 10s datos, cacion -una comprension de la realization de todas las funciones,
arquitectura o el de componentes. del significado de entrada y salida, de las metas y objetivos del sis-
En este context0 el conocimiento sintactico se refiere a la mecanica tema-.
de interaccion que se requiere para utilizar la interfaz de forma eficaz.
CAP~TULO
15 DISENO D E L A INTERFAZ D E U S U A R I O
sona piensa que deberia estar haciendo cuando utiliza Se registran el nivel de conocimiento, la comprensi6n
un sistema interactive,, [MON84]. Esencialmente, estos del negocio y la receptividad general del nuevo siste-
modelos permiten que el diseiiador de la interfaz satis- ma, y se definen diferentes categorias de usuarios. En
faga un elemento clave del principio mas importante cada categoria se lleva a cab0 la elicitaci6n de 10s requi-
del disefio de la interfaz de usuario: <<quienconoce a1 sitos. Esencialmente, el ingeniero del software intenta
usuario. conoce las tareas,,. comprender la percepci6n del sistema (Secci6n 15.2.1)
para cada clase de usuario.
15.2.2. El proceso de diseiio de la interfaz Una vez definidos 10s requisitos generales, se lleva 'a
de usuario cab0 un analisis mas detallado de las tareas. Se identifi-
can, describen y elaboran las tareas que lleva a cab0 el
El proceso de disefio de las interfaces de usuario es ite- usuario para conseguir 10s objetivos (por encima de la can-
rativo y se puede representar mediante un modelo espi- tidad de pasos iterativos a travCs de la espiral). El anali-
ral similar al abordado en el Capitulo 2. En la Figura sis de tareas se estudia detalladamenteen la Seccion 15.3.
15.1 se puede observar que el proceso de disefio de la El analisis del entorno de usuario se centra en el
interfaz de usuario acompafia cuatro actividades distin- entorno del trabajo fisico. Entre las preguntas que se
tas de marco de trabajo [MAN97]: formulan se encuentran las siguientes:
1. Analisis y modelado de usuarios, tareas y entornos. iD6nde se ubicara fisicamente la interfaz?
2. Disefio de la interfaz iD6nde se situara el usuario? ~Llevaraa cab0 tareas
3. Implementaci6n de la interfaz no relacionadas con el interfaz?
4. Validaci6n de la interfaz iSe adapta bien el hardware a las limitaciones de luz,
Validacion
de la interfaz
4- Analisis de usuarios,
tareas v entornos
espacio o ruido?
Esta recopilaci6n de informaci6n que forma pate de
la actividad de anhlisis se utiliza para crear un modelo
de analisis para la interfaz. Mediante esta base de mode-
lo se comienza la actividad de disefio.
iCud es el obietivo
del diseiio de la interfaz
de usuario?
En el Capitulo 13 se estudi6 la elaboraci6n paso a paso de una serie de actividades importantes: disefio del mobi-
(llamada tambikn refinamiento paso a paso y descompo- liario, selecci6n de tejidos y materiales, selecci6n de deco-
sici6n funcional) como mecanismo para refinar las tareas rados en paredes y ventanas, presentaci6n (a1 cliente),
de procesamiento necesarias para que el software lleve a costes y compras. Todas y cada una de estas tareas pue-
cab0 la funcion deseada. Mis adelante en este mismo libro den elaborarse en otras subtareas. Por ejemplo, el disefio
tendremos en consideraci6n el andisis orientado a obje- del mobiliario puede refinarse en las tareas siguientes: (1)
tos como enfoque de modelado para 10s sistemas basados dibujar el plano de la casa con las dimensiones de las habi-
en computadora. El andisis de tareas para el disefio de la taciones; (2) ubicar ventanas y puertas en 10s lugares ade-
interfaz o bien utiliza un enfoque elaborativo o bien orien- cuados; (3) utilizar plantillas de muebles para dibujar en
tad0 a objetos, per0 aplicando este enfoque a las activi- el plano un esbozo del mobiliario a escala; (3) mover el
dades humanas. esbozo del mobiliario para mejorar su colocacidn; (5) eti-
El andisis de tareas se puede aplicar de dos maneras. quetar el esbozo del mobiliario; (6) dibujar las dimensio-
Como ya hemos destacado anteriormente, un sistema nes para mostrar la colocaci6n; (7) realizar un dibujo en
interactivo basado en computadora se suele utilizar para perspectiva para el cliente. Para las otras tareas impor-
reemplazar una actividad manual o semi-manual. Para tantes del enfoque se puede utilizar un mktodo similar.
comprender las tareas que se han de llevar a cab0 para
lograr el objetivo de la actividad, un ingeniero4deberi
entender las tareas que realizan 10s hombres actualmente
(cuando se utiliza un enfoque manual) y hacer corres-
10s toreas humonos se definen y se closifican como porte
ponder esta tareas con un conjunto de tareas similar (aun-
del onolisis de 10s toreos. Poro refinor los toreos se utilizo
que no necesariamente idknticas) que se implementan en un proceso de eloborocion. De formo alternotivo,
el context0 de la interfaz de usuario. De forma altemati- se identificon y se refinon 10s obietos y 10s acciones.
va, el ingeniero puede estudiar la especificaci6n existen-
te para la soluci6n basada en computadora y extraer un Las subtareas (1)-(7) pueden recibir mis refinamien-
conjunto de tareas que se ajusten al modelo de usuario, a1 to. Las subtareas (1)-(6) se llevarhn a cab0 mediante la
modelo de disefio y a la percepci6n del sistema. manipulaci6n de informaci6n y mediante la realizaci6n
Independientementedel enfoque global utilizado para de acciones dentro de la interfaz de usuario. Por otro lado,
el an6lisis de tareas, el ingeniero deberi en primer lugar la subtarea (7) se podri llevar a cab0 automiticamente en
definirlas y clasificarlas. Ya se ha descrito anteriormente el software y dar5 como resultado muy poca interacci6n
que el enfoque es una elaboraci6n paso a paso. Por ejem- directa con el usuario. El modelo de disefio de la interfaz
plo, supongamos que una compaiiia pequefia quiere cons- deber6 adaptarse a cada una de estas tareas de forma con-
truir un sistema de disefio asistido por computadora secuente con el modelo del usuario (el perfil de un dise-
explicitamente para disefiadores de interiores. A1 obser- fiador cctipico>>de interiores) y con la percepci6n del
var a un disefiador de interiores en su trabajo, el ingenie- sistema (lo que el disefiador de interiores espera de un sis-
ro se da cuenta y notifica que el disefio interior se compone tema automatizado).
Una vez finalizado el anilisis de tareas, quedan defini- 2. Hacer corresponder cada objetivo/intenci6n con una
das detalladamente todas (u objetos y acciones) las que secuencia de acciones especificas
requiere el usuario final y comienza la actividad del dise- 3. Especificar la secuencia de acciones de tareas y sub-
fio de la interfaz. Mediante el enfoque que se muestra a tareas, tambikn llamado escenario del usuario, de la
continuacidn se podrin llevar a cab0 10s primeros pasos manera en que se ejecutarh a nivel de la interfaz.
del disefio de la interfaz [NOR86]: 4. Indicar el estado del sistema, esto es, el aspect0 que
1. Establecer 10s objetivos5e intenciones para cada tarea. tiene la interfaz cuando se esti llevando a cabo el
escenario del usuario.
~Cualesson 10s pasos Definir 10s mecanismo de control, esto es, 10s obje-
que hay que seguir para llevar tos y acciones disponibles para que el usuario altere
a cabo el diseiio de la interfaz? el estado del sistema.
En muchos casos las actividades descritas en esta seccion ion Ile- Entre 10s objetivos se pueden incluir la consideracion de la utilidad de
vadas a cabo por un ingeniero del software. Esperemos que el indi- las tareas, la efectividad al llevar a cabo el objetivo comercial primor-
vjduo tenga experiencia en ingenieria humana y en el diseRo de la dial, el grado de rapidez de aprendizaje de las tareas y el grado de satis-
interfaz de usuario. faccion de los usuarios con la irnplementacion final de la tarea.
CAPfTULO 15 DISENO DE LA INTERFAZ DE USUARIO
Mostrar la forma en que 10s mecanismos de control pantalla. A1 igual que otras actividades de disefio de la
afectan a1 estado del sistema. interfaz, el formato de pantalla es un proceso interactivo
Indicar la forma en que el usuario interpreta el estado en donde se lleva a cab0 el disefio grhfico y la colocaci6n
del sistema a partir de la informaci6n proporcionada de 10s iconos, la definici6n del texto descriptivo en pan-
gracias a la interfaz. talla, la especificaci6n y titulos para las ventanas, y la
Aunque el disefiador de la interfaz se guia por las definici6n de 10s elementos del menu principales y secun-
reglas de oro abordadas en la Secci6n 15.1,debeki con- darios. Si una metfifora con el mundo real es adecuada
siderar la forma en que se va a implementar la interfaz, para la aplicaci61-1,queda especificada en ese momento y
el entomo (por ejemplo, tecnologia de pantalla, sistema el formato se organiza para complementar esa metfifora.
operativo, herramientas de desarrollo) que se va a uti- Para mostrar la breve ilustracion de 10s pasos de dise-
lizar y otros elementos de la aplicacion que ccse encuen- fio descritos anteriormente, tomemos en consideration
tren por detras>>de la interfaz. un escenario de usuario para la version avanzada del
sistema HogarSeguro (descrito en capitulos anteriores).
En la versi6n avanzada, se puede acceder a HogarSe-
15.4.1. Definicidn de objetos y acciones guro mediante m6dem o Internet. Una aplicaci6n para
de la interfaz PC permite que un propietario compruebe el estado de
Un paso importante en el disefio de la interfaz es la defi- la casa desde una localizaci6n remota, reinicializar la
nici6n de 10s objetos y acciones que se van a aplicar. configuraci6n HogarSeguro, activar y desactivar el sis-
Para llevar a cab0 esta definici611, el escenario del usua- tema, (empleando una opci6n de video con un coste
rio se analiza sintficticamente de manera muy similar a extra6), y supervisar visualmente las habitaciones den-
como se analizaban 13s narrativas de procesamiento del tro de la casa. A continuaci61-1,se muestra un escenario
Capitulo 12. Esto es, se escribe la descripci6n del esce- preliminar de usuario para la interfaz:
nario de un usuario. Los sustantivos (objetos) y 10s ver-
bos (acciones) se aislan para crear una lista de objetos El escenoim descrito oqul es sirnilor o !us cosos
y de acciones. de estudio descritos en el CopCtulo 1 1.
En lo Seccidn 12.6.2 se puede encontror un estudio Escenario. El propietario de la casa desea acceder a1 sis-
cornpleto del on6lisis sernbntico grarnoticol. tema HogarSeguro instalado en su casa. Mediante el siste-
ma operativo de un PC remoto (por ejemplo, un portatil que
el propietario se lleve a1 trabajo o de viaje), el propietario
Una vez que se han definido y elaborado iterativa- determina el estado del sistema de alarma, arma o desarma
mente tanto 10s objetos como las acciones, se estable- el sistema, reconfigura las zonas de seguridad y obsema las
cen categorfas por tipos. Los objetos se identifican como diferentes habitaciones de la casa mediante la preinstalaci6n
objetos origen, destino y de aplicaci6n. Un objeto ori- de una camara de video.
gen (por ejemplo, un icono de informes) se arrastra y se Para acceder a HogarSeguro desde una localizaci6n remo-
coloca sobre otro objeto destino (por ejemplo, un icono ta, el propietario proporciona un identificador y una contrase-
de impresora). La implication de esta acci6n es crear iia. Con esto se definen 10s niveles de acceso (por ejemplo,
una copia impresa de un informe. Un objeto de aplica- todos 10s usuarios puede que no tengan la capacidad de recon-
figurar el sistema) y se proporciona seguridad. Una vez vali-
cibn representa 10s datos especificos de la aplicaci6n dados, el usuario (con 10s privilegios para el acceso) comprueba
que no se manipulan directamente como parte de la inte- el estado del sistema, y cambia el estado armando y desarmando
racci6n de la pantalla. Por ejemplo, una lista de correo HogarSeguro. El usuario reconfigura el sistema visualizando
postal se utiliza para almacenar 10s nombres que se uti- todas las zonas configuradas actualmente,modificando las zonas
lizarfin para un correo postal. Esta lista se puede orde- cuando se requiera. El usuario observa el interior de la casa
nar, fusionar o purgar (acciones basadas en men6) per0 mediante c h a r a s de video estratkgicamente ubicadas. El usua-
no puede utilizar las c h a r a s para recorrer todo el interior y
no se puede arrastrar y colocar mediante la interacci6n ampliarlo para ofrecer diferentes visiones del interior de la casa.
del usuario.
Tareas del propietario:
~ Q u es
e el formato
acceder a1 sistema HogarSeguro;
de pantalla y como se aplica?
introducir un ID y una contraseiia para permitir un acceso
remoto;
Una vez que el disefiador queda satisfecho con la defi-
nici6n de todos 10s objetos y acciones importantes (para cornprobar el estado del sistema;
una iteraci6n de disefio), se lleva a cab0 el formato de activar o desactivar el sistema HogarSeguro;
vi.urtrlizur-el plano de la casa y las localimciones de los sen- seleccionar una visi6n desde otra cAmara, el usuario
sores; simplemente arrastra y coloca el icono de localization
vi.malizar zonas en el plano de la casa: de camara dentro del icono camara del ingulo supe-
c,arnhiu~-zonas en el plano de la casa; rior izquierdo de la pantalla.
visuulizur-las locali7aciones de las dmaras de video en el Esta muestra de esbozo de formato tendria que ir
plmo de la cam; complementado mediante una ampliacion de todos 10s
la climara de video para tener visi6n;
.selcc~ciorror. elementos del menu dentro de la barra de menli, indi-
ohser-~wr-las imligenes de video (cuatro encuadres por cando las acciones disponibles para el (estado) n~ockode
segundo); s~1pervisi6ndel video. Durante el disefio de la interfaz
IPCOI.IW y mlpliur la.habi~acionescon la dmara de video. se deberia crear un conjunto completo de esbozos para
todas y cada una de las tareas del propietario descritas
Los objetos (negrita) y las acciones (cursiva) se en el escenario del usuario.
extraen de la lisla de tareas del propietario descritas
anteriormente. La mayoria de 10s objetos anteriores son
objetos de aplicaciones. Sin cmbargo la localizaci6n de 15.4.2. Problemas del disefio
la cimara de video (un objeto origen) se arrastra y se A medida que la interfaz de usuario va evolucionando
coloca sobre la chmara de video (un objeto destino) para casi siempre afloran cuatro temas comunes de disefio:
crear una imagen de video (una ventana con la presen- el tiempo de respuesta del sistema, 10s servicios de ayu-
taci6n de un video). da a1 usuario, la manipulaci6n de infornmi6n de erro-
Para la supervisibn del video se crea un esbozo del res y el etiquetado de brdenes. Desgraciadamente,
formato de pantalla (Fig. 15.2). Para invocar la imagen muchos diseiiadores no abordan estos temas dentro del
de video, se selecciona Ln icono de localizaci6n de proceso de diseiio has& que es relativamente tarde (algu-
camara de video C, ubicado en el plano de la casa que nas veces no se siente la aparici6n de un error hasta que
se visualiza en la ventana de supervision. En este caso, se dispone del prototipo operativo). El resultado suele
la localizaci6n de una cimara en la sala de estar (SE), ser una iteraci6n innecesaria, denioras de proyecto y
se arrastra y se coloca sobre el icono de video de cdma- frustraci6n del usuario. Es infinitamente mejor estable-
ra en la pane superior izquierda de la pantalla. Enton- cer el tema de diseiio que se vaya a tener en cuenta a1
ces, mediante la visualizaci6n del recorrido realizado iniciar el diseiio del software, es decir cuando 10s cam-
por el video desde la c6mara localizada en la sala de bios son FAciles y 10s costes m6s reducidos.
cstar (SE), apaece la ventana de imagen de video. Las Para muchas aplicaciones interactivas el tiempo de
diapositivas de control del recorrido por las habitacio- respuesta del sistema es el principal motivo de queja.
nes y de las ampliaciones se utilizan para controlar la En general, el tiempo de respuesta del sistema se mide
amplitud y la direcci6n de la imagen de video. Para desde el punto de vista que el usuario realiza la acci6n
?I=.
Conexrdn
S Sensores puertahentana
M detector de movimiento
fmuestra de bar)
C localizacidn de cdmare de video
fio, se crea un prototipo de primer nivel. Este prototipo 1. La duraci6n y la complejidad de la especificaci6n
es evaluado por el usuario, que es quien proporcionara que se haya escrito del sistema y de su interfaz pro-
a1 disefiador 10s comentarios directos sobre la eficacia porcionan una indicaci6n de la cantidad de aprendi-
de la interfaz. Ademas, si se utilizan tCcnicas formales zaje que requieren 10s usuarios del sistema.
de evaluaci6n (por ejemplo, cuestionarios, hojas de eva- 2. La cantidad de tareas especificadas y la cantidad media
luacion), es posible que el disefiador extraiga informa- de acciones por tarea proporcionan una indicacion del
cion de estos datos (por ejemplo, el 80 por 100 de 10s tiempo y de la eficacia global del sistema.
usuarios no mostro afinidad con el mecanismo para gra-
bar archivos de datos). Las modificaciones que se rea- 3. La cantidad de acciones, tareas y estados de sistemas
k e n sobre el disefio se basarhn en la entrada del usuario indicados con el modelo de disefio indican la carga de
y entonces se creara el prototipo de segundo nivel. El memoria que tienen 10s usuarios del sistema.
ciclo de evaluaci6n continua hasta que ya no Sean nece- 4. El estilo de la interfaz, las funciones de ayuda y el
sarias mhs modificaciones del diseiio de la interfaz. protocolo de solucion de errores proporcionan una
indicacion general de la complejidad de la interfaz
y el grado de aceptaci6n por parte del usuario.
Una vez construido el primer prototipo, el disefiador
puede recopilar una diversidad de datos cualitativos y
cualificativos que ayudaran a evaluar la interfaz. Para
recopilar 10s datos cualitativos, se pueden distribuir cues-
tionarios a 10s usuarios del prototipo. Las preguntas pue-
den ser (1) del tipo de respuesta si/no; (2) respuesta
numCrica; (3) respuesta con escala de valoraci6n (sub-
jetiva), o (4) respuesta por porcentajes (subjetiva). A
El enfoque de generaci6n de prototipos es eficaz, continuacion se muestran unos ejemplos:
ahora bien jes posible evaluar la calidad de la interfaz 1. ~ E r a nclaros 10s iconos? En caso negativo, ~ Q u C
de usuario antes de construir un prototipo? Si 10s pro- iconos no eran claros?
blemas se pueden descubrir y solucionar rapidamente,
2. ~ E r a nfaciles de recordar y de invocar las acciones?
el numero de bucles en el ciclo de evaluacion se redu-
cira y el tiempo de desarrollo se acortara. Si se ha crea- 3. ~Cuantasacciones diferentes ha utilizado?
do un modelo de disefio de la interfaz, durante las 4. ~Resultaronfaciles de aprender las operaciones bisi-
primeras revisiones del disefio se podran aplicar una cas del sistema? (valoraci6n de 1 a 5)
serie de criterios [MOR8 11 de evaluacion: 5. En comparacion con otras interfaces que haya utili-
zado, ~ C Oevaluaria
~ O Csta?
entre el 1 % mejores, 10% mejores, 25% mejores, 50%
Disetio mejores, 50% inferiores.
preliminar
Construccion
de la interfaz
lnterfoz de usuorio
de la interfaz
Si se desea obtener datos cuantitativos, se puede lle-
var a cabo una forma de anfilisis para el estudlo del tiempo.
u Realization
de las
modificaciones
del disetio
de la interfaz
es estudiada
El usuario
eva 11'1a
la interfaz
Los usuarios son observados durante la interacci6n;y para
tener una guia durante la modlficacion de la interaccion
se recopilan y utilizan datos tales como: grupo de tareas
finalizadas correctamente por encima del periodo de
tiempo estandar; frecuencia de acciones; secuencia de
acciones; tiempo transcurrido <<mirando>> la pantalla;
numero y tipo de errores, y tiempo de solucion de erro-
res; tiempo necesario para utilizar la ayuda; y cantidad de
referencias de ayuda por periodo de tiempo estiindar.
Un estudio completo de 10s mCtodos de evaluacion de
esta finalizada
la interfaz de usuario queda fuera del Ambito de este libro.
FIGURA 15.3. El ciclo de evaluacion de disetio de la interfaz. Para mas informaci6n, vCase [LEA881 y [MAN97].
I N G E N I E R ~ ADEL SOFTWARE. U N ENFOQUE PRACTICO
Se puede argumentar que la interfaz de usuario es el ele- Una vez que se han definido las tareas, 10s escena-
mento miis importante de un sistema o product0 basa- nos del usuario se crean y analizan para definir un con-
do en computadora. Si la interfaz tiene un disefio pobre, junto de objetos y acciones de la interfaz. Esto es lo que
la capacidad que tiene el usuario de aprovecharse de la proporciona la base para la creaci6n del formato de la
potencia de proceso de una aplicacion se puede dificul- pantalla, el cual representa el disefio grafico y la colo-
tar gravemente. En efecto, una interfaz debil puede llevar cacion de iconos, la definicion de un texto descriptivo
a1 fracas0 de una aplicacion con una implementacion en pantalla, la especificacion y titulacion de ventanas y
solida y un buen disefio. la especificacion de 10s elementos importantes y secun-
Existen tres principios importantes que dirigen el dise- darios del menu. Cuando se va a refinar un modelo de
fio de interfaces de usuario eficaces: (1) poner el control disefio para el sistema se tienen en consideracion temas
en manos del usuario; (2) reducir la carga de la memoria de disefio tales como tiempo de respuesta, estructura de
del usuario; (3) construir una interfaz consecuente. Para ordenes y acciones, manipulacion de errores y funcio-
lograr que una interfaz se atenga a estos principios, se nes de ayuda. Para construir un prototipo que el usua-
debera desarrollar un proceso de disefio organizado. rio pueda evaluar se utilizan diversas herramientas de
El disefio de la interfaz de usuario comienza con implementacion.
la identificacion de 10s requisitos del usuario, de las La interfaz de usuario es la ventana del software. En
tareas y del entorno. El analisis de tareas es una acti- muchos casos, la interfaz modela la percepcion que tie-
vidad de disefio que define las tareas y acciones del ne un usuario de la calidad del sistema. Si la ventana se
usuario empleando un enfoque elaborativo u orienta- difumina, se ondula o se quiebra, el usuario puede recha-
do a objetos. zar un sistema potente basado en computadora.
[DUM88] Dumas, J.S., Designing User Interfaces for Soft- puter Systems,, Intl. Journal of Man-Machine Studies,
M1are,Prentice-Hall, 1988. vol. 15, pp. 3-50.
[LEA881 Lea, M., <<EvaluatingUser Interfaces Designs),, User [MYE89] Myers, B.A., ccUser Interface Tools: Introduction
Interface Design for Computer Systems, Halstead Press and Survey),, IEEE Software, Enero 1989, pp. 15-23.
(Wiley), 1988.
[NOR861 Norman, D.A., cccognitive Engineering)),User Cen-
[MAN971 Mandel, T., The Elements of User Interface Design, tered Systems Design, Lawrence Earlbaum Associates,
Wiley, 1997. Nueva Jersey, 1984.
[MON84] Monk, A. (ed), Fundamentals of Human-Compu- [RUB881 Rubin, T., User Interface Design for Computer Sys-
ter.lnteraction, Academic Press, 1984. tems, Haldstead Press (Wiley), 1988.
[MOR81] Moran, T.P., <<TheCommand Language Grammar: [SHN87] Shneiderman, B., Designing the User Interface,
A Representation for the User Interface of Interactive Com- Addison-Wesley, 1987.
15.1. Describa la peor interfaz con la que haya trabajado algu- a. un sistema de autoedicidn
na vez y critiquela en relaci6n con 10s conceptos que se han b. un sistema de diseiio asistido por computadora
presentado en este capitulo. Describa la mejor interfaz con la
c. un sistema de diseiio de interiores
que haya trabajado alguna vez y critiquela en relaci6n con 10s
conceptos presentados en este capitulo. d. un sistema de matriculacidn automatizado para la uni-
versidad
15.2. Desarrolle dos principios de diseiio m8s que ccden el
e. un sistema de gesti6n de biblioteca
control al usuario~.
f. un sistema de votaci6n basada en Internet para las elec-
15.3. Desarrolle dos principios de diseiio m8s que ccreduzcan ciones pfiblicas
la carga de memoria del usuario,,.
g. un sistema bancario en casa
15.4. Desarrolle dos principios de diseiio m8s que ccayuden h. una aplicaci6n interactiva asignada por su instructor
a construir una interfaz consecuente,,.
Desarrolle un modelo de diseiio, un modelo de usuario, una
15.5. Considere una de las aplicaciones interactivas siguien- imagen de sistema y una percepci6n de sistema para cual-
tes (o una aplicaci6n asignada por su profesor): quiera de 10s sistemas anteriores.
CAP~TULO
15 DISENO DE LA INTERFAZ DE U S U A R I O
15.6. Realice un anklisis detallado de tareas para cualquiera el analisis de tareas que haya llevado a cab0 desde el Proble-
de 10s sistemas que se relacionan en el Problema 15.5. Utili- ma 15.6 a1 15.8.
ce un enfoque elaborativo u orientado a objetos.
15.11. Proporcione unos cuantos ejemplos que muestren la
15.7. Como continuacidn a1 Problema 15.6, defina objetos y razdn de que la variabilidad del tiempo de respuesta pueda
acciones para la aplicacidn que acaba de seleccionar. Identi- considerarse un tema a tener en cuenta.
fique todos 10s tipos de objetos.
15.12. Desarrolle un enfoque que integre automaticamente 10s
15.8. Desarrolle un conjunto de formatos de pantalla con una mensajes de error y una funcidn de ayuda a1 usuario. Esto es,
definicidn de 10s elementos del menu principales y secunda- que el sistema reconozca automaticamente el tip0 de error y
rios para el sistema que haya elegido en el Problema 15.5. proporcione una ventana de ayuda con sugerencias para corre-
15.9. Desarrolle un conjunto de formatos de pantalla con una girlo. Realice un disefio de software razonablemente comple-
definicidn de 10s elementos principales y secundarios del menu to que tenga en consideracidn estmcturas de datos y algoritmos.
para el sistema estandar HogarSeguro de la Seccidn 15.4.1. 15.13. Desarrolle un cuestionario de evaluacidn de la interfaz
Puede optar por un enfoque diferente a1 mostrado en la Figu- que contenga 20 preguntas genCricas que se puedan aplicar a la
ra 15.2 sobre un formato de pantalla. mayona de las interfaces. Haga que 10 compai5eros de clase
15.10. Describa el enfoque utilizado en las funciones de ayu- rellenen el cuestionario del sistema de interfaz que vayan a uti-
da del usuario que haya utilizado para el modelo de diseiio en lizar todos. Resuma 10s resultados e informe de ellos a la clase.
Aunque el libro de Dondld Norman no trata especificamente usuario ha sido editado por Carroll (Scenario-Based Design:
interfaces hombre-maquina, mucho de lo que su libro (The Envisioning Work and Technology in System Development,
Design of Everyday Things, Reissue edition, CurrencyDou- Wiley, 1995). Horrocks (Constructing the User Interface with
bleday, 1990) tiene que decir sobre la psicologia de un dise- Statecharts, Addison-Wesley, 1998) ha desarrollado un mCto-
iio eficaz se aplicara a la interfaz de usuario. Es una lectura do formal para el diseiio de interfaces de usuario que se basa
recomendada para todos 10s que sean serios a la hora de cons- en el modelado del comportamiento basado en el estado.
truir un diseiio de interfaz de alta calidad. La actividad de evaluacidn se centra en la usabilidad. Los
Durante la dCcada pasada se han escrito docenas de libros libros de Rubin (Handbook of Usability Testing: How to Plan,
acerca del diseiio de interfaces. Sin embargo, 10s libros de Design, and Conduct Effective Tests, Wiley, 1994) y Nielson
Mandel [MAN971 y Shneiderman (Designing the User Inter- (Usability Inspection Methods, Wiley, 1994) aborda el tema
face: Strategies for Effective Human-Computer Interaction, de forma considerable y detallada.
3." ed., Addison-Wesley, 1990) continuan proporcionando el La computadora Apple de Macintosh popularizd las inter-
estudio mas extenso acerca de la materia. Donnelly (In Your faces de usuario con diseiios sdlidos y faciles de utilizar. El
Face: The Best of Interactive Design, Rockport Publications, personal de Apple (Macintosh Human Interface Guidelines,
1998), Fowler, Stanwick y Smith (GUI Design Handbook, Addison-Wesley, 1993) estudia la apariencia y utilizacidn del
McGraw-Hill, 1998), Weinschenk, Jamar, y Yeo (GUI Design ahora famoso Macintosh (y tan imitado). Uno de 10s prime-
Essentials, Wiley, 1997), Galitz (The Essential Guide to User ros libros que se han escrito acerca de la interfaz de Micro-
Interface Design: An Introduction to GUI Design Principles soft Windows fue elaborado por el personal de Microsoft (The
and Techniques, Wiley, 1996), Mullet y Sano (Designing Windows Guidelines for Software Design: An Application
Visual Interfaces: Communication Oriented Techniques, Pren- Design Guide, Microsoft Press, 1995).
tice Hall, 1995), y Cooper (About Face: The Essentials of En un libro de Murphy (Front Panel: Designing Software
User Inte$ace Design, IDG Books, 1995) han escrito estu- for Embedded User Interfaces, R&D Books, 1998), el cual
dios que proporcionan las lineas generales y principios de puede resultar de gran inter& para 10s diseiiadores del pro-
diseiio adicionales asi como las sugerencias para la elicita- d u c t ~se
, proporciona una guia detallada para el diseiio de
cidn de requisitos, modelado, implementacidn y comproba- interfaces de sistemas empotrados y aborda 10s peligros inhe-
cidn del diseiio. rentes en controles, en manipulacidn de maquinaria pesada e
El analisis y modelado de tareas son las actividades fun- interfaces para sistemas mCdicos y de transporte. El diseiio
damentales del diseiio de la interfaz. Hackos y Redish (User de la interfaz para productos empotrados tambiCn se estudia
and Task Analysis for Interface Design, Wiley, 1998) han en el libro de Garrett (Advanced Instrumentation and Com-
escrito un libro especializado en estos temas y proporcionan puter IIO Design: Real-Time System Computer Interface Engi-
un mCtodo detallado para abordar el analisis de tareas. Wood neering, IEEE, 1994).
(User Interface Design: Bridging the Gap from User Requi- Una amplia variedad de fuentes de informacidn sobre el
rements to Design, CRC Press, 1997) tiene en consideracidn diseiio de la interfaz de usuario y de temas relacionados e s t h
la actividad de analisis para interfaces y la transicidn hacia disponibles en Internet. Una lista actualizada de referencias
las tareas de diseiio. Uno de 10s primeros libros que presen- relevantes para la interfaz de usuario se puede encontrar en
tan el tema de 10s escenarios en el diseiio de la interfaz de http://www.pressman5.com
Palabrtrs clave 1 L diseiio a nivel de componentes, llamado tambiCn diseiioprocedimental, tiene lugar des-
construdn
de tomtidones.. ......274
constrw6h
1 puCs de haber establecido 10s diseiios de datos, de interfaces y de arquitectura. El obje-
J 1ivo es convertir el modelo de diseiio en un software operacional. No obstante, el nivel
de ,abstraction del modelo de disefio existente es relativamente alto y el nivel de abstracci6n del
& repetidones.. .....276 Prolgrama operacional es bajo. Esta conversion puede ser un desafio, abriendo las puertas a la
romtnrccims int~-0duccion de errores sutiles que Sean dificiles de detectar y corregir en etapas posteriores del
. .. ..
estruchrradas . . -275 Proceso del software. Edsgar Dijkstra, uno de 10s principales valedores para la comprension del
b i a m a de @as ....275 dis~6 0 , escribe lo siguiente [DIJ72]:
lengwle de diseiio El software parece ser diferente de muchos otros productos, donde como norma una calidad superior
de progronms ....27&277 implica un precio mis elevado. Aquellos que quieran realmente un software fiable descubrirrin que para
notadones de d i s h . 278 empezar deben encontrar un medio de evitar la mayoria de los errores y, como resultado, el proceso de pro-
gramaci6n seri menos costoso.. ..y los programadores que scan eficaceb no deberiin malgastar su tiempo
nofadelres
.
~ ~ o J s.........274-275
depurando los programas -no deberhn cometer errores desde el principic+-.
Aunque estas palabras ya se escribieron hace muchos aiios, hoy en dia siguen siendo ver-
p-l
.
estructwada ....... .274 dac1. Cuando el modelo de disefio se convierte en codigo fuente, deberhn seguirse una serie de
secuda.. ..........275 pri ncipios que no solo lleven a cabo la conversih, sino que ccno introduzcan errores desde el
pri ncipio>>.
t a b de decisiones ..-276
;Qu& es? Este diseiio clonsiste e n con- ponentes representa el software que notaciones grdrficas, tabulares y basa-
vertir el diseiio d e dat os, interfaces y permite revisar 10s datos del diseiio d a s en texto.
arquitectura e n un sofitware operacio- para s u correccidn y consistencia con €Cud1 es el produeto obtcnido? El
nal. Para poderlo llev a r a cabo. el las representaciones d e disefio ante- diseiio procedimental de cada compo-
disefio s e deberdr re1>resentar a un riores (esto es. Ios diseiio d e datos, de nente representado en forma d e nota-
nivel d e abstracci6n cercano a un interfaces y de arquitectura). Con este ci6n grdrfica, tabular o basada en texto
codigo. El diseiio a n ivel d e compa- diseiio se proporciona un medio de e s el primer producto de trabajo duran-
nentes establece 10s clatos algoritmi- evaluar e l funcionamiento d e l a s te el disefio a nivel de componentes.
cos que s e requieren Ix r a manipular estructuras d e datos, interfaces y
;C6mo puedo estar seguro de que
l a s estructuras d e d a tos, efectuar la algoritmos.
lo he hecho correctamente?
comunicaci6n entre lcIS componenk?~
g4hales son les pasorl Las represen- Mediante una revision estructurada y
del software por medi~ 3 d e las interfa-
taciones de 10s diseiios d e datos. uno inspeccion. El examen del diseiio
ces, e implementar 10s algoritmos
arquitectura e interlaces forman la s e realiza para determinar si las
asignedos a cada corn~ponente
base del diseiio a nivel d e componen- estmcturas de 10s datos, las secuencias
~Qulbn lo hace? Un insjeniero del soft- tes. La narrativa del proceso d e cada del proceso y las condiciones 16gicas
ware. componente s e convierte en un mode- son correctas, y para ver si producirdrn
LPor qmB es importa~nte?Se tiene l o d e diseiio procedimental emplean- la transformation d e datos y control
que tener la capacidac3 de determinar d o un conjunto d e construcciones d e adecuados que s e asign6 a1 compo-
s i e l programa funci~ m a r & antes d e programacion estructurada. Para nente durante 10s primeros pasos del
construirlo. El disefio a nivel d e com- representar este diseflo s e utilizan las disefio.
Los f u n d a m e n t ~del
~ disefio a nivel de componentes na que 10s psic6logos denominan jkagmenfacidn (tro-
proceden de la dCcada de 10s afios sesenta, y tomaron ceado o ctztmkirrg).Para entender este proceso, consi-
cuerpo con el trabajo de Edsgar Dijkstra y sus colabo- deremos la manera de leer esta pigina. Las letras no se
radores [BOH66, DIJ65, DIJ761. A finales de 10s sesen- leen individualmente; mris bien, se reconocen formas o
ta, Dijkstra y otros propusieron la utilization de un trozos de letras que forman palabras o frases. Las cons-
conjunto de construcciones 16gicas restringidas de las trucciones estructuradas son fragmentos 16gicos que
que poder f o m a r cualquier programa. permiten a1 lector reconocer elenientos procedimenta-
les de un m6dulo en lugar de leer el disefio o el c6digo
linea a linea. La comprensi6n mejora cuando se encuen-
w tran patrones fhcilmente reconocibles.
Cuondo estoy hoboiando en un probk!ma nunca
pienso en lo bonito que es. Solo pienr;o en como
resolverlo. Per0 cuondo lo orobo, me doy cuento 16.1.1. Notaci6n grafica del diseiio
An -tA (inrn .nr..lmAn
GI ~ G ~ u I I U U u es bonito.
uG
nl.n nn
Ilu G,IU ulGll
C: nfi
((Unaimagen vale mris que mil palabras>,,pero es impor-
R. Buckminster Fuller tante saber quC imngen y qui 1.000 palabras. Es incues-
Las construcciones son secuenciales, condicionales tionable que herramientas gr2ificas, tales conio diagramas
y repetitivas. La construcci6n secuencial implements de flujo o diagranias de cajas, proporcionan formas gri-
10s pasos del proceso esenciales para la especificaci6n ficas excelentes que representan datos procedimentales
de cualquier algoritmo. La condiciorral proporciona las ficilmente.
funciones para procesos seleccionados a partir de una
condition 16gica y la repetitiva proporciona 10s bucles.
Las tres construcciones son fundamentales para la pro-
gr.anracicin estr~uc~t~~r-uda
-unit tCcnica importante de lo progromocion estructurodo proporciono
disefio a nivel de componentes-. 10s modelos 16gicos y fitiles para el diseiiodor.
Las construcciones estructuradas se propusieron para
restringir el disefio procedimental del software ij un El diagrama de flujo es una imagen bastante senci-
nlimero reducido de operaciones predecibles. La mCtri- Ila. Mediante la utilizaci6n de una caja se indica un paso
ca de la complejidad (Capitulo 19) indica que la utili- del proceso. Un rombo representa una condici6n 16gi-
zaci6n de construcciones estructuradas reduce la ca y las flechas indican el flujo de control. La Figura
complejidad del programa y, por tanto, rnejora la capa- 16.1 ilustra tres construcciones estructuradas. La secuen-
cidad de comprender, comprobar y niantener. La utili- cia se representa como dos cajas de procesamiento
zacidn de un nlimero limitado de construcciones 16gicas conectadas por una linea (flecha) de control. La condi-
tambiCn contribuye a un proceso de comprensi6n huma- ci6n, llamada tambiCn si-enfonc-e.r-si-tro,se representa
Primera
tarea
Siguiente
tarea
A Condicidn
Party si-no
Primer
tarea
Si-entonces
\
Siguiente
entonces
Secuencia Si entonces si-no
(if-then-else)
Condicion
del caso
Tarea
Parte de bucle
......................... -----------
i
f --I---'
Tarea
Mientras- de bucle de bucle
hacer Repetir-hasta
(do-while) (repeat-until) Condicidn
Segun-sea (selecion) Repeticion de bucle
mediante el simbolo del rombo de decision que, si es Chapin [CHA74], 10s diagramas (tambikn denomina-
cierto, provoca el procesamiento de la parte entonces, dos diagr-crmas Ncrssi-Schneiderrncrn, diagrwmas N-S o
y, si es falso, invoca el procesamiento de la par-te si-no. clicigrcrrnas Chcipin) tienen las caracteristicas siguien-
La repeticion se representa mediante dos formas lige- tes: ( I ) dominio funcional (es decir, el alcance de una
raniente diferentes. El rnientrus-hacw prueba una con- repeticidn o de un si-entonces-si-no) bien definido y
dicidn y ejecuta una tarea de bucle repetidamente claramente visible como representacion grlifica; (2) la
siempre que la condicidn siga siendo verdad. Un repe- transferencia arbitraria de control es imposible; (3) el
fir-hastri primer0 ejecuta la tarea de bucle, despuks prue- alcance de 10s datos locales y/o generales se puede deter-
ba la condicion y repite la tarea hasta que la condicion minar flicilmente y (4) la recursividad es f k i l de repre-
falla. La construcciBn de seleccidn (segiin sect) que se sentar.
muestra en la figura realmente es una ext;nsion de si-
entonces-si no. Un parlimetro se prueba por decisiones
Prirnera tarea
sucesivas h k a que ocurre una condicion verdadera y
se ejecuta el camino de procesamiento asociado.
Las construcciones estructuradas pueden anidarse
Siguienfe tarea
unas en otras como muestra la Figura 16.2. En esta Figu-
ra, un repetir-hasta forma la parte then dc un si-enton-
ces-si-no (mostrada dentro de la linea discontinua
Siguiente tarea +1
si-no
Pane I entonces
Pane
turado de programaci6n)~[CAI75]. En este capitulo se Hay que destacar que LDP se puede ampliar de
utiliza LDP como'referencia genCrica de un lenguaje de manera que incluya palabras clave para procesos mul-
diseiio. titarea ylo concurrentes, manipulation de interrupcio-
A primera vista LDP se parece a un lenguaje de pro- nes, sincronizaci6n entre procesos y muchas otras
gramaci6n moderno. La diferencia entre Cste y un ver- caracteristicas. Los diseiios de aplicaciones para 10s que
dadero lenguaje de programaci6n radica en el empleo se utiliza LDP deberin dictar la forma final que tendra
de texto descriptivo (por ejemplo, InglCs) insertado el lenguaje de diseiio.
directamente dentro de las sentencias de LDP. Dado que
se utiliza texto descriptivo insertado directamente en 16.1.4. Un ejemplo de LDP
una estructura sintactica, este lenguaje no se puede com-
pilar (a1 menos por ahora). Sin embargo, las herrarnientas Para ilustrar el empleo de LDP presentamos un ejem-
LDP que existen actualmente convierten LDP en un plo de diseiio procedimental para el software del siste-
ccesquema,, de lenguaje de programacion, y/o repre- ma de seguridad HogarSeguro comentado en capitulos
sentacion grafica (por ejemplo, un diagrama de flujo de anteriores. El sistema HogarSeguro en cuestion vigila
disefio). Estas herramientas tambiCn producen mapas las alarmas de deteccion de fuego, humo, ladrones, agua
anidados, un indice de operacibn de diseiio, tablas de y temperatura (por ejemplo, la ruptura del sistema de
referencias cruzadas, y mas diversidad de informaci6n. calefacci6n durante la ausencia del propietario en invier-
no); hace saltar el sonido de la alarma, y llama a1 ser-
vicio de vigilancia generando un mensaje de voz
sintetizada. En el LDP que se muestra a continuaci6n,
1 Condiciones se ilustran algunas de las construcciones importantes
I Cuenta de tarifa fija sefialadas en secciones anteriores.
Cuenta de tarifa variable
Hay que recordar que LDP no es un lenguaje de pro-
gramacion. El diseiiador hace una adaptaci6n cuando
Consurno < 100kWh lo requiere y sin preocuparse de errores de sintaxis. Sin
embargo, se debera revisar el diseiio del software de
vigilancia (jse observa alglin problema?) y refinarlo
antes de escribirse. El LDP siguiente define una elabo-
1 Acciones ration de diseiio procedimental para el ccmponente de
monitor de seguridad.
IFacturaci6n tarifa A PROCEDURE seguridad.monitor;
En la secci6n anterior se han presentado varias tCcnicas con la que un disefio se puede editar ayudarh a sim-
diferentes para representar un disefio procedimental. Se plificar todas y cada una de las tareas de la ingenie-
puede establecer una comparaci6n teniendo la premisa ria del software.
de que cualquier notaci6n para el disefio procedimen- Legibilidad para la computadora. Una notaci6n
tal, si se utiliza correctamente, puede ser una ayuda que se puede introducir directamente en un sistema de
incalculable para el proceso de disefio; por el contrario, desarrollo basado en computadora ofrece ventajas sig-
aun con la mejor notacibn, si Csta se aplica mal, dismi- nificativas.
nuye su entendimiento. Teniendo en cuenta lo anterior,
es momento de examinar 10s criterios que se pueden Capacidad de mantenimiento. El mantenimiento
aplicar para comparar las notaciones de disefio. del software es la fase mhs costosa del ciclo de vida del
La notaci6n de disefio deberh llevarnos a una repre- software. El mantenimiento de la configuraci6n del soft-
sentaci6n procedimental fhcil de entender y de revisar. ware casi siempre lleva a1 mantenimiento de la repre-
Ademhs, la notaci6n deberh mejorar la habilidad de sentaci6n del disefio procedimental.
cccodificar en>>para que el c6digo se convierta de hecho Cumplimiento de las estructuras. Ya se han des-
en un subproducto natural de disefio. Finalmente, la crito las ventajas de un enfoque de disefio que utiliza
representaci6n de disefio debera ser fhcil de mantener conceptos de programacion estructurada. Una notacion
para que el disefio sea siempre una representaci6n de disefio que hace cumplir solo la utilizaci6n de cons-
correcta del programa. trucciones estructuradas conduce a la prhctica de un
buen disefio.
iCuales son 10s criterios que
se utilizan para evaluar Proceso automatico. Un disefio procedimental con-
notaciones de diseiio? tiene la informaci6n que se puede procesar para que el
disefiador pueda obsemar otra vez y mejorar la correc-
Dentro del context0 de las caracteristicas generales ci6n y calidad de un disefio. Dicha obsemaci6n puede
que se describieron anteriormente se han establecido mejorarse con informes que provengan de herramien-
10s siguientes atributos de notaciones de disefio: tas de disefio de software.
Modularidad. Una notaci6n de disefio deberh sopor- Representacion de datos. La habilidad de repre-
tar el desarrollo del software modular y proporcionar sentar datos locales y globales es un elemento esencial
un medio para la especificaci6n de la interfaz. del disefio detallado. Una notaci6n de disefio ideal seria
Simplicidad general. Una notaci6n de disefio debe- la representaci6n directa de 10s datos.
rh ser relativamente simple de aprender, relativamente Verificacion de la logica. La verificaci6n automhti-
fhcil de utilizar y en general fhcil de leer. ca de la 16gica del disefio es el objetivo primordial duran-
Facilidad de edicion. Es posible que el disefio te las pruebas del software. Una notaci6n que mejora la
procedimental requiera alguna modificaci6n a medi- habilidad de verificar la 16gica mejora enormemente lo
da que el proceso de software avanza. La facilidad aceptable de las pruebas.
CAPfTULO 16 DISENO A NIVEL D E C O M P O N E N T E S
Habilidad de acodificar en,,. La tarea de ingenie- ten, y el potencial de ccgenerar codigos automiticos>es
. ria del software que va a continuaci6n del disefio a nivel bueno.
de componentes es la generacion de codigos. Una nota- Sin embargo, no se puede decir que la notaci6n
ci6n que puede convertirse ficilmente en c6digo fuen- de disefios sea necesariamente inferior a LDP o que
te reduce esfuerzos y errores. ccsea buena>>en atributos especificos. Muchos dise-
Una pregunta que surge naturalmente de cualquier fiadores prefieren la naturaleza pictorica de 10s dia-
estudio de notaciones de disefio es: <<iCuiles realmen- gramas de flujo y de 10s diagramas de bloques dado
te la mejor notacion segun 10s atributos que se han esta- que proporcionan alguna perspectiva sobre el flujo
blecido anteriormente?u La respuesta seria totalmente de control. El contenido tabular preciso de las tablas
subjetiva y abierta a debate. Sin embargo, parece ser de decisi6n es una herramienta excelente para las
que el lenguaje de disefio de programas ofrece la mejor aplicaciones controladas por tablas. Y muchas otras
combinaci6n de caracteristicas. LDP puede insertarse representaciones de disefio (por ejemplo, vCase
directamente en listados de fuentes, en mejoras de docu- [PETgl], [SOM96]), que no se presentan en este
mentaci6n y a1 hacer que el mantenimiento del disefio libro, ofrecen sus propias ventajas. En el analisis
sea menos dificil. La edici6n se puede llevar a cab0 final, la selecci6n de una herramienta de disefio pue-
mediante cualquier editor de texto o sistema de proce- de depender mas de factores humanos [CUR851 que
samiento de texto; 10s procesadores automAticos ya exis- de atributos tCcnicos.
El proceso de disefio acompaiia a una secuencia de acti- las notaciones de disefio que representa 10s detalles a
vidades que reducen lentamente el nivel de abstracci6n nivel de componentes o bien en formatos grificos, tabu-
con el que se representa el software. El disefio a nivel lares o basados en texto.
de componentes representa el software a un nivel de La programacion estructurada es una filosofia de
abstracci6n muy cercano a1 c6digo fuente. disefio procedimental que restringe el numero y tip0 de
A un nivel de componentes, el ingeniero del software construcciones 16gicas que se utilizan para representar
debe representar estructuras de datos, interfaces y algo- el dato algoritmico. El objetivo de la programacion
ritmos con suficiente detalle como para servir de guia estructurada es ayudar a que el disefiador defina algo-
en la generacion de c6digos fuente de lenguajes de pro- ritmos menos complejos y por tanto mhs fhciles de leer,
gramaci6n. Para conseguirlo, el ingeniero utiliza una de comprobar y mantener.
[BOH66] Bohm, C., y G. Jacopini, <<FlowDiagramas, Turing [DIJ76] Dijkstra, E., <<StructureProgramming)), Software
Machines and Languages with only two Formation Rules)), Engineering, Concepts and Techniques (J. Buxton et al.,
CACM, vol. 9, n."5, Mayo 1966, pp. 366-371. eds.), Van Nostrand-Reinhold, 1976.
[CAI751 Caine, S., y K. Gordon, <tPDL-A Tool for Soft- [HUR83] Hurley, R.B., Decision Tables in Software Engi-
ware Design)), in Proc. National Computer Conference, neering, Van Nostrand Reinhold, 1983.
AFIPS Press, 1975, pp. 27 1-276.
[LIN79] Linger, R.C, H. D. Mills y B.I. Witt, Estrurtured
[CHA74] Chapin, N., <<A
New Format for Flowchartsu, Soft- Programming, Addison-Wesley, 1979
nrare-Practice and Experience, vol. 4, n:" 4, 1974, pp.
341-357. [NAS73] Nassi, I., y B. Shneiderman, <<FlowchartTechni-
ques for Structured Programming)), SIGPLAN Notices,
[DIJ65] Dijkstra, E., <<ProgrammingConsidered as a Human ACM, Agosto 1973.
Activity)), in Proc. 1965 IFIP Congress, North Holland
Publishing Co., 1965. [PET811 Peters, L.J., Software Design: Methods and Tech-
[DIJ72] Dijkstra, E., <<TheHumble Programmer)),1972 ACM niques, Yourdon Press, Nueva York, 1981.
Turing Award Lecture, CACM, vol. 15, n." 10, Octubre [SOM96] Sommerville, I., Software Engineering, 5.* ed.,
1972, pp. 859-866. Addison-Wesley, 1996.
I N G E N ~ E R ~DEL
A SOFTWARE. U N ENFOQUE PRACTICO
. . . .
S
. . .
Y PUNTOS A CQKSIPEBBB
' " " _ I . .
.
16.1. Seleccione una parte pequeiia de un programa que ya suponga que todos 10s procesos sobre 10s impuestos son lle-
exista (aproximadamente de 50-75 lineas de c6digo). Aisle las vados a cab0 por otros m6dulos.
construcciones de programaci6n estructurada dibujando cajas 16.6. Desarrolle un diseiio procedimental para un programa
alrededor de ellas en el cddigo fuente. existe en construccio- que acepte un texto arbitrariamente largo como entrada y ela-
nes dentro del pasaje del programa que violen la filosofia de
bore una lista de palabras y de su frecuencia de aparicidn como
programacidn estructurada? Si fuera asi, vuelva a diseiiar el
salida.
cddigo para adaptarlo a las construcciones de programacidn
estructurada. Si no fuera asi, ~ Q u Cse puede destacar en las 16.7. Desarrolle un diseiio procedimental de un programa que
cajas que acaba de dibujar? integre numCricamente una funci6nf en 10s limites de a hacia b.
16.2. Todos 10s lenguajes de programacion modemos imple- 16.8. Desarrolle un diseiio procedimental para una maquina
mentan las construcciones de programacion estructurada. Pro- Turing generalizada que acepte un conjunto de cuadruples
porcione ejemplos de tres lenguajes de programaci6n. como entrada de programa y elabore una salida segun espe-
cificacibn.
16.3. PO^ quC es importante la ccfragmentaci6m durante el
proceso de revision de diseiio a nivel de componentes? 16.9. Desarrolle un diseiio procedimental para un programa
que solucione el problema de las Torres de Hanoi. Muchos
Los problemas 16.4-16.12 se pueden representar en una (o
libros de inteligencia artificial estudian este problema deta-
mas) notaciones de diseiio procedimentales presentadas en
lladamente.
este capitulo. Su profesor puede asignar notaciones de diseiio
especificas a problemas concretos. 16.10. Desarrolle un diseiio procedimental para todas las par-
tes o las partes fundamentales de un analizador sintactico para
16.4. Desarrolle un diseiio procedimental para 10s compo-
un compilador. Consulte uno o mas libros sobre diseiio de
nentes que implementan las ordenaciones siguientes: Shell-
Metzner; heapsort (ordenacibn del monticulo). Si no esta compiladores.
familiarizado con estas ordenaciones, consulte cualquier libro 16.11. Desarrolle un diseiio procedimental para el algoritmo
sobre estructuras de datos. de encriptacion/descriptaci6n que haya seleccionado.
16.5. Desarrolle un diseiio procedimental para una interfaz de 16.12. Escriba un argumento de una o dos paginas para la nota-
usuario interactiva que solicite informacion basica acerca de ci6n de diseiio procedimental que prefiera. Asegurese de que su
10s impuestos sobre la renta. Derive sus propios requisitos y argumento abarca 10s criterios presentados en la Secci6n 16.2.
El trabajo de Linger, Mills y Witt (Structured Programming- el diseiio procedimental en un contexto de lenguaje de pro-
Theory and Practice, Addison-Wesley, 1979) sigue siendo el gramaci6n:
estudio definitivo sobre esta materia. El texto contiene un Adamson, T.A., K.C. Mansfield y J.L. Antonakos, Struc-
buen LDP asi como estudios detallados de ramificaciones de tured Basic Applied to Technology, Prentice Hall, 2000.
la programacion estructurada. Entre otros libros que se cen- Antonakos, J.L., y K. Mansfield, Application Program-
tran en temas de diseiio procedimental se incluyen 10s libros ming in Structured C , Prentice Hall, 1996.
de Robertson (Simple Program Design, Boyd & Fraser Publis- Forouzan, B.A., y R. Gilberg, Computer Science: A Struc-
hing, 1994), Bentley (Programming Pearls, Addison-Wes- tured Programming Approach Using C+ +, Brooks/Cole
ley, 1986, y More Programming Pearls, Addison-Wesley, Publishing, 1999.
1988) y Dahl, Dijkstra y Hoare (Structured Progamming, Aca- O'Brien, S.K., y S. Nameroff, Turbo Pascal 7: The Com-
demic Press, 1972). plete Reference, Osbome McGraw-Hill, 1993.
Solo existe un numero relativamente pequeiio de libros Welbum, T., y W. Price, Structured Cobol: Fundamentals
actuales dedicado unicamente a1 diseiio a nivel de com- and Style, 4.%d., Mitchell Publishers, 1995.
ponentes. En general, 10s libros de lenguajes de progra- Una gran variedad de fuentes de informacion sobre dise-
macion abordan el diseiio procedimental con algun detalle, iio de software y temas relacionados estan disponibles en
per0 siempre en el contexto del lenguaje que se ha intro- Internet. Una lista actualizada de referencias a sitios (luga-
ducido en este libro. Los siguientes libros son representa- res) web que son relevantes para conceptos y mktodos de dise-
tivos de 10s cientos de titulos que tienen en consideraci6n iio se pueden encontrar en http://www.pressman5.com.
&Queer? Una vez generado el codigo - - - 'os del software se
fuente, el software debe ser probado el procesode prueba, 10s especialistas io tknicas de dise-
para descubrir (y corregir) el mdximo e n pruebas se van incorporando. iio de casos de prueba de ncaja negra*.
de errores posiblea antes de su entre- ;Par qu6 es imporlade? Las revisio- En ambos casos, se intenia encontrar el
ga a1 cliente. Nuestro objetivo e s dise- nes y otras actividades SQAdescubren mayor numero d e enores con la menot
fiar una serie d e casos de prueba que errores, pero no son suficientes. Cada cantidad de esfueno y tiempo.
tengan una alto probabilidad d e vez que el programa se ejecuta, el clien- &Cuo1es e l producto abtenido? Se
encontrar enores -per0 jc6mo conse- te lo esta probando. Por lo tanto, debe- define y documenta un conjunto de
guirlo?- Aqui e s donde aplicamos las mos hacer un intento especial por msos de prueba, diseiiados para com-
tknicas de pruebas del software. Estas encontrar y corregir todos 10s errores probar Ia 16gica intema y 10s requisites
t k n i c a s facilitan una guia sistembti- antes de entregar el prcgrama a1 clien- extemos. Se determinan 10sresultados
ca para disefiar pruebas que: (1)com- te. Con el objetivo de encontrarel mayor esperados y se guardan 10s resultados
prueben la 16gica interna d e 10s numero posible de errores, las pruebas realmente obtenidos.
componentes software. y (2) verifiquen deben conducisse sistemctticamente, y ~Cdmopuedo d w segrw de que la
10s dominios de entrada y saIida.de1 10s casas d e prueba deben diseiiarse he hecho correctamente? Cuan-
prcgrama para descubrir errores en la utilizando tknicas definidas. do comienzas la prueba, debes cambia
iuncionalidad, el comportamiento y
~CuQesson lol pcsos? El softwaredebe tu punto devista. Intenta wompern con
rendimiento
probarse desde dos perspectivas dife- firmeza el software. Diseiia casos d e
~Qui6n 10 hace? Durante las primems rentes: (1) la 16gica intema del progra- prueba d e una forma disciplinada y
etcrpas de la prueba, es el ingeniero del ma se comprueba utiliindo tknicas d e revisa q u e dichos casos d e prueba
software quien realiza todas las prue- disefio d e casos de prueba de ucaja abarcan todo lo desanollado,
En este capitulo, veremos 10s fundamentos de las pruebas del software y las tecnicas de dise-
fio de casos de prueba.
I N G E N ~ E R ~ A DEL SOFTWARE. UN ENFOQUE P R h C T I C 0
Las pruebas presentan una interesante anomalia para el 2. Un buen caso de prueba es aquel que tiene una alta
ingeniero del software. Durante las fases anteriores de probabilidad de mostrar un error no descubierto hasta
definici6n y de desarrollo, el ingeniero intenta construir entonces.
el software partiendo de un concept0 abstract0 y llegan- 3. Una prueba tiene Cxito si descubre un error no detec-
do a una implementaci6n tangible. A continuacion, llegan tad0 hasta entonces.
las pruebas. El ingeniero crea una serie de casos de prue-
ba que intentan ccdemoler>>el software construido. De ~CUOI
es nuestro primer
hecho, las pruebas son uno de 10s pasos de la ingenieria objetivo cuando probamos
del software que se puede ver (por lo menos, psicol6gi- el software?
camente) como destructivo en lugar de constructive.
Los objetivos anteriores suponen un cambio drama-
tico de punto de vista. Nos quitan la idea que, normal-
mente, tenemos de que una prueba tiene Cxito si no
descubre errores.
Nuestro objetivo es disefiar pruebas que sistemAtica-
mente saquen a la luz diferentes clases de errores, haciCn-
dolo con la menor cantidad de tiempo y de esfuerzo.
Los ingenieros del software son, por naturaleza, per- Si la prueba se lleva a cab0 con Cxito (de acuerdo con
sonas constructivas. Las pruebas requieren que se des- el objetivo anteriormente establecido),descubrira errores
carten ideas preconcebidas sobre la cccorrecci6nn del en el software. Como ventaja secundaria, la prueba
software que se acaba de desarrollar y se supere cual- demuestra hasta quC punto las funciones del software pare-
quier conflict0 de intereses que aparezcan cuando se cen funcionar de acuerdo con las especificaciones y pare-
cen alcanzarse 10s requisitos de rendimiento. Ademas, 10s
descubran errores. Beizer [BE1901 describe eficiente-
mente esta situaci6n cuando plantea: datos que se van recogiendo a medida que se lleva a cab0
la prueba proporcionan una buena indicaci6n de la fiabi-
Existe un rnito que dice que si fuCramos reahnente buenos lidad del software y, de alguna manera, indican la calidad
programando, no habria errores que buscar. Si tan solo fuCra-
rnos realrnente capaces de concentrarnos, si todo el rnundo del software como un todo. Pero, la prueba no puede ase-
ernpleara tkcnicas de codificaci6n estructuradas,el diseiio des- gurar la ausencia de defectos; s610 puede demostrar que
cendente, las tablas de decision, si 10s programas se escribieran existen defectos en el software.
en un lenguaje apropiado, si tuvi6ramos siernpre la soluci6n m b
adecuada, entonces no habria errores. Asi es el mito. Segtin el
rnito, existen errores porque somos malos en lo que hacemos,
y si sornos malos en lo que hacemos, deberiamos sentimoscul-
pable~por ello. Por tanto, las pruebas, con el diseiio de casos
de prueba, son un reconocirniento de nuestros fallos, lo que
irnplica una buena dosis de culpabilidad. Y lo tediosas que son
las pruebas son un justo castigo a nuestros errores. ~Castigados
por quC? LPor ser hurnanos? iCulpables por quC? LPor no con-
seguir una perfection inhumana? LPor no poder distinguir en*
lo que otro programador piensa y lo que dice? ~ P o no r tener
telepatia? ~ P o no
r resolver 10s problemas de cornunicacion 17.1.2. Principios de las pruebas
hurnana que han estado presentes...durante cuarenta siglos?
Antes de la aplicacih de mCtodos para el disefio de
debe en infundir culpabilidad las pruebas? $on real- casos de prueba efectivos, un ingeniero del software
mente destructivas? La respuesta a estas preguntas es: debera entender 10s principios basicos que guian las
NO! Sin embargo, 10s objetivos de las pruebas son algo pruebas del software. Davis [DAV95] sugiere un con-
diferentes de lo que podriamos esperar. junto' de principios de prueba que se han adaptado para
usarlos en este libro:
17.1.1. Objetivos de las pruebas A todas las pruebas se les deberia poder hacer un
En un excelente libro sobre las pruebas del software, seguimiento hasta 10s requisitos del cliente. Como
Glen Myers [MYE79] establece varias normas que pue- hemos visto, el objetivo de las pruebas del software
den servir acertadamente como objetivos de las pruebas: es descubrir errores. Se entiende que 10s defectos mas
1. La prueba es el proceso de ejecuci6n de un programa graves (desde el punto de vista del cliente) son aque-
con la intenci6n de descubrir un error. 110s que impiden a1 programa cumplir sus requisitos.
Las pruebas deberian planijicarse mucho antes de La facilidad de prueba del software es simplemente la
que empiecen. La planificaci6n de las pruebas (Capi- facilidad con la que se puede probar un programa de com-
tulo 18) pueden empezar tan pronto como estC com- putadora. Como la prueba es tan profundamente dificil,
pleto el modelo de requisitos. La definici6n detallada merece la pena saber quC se puede hacer para hacerlo rnis
de 10s casos de prueba puede empezar tan pronto sencillo. A veces 10s programadores estiin dispuestos a
como el modelo de disefio se ha consolidado. Por hacer cosas que faciliten el proceso de prueba y una lista
tanto, se pueden planificar y diseiiar todas las prue- de comprobaci6n de posibles puntos de disefio, caracte-
bas antes de generar ning6n c6digo. nsticas, etc., puede ser fitil a la hora de negociar con ellos.
El principio de Pareto es aplicable a la prueba del
software. Dicho de manera sencilla, el principio de
Pareto implica que a1 80 por 100 de todos 10s erro-
res descubiertos durante las pruebas se les puede
hacer un seguimiento hasta un 20 por 100 de todos Un util documento titulado ((Perfeccionondo la facilidad
10s m6dulos del programa. El problema, por de la pruebo del sohare)) puede enconharse en:
supuesto, es aislar estos m6dulos sospechosos y pro- www.s~bs.tom/newsletters/testnet/docs/testahT~htm.
barlos concienzudamente.
Las pruebas deberian empezar por <<lo pequefio>>y Existen, de hecho, metricas que podrian usarse para
progresar hacia <<lo grande>>.Las primeras pruebas medir la facilidad de prueba en la mayona de sus aspec-
tos. A veces, la facilidad de prueba se usa para indicar
planeadas y ejecutadas se centran generalmente en
m6dulos individuales del programa. A medida que lo adecuadamente que un conjunto particular de prue-
avanzan las pruebas, desplazan su punto de mira en bas va a cubrir un producto. TambiCn es empleada por
10s militares para indicar lo ficil que se puede compro-
un intento de encontrar errores en grupos integrados
de m6dulos y finalmente en el sistema entero (Capi- bar y reparar una herramienta en plenas maniobras. Esos
tulo 18). dos significados no son lo mismo que xfacilidad de prue-
ba del software>>.La siguiente lista de comprobaci6n
No son posibles las pruebas exhaustivas. El n6mero proporciona un conjunto de caracteristicas que llevan a
de permutaciones de caminos para incluso un pro- un software ficil de probar.
grama de tamafio moderado es excepcionalmente
grande (vea la Secci6n 17.2 para un estudio mis Operatividad. <<Cuantomejor funcione, rnis efi-
avanzado). Por este motivo, es imposible ejecutar cientemente se puede probar.>>
todas las combinaciones de caminos durante las prue- El sistema tiene pocos errores (10s errores afiaden
bas. Es posible, sin embargo, cubrir adecuadamente sobrecarga de anilisis y de generaci6n de informes
la 16gica del programa y asegurarse de que se han a1 proceso de prueba).
aplicado todas las condiciones en el disefio a nivel Ningun error bloquea la ejecuci6n de las pruebas
de componente.
El producto evoluciona en fases funcionales (per-
Para ser mas eficaces, las pruebas deberian ser rea-
mite simultanear el desarrollo y las pruebas).
lizadas por un equipo independiente. Por <<masefi-
caces>>queremos referimos a pruebas con la rnis alta Observabilidad. <<Loque ves es lo que pruebas.>>
probabilidad de encontrar errores (el objetivo princi- Se genera una salida distinta para cada entrada.
pal de las pruebas). Por las razones que se expusie-
ron anteriormente en este capitulo, y que se estudian Los estados y variables del sistema estin visibles o
con rnis detalle en el Capitulo 18, el ingeniero del se pueden consultar durante la ejecuci6n.
software que cre6 el sistema no es el rnis adecuado Los estados y variables anteriores del sistema estin
para llevar a cab0 las pruebas para el software. visibles o se pueden consultar (por ejemplo, regis-
tros de transacci6n).
17.1.3. Facilidad de prueba Todos 10s factores que afectan a 10s resultados estin
En circunstancias ideales, un ingeniero del software visibles.
disefia un programa de computadora, un sistema o un Un resultado incorrecto se identifica ficilmente.
producto con la <<fadidadde prueba>>en mente. Esto Los errores intemos se detectan automiticamente a
permite a 10s encargados de las pruebas diseiiar casos travCs de mecanismos de auto-comprobaci6n.
de prueba rnis ficilmente. Pero, iquC es la c~facilidad
de prueba>>James ~ a c h describe
' la facilidad de prue- Se informa automiticamente de 10s errores intemos.
ba de la siguiente manera: El c6digo fuente es accesible.
La prueba de caja blanca, denominada a veces prueba cedimiento habitual tiende a hacerse m6s comprensi-
de caja de cristal es un mCtodo de disefio de casos de ble (y bien examinado), mientras que el procesamiento
prueba que usa la estructura de control del disefio pro- de cccasos especiales,, tiende a caer en el caos.
cedimental para obtener 10s casos de prueba. Mediante A menudo creemos que un camino 16gico tiene pocas
10s mktodos de prueba de caja blanca, el ingeniero del posibilidades de ejecutarse cuando, de hecho, se
software puede obtener casos de prueba que (1) garan- puede ejecutar de forma normal. El flujo 16gico de
ticen que se ejercita por lo menos una vez todos 10s cami- un programa a veces no es nada intuitivo, lo que sig-
nos independientes de cada m6dulo; (2) ejerciten todas nifica que nuestras suposiciones intuitivas sobre el
las decisiones 16gicas en sus vertientes verdadera y fal- flujo de control y 10s datos nos pueden llevar a tener
sa; (3) ejecuten todos 10s bucles en sus limites y con sus errores de diseiio que s610 se descubren cuando
limites operacionales; y (4) ejerciten las estructuras inter- comienza la prueba del camino.
nas de datos para asegurar su validez. Los errores tipogra&cos son aleatorios. Cuando se
En este momento, se puede plantear un pregunta traduce un programa a codigo fuente en un lenguaje
razonable: ~ P o quC
r emplear tiempo y energia preocu- de programaci6n, es muy probable que se den algu-
pandose de (y probando) las minuciosidades 16gicas nos errores de escritura. Muchos serin descubiertos
cuando podriamos emplear mejor el esfuerzo asegu- por 10s mecanismos de comprobaci6n de sintaxis,
rando que se han alcanzado 10s requisitos del progra- per0 otros permanecerin sin detectar hasta que
ma? 0, dicho de otra forma, ipor quC no empleamos comience la prueba. Es igual de probable que haya
todas nuestras energias en la prueba de caja negra? La un error tipogrifico en un oscuro camino 16gico que
respuesta se encuentra en la naturaleza misma de 10s en un camino principal.
defectos del software (por ejemplo, [JON81]):
Los errores 16gicos y las suposiciones incorrectas son
inversamente proporcionales a la probabilidad de que
se ejecute un camino del programa. Los errores tien-
den a introducirse en nuestro trabajo cuando. diseiia-
mos e implementamos funciones, condiciones o
controles que se encuentran fuera de lo normal. El pro-
La prueba del camino bcisico es una tCcnica de prueba 17.4.1. Notaci6n de grafo de flujo
de caja blanca propuesta inicialmente por Tom McCa- Antes de considerar el mCtodo del camino bisico se
be [MCC76]. El mCtodo del camino basic0 permite a1 debe introducir una sencilla notaci6n para la represen-
disefiador de casos de prueba obtener una medida de la taci6n del flujo de control, denominada grafo de Pujo
complejidad 16gica de un disefio procedimental y usar (o grafo del programa)3.El grafo de flujo representa el
esa medida corno guia para la definici6n de un conjun- flujo de control 16gico mediante la notaci6n ilustrada en
to bcisico de caminos de ejecuci6n. Los casos de prue- la Figura 17.1. Cada construcci6n estructurada (Capi-
ba obtenidos del conjunto bisico garantizan que durante tulo 16) tiene su correspondiente simbolo en el grafo
la prueba se ejecuta por lo menos una vez cada senten- del flujo.
cia del programa.
Construcciones estructurales en forma de grafo de flujo:
Segun-sea
(Case)
Secuencia Si-si-no Mientras Repetir-hasta- que
(If) (While) (Until)
Dibujo un grofo de flujo cuondo lo ldgico de lo estructoro
de control de un mddulo seo complejo. Elgrofo de flojo te
permite trozor mbs fdcilmente 10s cominos del progromo.
Donde cada circulo representa una o mas sentencias, sin bifurcaciones, Para ilustrar el uso de un grafo de flujo, considere-
en LDP o codigo fuente mos la representaci6n del disefio procedimental en la
FIGURA 17.1. Notacion de grafo de flujo. Figura 17.2a. En ella, se usa un diagrama de flujo para
3 Realmente, el rnetodo del carnino bgsico se puede llevar a cab0 sin
usar grafos de flujo. Sin embargo, sirve corno herrarnienta util para
ilustrar el metodo.
representar la estructura de control del programa. En la Cuando en un diseiio procedimental se encuentran
Figura 17.2b se muestra el grafo de flujo correspon- condiciones compuestas, la generation del grafo de flu-
diente a1 diagrama de flujo (suponiendo que no hay con- jo se hace un poco rnhs complicada. Una condici6n com-
diciones compuestas en 10s rombos de decisi6n del puesta se da cuando aparecen uno o rnhs operadores
diagrama de flujo). (OR, AND, NAND, NOR 16gicos)en una sentencia con-
En la Figura 17.2b, cada circulo, denominado nodo dicional. En la Figura 17.3 el segment0 en LDP se tra-
del grafo de flujo, representa una o rnhs sentencias pro- duce en el grafo de flujo anexo. Se crea un nodo aparte
cedimentales. Un solo nodo puede corresponder a una por cada una de las condiciones a y b de la sentencia SI
secuencia de cuadros de proceso y a un rombo de deci- a 0 b. Cada nodo que contiene una condici6n se deno-
sion. Las flechas del grafo de flujo, denominadas aris- mina nodo predicado y esth caracterizado porque dos o
tas o enlaces, representan flujo de control y son mas aristas emergen de 61.
analogas a las flechas del diagrama de flujo. Una aris-
ta debe terminar en un nodo, incluso aunque el nodo
no represente ninguna sentencia procedimental (por
ejemplo, vCase el simbolo para la construction
Si-entonces-si-no). Las keas delimitadas por aristas
y nodos se denominan regiones. Cuando contabiliza- IF ab~
-
mos las regiones incluimos el Area exterior del grafo, Then
contando como otra regi6n mas4 Else procedirniento y
ENDlF
Determinamos la complejidad ciclomatica del malmente merece la pena identificar 10s nodos pre-
grafo de flujo resultante. La complejidad ciclomi- dicado para que sea mis ficil obtener 10s casos de
tica, V(G), se determina aplicando uno de 10s algo- prueba. En este caso, 10s nodos 2, 3, 5, 6 y 10 son
ritmos descritos en la Secci6n 17.5.2.. Se debe tener nodos predicado.
en cuenta que se puede determinar V(G) sin desa- 4. Preparamos 10s casos de prueba que forzaran la
rrollar el grafo de flujo, contando todas las senten- ejecucion de cada camino del conjunto basico.
cias condicionales del LDP (para el procedimiento Debemos escoger 10s datos de forma que las condi-
media las condiciones compuestas cuentan como 2) ciones de 10s nodos predicado estCn adecuadamente
y afiadiendo 1. establecidas, con el fin de comprobar cada camino.
En la Figura 17.5, Los casos de prueba que satisfacen el conjunto bisico
V(G) = 6 regiones previamente descrito son:
V(G) = 17 aristas - 13 nodos +2 = 6
Caso de prueba del camino 1:
V(G) = 5 nodos predicado + 1 = 6
valor (k) = entrada vdida, donde k < i definida a con-
tinuaci6n
valor (i) = -999, donde 2 <= i <= 100
resultados esperados: media correcta sobre 10s k
valores y totales adecuados.
Nota: el camino 1 no se puede probar por si solo;
debe ser probado como parte de las pruebas de 10s
caminos 4 , 5 y 6.
man bastante
oro verificar
La tkcnica de prueba del camino basic0 descrita en la El mktodo de laprueba de condiciones se centra en la
Seccion 17.4 es una de las muchas tkcnicas para la prue- prueba de cada una de las condiciones del programa. Las
ba de la estructura de control. Aunque la prueba del estrategias de prueba de condiciones (tratadas posterior-
camino basic0 es sencilla y altamente efectiva, no es mente en este capitulo) tienen, generalmente, dos venta-
suficiente por si sola. En esta secci6n se tratan otras jas. La primera, que la cobertura de la prueba de una
variantes de la prueba de estructura de control. Estas condicion es sencilla. La segunda, que la cobertura de la
variantes amplian la cobertura de la prueba y mejoran prueba de las condiciones de un programa da una orien-
la calidad de la prueba de caja blanca. tacion para generar pruebas adicionales del programa.
El proposito de la prueba de condiciones es detectar,
17.5.1. Prueba de condicion5 no solo 10s errores en las condiciones de un programa,
sino tarnbiCn otros errores en dicho programa. Si un con-
junto de pruebas de un programa P es efectivo para
detectar errores en las condiciones que se encuentran
en P, es probable que el conjunto de pruebas tambiCn sea
10s errores son mucho m6s comunes en el entorno efectivo para detectar otros errores en el programa P.
de los condiciones 16gicos que en 10s sentencios de Ademits, si una estrategia de prueba es efectiva para
proceso secuenciol. detectar errores en una condicion, entonces es probable
que dicha estrategia tambiCn sea efectiva para detectar
errores en el programa.
La pr-ueba de condicidn es un metodo de diseRo de Se propuesto una serie de estrategias de prueba
casos de prueba que ejercita las condiciones logicas de condiciones. La prueba de ram~cacioneses, posi-
contenidas en el modulo de un programs. Una condi- blemente, la estrategia de pmeba de condiciones mls
cion simple es una variable logica o una expresion sencilla. Para una condici6n compuesta C, es necesario
relacional. posiblemente precedida 'On un 'perador ejec-tar a1 menos una vez las ramas verdadera y falsa
NOT (<<in).Una expresi6n relacional toma la siguien- de cads condici6n simple de [MYE79].
te forma
El < operador-relational> E,
QoNsEIos
donde El y E, son expresiones aritmkticas y <opera-
dor-relacionab puede ser alguno de 10s siguientes: <<<>>, Coda vez que decides efectuor uno pruebo de condition,
<<<=>>,<<=>>,<<ZD(<<=>> desigualdad), K>D,o <<>=>>. Una deberos evoluor coda condicih en un intento
condicidn compuesta esta formada por dos o mas con- por descubrir errores. j Este es un escondrijo ideal
poro 10s errores!
diciones simples, operadores 16gicos y parentesis. Supo-
nemos que 10s operadores logicos permitidos en una
condici6n compuesta incluyen OR (<<I>>), AND (&D) y La prueba del dominio [WHISO] requiere la realiza-
NOT (KT>>). A una condicion sin expresiones relacio- ci6n de tres o cuatro pruebas para una expresi6n rela-
nales se la denomina Expresidn Idgica. cional. Para una expresi6n relacional de la forma
Por tanto, 10s tipos posibles de componentes en una
condicih pueden ser: un operador 16gic0, una variable
logics, un par de parkntesis 16gicos (que rodean a una se requieren tres pruebas, para comprobar que el valor
condicion simple o compuesta), un operador relacional de El es mayor, igual o menor que el valor de E,, res-
o una expresi6n aritmktica. pectivamente [HOW82]. Si el <operanor-relacionab
Si una condici6n es incorrecta, entonces es inco- es incorrect0 y El y E, son correctos, entonces estas tres
rrecto a1 menos un componente de la condici6n. Asi, pruebas garantizan la detecci6n de un error del opera-
10s tipos de errores de una condici6n pueden ser 10s dor relacional. Para detectar errores en El y E,, la prue-
siguientes: ba que haga el valor de El mayor o menor que el de E,
error en operador 16gico (existencia de operadores debe hacer que la diferencia entre estos dos valores sea
logicos incorrectos/desaparecidos/sobrantes) lo mas pequefia posible.
Para una expresi6n 16gica con n variables, habra que
error en variable 16gica
realizar las 2" pruebas posibles (n > 0). Esta estrategia
error en parkntesis logico puede detectar errores de un operador, de una variable
error en operador relacional y de un parCntesis 16gic0, per0 so10 es practica cuando
error en expresion aritmktica. el valor de n es pequeiio.
TambiCn se pueden obtener pruebas sensibles a error cional, podemos construir un conjunto de restricciones
para expresiones ldgicas [FOS84, TAI871. Para una para C, mediante la modificaci6n del conjunto de res-
expresi6n 16gica singular (una expresi6n 16gica en la tricciones {(v,v), (f, v), (v, f)) definido para C,. ObsCr-
cual cada variable 16gica s610 aparece una vez) con n vese que ~ v >para> (E, = E,) implica <<=>> y que ~ f para
n
variables Mgicas (n > 0), podemos generar ficilmente (E, = E,) implica <<<DO <OD. A1 reemplazar (v, v) y (f,
un conjunto de pruebas con menos de 2" pruebas, de tal v) por (v, =) y (f, =), respectivamente y reemplazando
forma que ese grupo de pruebas garantice la detecci6n (v, f) por (v, <) y (v,>), el conjunto de restricciones resul-
de m6ltiples errores de operadores 16gicos y tambiCn tante para C, es {(v,=), (f, =), (v, <), (v, >)}.Lacobertura
sea efectivo para detectar otros errores. del conjunto de restricciones anterior garantimi la detec-
Tai [TAN91 sugiere una estrategia de prueba de ci6n de errores del operador relacional o 16gico en C,.
condiciones que se basa en las tCcnicas destacadas Como tercer ejemplo, consideremos una condici6n
anteriormente. La tkcnica, denominada BRO* @rue- de la forma
ba del operador relacional y de ramificaci6n garan-
tiza la detecci6n de errores de operadores relacionales
y de ramificaciones en una condici6n dada, en la que donde El, E,, E, y E, son expresiones aritmkticas. Una
todas las variables 16gicas y operadores relacionales restricci6n de condicidn para C, es de la forma (Dl,
de la condici6n aparecen s610 una vez y no tienen D,), donde todos 10s Dl y D, son >, = o <. Puesto que
variables en com6n. C, es igual que C, excepto en que la primera condi-
La estrategia BRO utiliza restricciones de condition ci6n simple de C, es una expresi6n relacional, pode-
para una condici6n C. Una restricci6n de condici6n para mos construir un conjunto de restricciones para C,
C con n condiciones simples se define como (Dl, mediante la modificaci6n del conjunto de restriccio-
D,,...,D,), donde Di (0 < i I n) es un simbolo que espe- nes para C,, obteniendo
cifica una restriction sobre el resultado de la i-Csima
condici6n simple de la condici6n C. Una restricci6n de
condici6n D para una condicibn C se cubre o se trata en La cobertura de este conjunto de restricciones garan-
una ejecucibn de C, si durante esta ejecuci6n de C, el tizari la detecci6n de errores de operador relacional
resultado de cada condici6n simple de C satisface la res- en C,.
tricci6n correspondiente de D.
Para una variable 16gica B, especificamos una res- 17.5.2. Prueba del flujo d e datos
tricci6n sobre el resultado de B, que consiste en que B El mCtodo deprueba deJlujo de datos selecciona cami-
tiene que ser verdadero (v) o falso (f). De forma simi-
nos de prueba de un programa de acuerdo con la ubi-
lar, para una expresi6n relacional, se utilizan 10s sim- caci6n de las definiciones y 10s usos de las variables del
bolos >, = y < para especificar restricciones sobre el programa. Se han estudiado y comparado varias estra-
resultado de la expresi6n.
tegias de prueba de flujo de datos (por ejemplo,
Como ejemplo, consideremos la condici6n
[FRA88], [NTA88], [FRA93]).
C, : B,& B2 Para ilustrar el enfoque de prueba de flujo de datos,
supongamos que a cada sentencia de un programa se le
donde B, y B, son variables 16gicas. La restricci6n de
condici6n para C, es de la forma (Dl, D,), donde Dl y asigna un n6mero 6nico de sentencia y que las funcio-
nes no modifican sus parimetros o las variables globa-
~ . valor (v, f) es una restricci6n de
D, son <<vno < < f El
les. Para una sentencia con S como numero de sentencia,
condici6n para C, y se cubre mediante la prueba que
hace que el valor de B, sea verdadero y el valor de B, DEF(S) = {XI la sentencia S contiene una definici6n
sea falso. La estrategia de prueba BRO requiere que el deX }
conjunto de restricciones {(v, v), (f, v), (v, f)} sea USO(S) = { XI la sentencia S contiene un uso de X )
cubierto mediante las ejecuciones de C,. Si C, es inco-
rrecta por uno o mis errores de operador 16gic0, por lo Si la sentencia S es una sentencia ifo de bucle, su con-
menos un par del conjunto de restricciones forzari el junto DEF estari vacio y su conjunto USE estari basa-
fa110 de C,. do en la condici6n de la sentencia S. La definicih de una
Como segundo ejemplo, consideremos una condi- variable X en una sentencia S se dice que esti viva en una
ci6n de la forma sentencia S' si existe un camino de la sentencia S a la sen-
tencia S' que no contenga otra definici6n de X.
C, : B , & (E, = E4)
donde B, es una expresi6n 16gica y E, y E, son expre-
siones aritmkticas. Una restricci6n de condici6n para C,
es de la forma (Dl, D,), donde Dl es ~ v >o >ccfn y D, es
Es poco reolisto osumir que lo pruebo del flujo de dotos
>, = o <. Puesto que C, es igual que C,, excepto en que
puede ser usodo ompliomente cuondi probomos grondes
la segunda condicih simple de C, es una expresi6n rela- sisternos. En cuolquier coso, puede ser utilizodo en oreos
' En ingles, Branch and Relational Operator. del s o h r x e que seon sospechosos.
CAPtTULO 17 T F C N I C A S DE PRUEBA DEL SOFTWARE
Una cadena de defrnicidn-uso (o cadena DU) de una otras cadenas DU se pueden cubrir haciendo que esos
variable X tiene la forma [X, S, S'], donde S y S' son cinco caminos contengan iteraciones del bucle.
numeros de sentencia, X esta en DEF(S) y en USO(S') Dado que las sentencias de un programa estAn rela-
y la definici6n de X en la sentencia S estA viva en la sen- cionadas entre side acuerdo con las definiciones de las
tencia S'. variables, el enfoque de prueba de flujo de datos es efec-
Una sencilla estrategia de prueba de flujo de datos tivo para la protecci6n contra errores. Sin embargo, 10s
se basa en requerir que se cubra a1 menos una vez cada problemas de medida de la cobertura de la prueba y de
cadena DU. Esta estrategia se conoce como estrategia selecci6n de caminos de prueba para la prueba de flujo
de prueba DU. Se ha demostrado que la prueba DU no de datos son mhs dificiles que 10s correspondientes pro-
garantiza que se cubran todas las ramificaciones de un blemas para la prueba de condiciones.
programa. Sin embargo, solamente no se garantiza el
cubrimiento de una ramificaci6n en situaciones raras 17.5.3. Prueba d e bucles
como las construcciones when-else en las que la par-
te then no tiene ninguna definici6n de variable y no exis- Los bucles son la piedra angular de la inmensa mayo-
te la parte else. En esta situacidn, la prueba DU no cubre ria de 10s algoritmos implementados en software. Y sin
necesariamente la rama else de la sentencia if superior. embargo, les prestamos normalmente poca atenci6n
Las estrategias de prueba de flujo de datos son 6ti- cuando llevamos a cab0 las pruebas del software.
les para seleccionar caminos de prueba de un programa
que contenga sentencias $ 0 de bucles anidados. Para
ilustrar esto, consideremos la aplicaci6n de la prueba
DU para seleccionar caminos de prueba para el LDP 10s estructuros de bucles complejos es otro lugor
que sigue: propenso o errores. Por tonto, es muy volioso reolizor
diseios de pruebos que ejerciten mmpletomente
proc x 10s estructuros bude.
B1:
d o w h i l e C1 La prueba de bucles es una tCcnica de prueba de caja
i f C2 blanca que se centra exclusivamente en la validez de las
then construcciones de bucles. Se pueden definir cuatro cla-
i f C4 ses diferentes de bucles [BEI90]: bucles simples, bucles
then B4;
concatenados, bucles anidados y bucles no estructura-
else B5;
dos (Fig. 17.8).
endif ; Bucles simples.A 10s bucles simples se les debe apli-
else car el siguiente conjunto de pruebas, donde n es el
i f C3 n6mero mhximo de pasos permitidos por el bucle:
then b2; 1. pasar por alto totalmente el bucle
else B3; 2. pasar una sola vez por el bucle
e n d i f; 3. pasar dos veces por el bucle
e n d i f; 4. hacer m pasos por el bucle con m < n
enddo; 5. hacer n - 1, n y n+l pasos por el bucle
B6;
end proc;
Bucles anidados. Si extendikramos el enfoque de prue- Bucles concatenados. Los bucles concatenados se
.bade 10s bucles simples a 10s bucles anidados, el numero pueden probar mediante el enfoque anteriormente defi-
de posibles pruebas aumentaria geomCtricarnentea medi- nido para 10s bucles simples, mientras cada uno de 10s
da que aumenta el nivel de anidarniento. Esto llevaria a bucles sea independiente del resto. Sin embargo, si
un numero impracticable de pruebas. Beizer BE1901 suge- hay dos bucles concatenados y se usa el controlador
re un enfoque que ayuda a reducir el numero de pruebas: del bucle 1 como valor inicial del bucle 2, entonces
1. Comenzar por el bucle mhs interior. Establecer o con- 10s bucles no son independientes. Cuando 10s bucles
figurar 10s demhs bucles con sus valores minimos. no son independientes, se recomienda usar el enfoque
2. Llevar a cab0 las pruebas de bucles simples para el aplicado para 10s bucles anidados.
bucle m6s interior, mientras se mantienen 10s p a r h e -
tros de iteration (por ejemplo, contador del bucle) de
10s bucles externos en sus valores minimos. Aiiadir QoNswos
otras pruebas para valores fuera de rango o excluidos. No debes probor 10s bucles no estructvrados. Rediseiolos.
3. Progresar hacia fuera, llevando a cab0 pruebas para
el siguiente bucle, per0 manteniendo todos 10s bucles Bucles no estructurados. Siempre que sea posi-
externos en sus valores minimos y 10s demhs bucles ble, esta clase de bucles se deben redisefiar para que
anidados en sus valores cctipicos>>. se ajusten a las construcciones de programacion
4. Continuar hash que se hayan probado todos 10s bucles. estructurada (Capitulo 16).
Las pruebas de caja negru, tambiCn denominada prue- ~ E els sistema particularmente sensible a ciertos valo-
ha de conlportamiento, se centran en 10s requisitos fun- res de entrada?
cionales del software. 0 sea, la prueba de caja negra iDe quC forma esthn aislados 10s limites de una clase
permite a1 ingeniero del software obtener conjuntos de de datos?
condiciones de entrada que ejerciten completamente ~ Q u Cvollimenes y niveles de datos tolerarh el sis-
todos 10s requisitos funcionales de un programa. La
prueba de caja negra no es una alternativa a las tecni- tema?
cas de prueba de caja blanca. Mhs bien se trata de un ~ Q u Cefectos sobre la operaci6n del sistema tendrhn
enfoque complementario que intenta descubrir diferen- combinaciones especificas de datos?
tes tipos de errores que 10s mktodos de caja blanca. Mediante las tecnicas de prueba de caja negra se
La prueba de caja negra intenta encontrar errores de obtiene un conjunto de casos de prueba que satisfa-
las siguientes categorias: (1) funciones incorrectas o cen 10s siguientes criterios [MYE79]: (1) casos de
ausentes, (2) errores de interfaz, (3) errores en estruc- prueba que reducen, en un coeficiente que es mayor
turas de datos o en accesos a bases de datos externas, que uno, el numero de casos de prueba adicionales
(4) errores de rendimiento y (5) errores de inicializa- que se deben disefiar para alcanzar una prueba razo-
cion y de termination. nable y (2) casos de prueba que nos dicen algo sobre
A diferencia de la prueba de caja blanca, que se Ile- la presencia o ausencia de clases de errores en lugar
va a cab0 previamente en el proceso de prueba, la prue- de errores asociados solamente con la prueba que esta-
ba de caja negra tiende a aplicarse durante fases mos realizando.
posteriores de la prueba (vCase el Capitulo 18).Ya que
ia prueba de caja negra ignora intekionadament; la 17.6.1. Metodos de prueba basados en grafos
estructura de control, centra su atenci6n en el campo de
la informacion. Las pruebas se diseiian para responder El primer paso en la prueba de caja negra es entender
a las siguientes preguntas: 10s objetos6 que se modelan en el software y las rela-
ciones que conectan a estos objetos. Una vez que se ha
iC6m0 se prueba la validez funcional?
llevado a cab0 esto, el siguiente paso es definir una serie
iC6m0 se prueba el rendimiento y el comportamiento de pruebas que verifiquen que ~ t o d o 10s
s objetos tienen
del sistema? entre ellos las relaciones esperadaw [BEI95]. Dicho de
~ Q u Cclases de entrada compondrh unos buenos otra manera, la prueba del software empieza creando un
casos de prueba? grafo de objetos importantes y sus relaciones, y despuCs
6 ~ este'contexto,
n el tkrmino ((objeto))comprende 10s objetos de datos
que se estudiaron en 10s Capitulos 1 1 y 12 asi como objetos de pro-
grama tales como modulos o colecciones de sentencias del lenguaje
de programacion.
CAPfTULO 17 T P C N I C A S DE PRUEBA DEL SOFTWARE
disefiando una serie de pruebas que cubran el grafo de Como se muestra en la figura, una seleccion del
manera que se ejerciten todos 10s objetos y sus relacio- menu en archivo nuevo genera una ventana del docu-
nes para descubrir 10s errores. mento. El peso del nodo de ventana del documento
proporciona una lista de 10s atributos de la ventana que
se esperan cuando se genera una ventana. El peso del
enlace indica que la ventana se tiene que generar en
menos de 1.0 segundos. Un enlace no dirigido esta-
Un grofo represento lo relocion entre obieto doto y objeto blece una relacion simCtrica entre seleccion en el menu
progromo, permitiendonos derivor cosos de pruebo
de archivo nuevo y texto del documento, y 10s enla-
que buscon errores osociodos con estos relociones.
ces paralelos indican las relaciones entre la ventana
del documento y el texto del documento. En reali-
dad, se deberia generar un grafo bastante mAs detalla-
do como precursor a1 disefio de casos de prueba. El
ingeniero del software obtiene entonces casos de prue-
ba atravesando el grafo y cubriendo cada una de las
relaciones mostradas. Estos casos de prueba estfin dise-
fiados para intentar encontrar errores en alguna de las
relaciones.
a) ~ o t a c i 6 d grafo
e Beizer [BE1951 describe un n6mero de mCtodos de
prueba de comportamiento que pueden hacer uso de 10s
Nuevo La selecclon ael menu genera de grafos:
archivo )(tiempo de gcndracibn r 1.0 seg.i$ocumen
Modelado del flujo de transaccidn. Los nodos
representan 10s pasos de alguna transaccion (por
Se representa como Dimensiones de inicio:
m ejemplo, 10s pasos necesarios para una reserva en una
o ~referencias linea aCrea usando un servicio en linea), y 10s enla-
w
b) Un sencillo eiemplo
Color
predeterminadas
de fondo: blanco
Color del texto:
ces representan las conexiones logicas entre 10s pasos
(por ejemplo, vuelo.informacidn.entradaes seguida
color o preferencias de validacidnldisponibilidad.procesamiento).El dia-
predeterminadas grama de flujo de datos (Capitulo 12) puede usarse
para ayudar en la creacion de grafos de este tipo.
Para llevar a cab0 estos pasos, el ingeniero del soft- Modelado de estadofinito. Los nodos representan
ware empieza creando un grafo -una coleccion de nodos diferentes estados del software observables por el
que representan objetos; enlaces que representan las rela- usuario (por ejemplo, cada una de las <<pantallas>>que
ciones entre 10s objetos; pesos de nodos que describen las aparecen cuando un telefonista coge una peticion por
propiedades de un nodo (por ejemplo, un valor especifi- telCfono), y 10s enlaces representan las transiciones
co de datos o comportamiento de estado) y pesos de enla- que ocurren para moverse de estado a estado (por
ces que describen alguna caracten'stica de un e n l a c e 7 . ejemplo, peticidn-informacibn se verifica durante
En la Figura 17.9a se muestra una representacion inventario-disponibilidad-bhqueday es seguido por
simbolica de un grafo. Los nodos se representan como cliente-factura-informacidn-entrada). El diagrama
circulos conectados por enlaces que toman diferentes for- estado-transition (Capitulo 12) puede usarse para
mas. Un enlace dirigido (representado por una flecha) ayudar en la creation de grafos de este tipo.
indica que una relacion se mueve so10 en una direccion. Modelado del flujo de datos. Los nodos son
Un enlace bidireccional, tambiCn denominado enlace objetos de datos y 10s enlaces son las transforma-
simktrico, implica que la relaci6n se aplica en ambos sen- ciones que ocurren para convertir un objeto de
tidos. Los enlaces paralelos se usan cuando se establecen datos en otro. Por ejemplo, el nodo FICA.impues-
diferentes relaciones entre 10s nodos del grafo. to.retenido (FIR) se calcula de brutos.sueldos
Como ejemplo sencillo, consideremos una parte de (BS) usando la relacion FIR = 0,62 X BS.
un grafo de una aplicacion de un procesador de texto Modelado de planificacidn. Los nodos son obje-
(Fig. 17.9b) donde: tos de programa y 10s enlaces son las conexiones
objeto n." 1 = seleccion en el menu de archivo nuevo secuenciales entre esos objetos. Los pesos de enla-
objeto n . 9 = ventana del documento ce se usan para especificar 10s tiempos de ejecucion
objeto n." 3 = texto del documento requeridos a1 ejecutarse el programa.
7Si10s conceptos anteriores suenan vagamente familiares, recordemos grama) caracterizadoscomo representacionesde diserio procedimen-
que 10s grafos se usaron tambien en la Secci6n 17.4.1 para crear un tal o como c6digo fuente y 10s enlaces dirigidos indicaban el tlujo de
grafo del programa para el metodo de la prueba del camino basico. Los control entre estos objetos del prograrna. Aqui se extiende el uso de 10s
nodos del grafo del programa contenian instrucciones (objetosde pro- grafos para incluir la prueba de caja negra.
INGENlERfA DEL SOFTWARE. UN ENFOQUE PRACTICO
Un estudio detallado de cada uno de estos mCtodos de no se puede usar UNDO) debenan apuntarse. Final-
de prueba basados en grafos esta mas alla del alcance mente, todos 10s nodos del grafo deberian tener una rela-
de este libro. El lector interesado deberia consultar ci6n que 10s lleve de vuelta a ellos mismos; en esencia,
[BE1951 para ver un estudio detallado. Merece la pena, un bucle de <<noacci6n>>o ocaccion nula>>.Estas relacio-
sin embargo, proporcionar un resumen genCrico del nes rejexivas debenan probarse tambiCn.
enfoque de pruebas basadas en grafos. Cuando empieza el disefio de casos de prueba, el pri-
mer objetivo es conseguir la cobertura de nodo. Esto sig-
tCuales son las actividades nifica que las pruebas debenan disefiarse para demostrar
generales requeridas que ningun nodo se ha omitido inadvertidamente y que
durante la prueba basada 10s pesos de nodos (atributos de objetos) son correctos.
en un grafo? A continuation, se trata la cobertura de enlaces. Todas
las relaciones se prueban basandose en sus propiedades.
Las pruebas basadas en grafos empiezan con la defi- Por ejemplo, una relacion simCtrica se prueba para
nici6n de todos 10s nodos y pesos de nodos. 0 sea, se demostrar que es, de hecho, bidireccional. Una relacidn
identifican 10s objetos y 10s atributos. El modelo de datos transitiva se prueba para demostrar que existe transiti-
(Capitulo 12) puede usarse como punto de partida, per0 vidad. Una relacion reflexiva se prueba para asegurarse
es importante tener en cuenta que muchos nodos pue- de que hay un bucle nulo presente. Cuando se han espe-
den ser objetos de programa (no representados explici- cificado 10s pesos de enlace, se disefian las pruebas para
tamente en el modelo de datos). Para proporcionar una demostrar que estos pesos son vilidos. Finalmente, se
indicacion de 10s puntos de inicio y final del grafo, es invocan las pruebas de bucles (Seccion 17.5.3).
util definir unos nodos de entrada y salida.
Una vez que se han identificado 10s nodos, se debe- 17.6.2. Partici6n equivalente
rian establecer 10s enlaces y 10s pesos de enlaces. En
general, conviene nombrar 10s enlaces, aunque 10s enla- Laparticidn equivalente es un mCtodo de prueba de caja
ces que representan el flujo de control entre 10s objetos negra que divide el campo de entrada de un programa
de programa no es necesario nombrarlos. en clases de datos de 10s que se pueden derivar casos
En muchos casos, el modelo de grafo puede tener de prueba. Un caso de prueba ideal descubre de forma
bucles (por ejemplo, un camino a travCs del grafo en el inmediata una clase de errores (por ejemplo, proceso
que se encuentran uno o mas nodos mas de una vez). La incorrect0 de todos 10s datos de caracter) que, de otro
prueba de bucle (Seccion 17.5.3) se puede aplicar tarn- modo, requerinan la ejecucion de muchos casos antes
biCn a nivel de comportamiento (de caja negra). El grafo de detectar el error genCrico. La particion equivalente
se dirige a la definici6n de casos de prueba que descu-
ayudara a identificar aquellos bucles que hay que probar.
Cada relacion es estudiada separadamente, de mane- bran clases de errores, reduciendo asi el numero total
ra que se puedan obtener casos de prueba. La transiti- de casos de prueba que hay que desarrollar.
vidad de relaciones secuenciales es estudiada para
determinar c6mo se propaga el impact0 de las relacio-
nes a travCs de objetos definidos en el grafo. La transi-
10s closes de entrodo son conocidos relotivomente
tividad puede ilustrarse considerando tres objetos X,Y
temprono en el proceso de sohare. for esio rozan,
y Z. Consideremos las siguientes relaciones: comenzomas pensondo en lo pom'ci6n equivolente
X es necesaria para calcular Y uno vez el disedo ha sido creodo.
Y es necesaria para calcular Z
Por tanto, se ha establecido una relacion transitiva El disefio de casos de prueba para la particion equi-
valente se basa en una evaluaci6n de las clases de equi-
entre X y Z:
valencia para una condicion de entrada. Mediante
X es necesaria para calcular Z conceptos introducidos en la seccidn anterior, si un con-
Basandose en esta relacion transitiva, las pruebas junto de objetos puede unirse por medio de relaciones
para encontrar errores en el calculo de Z deben consi- simCtricas, transitivas y reflexivas, entonces existe una
derar una variedad de valores para X e Y. clase de equivalencia [BEI95]. Una clase de equivalen-
La simetria de una relacidn (enlace de grafo) es tam- cia representa un conjunto de estados validos o no vali-
biCn una importante directriz para disefiar casos de prue- dos para condiciones de entrada. Tipicamente, una
ba. Si un enlace es bidireccional (simCtrico),es importante condici6n de entrada es un valor numCrico especifico, un
probar esta caracteristica. La caracteristica UNDO rango de valores, un conjunto de valores relacionados o
[BE1951 (deshacer) en muchas aplicaciones para orde- una condicih logica. Las clases de equivalencia se pue-
nadores personales implementa una limitada simetria. Es den definir de acuerdo con las siguientes directrices:
decir, UNDO permite deshacer una accion despuCs de 1. Si una condicion de entrada especifica un rango,
haberse completado. Esto debena probarse minuciosa- se define una clase de equivalencia valida y dos no
mente y todas las excepciones (por ejemplo, lugares don- validas.
CAPfTULO 17 TBCNICAS DE PRUEBA DEL SOFTWARE
Si una condici6n de entrada requiere un valor espe- prueba. El anhlisis de valores limite nos lleva a una
cifico, se define una clase de equivalencia vhlida y elecci6n de casos de prueba que ejerciten 10s valores
dos no validas. limite.
Si una condici6n de entrada especifica un miembro
de un conjunto, se define una clase de equivalencia
vhlida y una no vrilida.
Si una condici6n de entrada es ldgica, se define una AVL ornplio lo portici6n equivalente poro fijorse sobre
clase de equivalencia valida y una no vrilida. dotos en el ((lirnite)) de uno close de equivolencio.
Como ejemplo, consideremos 10s datos contenidos en
una aplicaci6n de automatizaci6n bancaria. El usuario El anhlisis de valores limite es una tCcnica de dise-
puede cdlamaru a1 banco usando su ordenador personal, fio de casos de prueba que complernenta a la partici6n
dar su contraseiia de seis digitos y continuar con una sene equivalente. En lugar de seleccionar cualquier elemen-
de 6rdenes tecleadas que desencadenarhn varias funcio- to de una clase de equivalencia, el AVL lleva a la elec-
nes bancarias. El software proporcionado por la aplica- ci6n de casos de prueba en 10s ccextremos>> de la clase.
ci6n bancaria acepta datos de la siguiente forma: En lugar de centrarse solamente en las condiciones de
C6digo de Area: en blanco o un numero de tres digitos entrada, el AVL obtiene casos de prueba tambiCn para
Prefijo: numero de tres digitos que no comience por el campo de salida [MYE79].
00 1
i Como se trean tasos
Sufijo: numero de cuatro digitos
de prueba para el AVL?
Contrasefia: valor alfanumCrico de seis digitos
0rdenes: cccomprobar>>, ccdepositar>>,ccpagar factu- Las directrices de AVL son similares en muchos
ra>>,etc. aspectos a las que proporciona la partici6n equivalente:
Las condiciones de entrada asociadas con cada elemento 1. Si una condici6n de entrada especifica un rango deli-
de la aplicacibn bancaria se pueden especificar como: mitado por 10s valores a y b, se deben diseiiar casos
de prueba para 10s valores a y b, y para 10s valores
C6digo de Area: condici6n de entrada, ldgica--el cMi-
justo por debajo y justo por encima de a y b, res-
go de Area puede estar o no presente
pectivamente.
condici6n de entrada, rango-valo-
res definidos entre 200 y 999, con 2. Si una condici6n de entrada especifica un numero de
excepciones especificas valores, se deben desarrollar casos de prueba que
ejerciten 10s valores mhximo y minimo. TambiCn se
Prefijo: condicidn de entrada, rango -valor
deben probar 10s valores justo por encima y justo por
especificado > 200 sin digitos 0
debajo del mhximo y del minimo.
Sufijo: condici6n de entrada, valor -lon- 3. Aplicar las directrices 1 y 2 a las condiciones de
gitud de cuatro digitos salida. Por ejemplo, supongamos que se requiere una
Contraseiia: condici6n de entrada, 16gica - tabla de cctemperatura 1 presi6n~como salida de un
la palabra clave puede estar o no programa de anhlisis de ingenieria. Se deben dise-
presente; iiar casos de prueba que creen un informe de salida
condici6n de entrada, valor -cade- que produzca el maxim0 (y el minimo) ndmero per-
na de seis caracteres mitido de entradas en la tabla.
Orden: condici6n de entrada, conjunto- 4. Si las estructuras de datos internas tienen limites
contenida en las 6rdenes listadas preestablecidos (por ejemplo, una matriz que tenga
anteriormente un limite definido de 100 entradas), hay que asegu-
Aplicando las directrices para la obtenci6n de clases rarse de diseiiar un caso de prueba que ejercite la
de equivalencia, se pueden desarrollar y ejecutar casos estructura de datos en sus limites.
de prueba para cada elemento de datos del campo de La mayoria de 10s ingenieros del software llevan a
entrada. Los casos de prueba se seleccionan de forma cab0 de forma intuitiva alguna forma de AVL. Apli-
que se ejercite el mayor numero de atributos de cada cando las directrices que se acaban de exponer, la prueba
clase de equivalencia a la vez. de limites sera mhs completa y, por tanto, tendra una
mayor probabilidad de detectar errores.
17.6.3. Analisis d e valores limite
Por razones que no esthn del todo claras, 10s errores 17.6.4. Prueba d e comparacion
tienden a darse mris en 10s limites del campo de entra- Hay situaciones (por ejemplo, avi6nica de aeronaves,
da que en el cccentro>>.Por ello, se ha desarrollado el control de planta nuclear) en las que la fiabilidad del
andlisis de valores lirnites (AVL) como tCcnica de software es algo absolutamente critico. En ese tipo de
( 3 , l ~ l )( l~7 2 , l 7 l ) ,(1,3,1,1), (1,1,2,1), (1,1,3,1), La prueba de la tabla ortogonal nos permite propor-
(1,1,1,2), y (1,1,1,3). Phadke [PEL4971valora estos casos cionar una buena cobertura de prueba con bastantes
de prueba de la siguiente manera: menos casos de prueba que en la estrategia exhaustiva.
Cada uno de estos casos de prueba son utiles, linicamente Una tabla ortogonal L9 para la funci6n de envio del fax
cuando estos parametros de prueba no se influyen mutuamen- se describe en la Figura 17.11.
te. Pueden detectar fallos 16gicos cuando el valor de un par& Phadke [PHA97] valora el resultado de las prue-
metro produce un ma1 funcionamiento del software. Estos fallos bas utilizando la tabla ortogonal de la siguiente
pueden llamarse fallos de modalidad simple. El metodo no pue-
de detectar fallos 16gicos que causen un ma1 funcionamiento manera:
cuando dos o mas parametros simultineamente toman deter- Detecta y aisla todos 10s fallos d e modalidad sim-
minados valores; es decir, no se pueden detectar interacciones. ple. Un fallo de modalidad simple es un problema que
Asi, esta habilidad para detectar fallos es limitada. afecta a un solo parametro. Por ejemplo, si todos 10s casos
Dados un ndmero relativamente pequeiio de parime- de prueba del factor P1 = 1 causan una condicion de error,
tros de entrada y valores dlferentes, es posible realizar una nos encontramos con el fallo de modalidad simple. En 10s
ejemplos de prueba 1, 2 y 3 [Fig. 17.11] se encontraran
prueba exhaustiva. El ndmero de pruebas requeridas es errores. Analizando la information en que las pruebas
3'=8 1 -grande per0 manejable-. Todos 10s fallos aso- muestran errores, se puede identificar que valores del para-
ciados con la permutacion de 10s datos s e r h encontrados, metro causan el error. En este ejemplo, anotamos que las
per0 el esfuerzo requerido es relativarnente alto. pruebas 1, 2 y 3 causan un error, lo que permite aislar [el
proceso logic0 asociado con ccenviar ahoraz (P1 = l)] la
fuente del error. El aislamiento del fallo es importante para
solucionar el error.
A medida que el software de computadora se ha hecho en menos costosa en tiempo y mas exacta. A1 mismo
mis complejo, ha crecido tambiCn la necesidad de enfo- tiempo, la complejidad de las IGUs ha aumentado,
ques de pruebas especializados. Los mCtodos de prue- originando mhs dificultad en el diseiio y ejecucidn de
ba de caja blanca y de caja negra tratados en las 10s casos de prueba.
Secciones 17.5 y 17.6 son aplicables a todos 10s entor-
nos, arquitecturas y aplicaciones per0 a veces se nece-
sitan unas directrices y enfoques dnicos para las pruebas.
En esta seccidn se estudian directrices de prueba para
entornos, arquitecturas y aplicaciones especializadas
que pueden encontrarse 10s ingenieros del software.
Dado que las IGUs modernas tienen la misma apa-
17.7.1. Prueba de interfaces graficas de usuario riencia y filosofia, se pueden obtener una serie de
pruebas esthndar. Los grafos de modelado de estado
(IGUs)
finito (Seccion 16.6.1) pueden ser utilizados para rea-
Las interfaces grificas de usuario (IGUs) presentan lizar pruebas que vayan dirigidas sobre datos especi-
interesantes desafios para 10s ingenieros del softwa- ficos y programas objeto que Sean relevantes para las
re. Debido a 10s componentes reutilizables provistos IGUs.
como parte de 10s entornos de desarrollo de las GUI, Considerando el gran ndmero de permutaciones aso-
la creaci6n de la interfaz de usuario se ha convertido ciadas con las operaciones IGU, seria necesario para
INGENIERIA DEL SOFTWARE. U N E N F O Q U E PRACTICO
probar el utilizar herramientas automiiticas. Una amplia claridad editorial. La segunda fase, la prueba en vivo,
lista de herramientas de prueba de IGU han aparecido utiliza la documentaci6njunto a1 uso del programa real.
en el mercado en 10s dltimos aiios. Para profundizar en Es sorprendente, per0 la prueba en vivo de la docu-
el tema, ver el Capitulo 3 1. mentaci6n se puede enfocar usando tCcnicas aniilogas
a muchos de 10s mCtodos de prueba de caja negra estu-
diados en la Secci6n 17.6. Se pueden emplear pruebas
basadas en grafos para describir el empleo del progra-
ma; se pueden emplear el aniilisis de la partici6n equi-
valente o de 10s valores limites para definir varias clases
de entradas e interacciones asociadas.
Prueba IGU.
17.7.4. Prueba de sistemas de tiempo-real
17.7.2. Prueba de arquitectura cliente/sewidor
La naturaleza asincrona y dependiente del tiempo de
La arquitectura clientelsemidor (CIS) representa un desa- muchas aplicaciones de tiempo real, afiade un nuevo y
fio significativo para 10s responsables de la pruebas del potencialmente dificil elemento a la complejidad de las
software. La naturaleza distribuida de 10s entomos clien- pruebas 4 1 tiemp-. El responsable del disefio de casos
telservidor, 10s aspectos de rendimiento asociados con de prueba no s610 tiene que considerar 10s casos de prue-
el proceso de transacciones, la presencia potencial de ba de caja blanca y de caja negra, sino tambiCn el trata-
diferentes plataformas hardware, las complejidades de miento de sucesos (por ejemplo, procesamiento de
las comunicaciones de red, la necesidad de semir a mdl- intermpciones), la temporizaci6n de 10s datos y el para-
tiples clientes desde una base de datos centralizada (o lelismo de las tareas (procesos) que manejan 10s datos. En
en algunos casos, distribuida) y 10s requisitos de coor- muchas situaciones, 10s datos de prueba proporcionados
dinaci6n impuestos a1 semidor se combinan todos para a1 sistema de tiempo real cuando se encuentra en un deter-
hacer las pruebas de la arquitectura CIS y el software minado estado darhn un proceso correcto, mientras que a1
residente en ellas, considerablemente miis dificiles que proporcionArselos en ouo estado llevarin a un error.
la prueba de aplicaciones individuales. De hecho, estu-
dios recientes sobre la industria indican un significati-
vo aumento en el tiempo invertido y 10s costes de las
pruebas cuando se desarrollan entornos CIS.
tarea. Durante estas pruebas, cada tarea se ejecuta inde- Prueba intertareas. Una vez que se han aislado
pendientemente. La prueba de la tarea ha de descubrir 10s errores en las tareas individuales y en el com-
errores en la 16gica y en el funcionamiento, per0 no portamiento del sistema, la prueba se dirige hacia
10s errores de temporizaci6n o de comportamiento. 10s errores relativos a1 tiempo. Se prueban las tare-
as asincronas que se sabe que comunican con otras,
con diferentes tasas de datos y cargas de proceso
Referencia web/ ' para determinar si se producen errores de sincronis-
mo entre las tareas. Ademis, se prueban las tareas
El Forum de Discusidn de la Ptueba del Sofiwore present0 temas que se comunican mediante colas de mensajes o
de interes a las profesionalesque efedan lo ptuebo: almacenes de datos, para detectar errores en el tama-
www.ondaweb.com /HyperNews/get.cgi/forums/sti.html. iio de esas Areas de almacenamiento de datos.
Prueba de comportamiento. Utilizando modelos Prueba del sistema. El software y el hardware e s t h
del sistema creados con herramientas CASE, es posi- integrados, por lo que se lleva a cabo una sene de prue-
ble simular el comportamiento del sistema en tiempo bas completas del sistema (Capitulo 18) para intentar
real y examinar su comportamiento como consecuen- descubrir errores en la interfaz softwarehardware.
cia de sucesos extemos. Estas actividades de anAlisis La mayoria de 10s sistemas de tiempo real procesan
pueden servir como base del diseiio de casos de prue- intermpciones. Por tanto, es esencial la prueba del mane-
ba que se llevan a cab0 cuando se ha construido el soft- jo de estos sucesos 16gicos. Usando el diagrama estado-
ware de tiempo real. Utilizando una tCcnica parecida transici6n y la especificaci6n de control (Capitulo 12), el
a la partici6n equivalente (Secci6n 17.6.I), se pueden responsable de la prueba desarrolla una lista de todas las
categorizar 10s sucesos (por ejemplo, intermpciones, posibles intermpciones y del proceso que ocurre como
seiiales de control, datos) para la prueba. Por ejemplo, consecuencia de la intermpci6n. Se diseiian despuCs prue-
10s sucesos para la fotocopiadora pueden ser inte- bas para valorar las siguientes caracteristicas del sistema:
rmpciones del usuario (por ejemplo, reinicializaci6n
del contador), intermpciones mecAnicas (por ejemplo, iSe han asignado y gestionado apropiadamente las
atasco del papel), intermpcionesdel sistema (por ejem- prioridades de interrupci6n?
plo, bajo nivel de tinta) y modos de fa110 (por ejem- iSe gestiona correctamente el procesamiento para
plo, rodillo excesivamente caliente). Se prueba cada todas las intermpciones?
uno de esos sucesos individualmente y se examina el iSe ajusta a 10s requisitos el rendimiento (por ejem-
comportamiento del sistema ejecutable para detectar plo, tiempo de proceso) de todos 10s procedimientos
errores que se produzcan como consecuencia del pro- de gestion de interrupciones?
ceso asociado a esos sucesos. Se puede comparar el
comportamiento del modelo del sistema (desarrolla- iCrea problemas de funcionamiento o rendimiento
la llegada de un gran volumen de intermpciones en
do durante el anAlisis) con el software ejecutable para
ver si existe concordancia. Una vez que se ha proba- momentos criticos?
do cada clase de sucesos, a1 sistema se le presentan AdemAs, se deberian probar las hreas de datos glo-
sucesos en un orden aleatorio y con una frecuencia ale- bales que se usan para transferir informaci6n como par-
atoria. Se examina el comportamiento del software te del proceso de una interrupci61-1para valorar el
para detectar errores de comportamiento. potencial de generaci6n de efectos colaterales.
El principal objetivo del diseiio de casos de prueba es pendientes que aseguren la total cobertura. La prueba
obtener un conjunto de pruebas que tengan la mayor de condiciones y del flujo de datos ejercita mis adn la
probabilidad de descubrir 10s defectos del software. Para 16gica del programa y la prueba de 10s bucles comple-
llevar a cab0 este objetivo, se usan dos categorias dife- menta a otras tCcnicas de caja blanca, proporcionando
rentes de tCcnicas de diseiio de casos de prueba: prue- un procedimiento para ejercitar bucles de distintos gra-
ba de caja blanca y prueba de caja negra. dos de complejidad.
Las pruebas de caja blanca se centran en la estruc- Heztel [HET84] describe la prueba de caja blanca
tura de control del programa. Se obtienen casos de prue- como ccprueba a pequeiia escalan. Esto se debe a que
ba que aseguren que durante la prueba se han ejecutado, las pruebas de caja blanca que hemos considerado en
por lo menos una vez, todas las sentencias del progra- este capitulo son tipicamente aplicadas a pequeiios
ma y que se ejercitan todas las condiciones 16gicas. La componentes de programas (po ejemplo; m6dulos o
prueba del camino bisico, una tCcnica de caja blanca, pequefios grupos de modules). Por otro lado, la prue-
hace uso de grafos de programa (o matrices de grafos) ba de caja negra amplia el enfoque y se puede deno-
para obtener el conjunto de pruebas linealmente inde- minar ccprueba a gran escala,,.
~ N G E N ~ E RDEL
~ A SOFTWARE. UN ENFOQUE PRACTICO
Las pruebas de caja negra son diseiiadas para validar Los metodos de prueba especializados comprenden una
10s requisitos funcionales sin fijarse en el funcionamien- amplia gama de capacidades del software y rireas de apli-
to intemo de un programa. Las tkcnicas de prueba de caja caci6n. Las interfaces grif=icas de usuario, las arquitectu-
negra se centran en el imbito de informaci6n de un pro- ras cliente/servidor, la documentacion y facilidades de
grama, de forma que se proporcione una cobertura com- ayuda, y 10s sistemas de tiempo real requieren directrices
pleta de prueba. Los mCtodos de prueba basados en grafos y tknicas especializadas para la prueba del software.
exploran las relaciones entre 10s objetos del programa y A menudo, 10s desarrolladores de software experi-
su comportamiento. La particion equivalente divide el mentados dicen que ccla prueba nunca termina, simple-
campo de entrada en clases de datos que tienden a ejerci- mente se transfiere de usted (el ingeniero del software)
tar determinadas funciones del software. El analisis de a1 cliente. Cada vez que el cliente usa el programa, lle-
valores limite prueba la habihdad del prograrna para mane- va a cab0 una prueba.n Aplicando el disefio de casos de
jar datos que se encuentran en 10s limites aceptables. La prueba, el ingeniero del software puede conseguir una
prueba de la tabla ortogonal suministra un metodo siste- prueba mas completa y descubrir y corregir asi el mayor
mitico y eficiente para probar sistemas con un numero numero de errores antes de que comiencen las ccprue-
reducido de parametros de entrada. bas del cliente,,.
[BE1901 Beizer, B., Software Testing Techniques, 2.%d., Van [JON811 Jones, T.C., Programming Prodwtivity: Issues for
Nostrand Reinhold, 1990. the 80's, IEEE Computer Society Press, 1981.
[BE1951 Beizer, B., Black-Bos Testing, Wiley, 1995. [KAN93] Kaner, C., J. Falk y H.Q. Nguyen, Testing Compu-
[BRI87] Brilliant, S.S., J.C. Knight, y N.G. Levenson, <<The ter Software, 2.a ed., Van Nostrand Reinhold, 1993.
Consistent Comparison Problem in N-Version Software)), [KN189] Knight, J., y P. Ammann, <<TestingSoftware Using
ACM Software Engineering Notes, vol. 12, n." 1, enero Multiple Versions,,, Software Productivity Consortium,
1987, pp. 29-34. Report n." 89029N, Reston, VA, Junio 1989.
[DAV95] Davis, A,, 201 Principles of Software Development, [MCC76] McCabe, T., <<ASoftware Complexity Measure,,
McGraw-Hill, 1995. IEEE Trans. Software Engineering, vol. 2, Diciembre 1976,
[DEU79] Deutsch, M., <<Verificationand Validation,,, Soft- pp. 308-320.
ware Engineering, R. Jensen y C.Tonies (eds.), Prentice- [MYE79] Myers, G., The Art of Software Testing,Wiley, 1979.
Hall, 1979, pp. 329-408. [NTA88] Ntafos, S.C., ctA comparison of Some Structural Tes-
[FOS84] Foster, K.A., <<SensitiveTest Data for Boolean ting Strategies)),IEEE Trans. Software Engineering, vol. 14,
Expressions,,, ACM Software Engineering Notes, vol. 9, n." 6, Junio 1988, pp. 868-874.
n." 2, Abril 1984, pp. 120-125. [PHA89] Phadke, MS., Quality Engineering Using Robust
[FRA88] Frankl, P.G., y E.J. Weyuker, <<An Applicable Family Design, Prentice Hall, 1989.
of Data Flow Testing Criteria,,, IEEE Trans. Sofhrnre Engi- [PHA97] Phadke, M.S., <<PlanningEfficient Software Tests,,,
neering, vol. 14, n." 10, Octubre 1988, pp.1483-1498. Crosstalk, vol. 10, n." 10, Octubre 1997, pp. 278-283.
[FRA93] Frankl, P.G., y S. Weiss, <<AnExperimental Com- [TAI87] Tai, K.C., y H.K. Su, (<TestGeneration for Boolean
parison of the Effectiveness of Branch Testing and Data Expresionsn, Pror. COMPSAC'87, Octubre 1987, pp. 278-
Flow)>.IEEE Trans. Software Engineering, vol. 19, n." 8, 283.
Agosto 1993, pp. 770-787. [TAI89] Tai, K.C., <<Whatto Do Beyond Branch Testingr,
[HET84] Hetzel, W., The Complete Guide to Software Tes- ACM Software Engineering Notes, vol. 14, n." 2, Abril
ting, QED Information Sciences, Inc., WeIlesley, MA, 1984. 1989, pp. 58-61.
[HOW821 Howden, W.E., <<WeakMutation Testing and the [WHI80] White, L.J., y.E.1. Cohen, <<A Domain Strategie for
Completeness of Test Cases*, IEEE Trans. Software Engi- Program Testing,,, IEEE Trans. Software Engineering, vol.
neering, vol. SE-8, n." 4, julio 1982, pp. 371-379. SE-6, n." 5, Mayo 1980, pp. 247-257.
17.1. Myers [MYE79] usa el siguiente programa como auto- 17.2. Disefie e implemente el programa especificado en el Pro-
comprobaci6n de su capacidad para especificar una prueba blema 17.1 (con tratamiento de errores cuando sea necesario).
adecuada: un programa lee tres valores enteros. Los tres valo- Obtenga un grafo de flujo para el programa y aplique la prue-
res se interpretan como representaci6n de la longitud de 10s ba del camino bisico para desarrollar casos de prueba que
tres lados de un trihgulo. El programa irnprime un mensaje garanticen la comprobaci6n de todas las sentencias del pro-
indicando si el triangulo es escaleno, is6sceles o equilitero. grams. Ejecute 10s casos y muestre sus resultados.
Desarrolle un conjunto de casos de prueba que considere que 17.3. iSe le ocurren algunos objetivos de prueba adicionales
probari de forma adecuada este programa. que no se hayan mencionado en la Seccidn 17.1.1?
I N G E N I E R ~ ADEL SOFTWARE. U N ENFOQUE PRACTICO
Las pruebas son un conjunto de actividades que se pue- ta a 10s requisitos del cliente. Bohem [BOE8 11 lo defi-
den planificar por adelantado y llevar a cab0 sistemati- ne de otra forma:
camente. Por esta raz6n, se debe definir en el proceso Verificaci6n: cciEstamos construyendo el producto correc-
de la ingenieria del software unaplantilla para las prue- tamente'?~
bas del software: un conjunto de pasos en 10s que poda- Validacidn:cciEstamosconstruyendo el producto correcto?n
mos situar 10s metodos especificos de diseiio de casos
de prueba. La definici6n de V&V comprende muchas de las acti-
Se han propuesto varias estrategias de prueba del vidades a las que nos hemos referido como garantia de
software en distintos libros. Todas proporcionan a1 inge- calidad del software (sQA*).
niero del software una plantilla para la prueba y todas La verification y la validation abarcan una amplia
tienen las siguientes caracteristicas generales: lista de actividades SQA que incluye: revisiones tCc-
nicas formales, auditorias de calidad y de configura-
Las pruebas comienzan a nivel de m6dulo2 y traba-
ci6n, monitorizacion de rendimientos, simulaci6n,
jan <<haciafueran, hacia la integration de todo el sis- estudios de factibilidad, revisi6n de la documenta-
tema basado en computadora. c i h , revisi6n de la base de datos, analisis algoritmi-
Seg6n el momento, son apropiadas diferentes tecni- co, pruebas de desarrollo, pruebas de validaci6n y
cas de prueba. pruebas de instalacion [WAL89]. A pesar de que las
La prueba la lleva a cab0 el responsable del desa- actividades de prueba tienen un papel muy impor-
rrollo del software y (para grandes proyectos) un tante en V&V, muchas otras actividades son tambiCn
grupo independiente de pruebas. necesarias.
La prueba y la depuraci6n son actividades diferen-
tes, per0 la depuracion se debe incluir en cualquier
estrategia de prueba. Las octividodes SQA son estudiodos en detolle en el
Una estrategia de prueba del software debe incluir Capitulo 8.
pruebas de bajo nivel que verifiquen que todos 10s
pequeiios segmentos de c6digo fuente se han imple- Las pruebas constituyen el 6ltimo btsti6n desde el
mentado correctamente, asi como pruebas de alto nivel que se puede evaluar la calidad y, de forma mas prag-
que validen las principales funciones del sistema frente mAtica, descubrir 10s errores. Pero las pruebas no deben
a 10s requisitos del cliente. Una estrategia debe propor- ser vistas como una red de seguridad. Como se suele
cionar una guia a1 profesional y proporcionar un con- decir: <<Nose puede probar la calidad. Si no estA ahi
junto de hitos para el jefe de proyecto. Debido a que 10s antes de comenzar la prueba, no estara cuando se ter-
pasos de la estrategia de prueba se dan a la vez cuando mine.>>La calidad se incorpora en el software durante
aumenta la presi6n de 10s plazos fijados, se debe poder el proceso de ingenieria del software. La aplicacion ade-
medir el progreso y 10s problemas deben aparecer lo cuada de 10s mCtodos y de las herramientas, las revi-
antes posible. siones tCcnicas formales efectivas y una s6lida gesti6n
y medicibn, conducen a la calidad, que se confirma
durante las pruebas.
Referencia web/ '
Information Otil sobre 10s eshotegios de pruebo del software
es suminishado en el lnforme sobre lo Prueba del Software
en:www.ondaweb.com/sti/newsltr.htm
2Para 10s sistemas orientados a objetos, las pruebas empiezan a nivel ' Por lo habitual de su utilization mantenernos el terrnino ingles SQA
de clase o de objeto. Vea mas detalles en el Capitulo 23. (Sofiware Quality Assurance).
CAPfTULO 18 ESTRATEGIAS DE PRUEBA DEL SOFTWARE
18.1.2.Orgcmizaci6npara las pruebas del software hecho de permitir a1 constructor que pruebe lo que ha
En cualquier proyecto de software existe un conflict0 construido. Una prueba independiente elimina el con-
de intereses inherente que aparece cuando comienzan f l i c t ~de intereses que, de otro modo, estaria presen-
las pruebas. Se pide a la gente que ha construido el soft- te. Desputs de todo, a1 personal del equipo que forma
ware que lo pruebe. Esto parece totalmente inofensivo: el grupo independiente se le paga para que encuentre
despuCs de todo, iquiCn puede conocer mejor un pro- errores.
grama que 10s que lo han desarrollado? Desgraciada- Sin embargo, el responsable del desarrollado del soft-
mente, esos mismos programadores tienen un gran ware no entrega simplemente el programa a1 GIP y se
inter& en demostrar que el programa esti libre de erro- desentiende. El responsable del desarrollado y el GIP
res, que funciona de acuerdo con las especificaciones trabajan estrechamente a lo largo del proyecto de soft-
del cliente y que estari listo de acuerdo con 10s plazos ware para asegurar que se realizan pruebas exhaustivas.
y el presupuesto. Cada uno de estos intereses se con- Mientras se realiza la prueba, el desarrollador debe estar
vierte en inconveniente a la hora de encontrar errores a disponible para corregir 10s errores que se van descu-
lo largo del proceso de prueba. briendo.
Desde un punto de vista psicol6gic0, el anilisis y el
diseAo del software (junto con la codificaci6n) son tareas
constructivas. El ingeniero del software crea un progra-
Si no existe un GIP en tu orgonizocibn,
made computadora, su documentaci6n y sus estructuras tendrbs que osumir su punto de vista.
de datos asociadas. Al igual que cualquier constructor,el Cuondo pruebes, intenta deshozor el software.
ingeniero del software est6 orgulloso del edificio que aca-
ba de construir y se enfrenta a cualquiera que intente
sacarle defectos. El GIP es parte del equipo del proyecto de desarro-
Cuando comienza la prueba, aparece una sutil, aun- 110 de software en el sentido de que se ve implicado
que firme intenci6n de <<romper>> lo que el ingeniero del durante el proceso de especificaci6n y sigue implicado
software ha construido. Desde el punto de vista del cons- (planificaci6n y especificaci6n de 10s procedimientos
tructor, la prueba se puede considerar (psicol6gicamente) de prueba) a lo largo de un gran proyecto. Sin embar-
destructiva. Por tanto, el constructor anda con cuidado, go, en muchos casos, el GIP informa a la organizacih
diseAando y ejecutando pruebas que demuestren que el de garantia de calidad del software, consiguiendo de
programa funciona, en lugar de detectar errores. Des- este mod0 un grado de independencia que no serfa posi-
graciadamente, 10s errores seguirh estando. Y si el inge- ble si fuera una parte de la organizaci6n de desarrollo
niero del software no 10s encuentra, jel cliente si lo hari! del software.
A menudo, existen ciertos malentendidos que se pue-
den deducir equivocadamente de la anterior discusi6n: 18.1.3. Una estrategia de prueba del software
(1) el responsable del desarrollo no deberia entrar en el El proceso de ingenieria del software se puede ver como
proceso de prueba; (2) el software debe ser apuesto a una espiral, como se ilustra en la Figura 18.1. Inicial-
salvo,, de extrafios que puedan probarlo de forma des- mente, la ingenieria de sistemas define el papel del soft-
piadada; (3) 10s encargados de la prueba s610 aparecen ware y conduce a1 andisis de 10s requisitos del software,
en el proyecto cuando comienzan las etapas de prueba. donde se establece el dominio de informaci6n, la fun-
Todas estas frases son incorrectas. c i h , el comportamiento, el rendimiento, las restriccio-
El responsable del desarrollo del software siempre nes y 10s criterios de validaci6n del software. A1
es responsable de probar las unidades individuales movemos hacia el interior de la espiral, llegamos a1 dise-
(m6dulos) del programa, asegurhdose de que cada una Ao y, por 6ltim0, a la codificaci6n. Para desarrollar soft-
lleva a cab0 la funci6n para la que fue disefiada. En ware de computadora, damos vueltas en espiral a travCs
muchos casos, tambiCn se encargar6 de la prueba de de una sene de flujos o lineas que disminuyen el nivel
integraci61-1,el paso de las pruebas que lleva a la cons- de abstracci6n en cada vuelta.
trucci6n (y prueba) de la estructura total del sistema.
S610 una vez que la arquitectura del software estC com- ~ Q u ees la estrategia global
pleta entra en juego un grupo independiente de prueba. para la prueba del software?
vuelta por la espiral hacia fuera, encontramos la prue- el m6s amplio contexto de la ingenieria de sistemas de
ha de validacidrt, donde se validan 10s requisitos esta- computadora.
blecidos como parte del analisis de requisitos del El software, una vez validado, se debe combinar con
software, comparandolos con el sistema que ha sido otros elementos del sistema (por ejemplo, hardware, gen-
construido. Finalmente, llegamos a la prueha del sisre- te, bases de datos). La pnleha del sisternu verifica que
ma, en la que se prueban como un todo el software y cada elemento encaja de forma adecuada y que se alcan-
otros elementos del sistema. Para probar software de za la funcionalidad y el rendimiento del sistema total.
computadora nos movemos hacia fuera por una espiral
que, a cada vuelta, aumenta el alcance de la prueba.
Prueba del sistema
Prueba de validacio Prueba de unidad
Requisitok 'lngenieria del sisterna FIGURA 18.2. Etapas en la prueba del software.
FIGURA 18.1. Estrategia de prueba.
18.1.4. Criterios para completar la prueba
Si consideramos el proceso desde el punto de vista pro- Cada vez que se tratan las pruebas del software surge
cedimental, la prueba, en el contexto de la ingenieria del una pregunta clhsica: ~ C u a n d ohemos terminado las
software, realmente es una serie de cuatro pasos que se pruebas?, jc6m0 sabemos que hemos probado lo sufi-
llevan a cabo secuencialmente. Esos pasos se muestran ciente? Desgraciadamente. no hay una respuesta defi-
en la Figura 18.2. Inicialmente, la prueba se centra en cada nitiva a esta pregunta, pero hay algunas respuestas
m6dulo individualmente, asegurando que funcionan ade- pricticas y nuevos intentos de base empirica.
cuadamente como una unidad. De ahi el nombre de prue-
ha de f mid ad. La prueba de unidad hace un uso intensivo
de las tCcnicas de prueba de caja blanca, ejercitando cami-
nos especificos de la estructura de control del mMulo para
asegurar un alcance completo y una detecci6n maxima de Una respuesta a la pregunta anterior es: <<Laprueba
errores. Acontinuaci6n, se deben ensamblar o integrar 10s nunca termina, ya que el responsable del desarrollo del
modulos para formar el paquete de software completo. La software carga o pasa el problema a1 cliente.,, Cada vez
prueha de irttegracidn se dirige a todos 10s aspectos aso- que el cliente/usuario ejecuta un programa de compu-
ciados con el doble problema de verificacion y de cons- tadora, dicho programa se esta probando con un nuevo
trucci6n del programa. Durante la integraci611, las tknicas conjunto ,de datos. Este importante hecho subraya la
que m6s prevalecen son las de diseiio de casos de prueba importancia de otras actividades de garantia de calidad
de caja negra, aunque se pueden llevar a cabo algunas del software. Otra respuesta (algo cinica, pero sin embar-
pruebas de caja blanca con el fin de asegurar que se cubren go cierta) es: xSe termina la prueba cuando se agota el
10s principales caminos de control. DespuCs de que el soft- tiempo o el dinero disponible para tal efect0.n
ware se ha integrado (construido), se dirigen un conjun- Aunque algunos profesionales se sirvan de estas res-
to de pruebas de alto nivel. Se deben comprobar 10s puestas como argumento, un ingeniero del software
criterios de validaci6n (establecidos durante el an6lisis de necesita un criterio mis riguroso para determinar cuan-
requisitos). La prueha de validacidn proporciona una segu- do se ha realizado la prueba suficiente. Musa y Acker-
ridad final de que el software satisface todos 10s requisi- man [MUS89] sugieren una respuesta basada en un
tos funcionales, de comportamiento y de rendimiento. criterio estadistico: <<No,no podemos tener la absoluta
Durante la validacih se usan exclusivamente tkcnicas de certeza de que el software nunca fallara, pero en base a
prueba de caja negra. un modelo estadistico de corte te6rico y validado expe-
rimentalmente, hemos realizado las pruebas suficientes
para decir, con un 95 por 100 de certeza, que la proba-
Las tknicas de pruebo de caia blanco y coio negm bilidad de funcionamiento libre de fallo de 1.000 horas
se estudion en el Copihrla 17. de CPU, en un entorno definido de forma probabilisti-
ca, es a1 menos 0 , 9 9 5 ,
El liltimo paso de prueba de alto nivel queda fuera Mediante el modelado estadistico y la teoria de fiabi-
de 10s limites de la ingenieria del software, entrando en lidad del software, se pueden desmollar modelos de fallos
CAPfTULO 18 ESTRATEGIAS DE PRUEBA DEL SOFTWARE
del software (descubiertos durante las pruebas) como una ro de puntos de datos, el modelo se puede usar para pre-
funcion del tiempo de ejecucion. Una version del mode- decir el tiempo de prueba total requerido para alcanzar
lo de fallos, denominado modelo logaritmico de Poisson una intensidad de fallos aceptablemente baja.
de tiempo de ejecucidn, toma la siguiente forma:
(18.1) H Datos recogidos durante la prueba
f(t) = ( 1 1 ~In) K l o P + 111
donde
h lntensidad de fallos prevista, I( t )
f(t) ntimero acumulado de fallos que se espera que 01
u
se produzcan una vez que se ha probado el soft- e
ware durante una cierta cantidad de tiempo de 2 10
ejecucion t, bP
lo la intensidad de fallos inicial del software (fallos -k
por unidad de tiempo) a1 principio de la prueba m
LL
Mhs adelante, en este capitulo, exploramos una estrate- o frecuencia de ocurrencia, y horas de trabajo por
gia sistemhtica para la prueba del software. Pero inclu- prueba de regresion deberian establecerse dentro de
so la mejor estrategia fracasarh si no se tratan una serie la planificacion de la prueba [GIL95].
de aspectos invalidantes. Tom Gilb [GIL95] plantea que Comprender que' usuarios van a manejar el soft-
se deben abordar 10s siguientes puntos si se desea imple- ware y desarrollar un perjil para cada categoria de
mentar con Cxito una estrategia de prueba del software: usuario. Usar casos que describan el escenario de
iQue debemos hacer para
interaction para cada clase de usuario pudiendo redu-
definir una estrategia de cir el esfuerzo general de prueba concentrando la
prueba corrects? prueba en el empleo real del producto.
Las pruebas que se dan como parte de la prueba de uni- Condiciones lirnite
dad estAn esquematicarnente ilustradas en la Figura 18.4. Carninos independientes
Se prueba la interfaz del m6dulo para asegurar que la Carninos de rnanejo de errores
information fluye de forma adecuada hacia y desde la
unidad de programa que estd siendo probada. Se exa-
minan las estructuras de datos locales para asegurar que
10s datos que se mantienen temporalmente conservan
su integridad durante todos 10s pasos de ejecucion del
algoritmo. Se prueban las condiciones limite para ase-
gurar que el modulo funciona correctarnente en 10s limi-
tes establecidos como restricciones de procesamiento.
Se ejercitan todos 10s caminos independientes (cami-
nos bAsicos) de la estructura de control con el fin de ase-
gurar que todas las sentencias del m6dulo se ejecutan
por lo menos una vez. Y, finalmente, se prueban todos
FIGURA 18.4. Prueba de unidad.
10s caminos de manejo de errores.
Durante la prueba de unidad, la comprobaci6n selec-
tiva de 10s caminos de ejecucion es una tarea esencial.
Se deben diseiiar casos de prueba para detectar errores
debidos a cdculos incorrectos, comparaciones incorrectas
o flujos de control inapropiados. Las pruebas del cami-
Prueba de Unidad. no bAsico y de bucles son tCcnicas muy efectivas para
Antes de iniciar cualquier otra prueba es preciso pro- descubrir una gran cantidad de errores en 10s caminos.
bar el flujo de datos de la interfaz del modulo. Si 10s
datos no entran correctamente, todas las demhs pruebas ~ Q u eerrores son 10s mas comunes
no tienen sentido. AdemAs de las estructuras de datos durante la prueba de unidad?
locales, durante la prueba de unidad se debe comprobar
(en la medida de lo posible) el impact0 de 10s datos glo- Entre 10s errores m6s comunes en 10s cAlculos estih:
bales sobre el modulo. (1) precedencia aritmCtica incorrecta o ma1 interpretada;
(2) operaciones de mod0 mezcladas; (3) inicializaciones miximo o minimo permitidos. Los casos de prueba que
incorrectas; (4) falta de precisi6n; (5) incorrecta repre- ejerciten las estructuras de datos, el flujo de control y
sentaci6n simb6lica de una expresi6n. Las comparacio- 10s valores de 10s datos por debajo y por encima de 10s
nes y el flujo de control estin fuertemente emparejadas miximos y 10s minimos son muy apropiados para des-
(por ejemplo, el flujo de control cambia frecuentemente cubrir estos errores.
tras una comparaci6n). Los casos de prueba deben des-
cubrir errores como: (1) comparaciones ente tipos de
datos distintos; (2) operadores ldgicos o de precedencia lnterfaz
incorrectos; (3) igualdad esperada cuando 10s errores de Controlador
Estructuras de datos locales
precisi6n la hacen poco probable; (4) variables o com-
paraciones incorrectas; (5) terminaci6n de bucles ina- Condiciones limite
propiada o inexistente; (6) fa110 de salida cuando se Caminos independientes
encuentra una iteraci6n divergente, y (7) variables de
bucles modificadas de forma inapropiada. Caminos de maneio de errores
Un buen diseiio exige que las condiciones de error
sean previstas de antemano y que se dispongan unos
caminos de manejo de errores que redirijan o termi-
nen de una forma limpia el proceso cuando se dC un
error. Yourdon [YOU751 llama a este enfoque anti-
1
purgado. Desgraciadamente, existe una tendencia a
incorporar la manipulaci6n de errores en el software
y asi no probarlo nunca. Como ejemplo, sirve una his-
toria real: RESULl
Mediante un contrato se desarrollo un importante sistema
de diseiio interactivo. En un m d u l o de proceso de transaccie FlGURA 18.5. Entorno para la prueba de unidad.
nes, un bromista puso el siguiente mensaje de manipulaci6n de
error que aparecia tras una serie de pruebas condicionales que
invocaban varias rarnificaciones del flujo de control: iERROR! 18.3.2. Procedimientos de Prueba de Unidad
NO HAY FORMA DE QUE VD. LLEGUE HASTA AQUI. Debido a que un componente no es un programa inde-
iEste ccmensaje de error* fue descubierto por un cliente duran- pendiente, se debe desarrollar para cada prueba de uni-
te la fase de puesta a punto!
dad un software que controle y/o resguarde. En la Figura
18.5 se ilustra el entorno para la prueba de unidad. En
la mayoria de las aplicaciones, un controlador no es mis
Aseguro que tu diserio de pruebos ejecuto todos 10s cuminos que un ccprograma principal>>que acepta 10s datos del
puru encontror errores. Si no lo hoces, el cumino puede fullor caso de prueba, pasa estos datos a1 m6dulo (a ser pro-
olser invocodo, provucundu uno situocih incierto. bado) e imprime 10s resultados importantes. Los res-
guardos sirven para reemplazar mddulos que estin
subordinados (llamados por) el componente que hay
Entre 10s errores potenciales que se deben compro- que probar. Un resguardo o un ccsubprograma simula-
bar cuando se evalda la manipulaci6n de errores estin: do>>usa la interfaz del m6dulo subordinado, lleva a cab0
Descripcidn ininteligible del error. una minima manipulaci6n de datos, imprime una veri-
El error seiialado no se corresponde con el error ficaci6n de entrada y devuelve control a1 mddulo de
encontrado. prueba que lo invoc6.
La condici6n de error hace que intervenga el sistema
antes que el mecanismo de manejo de errores.
El procesamiento de la condicidn excepcional es Huy ocosiones en que no dispones de 10s recursos poro h e r
incorrecto. uno pruebo unitorio complete. En esto situocibn, selecciono
La descripci6n del error no proporciona suficiente 10s mddulos criticos y oquellos con ulto complejidod
informaci6n para ayudar en la localizaci6n de la ciclombticu y reolizu sobre ellos lo pruebo unitorio.
causa del error.
La prueba de limites es la dltima (y probablemente, Los controladores y 10s resguardos son una sobre-
la mas importante) tarea del paso de la prueba de uni- carga de trabajo. Es decir, ambos son software que debe
dad. El software falla frecuentemente en sus condicio- desarrollarse (normalmente no se aplica un disefio for-
nes limite. Es decir, con frecuencia aparece un error mal) pero que no se entrega con el product0 de soft-
cuando se procesa el elemento n-Csimo de un array n- ware final. Si 10s controladores y resguardos son
dimensional, cuando se hace la i-Csima repetici6n de un sencillos, el trabajo adicional es relativamente peque-
bucle de i pasos o cuando se encuentran 10s valores fio. Desgraciadamente, muchos componentes no pue-
INGENIERfA DEL SOFTWARE. UN ENFOQUE PRACTICO
den tener una adecuada prueba unitaria con un ccsenci- La prueba de unidad se simplifica cuando se disefia
l l o software
~ adicional. En tales casos, la prueba com- un m6dulo con un alto grado de cohesion. Cuando un
pleta se pospone hasta que se llegue a1 paso de prueba m6dulo s610 realiza una funcibn, se reduce el nlimero
de integracicin (donde tambikn se usan controladores o de casos de prueba y 10s errores se pueden predecir y
resguardos). descubrir mas fhcilmente.
Un nedfito del mundo del software podria, una vez que se puedan probar completamente las interfaces y se pue-
se les ha hecho la prueba de unidad a todos 10s m6du- de aplicar un enfoque de prueba sistematica. En las
los, cuestionar de forma aparentemente legitima lo siguientes secciones se tratan varias estrategias de inte-
siguiente: ccSi todos funcionan bien por separado, ipor graci6n incremental diferentes.
quC dudar de que funcionen todos juntos?,, Por supues-
to, el problema es ccponerlos juntos>>(interacci6n). Los 18.4.1. Integracion descendente
datos se pueden perder en una interfaz; un m6dulo pue-
de tener un efecto adverso e inadvertido sobre otro; las La prueba de integracidn descendente es un plantea-
subfunciones, cuando se combinan, pueden no produ- miento incremental a la construcci6n de la estructura de
cir la funcidn principal deseada; la imprecisi6n acep- programas. Se integran 10s m6dulos movikndose hacia
tada individualmente puede crecer hasta niveles abajo por la jerarquia de control, comenzando por el
inaceptables; y las estructuras de datos globales pue- mddulo de control principal (programa principal). Los
den presentar problemas. Desgraciadamente, la lista m6dulos subordinados (subordinados de cualquier
sigue y sigue. modo) a1 m6dulo de control principal se van incorpo-
La prueba de integracion es una tkcnica sistematica rando en la estructura, bien de forma primero-en-pro-
para construir la estructura del programa mientras que, fundidad, o bien de forma primero-en-anchura.
a1 mismo tiempo, se llevan a cab0 pruebas para detec-
tar errores asociados con la interacci6n. El objetivo es
coger 10s modulos probados mediante la prueba de uni- Cuondo desorrollos uno plonificocibn detollodo del
dad y construir una estructura de programa que estC de proyecto debes consideror lo monero en que la
acuerdo con lo que dicta el disefio. integrocibn se vo o reolizor, de forma que 10s
componentes esth disponibles cuondo se necesiten
Efectuor uno inteyrocibn big bog es uno estroteyio vogo Como se muestra en la Figura 18.6, la integracion pri-
que estb condenodo ol fracoso. l o pruebo de inteyrocion mero-en-profundidad integra todos 10s modulos de un
deberi ser conducido incrementolmente. camino de control principal de la estructura. La selecci6n
del camino principal es, de alguna manera, arbitraria y
A menudo hay una tendencia a intentar una integra- dependera de las caractensticas especificas de la aplica-
ci6n no incremental; es decir, a construir el programa cibn. Por ejemplo, si se elige el camino de la izquierda,
mediante un enfoque de <<big bangw. Se combinan todos se integrarhn primer0 10s m6dulos M 1, M2 y M5. A con-
10s m6dulos por anticipado. Se prueba todo el progra- tinuacibn, se integrara M8 o M6 (si es necesario para un
ma en conjunto. iNormalmente se llega a1 caos! Se funcionamiento adecuado de M2). Acto seguido se cons-
encuentran un gran conjunto de errores. La correcci6n truyen 10s caminos de control central y derecho. La inte-
se hace dificil, puesto que es complicado aislar las cau- graci6n primero-en-anchura incorpora todos 10s modulos
sas a1 tener delante el programa entero en toda su exten- directamente subordinados a cada nivel, movikndose por
si6n. Una vez que se comgen esos errores aparecen otros la estructura de forma horizontal. Seglin la figura, 10s pri-
nuevos y el proceso continlia en lo que parece ser un meros m6dulos que se integran son M2, M3 y M4. A con-
ciclo sin fin. tinuaci6n, sigue el siguiente nivel de control, M5, M6, etc.
La integraci6n incremental es la antitesis del enfo- t Cuales son 10s pasos para una
que del ccbig bang>>.El programa se construye y se prue- integration top-down?
ba en pequefios segmentos en 10s que 10s errores son
mas faciles de aislar y de corregir, es mas probable que El proceso de integracidn se realiza en una serie de
cinco pasos:
Se usa el m6dulo de control principal como contro- logisticos. El mis comun de estos problemas se da cuan-
lador de la prueba, disponiendo de resguardos para do se requiere un proceso de 10s niveles m8s bajos de
todos 10s m6dulos directamente subordinados a1 la jerarquia para poder probar adecuadamente 10s nive-
m6dulo de control principal. les superiores. A1 principio de la prueba descendente,
Dependiendo del enfoque de integraci6n elegido (es 10s m6dulos de bajo nivel se reemplazan por resguar-
decir, primero-en-profundidad o primero-en-anchura) dos; por tanto, no pueden fluir datos significativos hacia
se van sustiiuyendo uno a uno 10s resguardos subor- arriba por la estructura del prograrna. El responsable de
dinados por 10s m6dulos reales. la prueba tiene tres opciones: (1) retrasar muchas de las
Se llevan a cab0 pruebas cada vez que se integra un pruebas hasta que 10s resguardos Sean reemplazados por
nuevo m6dulo. 10s mbdulos reales; (2) desarrollar resguardos que rea-
licen funciones limitadas que simulen 10s m6dulos rea-
Tras terminar cada conjunto de pruebas, se reem- les; o (3) integrar el software desde el fondo de la
plaza otro resguardo con el m6dulo real. jerarquia hacia arriba.
Se hace la prueba de regresi6n (Secci6n 18.4.3)
para asegurarse de que no se han introducido erro- LQue problemas puedes encontrar
res nuevos. cuando ellas una estrategia
El proceso continua desde el paso 2 hasta que se haya de integration descendente?
construido la estructura del programa entero.
El primer enfoque (retrasar pruebas hasta reempla-
zar 10s resguardos por 10s m6dulos reales) hace que per-
damos cierto control sobre la correspondencia de ciertas
pruebas especificas con la incorporaci6n de determina-
dos m6dulos. Esto puede dificultar la determinaci6n de
las causas del error y tiende a violar la naturaleza alta-
mente restrictiva del enfoque descendente. El segundo
enfoque es factible per0 puede llevar a un significativo
increment0 del esfuerzo a medida que 10s resguardos se
hagan mis complejos. El tercer enfoque, denominado
n
FIGURA 18.6. Integracion descendente,
prueba ascendente, se estudia en la siguiente secci6n.
dl 1'Grupo I
cidn adecuadamente. El objetivo seri descubrir erro- integracidn, es probable que 10s errores sin descu-
res <<bloqueantes>>
que tengan la mayor probabili- brir durante la prueba de hum0 se asocien a <<nuevos
dad de impedir a1 proyecto de software el incrementos de softwarel, - e s t o es, el software que
cumplimiento de su planificacidn. se acaba de aiiadir a la construccidn es una posible
Es habitual en la prueba de hum0 que la construccidn causa de un error que se acaba de descubrir-.
se integre con otras construcciones y que se aplica una El progreso es fcicil de observar. Cada dia que pasa,
prueba de hum0 a1 producto completo (en su forma se integra m i s software y se demuestra que fun-
actual). La integracidn puede hacerse bien de forma ciona. Esto mejora la moral del equipo y da una
descendente (top-down)o ascendente (bottom-up). indicacidn a 10s gestores del progreso que se esti
realizando.
La prueba del software es un proceso que puede plani- ware. Es decir, la manifestaci6n extema de un error, y
ficarse y especificarse sistemiticamente. Se puede Ile- la causa interna del error pueden no estar relacionados
var a cab0 el diseiio de casos de prueba, se puede definir de una forma obvia. El proceso mental, apenas com-
una estrategia y se pueden evaluar 10s resultados en com- prendido, que conecta un sintoma con una causa es la
paraci6n con las expectativas prescritas. depuraci6n.
La depuracibn ocurre como consecuencia de una
prueba efectiva. Es decir, cuando un caso de prueba des-
cubre un error, la depuraci6n es el proceso que provo-
ca la eliminaci6n del error. Aunque la depuraci6n puede Referencia web/ '
y debe ser un proceso ordenado, sigue teniendo mucho BugNet focilito informocibnsobre problemos de seguridad
de arte. Un ingeniero del software, a1 evaluar 10s resul- y follos en software bosodo en PC y proporciono una
tados de una prueba, se encuentra frecuentemente con informocibn ulil sobre temos de depurocih:
una indicaci6n c<sintomitica>> de un problema en el soft- www.bugnet.com
C A P ~ T U L O18 ESTRATEGIAS DE PRUEBA DEL S O F T W A R E
18.7.3. Enfoques de la depuraci6n datos relacionados con la ocurrencia del error se orga-
'Independientemente del enfoque que se utilice, la depu- nizan para aislar las posibles causas. Se llega a una
racion tiene un objetivo primordial: encontrar y corre- cchip6tesis de causau y se usan 10s datos antenores para
gir la causa de un error en el software. El objetivo se probar o revocar la hipotesis. Altemativamente, se desa-
consigue mediante una combinaci6n de una evaluaci6n rrolla una lista de todas las posibles causas y se llevan
sistemhtica, de intuici6n y de suerte. Bradley [BRA851 a cab0 pruebas para eliminar cada una. Si alguna prue-
describe el enfoque de la depuraci6n de la siguiente ba inicial indica que determinada hip6tesis de causa en
forma: particular parece prometedora, se refinan 10s datos con
el fin de intentar aislar el error.
La depuracion es una aplicacion directa del mCtodo cienti-
tico desarrollado hace 2.500 aiios. La base de la depuraci6n es Cada uno de 10s enfoques anteriores puede comple-
la localization de la fuente del problema [la causa] mediante mentarse con herramientas de depuracih. Podemos usar
particion binaria, manejando hip6tesis que predigan nuevos una gran cantidad de compiladores de depuracion, ayu-
valores a examinar. das dinimicas para la depuraci6n (cctrazadoress), gene-
Tomemos un sencillo ejemplo que no tiene que ver con el radores autom5ticos de casos de prueba, volcados de
software: en mi casa no funciona una Iampara. Si no funciona memoria y mapas de referencias cruzadas. Sin embar-
nada en la casa, la causa debe estar en el circuito principal de go, las herramientas no son un sustituto de la evalua-
fusibles o fuera de la casa; miro fuera para ver si hay un apa- ci6n cuidadosa basada en un completo documento del
g6n en todo el vecindario. Conecto la sospechosa lampara a un
enchufe que funcione y un aparato que funcione en el circuito
diseiio del software y un c6digo fuente claro.
sospechoso.Asi se sigue la secuencia de hipotesis y de pruebas.
En general, existen tres enfoques que se pueden pro-
poner para la depuracion [MYE79]:
I. Fuerza bruta
2. Vuelta atras Herromientos CASE
3. Eliminacion de causas Prueba y Depurocibn.
La categoria de depuracion por lafiterza bruta es
probablemente la mis comun y menos eficiente a la hora Cualquier discusion sobre 10s enfoques para la depu-
de aislar la causa del error en el software. Aplicamos raci6n y sus herramientas no estaria completa sin men-
10s mCtodos de depuracion por fuerza bruta cuando todo cionar un poderoso aliado: jotras personas! Cualquiera
lo demas falla. Mediante una filosofia de ccdejar que la de nosotros podri recordar haber estado dando vueltas
computadora encuentre el error>>,se hacen volcados de en la cabeza durante horas o dias a un error persisten-
memoria, trazas de ejecuci6n y se cargan multitud de te. Desesperados, le explicamos el problema a un cole-
sentencias Mostrar en el programa. Esperamos que en ga con el que damos por casualidad y le mostramos el
algun lugar de la gran cantidad de informacion genera- listado. Instanthneamente (parece), se descubre la cau-
da encontremos alguna pista que nos lleve a la causa de sa del error. Nuestro colega se aleja sonriendo ladina-
un error. Aunque la gran cantidad de informaci6n pro- mente. Un punto de vista fresco, no embotado por horas
ducida nos puede llevar finalmente a1 Cxito, lo m& fre- de frustracion, puede hacer maravillas. Una maxima
cuente es que se desperdicie tiempo y esfuerzo. iPrimer0 final para la depuraci6n puede ser: cciCuando todo lo
se debe usar la inteligencia! demits falle, pide ayuda! u
Una vez que se ha encontrado un error, hay que corre-
girlo. Pero como ya hemos podido observar, la correc-
F@te un tiempo limitado, por ejemplo dos ham, cion de un error puede introducir otros errores y hacer
en relacion o lo contidod de tiempo que tu inviertes m8s ma1 que bien.
porn depuror un problemo de tu incumbencio.
Despub qu& jpide oyudo! Cuando torrijo un error,
iqu6 tuestiones deb0
La vuelta atrcis es un enfoque miis normal para la preguntarme a mi mismo?
depuraci611, que se puede usar con Cxito para pequeiios
programas. Partiendo del lugar donde se descubre el sin- Van Vleck [VAN891 sugiere tres preguntas sencillas
toma, se recorre hacia atris (manualmente) el c6digo que deben'a preguntarse todo ingeniero del software antes
fuente hasta que se llega a la posici6n de error. Des- de hacer la cccorreccion~>que elimine la causa del error:
graciadamente, a medida que aumenta el numero de iSe repite la causa del error en otra parte del pro-
lineas del c6dig0, el numero de posibles caminos de g r a m ~ ?En muchas situaciones, el defect0 de un pro-
vuelta se hace dificilmente manejable. grama esta producido por un patron de logica erroneo
El tercer enfoque para la depuraci6n -eliminacidn que se puede repetir en cualquier lugar. La conside-
de causas- se manifiesta mediante induceion o deduc- raci6n explicita del patron logico puede terminar en
ci6n e introduce el concept0 de partici6n binaria. Los el descubrimiento de otros errores.
CAPfTULO 18 ESTRATEGIAS DE PRUEBA DEL SOFTWARE
i C u d es el aiguiente error))que se podra presentar a 3. iQu.6 podriamos haber hecho para prevenir este
raiz de la correccibn que hoy voy a realizar? Antes de error la primera vez? Esta pregunta es el primer paso
hacer la correcci6n, se debe evaluar el c6digo fuente (o para establecer un mCtodo estadistico de garantia de
mejor, el dserio) para determinar el emparejamientode calidad del software (Capitulo 8). Si corregimos tanto
la 16gica y las estructuras de datos. Si la correcci6n se el proceso como el producto, se eliminarh el error
realiza en una seccidn del programa altamente acoplada, del programa actual y se puede eliminar de todos 10s
se debe tener cuidado a1 realizar cualquier cambio. futuros programas.
La pmeba del software contabiliza el mayor porcenta- A diferencia de la prueba (una actividad sistemhtica
je del esfuerzo tCcnico del proceso de desarrollo de soft- y planificada), la depuraci6n se puede considerar un arte.
ware. Todavia estamos comenzando a comprender las A partir de una indicacidn sintomhtica de un problema,
sutilezas de la planificacidn sistemhtica de la pmeba, de la actividad de la depuracion debe rastrear la causa del
su ejecucion y de su control. error. De entre 10s recursos disponibles durante la depu-
El objetivo de la prueba de software es descubrir racidn, el mhs valioso puede ser el apoyo de otros inge-
errores. Para conseguir este objetivo, se planifica y se nieros de software.
ejecutan una serie de pasos; pmebas de unidad, de inte- El requisito de que el software sea cada vez de mayor
gracidn, de validacion y del sistema. Las pmebas de uni- calidad exige un planteamiento mhs sistemhtico de la
dad y de integraci6n se centran en la verificacidn prueba. Citando a Dunn y Ullman [DUN82]:
funcional de cada m6dulo y en la incorporaci6n de 10s
m6dulos en una estructura de programa. La pmeba de Lo que se requiere es una estrategia global, que se extienda
por el espacio eshatkgico de la prueba, tan deliberadaen su meto-
validaci6n demuestra el seguimiento de 10s requisitos dologia como lo fue el desarrollo sistematico en el que se basa-
del software y la prueba del sistema valida el software ron el milisis, el diseiio y la codificacibn.
una vez que se ha incorporado en un sistema superior.
Cada paso de pmeba se lleva a cab0 mediante una En este capitulo hemos examinado el espacio estra-
serie de tCcnicas sistemhticas de prueba que ayudan en tCgico de la pmeba, considermdo 10s pasos que tienen
el diseiio de casos de prueba. Con cada paso de prueba la mayor probabilidad de conseguir el fin ~ l t i m ode la
se amplia el nivel de abstracci6n con el que se consi- pmeba: encontrar y subsanar 10s defectos de una mane-
dera el software. ra ordenada y efectiva.
[BE1841 Beizer, B., Software System Testing and Quality Assu- [MILL771 Miller, E., <<ThePhilosophy of Testing*, Program
rance, Van Nostrand Reinhold, 1984. Testing Techniques, IEEE Computer Society Press, 1977,
pp. 1-3.
[BOE81] Boehm, B., Software Engineering Economics, Pren-
tice-Hall, 1981, p. 37. [MUS89] Musa, J. D., y Ackerman, A. F., <<QuantifyingSoft-
ware Validation: When to Stop Testing?,>,IEEE Softwa-
[BRA851 Bradley, J.H., <<Thescience and Art of Debugging,,, re, Mayo 1989, pp. 19-27.
Computerworld, 19 de Agosto de 1985, pp. 35-38.
[MYE79] Myers, G., The Art of Sofht'are Tests, Wiley, 1979.
[CHE90] Cheung, W. H., J. P. Black y E. Manning, <<AFra- [SH083] Shooman, M. L., Software Engineering, Mcgraw-
mework for Distributed Debugging,,, IEEE S o f i a r e , Ene- Hill, 1983.
ro 1990, pp. 106-115.
[SHN80] Shneiderman, B., Sofn~arePsychology, Winthrop
[DUN821 Durn, R., y R. Ullman, Quality Assurance for Com- Publishers, 1980, p. 28.
puter Sofhvare, McGraw-Hill, 1982, p. 158.
[VAN891 Van Bleck, T., <<ThreeQuestions About Each Bug
[GIL95] Gilb, T., <<WhatWe Fail To Do In Our Current Tes- You find)),ACM Sofn~areEngineering Notes, vol. 14, n."
ting Culture,,, Testing Techniques Newsletter, (edici6n en- 5, Julio 1989, pp. 62-63.
linea, [email protected]), Software Research, Inc, San [WAL89] Wallance, D. R., y R. U. Fuji, <<SoftwareVerifica-
Francisco, Enero 1995. IEEE Software, Mayo
tion and Validation: An Overview>>,
1989, pp. 10-17.
[MC096] McConnell, S., <<BestPractices: Daily Build and
Smoke Test>>,IEEE Software, vol. 13, n.", Julio 1996, [YOU751Yourdon, E., Techniques of Program Structure and
pp. 143-144. Design, Prentice-Hall, 1975.
I N G E N I E R ~ ADEL SOFTWARE. UN ENFOQUE PRACTICO
18.1. Con sus propias palabras, describa las diferencias entre tifique el orden de integracion. Suponga que todos 10s modu-
verificacidn y validacion. ~Utilizanlas dos 10s mCtodos de 10s han sido probados en unidad y estan disponibles.[Nota:
disefio de casos de prueba y las estrategias de prueba? puede ser necesario comenzar trabajando un poco con el dise-
18.2. Haga una lista de algunos problemas que puedan estar fio inicialmente.]
asociados con la creaci6n de un grupo independiente de prue- 18.7. iC6m0 puede afectar la planificaci6n del proyecto a la
ba. ~ E s t a nformados por las mismas personas el GIP y el gru- prueba de integracion?
po SQA? 18.8. ~ E posible
s o incluso deseable la prueba de unidad en
18.3. ~ E siempre
s posible desarrollar una estrategia de prue- cualquier circunstancia? Ponga ejemplos que justifiquen su
ba de software que use la secuencia de pasos de prueba des- respuesta.
crita en la Seccion 18.1.3? ~ Q u Cposibles complicaciones 18.9. LQuiCn debe llevar a cab0 la prueba de validacion 1-
pueden surgir para sistemas empotrados? desarrolladordel software o el usuari-? Justifique su respuesta.
18.4. Si solo pudiera seleccionar tres metodos de disefio de 18.10. Desarrolle una estrategia de prueba completa para el
casos de prueba para aplicarlos durante la prueba de unidad, sistema HogarSeguro descrito anteriormente en este libro.
p B l e s serian y por quC? DocumCntela en una Especificacibn de Prueha.
18.5. PorquC es dificil de realizar la prueba unitaria a un mMu- 18.11. Como proyecto de clase, desarrolle una guia de depu-
lo con alto nivel de integracion. racion para su instalacion. La guia debe proporcionar conse-
18.6. Desarrolle una estrategia de prueba de integracion para jos orientados a1 lenguaje y a1 sistema que se hayan aprendido
cualquiera de 10s sistemas implementados en 10s problemas con las malas experiencias. Comience con un esbozo de 10s
16.4 a 16.11. Defina las fases de prueba, indique el orden de temas que se tengan que revisar por la clase y su profesor.
integracion, especifique el software de prueba adicional y jus- Publique la guia para otras personas de su entomo.
Libros orientados a las estrategias de prueba del software son al. (Testing Computer Software, 2.%d., Van Nostrand Rein-
10s de Black (Managing the Testing Process, Microsoft Press, hold, 1993) define 10s pasos para una estrategia efectiva, pro-
1999), Dustin, Rashka and Paul (Test Process Improvement: porciona un conjunto de tCcnicas y directrices y sugiere
Step-By-Step Guide to Structured Testing, Addison-Wesley, procedimientos para controlar y hacer un seguimiento a 10s
1999), Peny (Surviving the Top Ten Challenges of Software procesos de prueba. Hutcheson (Software Testing Methods
Testing: A People-Oriented Approach, Dorset House, 1997), and Metrics, McGraw-Hill, 1996) presenta unos mCtodos y
and Kit and Finzi (Software Testing in the Real World:Impro- estrategias de prueba per0 tambiCn proporciona un estudio
ving the Process, Addison-Wesley, 1995). detallado de corn0 se puede usar la medicion para conseguir
Kaner, Nguyen y Falk (Testing Computer Softwa-re, Wiley, una prueba efectiva.
1999), Hutcheson (Software Testing Methods and Metrics:
Un libro de Dunn (SoftwareDefect Removal, McGraw-Hill,
The Most Important Tests, McGraw Hill, 1997), Marick (The
1984) contiene unas directrices para la depuracion. Beizer
Craft of Software Testing: Subsystem Testing Including Ohject-
Based and Object-Oriented Testing, Prentice Hall, 1995), Jor- [BE1841 presenta una interesante cctaxonomia de erroress que
gensen (Software Testing: A Crafts-man 's Approach, CRC puede conducir a unos mCtodos efectivos para la planificacion
Press, 1995) presentan estudios sobre 10s mCtodos y estrate- de pruebas. McComell (Code Complete,Microsoft Press, 1993)
gias de prueba. presenta unos pragmaticos consejos sobre las pruebas de uni-
Ademas, antiguos libros de Evans (Productive Software dad y de integracion asi como sobre la depuracion.
Test Management, Wiley-Interscience, 1984), Hetzel (The Una amplia variedad de fuentes de informacion sobre prue-
Complete Guide to Software Testing, QED Information Scien- bas del software y elementos relacionados estan disponibles
ces, 1984), Beizer [BEI84], Ould y Unwin (Testing in Soft- en Internet. Una lista actualizada de paginas web sobre con-
ware Development, Cambridge University Press, 1986),Marks ceptos de prueba, mCtodos y estrategias pueden encontrarse
(Testing Very Big Systems, McGraw-Hill, 1992), y Kaner et en http://www.pressman5.com.
M~TRDCAS T~CNNCAS
DEL SOFTWARE
Palabras clave
fadores
de b calidad . . . . . 324
mbtricas a nivd
de componente .....333
u N elemento clave de cualquier proceso de ingenieria es la medicicin. Ernpleamos medi-
das para entender mejor 10s atributos de 10s modelos que crearnos. Pero, fundamental-
mente, empleamos las medidas para valorar la calidad de 10s productos de ingenieria o
de 10s sistemas que construimos.
A diferencia de otras disciplinas, la ingenieria del software no estri basada en leyes cuanti-
mCtrlcas tativas bdsicas de la Fisica. Las medidas absolutas, tales como el voltaje, la rnasa, la veloci-
de la mqvitectwa ...332 dad o la temperatura no son comunes en el mundo del software. En su lugar, intentamos obtener
mbt<~ls un conjunto de medidas indirectas que dan lugar a metricas que proporcionan una indicacicin
de la especificatihn. .33 1 de la calidad de algun tip0 de representacicin del software. Como las medidas y metricas del
mbtricas software no son absolutas, estdn abiertas a debate. Fenton [FEN9 11 trata este aspecto cuando
de 10s otributos.. ...328 dice:
mbtticas La medicidn es el proceso por el que se asignan nlimeros o simbolos a 10s atributos de las entidades en
del analisis.. .......328 el mundo real, de tal manera que las definan de acuerdo con unas reglas claramente definidas .... En las cien-
mbtricas del c6digo cias fisicas, medicina y, mis recientemente, en las ciencias sociales, somas ahora capaces de medir atribu-
fuente.. ...........336 tos que previamente penslibamos que no eran medibles... Por supuesto, tales mediciones no estiin tan refinadas
como las de las ciencias fisicas .... pero existen [y se toman importantes decisiones basadas en ellas]. Sen-
mitricos d d diseiio.. 332 timos que la obligation de intentar ccmedir lo no mediblw para mejorar nuestra comprensi6n de entidades
mCtricos del particulares es tan poderosa en la ingenieria del software como en cualquier disciplina.
mantenimimto .... .338
Pero algunos miembros de la cornunidad de software continfian argumentando que el software
dtricos
para pruebas.. .... .337
no es rnedible o que se deberian posponer 10s intentos de medicih hasta que comprendarnos mejor
el software y 10s atributos que habria que emplear para describirlo. Esto es un error.
vrincivios
iQu6 es? Por su naturaleza, la ingenie- necesita criterios objetivos para guiarse datos histbrims. M resultado del an&li-
ria e s una disciplina cuantitativa. LOS en el diseiio de d a t a , de la arquitectu- sis e s interpretado p a profundizar en
ingenieros usan numeros para ayu- ra, d e las interfaces y de l a mmponen- la calidad del software. y el resultado de
darse en eI diseao y c6lculo del pro- tea El verifidor necesita una referencia la interpretaci6n orienta las modifica-
ducto a construir. Hasta hace poco cucmtitcrtivaque leayude en la seleccitm ciones a originarse en 10s resultados
tiempo, los ingenieros del software dis- d e 10s casos de pmeba y d e sus objeti- obtenidos en el ancilisis, diseiio, d f i -
ponian d e pocas referencias cuantita- vrw. Las metricas tknicas facilitan una caci6n y p ~ e b a .
tivas e n s u trabajo -per0 esto estd base p a que el andisis, diseiio, codi- (Cucil es el product0 obtenido? Las
cambiand-. Las metricas tecnicas ficacidn y pmeba puedan ser conduci- metricas deI software s e r b calculadas
ayudan a 10s ingenieros del software das m&sobjetivamentey valoradas m&s sobre datos agregados del andlisis, de
a profundizar en el disefio y construc- cuanlitativamente. 10smodelos de diseiio, del c6digo fuen-
ci6n de 10sproductos que desarrollan. ~CUQH son 10s paws? La primera etu- te y d e 10s casos d e p ~ e b a .
dQui6nlo hace? Los ingenieros del soft- pa en el proceso de medida consiste en ~Cdmopucdo estar seguro de qne
ware usan las metricas tecnicas para extraer las medidas y m6tricas del soh- lo he hecho correctamente? Hay
ayudarse e n el desarrollo de software ware que son apropiadas para la repre- que establecer 10s objetivos y medidas
d e mayor calidad. sentacibn del software que estd siendo antes d e comenzar la acumulacion d e
@or q d es tnpoltante?Siempre h&rd considerado. A continuaci6n. s e requie- datos, definiendo sin ambigiiedad
elementos cualitativos para la creaci6n
del software. El problema estribo enque
,. . ...
ren d a t a p a extraer la formulacih de
1
metricasagregadas. Una vez calculadas,
.. cada metrica tbcnica. Define pocas
metricas y utilizalas para profundizar
la valoraci6n cualitcrtiva puede no ser las mbtricas apropiadas sonanalizadas en la calidad del resultado obtenido en
suficiente. Un ingeniero del software en base a direclrices preestablecidas y la ingenieria del software.
Aunque las mCtricas tCcnicas para el software de computadora no son absolutas, nos pro-
porcionan una manera sistemBtica de valorar la calidad basdndose en un conjunto de <<reglas
claramente definidasn. TambiCn le proporcionan a1 ingeniero del software una visi6n interna en
. . . .
el acto, en vez de a posteriori. Esto permite a1 ingeniero descubrir y corregir problemas poten-
. . P . . ,,.
I N G E N I E R I A DEL SOFTWARE. U N ENFOQUE PRhCTICO
En el Capitulo 4 estudi6bamos las mdtricas del software tal y como se aplican a nivel del proceso y del proyecto. En
este capitulo, nuestro punto de atenci6n se desplaza a las medidas que se pueden emplear para valorar la calidad del pro-
.duct0 segiln se va desarrollando. Estas medidas de atributos intemos del producto le proporcionan al desarrollador de soft-
ware una indicaci6n en tiempo real de la eficacia del anGIisis, del disefio y de la estructura del c6dig0, la efectividad de 10s
casos de prueba. y la calidad global del software a construir.
Incluso 10s desarrolladore~del software mis hastiados que se pueden medir directamente (por ejemplo, defec-
e~tar6nde acuerdo en que un software de alta calidad es tos por punto de funcibn) y (2) factores que se pueden
una de las metas mds importantes. Pero, i,cbmo definimos medir s61o indirectamente (por ejemplo, facilidad de
la calidad? En el Capitulo 8 propusimos diferentes mane- uso o de mantenimiento). En todos 10s casos debe apa-
ras de interpretar la calidad del software e introdujimos recer la medicion. Debemos comparar el software (docu-
una definicion que hacia hincapik en la concordancia con mentos, programas, datos) con una referencia y llegar
los reyuisitos funcionales y de rendimiento explicitamen- a una conclusi6n sobre la calidad.
te establecidos, 10s estindares de desarrollo explicitamente
documentados y las caracteristicas implicitas que se espe-
ran de todo \oftware desarrollatlo profesionalmente.
9
CuvE
Es i~lteresonteanotar que 10s factores de calidod
de McColl son tau vblidos hoy como cuaudo fueron
10s primeros propuestos en 10s oiios 70. Adembs,
~ o d Lo g r a m o hoce nlgo correctmente, es rozonoble indicor que 10s foctores que ofecton
que puede no ser lo que necesitomos que hogo. o lo colidad del sofhvare no cambian.
An6nimo
McCall y sus colegas [MCC77] propusieron una litil
N o cabe duda de clue la definicion anterior podria clasificacibnde factoresque afectan a la calidad del soft-
rnodificarse o ampliarse y discutirse eternamente. Para ware. Estos factores de software, mostrados
10s propcisitos de este libro, la definici6n sirve para hacer en la Figuri, 9. se concentran en tres aspectos impor-
Cnfasis en tres puntos importantes: tantes de un producto software: sus caracteristicas ope-
1. LOSrecluisitos del software son la base de medi- rativas, su capacidad de cambios y su adaptabilidad a
das de la calidad. La falta de concordancia con 10s nuevos el1tornos.
requisitos es una falta de calidad'.
2. Unos estindares especificos definen un conjunto de Facilidad de mantenimiento Portabilidad
criterios de desarrollo que guian la manera en que se Flexibilidad Reusabilidad
hace la ingenieria del software. Si no se siguen 10s Facilidad de prueba lnteroperatividad
criterios. h a b d seguramente poca calidad.
3. Esiste un conjunto de requisitos implicitos que a
menudo no se nombran (por ejemplo, facilidad de
mantenimiento). Si el software cumple con sus requi-
sites explicitos pero fillla en 10s implicitos. la cali-
dad del software no serA fiable.
La calitlad del software es una compleja mezcla de
factores que variarfin a trav6s de diferentes aplicacio-
6 Operation del producto
19.1.1. Factores de calidad de McCall Finhilidad.Hasta d6nde se puede esperar que un program
!leve a cabo au funci6n con la exactilud requerida. Hay que
LOSfactores que afectan a a la calidad del software se hacer n o t x que se han propueclo o t m definiciones de fiabili-
pueden categorizar en dos amplios grupos: (1) factores dad m i s completab (vea el CapituIo 8).
Eficiencia. La cantidad de recursos informiticos y de c6di- Compleccidn. El grado con que se ha logrado la imple-
go necesarios para que un programa realice su funci6n. mentaci6n total de una funci6n.
Integridad. Hasta donde se puede controlar el acceso al soft- Concisidn.Lo compact0 que es el programa en tCrminos de
ware o a 10s datos por personas no autorizadas. lineas de c6digo.
Consistencia.El empleo de un diseiio uniforme y de tCcni-
cas de documentaci6na lo largo del proyecto de desarrollo del
software.
Estandarizacidn de datos. El empleo de estructuras y tipos
de datos estindares a lo largo del programa.
Tolerancia a1 error. El daiio causado cuando un programa
encuentra un error.
Usabilidud (facilidad de manejo). El esfuerzo necesario para
aprender a operar con el sistema, preparar 10s datos de entra- Eficiencia de ejecucidn. El rendimiento del funcionamien-
da e interpretar las salidas (resultados) de un programa. to de un programa.
Facilidad de mantenimiento. El esfuerzo necesario para Capacidad de expansidn. El grado con que se pueden
localizar y arreglar un error en un programa. (Esta es una defi- ampliar el diseiio arquitect6nic0, de datos o procedimental.
nici6n muy limitada). Generalidad. La amplitud de aplicaci6n potencial de 10s
componentes del programa.
Flexibilidad. El esfuerzo necesario para modificar un pro-
grama que ya esti en funcionamiento. Independencia del hardware. El grado con que se desaco-
pla el software del hardware donde opera.
Facilidad de prueba. El esfuerzo necesario para probar un
programa y asegurarse de que realiza correctamente su fun- Instrumentacidn. El grado con que el programa vigila su
ci6n. propio funcionamiento e identifica 10s errores que ocurren.
19.1.2. FURPS
Facilidad de auditoria. La facilidad con la que se puede Los factores de calidad descritos por McCall y sus cole-
comprobar el cumplirneinto de 10s esthdares. gas [MCC77] representan s610 una de las muchas listas
Exactitud. La exactitud de 10s ciilculos y del control. de comprobaci6n sugeridas para la calidad del softwa-
Estandarizacibn de comunicaciones. El grado de empleo re. Hewlett-Packard [GRA87] ha desarrollado un con-
de esthdares de interfaces, protocolos y anchos de banda. junto de factores de calidad del software a1 que se le ha
dado el acr6nimo de FURPS:frrnciot1aIi~Iad,fac~iliclacl subatributos: facilidad de instalaci6r1, facilidad de ajuste, faci-
de uso,~ahilidad,lvtdimiento y cayucidad de sopork. lidad de adaptacicin al carnbio.
'Los factores de calidad FURPS provienen de trabajos
anleriores, definiendo 10s siguientes atributos para cada
uno de 10s cinco factores principales: Cuolquier actividad crealiva requiere
Lafirtlcionulidad se valora evaluando el conjunto de un planteamientopara hacerlo bien, o perfecto
caracteristicas y capacidades del programa, la gene- John Updike
ralidad de las funciones entregadas y la seguridad
del sistema global. Del mismo mod0 que 10s factores de calidad estu-
La fir(-ilidtrdde rrso se valora considerando factores diados en las secciones 19.1.1. y 19.1.2., 10s factores
humanos (capitulo 15), la estCtica, la consistencia y I S 0 9 126 no necesariamente son utilizados para medi-
la documentaci6n general. das directas. En cualquier caso, facilitan una valiosa
Lafiabilidacl se evalua midiendo la frecuencia y gra- base para medidas indirectas y una excelente lista para
vedad de 10s fallos, la exactitud de las salidas (resul- determinar la calidad de un sistema.
tados), el tiempo de medio de fallos (TMDF), la
capacidad de recuperaci6n de un Fillo y la capaci-
dad de predicci6n del programa.
El r~ndirnientose mide por la velociclad de procesa-
miento, el tiempo de respuesta, consumo de recur-
sos, rendimiento efectivo total y eficacia.
La cupac,iclnd de sopo,.te combina la capacidad de
ampliar el programa (extensibilidad), adaptabilidad y
senicioa (estos tres atributos representan un tCrmino
nxis comun -mantenimiente-), asi como capacidad
de hacer pruebas, compatibilidad, capacidad de con-
figuraci6n (la capacidad de organizar y controlar ele-
mentos de la configuraci6n del software [Capitulo 91).
la facilidad de instalaci6n de un sisterna y la facilidad
con que se pueden localizar 10s problems.
Los factores de calidad FURPS y atributos descritos
anteriormente pueden usarse para kstab~ecermktricas
dc la calidad para todas las activiclades del proceso del
software.
lado de 10s otros bajo condiciones idknticas y con conceptos te manera: ccAiio tras afio ingeniamos instrumentos m8s exac-
predeterminados. El vino puede ser juzgado de acuerdo con su tos con 10s que obsewar la naturaleza con mis exactitud. Y
claridad, color, bouquet, sabor, etc. Sin embargo, este tipo de cuando miramos las obsewaciones estamos desconcertados de
juicio es muy subjetivo; para que tenga algo de valor, debe ver que todavia son confusas, y tenemos la sensacion de que
hacerse por un experto. son tan inciertas corno siempre.,
La subjetividad y la especializaci6n tambikn influyen en la En las siguientes secciones examinamos un conjun-
determinaci6n de la calidad del software. Para resolver este to de mCtricas del software que pueden aplicarse a la
problema, se necesita una definici6n de calidad del software valoraci6n cuantitativa de la calidad del software. En
mis exacta, asi corno una manera de obtener medidas cuanti-
todos 10s casos, las mCtricas representan medidas indi-
tativas de la calidad del software para hacer un andisis objeti-
vo.... Como no existe el conocimiento absoluto, no deberiamos
rectas; es decir, realmente nunca medimos la calidad
esperar poder medir la calidad del software exactamente, ya sino alguna manifestaci6n de la calidad. El factor que
que cada rnedici6n es parcialmente imperfects. Jacob Bron- lo complica es la relaci6n exacta entre la variable que
kowski describi6 esta paradoja del conocimiento de la siguien- se mide y la calidad del software.
Como djimos en la introducci6n de este capitulo, la medi- Pero existe la necesidad de medir y controlar la com-
ci6n asigna numeros o simbolos a atributos de entidades plejidad del software. Y si es dificil de obtener un solo
en el mundo real. Para conseguirlo se necesita un mode- valor de esta ccmCtrica de calidadn, si deberia ser posi-
lo de medicion que comprenda un conjunto consistente ble desarrollar medidas de diferentes atributos intemos
de reglas. Aunque la teoria de la medici6n (por ejemplo, del prograrna (por ejemplo, modularidad efectiva, inde-
[KYB84]) y su aplicaci6n a1 software (por ejemplo, pendencia funcional y otros atributos tratados desde el
[DEM81], [BRI96]) son temas que estan m6s alli del Capitulo 13 a1 Capitulo 16). Estas medidas y las mktri-
alcance de este libro, merece la pena establecer una estruc- cas obtenidas de ellas pueden usarse corno indicadores
tura fundamental y un conjunto de principios basicos para independientes de la calidad de 10s modelos de andisis
la medici6n de metricas tkcnicas para el software. y diseiio. Pero tambiCn surgen problemas aqui. Fenton
[FEN941 lo advierte cuando dice:
El peligro de intentar encontrar rnedidas que caractericen
tantos atributos diferentes es que, inevitablemente, las medi-
das tienen que satisfacer objetivos incompatibles. Esto es con-
trario a la teona de representaci6n de la medicion.
Aunque la declaraci6n de Fenton es correcta, mucha
gente argumenta que la medicion tCcnica llevada a cab0
durante las primeras fases del proceso de software les
proporciona a 10s desarrolladores de software un con-
19.2.1. El reto de las metricas tecnicas sistente y objetivo mecanismo para valorar la calidad.
Conviene preguntarse, no obstante, quC validez tie-
Durante las pasadas tres dCcadas, muchos investigado- nen las mCtricas tkcnicas. Es decir, jc6m0 e s t h de pr6-
res han intentado desarrollar una sola mCtrica que pro- ximas las metricas tecnicas y la fiabilidad y la calidad a
porcione una medida completa de la complejidad del largo plazo de un sistema basado en computadora? Fen-
software. Fenton [FEN941 caracteriza esta investiga- ton [FEN911 trata esta cuestion de la siguiente manera:
cion corno una busqueda del ccimposible santo grial>>.
A pear de las intuitivas conexiones entre la estructura inter-
Aunque se han propuesto docenas de medidas de com- na de 10s productos software (mktricas tknicas) y su produc-
plejidad [ZUS90], cada una tiene un punto de vista dife- to extemo, y 10s atributos del proceso, ha habido. de hecho,
rente de lo que es la complejidad y quk atributos de un rnuy pocos intentos cientificos para establecer relaciones espe-
sistema llevan a la complejidad. cificas. Hay varias razones para ello; la que se menciona rnis
a menudo es la imposibilidad de llevar a cab0 experimentos.
Todos 10s desafios mencionados anteriormente son
Referencia web/ ' motivo de precaucion, per0 no es motivo de desprecio
de las metricas tCcnicas2. La medicion es esencial si se
Voluminoso informocian sobre mehicos tecnicos hon sido desea conseguir calidad.
recopilados por Horst Zuse: irb.cs.tu-berlin.de/-zuse/
Se ha producido m a gran cantidad de literatura sobre las metricas del
soRware @orejemplo, vea FEN941, [ROC94], [ZUS97] para obtener unas
extensas bibliografias)yes comim la critica de metricas especificas (inck-
yendo algunas de las presentadas en este capitulo).Sin embargo,muchas
de las criticas se concentran en aspectos esotericos y pierden el obje-
tivo primario de la medicion en el mundo real: ayudar al ingeniero a
establecer una manera sistematica y objetiva de conseguir una vision
intema de su trabajo y mejorar la calidad del product0 corno resultado.
I N G E N I E R ~ ADEL SOFTWARE. UN ENFOQUE P R ~ C T I C O
programa. No deberian depender de 10s caprichos Aunque la mayoria de las mCtricas de software
de la sintaxis o semantics del lenguaje de progra- satisfacen las caracteristicas anteriores, algunas de la
maci6n. mCtricas comunmente empleadas dejan de cumplir
un eficaz mecanismo para la realimentaci6n de cali- una o dos. Un ejemplo es el punto de funci6n (trata-
dad. La mCtrica deberia proporcionar, a1 desarrolla- do en el Capitulo 4 y en este capitulo). Se puede argu-
dor de software, informacih que le lleve a un mentar' que el atributo consistente y objetivo falla
product0 final de mayor calidad. porque un equipo ajeno independiente puede no ser
capaz de obtener el mismo valor del punto de funci6n
que otro equipo que use la misma informaci6n del
software. ~Deberiamosentonces rechazar la medida
Lo experiencio indico que uno metrico tecnico se uso PF? La respuesta es ccipor supuesto que no!>>.El PF
knicomente si es intuitive y facil de colculor. Si se requiere proporciona una util visi6n interna y por tanto pro-
docenos de ((contodores)) y se hon de utilizor compleios porciona un valor claro, incluso si no satisface un atri-
calculos, lo mbtrico no sera ompliomente utilizodo. but0 perfectamente.
El trabajo tCcnico en la ingenieria del software empie- 19.3.1. Metricas basadas en la funci6n
za con la creaci6n del modelo de analisis. En esta fase La mCtrica de punto de funcion (PF) (Capitulo 4) se pue-
se obtienen 10s requisitos y se establece el fundamento de usar como medio para predecir el tamaiio de un siste-
para el diseiio. Por tanto, son deseables las mCtricas tCc- ma que se va a obtener de un modelo de analisis. Para
nicas que proporcionan una visi6n interna a la calidad ilustrar el empleo de la mCtrica de PF en este contexto,
del modelo de analisis. consideramos una sencilla representacion del modelo de
analisis mostrada en la Figura 19.3. En la figura se repre-
senta un diagrama de flujo de datos (Capitulo 12) de una
10s modelos de datos, funcianes y comportamientos funci6n del sistema ~ogarSeguro~. La funci6n gestiona
son tratodos en los Coph~los11 y 12. la interacci6n con el usuario, aceptando una contraseiia
de usuario para activar/desactivar el sistema y permitien-
Aunque han aparecido en la literatura relativamen- do consultas sobre el estado de las zonas de seguridad y
te pocas mCtricas de analisis y especificacion, es posi- varios sensores de seguridad. La funci6n muestra una serie
ble adaptar mCtricas obtenidas para la aplicaci6n de un de mensajes de peticion y envia sefiales apropiadas de
proyecto (Capitulo 4) para emplearlas en este contex- control a varios componentes del sistema de seguridad.
to. Estas mCtricas examinan el modelo de anilisis con
la intention de predecir el cctamafion del sistema resul-
tante. Es probable que el tamafio y la complejidad del
Poro ser utilporo el tmbojo tecnico, 10s medidos ticnicos
disefio estCn directamente relacionadas. que opoyon lo tomo de decision (el: errores encantrodas
duronte lo pruebo de unidod) deben ser ogrupodos
y normolizodos utilizondo lo metrico PF:
El diagrama de flujo de datos se evalua para deter-
Sensores
Sensor de ~rueba minar las medidas clave necesarias para el c5lculo de
la mCtrica de punto de funci6n (Capitulo 4):
numero de entradas del usuario
Usuario numero de salidas del usuario
Fijese que se puede hacer un contra argument0 igualmente vigo- HogarSeguro e s un sistema de seguridad para el hogar que se ha
roso. Tal e s la naturaleza de las metricas del software usado como aplicacion de ejemplo en capitulos anteriores
I N G E N I E R ~ ADEL SOFTWARE. UN ENFOQUE P R ~ C T ~ C O
configuracion del sistema). Tambien estin presentes tor del proyecto una importante informaci6n de plani-
.dos salidas de usuarios (mensajes y estados del sen- ficacion basada en el modelo de andisis en lugar de en
sor) y cuatro interfaces externas (sensor de prueba, estimaciones preliminares.
configuracion d e zona, activarldesactivar y alerta d e Considerar que de 10s proyectos anteriores se han
alarma). Estos datos, junto con la complejidad apro- encontrado una media de 3 errores por punto de funci6n
piada, se muestran en la Figura 19.4. durante las revisiones de anilisis y disefio, y 4 errores
Factor de ponderacidn
por punto de funci6n durante las pruebas unitaria y de
- -
. -.-... -.
Parirncrtra ---
(luenta Simple Media Compleja integraci6n. Estos datos pueden ayudar a valorar a 10s
de rnedicidn ingenieros del software la completitud de sus revisio-
Nljrnero de entradas nes y las actividades de prueba.
del usuarii
.. . . .. . r- 19.3.2. L a MBtrica bang
N~imerode salidas
del usuario A1 igual que la mktrica de punto de funcion, la me'rrica
bang puede emplearse para desarrollar una indicaci6n
del usuario 6a del tamafio del software a implementar corno conse-
Nljrnero de archivoa ~XO'IO 1 5 - m
cuencia del modelo de anilisis.
Desarrollada por DeMarco [DEM82], la mCtrica bang
es <<unaindicacidn independiente de la implementacidn
del tamafio del sistema,,. Para calcular la mktrica hutzg,
externas el desarrollador de software debe evaluar primer0 un
Cuenta total k d conjunto de primitivas (elementos del modelo de an&
lisis que no se subdividen m i s en el nivel de anilisis).
Las primitivas [DEM82] se determinan evaluando el
FIGURA 19.4. Calculo de puntos de funcion modelo de andisis y desarrollando cuentas para 10s
para una funcion de Hogar Seguro.
siguientes elementos5:
La cuenta total mostrada en la Figura 19.4 debe ajus- Prirnitivas funcionales (PFu). Transformaciones (burbu-
jas) que aparecen en el nivel inferior de un diagmma de Hujo
tarse usando la ecuaci6n (4.1): de datos (Capftulo 12).
PF= cuenta-total x (0,65 + 0,01 x C[Fil) Elementos de datos (ED). Los atributos de un objeto de
Donde cuenta-total es la suma de todas las entradas PF datos, 10s elenientos de datos son datos no cornpuestos y apa-
obtenidas en la Figura 19.3 y Fi (i=l a 14) son 4 0 s valo- recen en el diccionario de datos.
res de ajuste de complejidad,,. Para el prop6sito de este Objetos (OB). Objetos de datos tal y corno se describen en
ejemp!~,asumimos que C[Fi] es 46 (un product0 mode- el Capitulo l I.
radamer~tecomplejo). Por tanto: Kelaciones (RE). Las conexiones entre objetos de datos tal
PF= 50 x [0,65 + (0,0 1 x 46)] = 56 y corno se describen en el Capftulo 12.
Estados (ES).El nGrnero de estados observables por el usua-
rio en el diagrama de transici6n de estados (Capitulo 12).
Transiciones (TK). El nljrnero de transiciones de estado en
el diagrama de transition de estados (Capftulo 12).
re que todas puedan representarse usando una o mas donde nUies el numero de requisitos para 10s que todos
mCtricas6. Por ejemplo, asumimos que hay nr requisi- 10s revisores tuvieron interpretaciones identicas. Cuan-
tos en una especificacion, tal como to mhs cerca de 1 estC el valor de Q, menor sera la ambi-
n,. = nf + n nf giiedad de la especificaci6n.
La compleci6n de 10s requisitos funcionales pueden
donde n es el numero de requisitos funcionales y nnf es determinarse calculando la relaci6n
f
el numero de requisitos no funcionales (por ejemplo,
rendimiento). = un / (ni x nJ
Q2
donde un es el numero de requisitos unicos de funcion,
ni es el numero de entradas (estimulos) definidos o
implicados por la especificaci6n y n, es el nCimero de
estados especificados. La relaci6n Q2 mide el porcen-
Para rnedir 10s corocteristicas de lo especificoci6n, es taje de funciones necesarias que se han especificado
necesorio conseguir profundizar cuantitativornente en lo para un sistema. Sin embargo, no trata 10s requisitos
especificidod y en la cornpletiiud. no funcionales. Para incorporarlos a una mCtrica glo-
bal completa, debemos considerar el grado de valida-
Para deterrninar la especificidad (ausencia de ambi- ci6n de 10s requisitos.
giiedad) de 10s requisitos. Davis sugiere una mCtrica Q3 = nc 1(n, + a,,,)
basada en la consistencia de la interpretaci6n de 10s revi- donde nc es el numero de requisitos que se han valida-
sores para cada requisito: do como correctos y nnvel ndmero de requisitos que no
se han validado todavia.
Es inconcebible que el diseiio de un nuevo avion, un En las siguientes secciones examinamos algunas de
nuevo chip de computadora o un nuevo edificio de ofi- las mCtricas de diseiio mhs comunes para el software de
cinas se realizara sin definir las medidas del diseiio, computadora. Aunque ninguna es perfecta, todas pue-
sin determinar las mCtricas para varios aspectos de la den proporcionar a1 diseiiador una mejor visi6n interna
calidad del diseiio y usarlas para guiar la evoluci6n del y ayudar a que el diseiio evolucione a un nivel superior
diseiio. Y sin embargo, el diseiio de sistemas comple- de calidad.
jos basados en computadora a menudo consigue pro-
seguir sin virtualmente ninguna medici6n. La ironia 19.4.1. Metricas del diseiio arquitectdnico
es que las mCtricas de diseiio para el software esthn
disponibles, pero la gran mayoria de 10s desarrollado- Las mCtricas de diseiio de alto nivel se concentran en
res dc software continuan sin saber que existen. las caracteristicas de la arquitectura del programa (Capi-
tulo 14) con especial Cnfasis en la estructura arquitec-
tonica y en la eficiencia de 10s m6dulos. Estas mktricas
son de caja negra en el sentido que no requieren ningun
conocimiento del trabajo intemo de un m6dulo en par-
ticular del sistema.
Card y Glass [CAR901 definen tres medidas de la
complejidad del disefio del software: complejidad
Las mCtricas de diseiio para el software, como otras estructural, complejidad de datos y complejidad del
mCtricas del software, no son perfectas. Continua el sistema.
debate sobre la eficacia y c6mo deberian aplicarse. La complejidad estructural, S(i), de un modulo i se
Muchos expertos argumentan que se necesita mhs expe- define de la siguiente manera:
rimentacion hasta que se puedan emplear las mCtricas
de disefio. Y sin embargo, el diseiio sin medicion es una s ( i ) =yOut(i) (19-1)
altemativa inaceptable. donde fou,(i) es la expansi6n7 del m6dulo i.
Un estudio completo de las metricas de calidad de especificacion Como s e dijo en el estudio introducido en el Capitulo 13, la expan-
esta mas alla del aicance de este capitulo. Vea [DAV93] para mas sion If,,) indica el numero de modulos inmediatamente subordina-
detalles. dos a1 modulo i, e s decir, el numero de modulos que son invocados
directamente por el modulo i.
CAP~TULO
19 M P T R I C A S T ~ C N I C A SDEL S O F T W A R E
implica un acoplamiento bajo. Por el contrario, si un m d u - modulo. Cuando la complejidad ciclomitica de 10s modu-
. lo tiene 5 parhetros de salida y 5 parhetros de entrada 10s excedian ese valor, resultaba extremadamente dificil
de datos, un numero igual de parhetros de control, acce- probar adecuadamente el modulo. Vea en el Capitulo 17
de a 10 elementos de datos globales y tiene una concen- un estudio sobre la complejidad ciclomatica como guia
tracion de 3 y una expansion de 4, para el disefio de casos de prueba de caja blanca.
mc= 1 / ( 5 + 2 x 5 + 5 + 2 ~ 5 + 10+0+3+4)=0,02
el acoplamiento implicado es grande. 19.4.3. Metricas de diseiio de interfaz
Para que aumente la mCtrica de acoplamiento a medi- Aunque existe una significativa cantidad de literatura
da que aumenta el grado de acoplamiento, se puede defi- sobre el disefio de interfaces hombre-inhquina (vea el
nir una mCtrica de acoplamiento revisada corno: Capitulo IS), se ha publicado relativamente poca infor-
macion sobre mktricas que proporcionen una vision inter-
na de la calidad y facilidad de empleo de la interfaz.
donde el grado de acoplamiento no aumenta linealmente Sears [SEA931 sugiere la conveniencia de la repre-
entre un valor minimo en el rango de 0,66 hasta un m k i - sentacibn (CR) como una valiosa mCtrica de disefio para
mo que se aproxima a 1,O. interfaces hombre-m8quina. Una IGU (Interfaz Grafi-
Metricas de complejidad. Se pueden calcular una ca de Usuario) tipica usa entidades de representacion
variedad de mCtricas del software para determinar la -iconos graficos, texto, menus, ventanas y otras- para
complejidad del flujo de control del programa. Muchas ayudar a1 usuario a completar tareas. Para realizar una
de Cstas se basan en una representacion denominada tarea dada usando una IGU, el usuario debe moverse de
grafo de flujo. Tal y como se dijo en el Capitulo 17, un una entidad de representacion a otra. Las posiciones
grafo es una representacion compuesta de nodos y enla- absolutas y relativas de cada entidad de representacion,
ces (tambiCn denominados aristas). Cuando se dirigen la frecuencia con que se utilizan y el cccoste>>
de la tran-
10s enlaces (aristas), el grafo de flujo es un grafo diri- sicion de una entidad de representacion a la siguiente
gido. contribuiran a la conveniencia de la interfaz.
McCabe [MCC94] identifica un numero importante
de usos para las metricas de complejidad:
Las metricas de cornplejidad pueden ernplearse para pre-
decir la inforrnacion critica sobre la fiabilidad y rnanteni-
rniento de sisternas software de analisis autornaticos de codigo
fuente (o inforrnacion de diseiio procedimental). Las rnetri-
cas de cornplejidad tarnbien realirnentan la inforrnacion
durante el proyecto de software para ayudar a controlar la
[actividad del disefio]. Durante las pruebas y el rnanteni- Para una representacion especifica (por ejemplo, un
rniento, proporcionan una detallada inforrnacidn sobre 10s
rn6dulos software para ayudar a resaltar las ireas de inesta- disefio de una IGU especifica), se pueden asignar cos-
bilidad potential. tes a cada secuencia de acciones de acuerdo con la
siguiente relacion:
La mCtrica de complejidad mhs ampliamente usada
(y debatida) para el software es la complejidad ciclomci- Costes = C [frecuencia de transicion (k) x
tica, originalmente desarrollada por Thomas McCabe x coste de transicion (k) ] (19.7)
[MCC76] y estudiando con detalle en la Secci6n 17.4.2. donde k es la transicion especifica de una entidad de
La mCtrica de McCabe proporciona una medida cuan- representacion a la siguiente cuando se realiza una tarea
titativa para probar la dificultad y una indicacion de la fia- especifica. Esta suma se da con todas las transiciones
bilidad 6ltima. Estudios experimentalesindican una fuerte de una tarea en particular o conjunto de tareas requeri-
correlaci6n entre la mCtrica de McCabe y el numero de das para conseguir alguna funcion de la aplicacion. El
errores que existen en el c6digo fuente, asi como el tiem- coste puede estar caracterizado en tCrminos de tiempo,
po requerido para encontrar y corregir dichos errores. retraso del proceso o cualquier otro valor razonable, tal
como la distancia que debe moverse el raton entre enti-
dades de la representacion.
La conveniencia de la representacion se define corno:
Lo mmplejidod drlomatico es solomente uno mbs CR = 100 x [(coste de la representacion optima CR) /
de 10s mochas meticas de complejidod. / (coste de la representacion propuesta)] (19.8)
McCabe tambiCn defiende que la complejidad ciclo- donde CR = 100 para una representacion 6ptima.
'
mhtica puede emplearse para proporcionar una indicacion Para calcular la representacion optima de una IGU,
cuantitativa del tamaiio maxim0 del modulo. Recogien- la superficie de la interfaz (el irea de la pantalla) se divi-
do datos de varios proyectos de programaci6n reales, ha de en una cuadricula. Cada cuadro de la cuadricula repre-
averiguado que una complejidad ciclomhtica de 10 pare- senta una posible posicion de una entidad de la
ce ser el limite prhctico superior para el tamafio de un representacion. Para una cuadricula con N posibles posi-
I N G E N I E R ~ ADEL SOFTWARE. UN ENFOQUE PRACTICO
ciones y K diferentes entidades de representaci6n para La CR se emplea para valorar diferentes distribu-
. colocar, el numero posible de distribuciones se repre- ciones propuestas de IGU y la sensibilidad de una repre-
senta de la siguiente manera [SEA93]: sentaci6n en particular a 10s cambios en las descripciones
numero posible de distribuciones = de tareas (por ejemplo, cambios en la secuencia y/o fre-
= [ N ! / ( K ! x(N-K)!]xK! (19.9) cuencia de transiciones). El disefiador de interfaces pue-
de emplear el cambio en la conveniencia de la
A medida que crece el numero de posiciones de repre- representaci61-1,ACR, como guia en la elecci6n de la
sentaci61-1,el nfimero de distribuciones posibles se hace mejor representaci6n de IGU para una aplicaci6n en
muy grande. Para encontrar la representaci6n 6ptima particular.
(menor coste). Sears [SEA931 propone un algoritmo de Es importante apuntar que la selection de un disefio
busqueda en kbol. de IGU puede guiarse con mCtricas tales como CR, per0
el Pbitro final deberia ser la respuesta del usuario basa-
da en prototipos de IGU. Nielsen y Levy [NIE94] infor-
10s metricas del disefio de interface son vblidos, pero man que ccexiste una gran posibilidad de Cxito si se elige
sobre todo, son obsolutomente necesorios poro oseguror una interfaz bashdose solamente en la opinion del usua-
que o 10s usuorios finales les ogrodo lo intefoce y esten no. El rendimiento medio de tareas de usuario y su satis-
sotisfechos con 10s interocciones requeridos. faction con la IGU estan altamente relacionadas.>>
La teoria de Halstead de la ciencia del software [HAL771 Halstead usa las medidas primitivas para desarro-
es ccprobablemente la mejor conocida y mas minucio- llar expresiones para la longitud global del programa;
samente estudiada ... medidas compuestas de la com- volumen minimo potencial para un algoritmo; el volu-
plejidad (software)>>[CUR80]. La ciencia del software men real (numero de bits requeridos para especificar
propone las primeras eeleyes>> analiticas para el softwa- un programa); el nivel del programa (una medida de
re de computadora9. la complejidad del software); nivel del lenguaje (una
constante para un lenguaje dado); y otras caracteristi-
cas tales como esfuerzo de desarrollo, tiempo de desa-
rrollo e incluso el numero esperado de fallos en el
software.
Halstead expone que la longitud N se puede estimar
corno:
El trabajo de Halstead se presta a la verification expe- per0 puede decirse que se ha llegado a un buen acuer-
rimental y de hecho se ha desarrollado una gran labor do entre lo previsto analiticamentey 10s resultados expe-
de investigation en la ciencia del software. Un estudio rimentales. Para rnhs informaci61-1, vea [ZUS90],
de este trabajo estaria fuera del alcance de este libro, [FEN911 y [ZUS97].
Aunque se ha escrito mucho sobre las mCtricas del soft- de disefio de casos de prueba presentado en el Capitu-
ware para pruebas (por ejemplo, [HET93]), la mayoria lo 17. Ademhs, la complejidad ciclomhtica puede usar-
de las metricas propuestas se concentran en el proceso se para elegir m6dulos como candidatos para pruebas
de prueba, no en las caracteristicas tCcnicas de las prue- rnhs profundas (Capitulo 18). Los m6dulos con gran
bas mismas. En general, 10s responsables de las prue- complejidad ciclomhtica tienen rnhs probabilidad de ten-
bas deben fiarse de las metricas de anhlisis, disefio y dencia a errores que 10s m6dulos con menor compleji-
c6digo para que les guien en el disefio y ejecucion de dad ciclomhtica.
10s casos de prueba. Por esta razon, el analista deben'a invertir un esfuerzo
extra para descubrir errores en el modulo antes de inte-
grarlo en un sistema. Es esfuerzo de las pruebas tambiCn
se puede estimar usando mCtricas obtenidas de medidas
de Halstead (Secci6n 19.5). Usando la definici6n del volu-
10s metricas de la prueba desembocan en las siguientes men de un programa, V, y nivel de programa, NP, el
categorias:(l) metric05 que ayudan a determinor esfuerzo de la ciencia del software, e, puede calcularse
el nirmero de pruebas requeridas en 10s distintos niveles como:
de la prueba; (2)metricas para cubrir la prueba
de un componente dado.
Todas las mCtricas del software presentadas en este capi- Fa gumero de mdulos en la version actual que se han aiia-
tulo pueden usarse para el desarrollo de nuevo softwa- dido
Fd=numero de mdulos de la version anterior que se han
re y para el mantenimiento del existente. Sin embargo,
borrado en la version actual
se han propuesto mCtricas diseiiadas explicitamentepara
El indice de madurez del software se calcula de la
actividades de mantenimiento.
siguiente manera:
El esthdar IEEE 982.1- 1988 [IEE94] sugiere un indi-
IMS=[MT-(F,+Fc+Fd)]/MT (19.15)
ce de madurez del software (IMS) que proporciona una
indicacibn de la estabilidad de un producto software (basa- A medida que el IMS se aproxima a I ,O el producto
da en 10s cambiosque ocurren con cada versi6n del pro- se empieza a estabilizar. EL IMS puede emplearse tam-
duct~).Se determina la siguiente informacion: biCn como mCtrica para la planificaci6n de las activi-
dades de mantenimiento del software. El tiempo medio
MT= numero de mddulos en la version actual para producir una versi6n de un producto software pue-
F, = numero de modules en la version actual que se han de correlacionarse con el IMS desarrollandose mode-
cambiado 10s empiricos para el mantenimiento.
Las metricas del software proporcionan una manera de diseiio de alto nivel consideran 10s aspectos arqui-
cuantitativa de valorar la calidad de 10s atributos inter- tect6nicos y estructurales del modelo de disefio. Las
nos del producto, permitiendo por tanto a1 ingeniero mCtricas de diseiio de nivel de componentes propor-
valorar la calidad antes de construir el producto. Las cionan una indicaci6n de la calidad del m6dulo esta-
metricas proporcionan la vision interna necesaria para bleciendo medidas indirectas de la cohesion,
crear modelos efectivos de analisis y diseiio, un c6digo acoplamiento y complejidad. Las mCtricas de diseiio de
solido y pruebas minuciosas. interfaz proporcionan una indicaci6n de la convenien-
Para que sea util en el context0 del mundo real, una cia de la representaci6n de una IGU.
mCtrica del software debe ser simple y calculable, per- La ciencia del software proporciona un intrigante
suasiva, consistente y objetiva. Deberia ser indepen- conjunto de metricas a nivel de c6digo fuente. Usando
diente del lenguaje de programaci6n y proporcionar el numero de operadores y operandos presentes en el
una realimentacibn eficaz para el desarrollador de soft- c6dig0, la ciencia del software proporciona una varie-
ware. dad de mCtricas que pueden usarse para valorar la cali-
Las metricas del modelo de analisis se concentran dad del programa.
en la funcion, 10s datos y el comportamiento (10s tres Se han propuesto pocas mCtricas tCcnicas para un
componentes del modelo de analisis). El punto de fun- empleo direct0 en las pruebas y mantenimiento del soft-
ci6n y la mCtrica bang proporcionan medidas cuantita- ware. Sin embargo, se pueden emplear muchas otras
tivas para evaluar el modelo de analisis. Las metricas metricas tCcnicas para guiar el proceso de Las pruebas
del diseiio consideran aspectos de alto nivel, del nivel y como mecanismo para valorar la facilidad de mante-
de componentes y de diseiio de interfaz. Las metricas nimiento de un programa de computadora.
[BAS841 Basili, y V.R. D.M. Weiss, <<AMethodology for [CAV78] Cavano, J.P., y J.A. McCall, <<AFramework for the
Collecting Valid Software Engineering Data)),IEEE Trans. Measurement of Software Quality)),Proc. ACM Software
Software Engineering, vol. SE-10, 1984, pp. 728-738. Quality Assurance Wokshop, Noviembre 1978, pp. 133-
139.
[BIE94] Bieman, J.M., y L.M. Ott, <<MeasuringFunctional
Cohesion),, IEEE Trans. Software Engineering, vol. 20, [CHA89] Charette, R.N., Software Engineering RiskAnaly-
n." 8, Agosto 1994, pp. 308-320. sis and Management, McGraw-Hillbntertext, 1989.
[BRI96] Briand, L.C., S. Morasca, y V.R. Basili, c@roperty-Based [CUR801 Curtis, W., <<Managementand Experimentation in
Software Engineering Measurement,,, IEEE Trans. SofhYa- Software Engineering,,, Proc. IEEE, vol. 68, n." 9, Sep-
re Engineering, vol22, n." 1, Enero 1996, pp. 68-85. tiembre 1980.
[CAR901 Card, D., y N. R. L. Glass, Measuring Software [DAV93] Davis, A., et al., <<Identifyingand Measuring Qua-
Design Quality, Prentice-Hall, 1990. lity in a Software Requirements Specification>>,Proc. lSt
CAPiTULO 19 M e T R I C A S T E C N I C A S DEL S O F T W A R E
Intl. Software Metrics Symposium, IEEE, Baltimore, MD, [IEE94] Sofrware Engineering Standards, 1994, IEEE, 1994.
May 1993, pp. 141-152. [KYB84] Kyburg, H.E., Theory and Measurement, Cambridge
[DEM81] DeMillo, R.A., y R.J. Lipton, <<SoftwareProject University Press, 1984.
Forecasting,,, Software Metrics (A.J. Perlis, F.G. Sayward [MCC76] McCabe, T.J., aA Software Complexity Measure,,
y M. Shaw, ed.), MIT Press, 1981, pp. 77-89. IEEE Trans. Software Engineering, vol. 2, Diciembre 1976,
[DEM82] DeMarco, T., Controlling Software Projects, Your- pp. 308-320.
don Press, 1982. [MCC77] McCall, J., P. Richards, y G. Walters, <<Factorsin
[DHA95] Dhama, H., <<QuantitativeModels of Cohesion and Software Quality,,, 3 vols., NTIS AD-A049-014,015,055,
Coupling in Software,, Journal of Systems and Software, Noviembre 1977.
vol. 29, n." 4, Abril 1995. [MCC89] McCabe, T.J., y C.W. Butler, <<DesignComplexity
[En911 Ejiogu, L., Sofrware Engineering with Formal Metrics, Measurement and Testing,,, CACM, vol. 32, n." 12,
QED Publishing, 1991. Diciembre 1989, pp. 1415-1425.
[FEL89] Felican, L., y G. Zalateu, <<ValidatingHalstead's [MCC94] McCabe, T.J., y A.H. Watson, <<SoftwareComple-
Theory for Pascal Programs,,, IEEE Trans. Software Engi- xity,,, Crosstalk, vol. 7, n." 12, Diciembre 1994, pp. 5-9.
neering, vol. 15, n." 2, Diciembre 1989, pp. 1630-1632. [NIE94] Nielsen, J., y J. Levy, measuring Usability: Prefe-
[FEN911 Fenton, N., Software Metrics, Chapman & Hall, rence vs. Performance,,, CACM, vol. 37, n." 4, Abril1994,
1991. pp. 76-85.
[FEN941 Fenton, N., <<SoftwareMeasurement: A Necessary [ROC941 Roche, J.M., <<SoftwareMetrics and Measurement
Scientific Basis,,, IEEE Trans. Software Engineering, vol. Principles,, Software Engineering Notes, ACM, vol. 19,
20, n." 3, Marzo 1994, pp. 199-206. n." 1, Enero 1994, pp. 76-85.
[GRA87] Grady, R. B., y D.L. Caswell, Sofrware Metrics: Esta- [SEA931Sears,A., <<Layout Appropriateness: A Metric for Eva-
blishing a Company-Wide Program, Prentice-Hall, 1987. luating User Interface Widget Layout,,, IEEE Trans. Soft-
ware Engineering, vol. 19, n." 7, Julio 1993, pp. 707-7 19.
[HA771 Halstead, M., Elements of Software Science, N.%h
Holland, 1977. [USA871 Management Quality Insight, AFCSP 800-14 (U.S.
Air Force), 20 Enero, 1987.
[HEN811 Henry, S., y D. Kafura, <<SoftwareStructure Metrics
Based on information Flow,,, IEEE Trans. Software Engi- [ZUS90]Zuse, H., Software Complexity:Measures and Methods,
neering, vol. SE-7, n." 5, Septiembre 1981, pp. 510-518. DeGruyter, Nueva York, 1990.
[HET93] Hetzel, B., Making Software Measurement Work, [ZUS97] Zuse, H., A Framework of Software Measurement,
QED Publishing, 1993. DeGruyter, Nueva York, 1997.
19.1. La teoria de la medicidn es un tema avanzado que tie- 19.3.2., desarrolle cuentas primitivas para la mCtrica bang. jEl
ne una gran influencia en las mCtricas del software. Median- sistema SSRB es de dominio de funci6n o de datos?
te [FEN91], [ZUS90] y [KYB84] u otras fuentes, escriba una 19.6. Calcule el valor de la mCtrica bang usando las medidas
pequeiia redaccidn que recoja 10s principales principios de la que desarroll6 en el Problema 19.5.
teoria de la medici6n. Proyecto individual: Prepare una con-
ferencia sobre el tema y expdngala en clase. 19.7. Cree un modelo de diseiio completo para un sistema
propuesto por su profesor. Calcule la complejidad estructural
19.2. Los factores de calidad de McCall se desarrollaron y de datos usando las mCtricas descritas en la Secci6n 19.4.1.
durante 10s aiios setenta. Casi todos 10s aspectos de la infor- Calcule tambiCn las mCtricas de Henry-Kafura y de morfolo-
mktica han cambiado dramkticamente desde que se desarro- gia para el modelo de diseiio.
llaron, y sin embargo, 10s factores de McCall todavia se aplican
en el software modemo. jPuede sacar alguna conclusi6n basa- 19.8. Un sistema de informaci6n grande tiene 1.140 modu-
da en este hecho? 10s. Hay 96 modulos que realizan funciones de control y coor-
dinacibn, y 490 cuya funcidn depende de un proceso anterior.
19.3. Por quC no se puede desarrollar una unica mCtrica que El sistema procesa aproximadamente 220 objetos de datos con
lo abarque todo para la complejidad o calidad de un progra- una media de tres atributos por objeto de datos. Hay 140 ele-
ma? mentos de la base de datos dnicos y 90 segmentos de base de
19.4. Revise el modelo de anklisis que desarroll6 como par- datos diferentes. 600 m6dulos tienen un solo punto de entra-
te del Problema 12.13. Mediante las directrices de la Secci6n da y de salida. Calcule el ICDE del sistema.
19.3.1 ., desarrolle una estimacidn del ndmero de puntos fun- 19.9. Investigue el trabajo de Bieman y Ott PIE941 y desarro-
ci6n asociados con SSRB. lle un ejemplo completo que ilustre el cklculo de su mCtrica de
19.5. Revise el modelo de anklisis que desarroll6 como par- cohesi6n. Asegikse de indicar c6mo se determinan las porcio-
te del Problema 12.13. Mediante las directrices de la Secci6n nes de datos, seiiales de datos y sefiales de uni6n y ~upeIU~6n.
I N G E N ~ E R DEL
~ A SOFTWARE. UN ENFOQUE PRACTICO
19.10. Seleccione cinco mddulos existentes de un progra- 19.13. Desarrolle una pequefia herramienta de software que
ma de computadora. Mediante la metrica de Dhama descrita realice un analisis Halstead de un cddigo fuente de un lenguaje
en la Secci6n 19.4.2., calcule el valor de acoplamiento de de programacion a su elecci6n.
cada modulo. 19.14. Haga una investigation y escriba un documento sobre
la relacion entre las mCtricas de la calidad del software de Hals-
19.11. Desarrolle una herramienta de software que calcule
tead y la de McCabe (con respecto a la cuenta de errores). [,Son
la complejidad ciclomitica de un modulo de lenguaje de pro-
convincentes 10s datos? Recomiende unas directrices para la
gramaci6n. Elija el lenguaje. aplicacidn de estas metricas.
19.12. Desarrolle una herramienta de software que calcule 19.15. Investigue documentos recientes en busca de mCtri-
la conveniencia de la representaci6n de una IGU. Esa herra- cas especificamente disefiadas para el disefio de casos de prue-
mienta deberia permitirle asignar el coste de transici6n entre ba. Exponga 10s resultados en clase.
las entidades de la representaci6n. (Nota: fijese en que el tama- 19.16. Un sistema heredado tiene 940 modulos. La liltima
fio potencial del nlimero de las alternativas de representacidn version requiere el cambio de 90 de estos mbdulos. Ademas,
crece mucho a medida que aumenta el nlimero de posibles se aiiaden 40 m6dulos nuevos y se quitaron 12 m6dulos anti-
posiciones de cuadricula.) guos. Calcule el indice de madurez del software del sistema.
Sorprendentemente hay un gran nlimero de libros dedicados La teoria de la medicion del software la presentan Den-
a las metricas del software, aunque la mayoria est6n enfoca- vir, Herman, y Whitty en una colecci6n de documentos
dos a mCtricas de proceso y proyecto excluyendo las mCtri- (Proceedings of the International BCS-FACS Workshop:
cas tCcnicas. Zuse [ZUS97] ha escrito el mas completo tratado Formal Aspects of Measurement, Springer-Verlag, 1992).
de mCtricas tCcnicas publicado hasta la fecha. Shepperd (Foundations of Software Measurement, Prenti-
Los libros de Card y Glass [CAR90], Zuse [ZUS90], Fen- ce Hall, 1996) tambiCn tratan la teoria de la medicion en
ton [FEN91], Ejiogu [EJI91], Moeller y Paulish (MCmcas del detalle.
Software, Chapman & Hall, 1993) y Hetzel [HET93] son refe- Una relaci6n de docenas de usos de las mCtricas del soft-
rencias sobre las mCtricas tCcnicas en detalle. Ademas, mere- ware estin presentadas en [IEE94]. En general, una discu-
ce la pena examinar 10s siguientes libros: si6n de cada mCtrica ha sido reducida a lo esencial cdas
Conte, S.D.,H.E. Dunsrnore, y V.Y. Shen, Sofhvare Engineering Metrics primitivasn (medidas) requeridas para calcular las mCtricas
and Models, Benjarnin/Cumrnings, 1984. y las adecuadas relaciones a efectos de 10s cilculos. Un apCn-
Fenton, N.E., y S.L. Pfleeger, Sofhare Metrics: A Rigorous and Prac- dice del libro suministra mis informaci6n y referencias sobre
~icalApproach, 2.%d., PWS Publishing Co., 1998. el tema.
Grady, R.B. Practical Sofhvare Metrics for Project Manyement and Pro- Una amplia variedad de fuentes de informacion sobre
cess Inzprovement, Prentice Hall, 1992. metricas tCcnicas y elementos relacionados estin disponi-
Perlis, A., et al., Software Metrics: An Analysis and Evalua- bles en Internet. Una lista actualizada de referencias de pigi-
tion, MIT Press, 1981. nas web sobre mCtricas tCcnicas la puedes encontrar en
Sheppard, M., Sofnyare Engineering Metrics, McGraw-Hill, 1992. http://www.pressman5.com.
PARLTE
Q DEL SOFTWARE
ORIENTADA A OBJETOS
E
N esta parte'de Ingenierin del so@are: un enfoque practko considera-
mos 10s conceptos tecnicos, metodos y medidas aplicables al analisis,
disefio y pruebas de software orientado a objetos. En 10s siguientes capi-
tulos responderemos las siguientes preguntas:
Palabras c l a v e
atributos.. ......... .347
closes ..............346
encapsubdh ........346
estimadh 00.. .... .357
v IVIMOS en un mundo de objetos. Estos objetos existen en la naturaleza, en entidades
hechas por el hombre, en 10s negocios y en 10s productos que usamos. Pueden ser cla-
sificados, descritos, organizados, combinados, manipulados y creados. Por esto no es
sorprendente que se proponga una visi6n orientada a objetos para la creacidn de software de
computadora, una abstraction que modela el mundo de forma tal que nos ayuda a entenderlo y
gobernarlo mejor.
herencia ........... .348
La primera vez que se propuso un enfoque orientado a objetos para el desarrollo de softwa-
iecarquia de Joses ...349 re fue a finales de 10s afios sesenta. Sin embargo, las tecnologias de objetos han necesitado casi
mensaip ........... .347 veinte aiios para llegar a ser ampliamente usadas. Durante 10s aiios 90, la ingenieria del soft-
mitricas 00.. ...... 356 ware orientada a ob-ietos se conv-irti6 en el paradigma de elecci6n para much& productores de
modelo software y para un creciente numero de siskmas de informacidn iprofesionales de la ingenie-
de procesos 00.. .34 4-345 ria. A medida que pasa el tiempo, las tecnologias de objetos esthn sustituyendo a 10s enfoques
MPC para 00.......-355 clhsicos de desarrollo de software. Una pregunta importante es: iPor quC?
objetos ............ -346 La respuesta (como muchas otras respuestas a interrogantes sobre ingenieria del software)
operodones .........347 no es sencilla. Algunas personas argumentarian que 10s profesionales del software scncilla-
mente aioraban un nuevo enfoque, per0 esta visi6n es muy simplista. Las tecnologias de obje-
proceso
recursivo/parolelo ...355
to llevan un numero de beneficios inherentes que proporcionan ventajas a 10s niveles de direction
y tCcnico.
~ Q u es?
d Hay muchas formas de enlocar Esta importante caracteristica permi- del problema, el diseiio proporciona
un problema utilizando una solucidn te constmir clases de objetos e inhe- detalles sobre la arquitectura, las inter-
basada en el software. Un enfoque muy rentemente construir bibliotecas d e faces y 10s componentes, la imple-
utilizado e s la visi6n orientada a ob&- objetos y clases reutilizables. El para- mentacibn (utilizando un lenguaje
tos. El dominio del problema se caracte- digma de wientaci6n a objetos e s tan orientado a objetos) transfoxma el dise-
riza mediante un conjuntode objetoscan atractivo para tantas organizaciones iio e n cirdigo, y las pruebas chequean
crtributm y mmportamientos especificos. d e desarrollo d e software debido a tanto la arquitectura como las interfa-
Los objetm son manipulados mediante que la reutilizaci6n e s un atributo ces y los componentes.
una coleccidn de funciones (Ilamadas importantisimo en l a ingenierfa del &Cub1es el producto obtenido? Se
metodos, operaciones o servicios) y s e software. Ademas, 10s componentes produce un conjunto d e modelos orien-
cmmunican entre ellm mediante un pro- d e software derivados mediante el tados a objetos. Estos modelos descri-
tocolode mensajes. Los objetos se clasi- paradigma de objetos muestran carac- ben 10s requisitos, el disefio, el c6digo
fican medicmte clases y subclases. teristicas (como la independencia fun- y 10s procesos de pruebas para un sis-
&Quit511lo hace? La defjnici6n d e objetos clonal, la ocultacidn d e inlormacidn. tema o producto.
implica la description de atributos, com- etc.) asociadas con el software d e a h a iC6mo puedo esfar seguro de que
porlamientos, operaciones y mensajes. calidad. lo he hecho correctamente? En
Esta actividad la realiza un ingeniero &uales son 10s pasos? La ingenieria d a etapa s e revisa la claridad d e 10s
del software. del software orientado a objetos sigue productos de trabajo orientados a obje-
&Potqui e s importante? Un objeto 10s mismos pasos que el enfoque con- tos, su correccibn, complecl6n y con-
encapsula tanto datos como 10s pro- vencional. El analisis identiiica las cla- sistencia con loa requisitos del cIlente
cesos q u e s e aplican a esos datos. ses y objetos relevantes en el dominio y entre ellos.
fkii construir
I que dedicurse a
lU ~ l U ~ l U l l 1 U L 1 UXLUGllCIUI.
ll
Objeto: s i l l a
si no existen
Diseio 00
Programacion 00
. : .1 Dimensiones
Local izaci6n
I
FIGURA 20.1. E l m o d e l o d e p r o c e s o 00. FIGURA 20.2. H e r e n c i a d e c l a s e a o b j e t o .
C A P ~ T U L O20 CONCEPTOS Y PRINCIPIOS ORIENTADOS A OBlETOS
buscan en una biblioteca (de clases 00 existentes) antes La vision orientada a objetos demanda un enfoque
. de construirse. Cuando una clase no puede encontrarse evolutivo de la ingenieria del software. Como veremos
en la biblioteca, el desarrollador de software aplica an& a travCs de este y 10s pr6ximos capitulos, sera extrema-
lisis orientado a objetos (AOO), disefio orientado a obje- damente dificil definir las clases necesarias para un gran
tos (DOO), programaci6n orientada a objetos (POO) y sistema o product0 en una sola iteracci6n. A medida que
pruebas orientadas a objetos (PROO) para crear la cla- el analisis 00 y 10s modelos de disefio evolucionan, se
se y 10s objetos derivados de la clase. La nueva clase se hace patente la necesidad de clases adicionales. Es por
pone en la biblioteca de tal manera que pueda ser reu- esta raz6n por lo que el paradigma arriba descrito fun-
tilizada en el futuro. ciona mejor para la 0 0 .
\
lnstancias d e silla
Subclases de la
superclase mobiliario
Cada una de las operaciones encapsuladas por un
objeto proporciona una representaci6n de uno de 10s
comportamientos del objeto. Por ejemplo, la opera-
FIGURA 20.5. Una jerarquia de clases. ci6n Dere~.rninu~Color para el objeto Coche extraerii
el color almacenado en el atributo color. La conse-
La ccrelaci6nn binaria anteriormente setialada impli- cuencia de la existencia de esta operaci6n e s que la
ca que un atributo puede tomar un valor definido por un clase Coche ha sido diseiiada para recibir un estimu-
dominio enumerado. En la mayoria de 10s casos, un lo [JAC92] (Ilamaremos a1 estimulo nzensuje) que
dominio es simplemente un conjunto de valores espe- requiere el color de una instancia particular de una cla-
cificos. Por ejemplo, suponga que una clase Coche tie- se. Cada vez que un objeto recibe un estimulo, kste ini-
ne un atributo color. El dominio de valores de color es cia un cierto comportamiento, que puede ser tan simple
(blanco, negro, plata, gris, azul, rojo, amarillo, ver- como determinar el color del coche o tan complejo
de). En situaciones miis complejas, el dominio puede como la iniciaci6n de una cadena de estimulos que se
ser un conjunto de clases. Continuando el ejemplo, la pasan entre una variedad de objetos diferentes. En este
clase Coche tambikn tiene un atributo motor que abar- ultimo caso, considere un ejemplo en el cual el esti-
ca 10s siguientes valores de dominio: { 16 valvulas mulo inicial recibido por el objeto n." da lugar a una
opci6n economica, 16 valvulas opcion deportiva, 24 generacion de otros dos estimulos que se envian a1
vhlvulas opcion deportiva, 32 valvulas opcion de objeto n." 2 y a1 objeto n.", Las operaciones encap-
lujo}. Cada una de las opciones indicadas tiene un con- suladas por el segundo y tercer objetos actljan sobre
junto de atributos especificos. el eslimulo devolviendo informaci6n necesaria para el
primer objeto. El objeto n." 1 usa entonces la infor-
maci6n devuelta para satisfacer el comportamiento
CLAVE demandado por el estimulo inicial.
10s valores asignados a 10s atributos de un obieto hacen
a ese objeto ser h i t o . 20.2.4. Mensajes
Los mensajes son el medio a travQ del cual interacttian
10s objetos. Usando la terminologia presentada en la sec-
Las caracteristicas (valores del dominio) pueden ci6n precedente, un mensaje estimula la ocurrencia de
aumentarse asignando un valor por defecto (caracte- cierto comportamiento en el objeto receptor. El compor-
ristica) a un atributo. Por ejemplo, el atributo motor tamiento se realiza cuando se ejecuta una operaci6n.
I Usaremos aqui el termino operaciones, pero mktodos y servicios
son igualmente populares.
lNGEN1EFtfA DEL SOFTWARE. UN ENFOQUE PRACTICO
(parametros)
valor
de retorno
Receptor.operacion
(parametros) Objeto
Valor
receptor de retorno
implementados para X e s t h inmediatamente disponi- nueva clase. Como sefiala Jacobson, cuando se emplea la
bles para Y (no es necesario mas trabajo extra). La reu- anulacidn, <<laherencia no es transitiva,, [JAC92].
tilizacidn se realiza directamente. En algunos casos, es tentador heredar algunos atributos
Cualquier cambio en 10s datos u operaciones conte- y operaciones de una clase y otros de o m clase. Esta acci6n
nidas dentro de una superclase es heredado inmediata- se llama herencia mliltiple y es controvertida. En general,
mente por todas las subclases que se derivan de la la herencia multiple complica la jerarquia de clases y crea
superclase2.Debido a esto, la jerarquia de clases se con- problemas potenciales en el control de la configuration
vierte en un mecanismo a travCs del cual 10s cambios (Capitulo 9). Como las secuencias de herencia matiple son
(a altos niveles) pueden propagarse inmediatamente a m b dificiles de seguir, 10s cambios en la definici6n de una
travCs de todo el sistema. clase que reside en la parte superior de la jerarquia pueden
Es importante destacar que en cada nivel de la jerar- tener impactos no deseados originalrnente en las clases defi-
quia de clases, pueden aiiadirse nuevos atributos y ope- nidas en zonas inferiores de la arquitectura.
raciones a aquellos que han sido heredados de niveles
superiores de la jerarquia. De hecho, cada vez que se
debe crear una nueva clase, el ingeniero del software
tiene varias opciones:
La clase puede diseiiarse y construirse de la nada.
Esto es, no se usa la herencia.
La jerarquia de clases puede ser rastreada para deter-
minx si una clase ascendiente contiene la mayoria
de 10s atributos y operaciones requeridas. La nueva
clase hereda de su clase ascendiente, y pueden aiia-
dirse otros elementos si hacen falta.
La jerarquia de clases puede reestructurarse de tal
manera que 10s atributos y operaciones requeridos
puedan ser heredados por la nueva clase.
Las caracteristicas de una clase existente pueden
sobrescribirse y se pueden implementar versiones pri-
vadas de atributos u operaciones para la nueva clase.
A veces se emplean 10sterminos descendiente y antecesor UAC92] En este ejemplo llamaremos caracteristica tanto a 10s atributos como
en lugar de subclase y superclase. a las operaciones.
I N G E N I E R ~ ADEL SOFTWARE. U N E N F O Q U E PRACTICO
tener la cohesidn entre m6dulos), seria necesario desa- dibujar. Pero no se requieren cambios dentro de un obje-
,rrollar m6dulos de dibujo para cada t i p de grhfico. Seg6n to que quiere dibujar un grhfico pues el mensaje
esto, dentro del disefio para cada tip0 de grifico, se debe- tipo-grafico dibujar no cambia. En resumen, el poli-
rh aiiadir una 16gica de control semejante a la siguiente: morfismo permite que un n6mero de operaciones dife-
case of tipo-grafico: rentes tengan el mismo nombre. Esto reduce el
if tipo-grafico = grafico-linea then acoplamiento entre objetos, haciendo a cada uno mhs
Dibu jarLinea (datos); independiente.
if tipo-grafico = grafico-tarta then
DibujarTarta(dat0s);
if tipo-grafico = grafico-histograma
then DibujarHisto(dat0s);
if tipo-grafico = grafico-kiviat then
DibujarKiviat (datos);
end case;
Aunque este disefio es razonablemente evidente, aiia-
dir nuevos tipos de grhficos puede ser complicado, pues
hay que crear un nuevo m6dulo de dibujo para cada tipo
de grhfico y actualizar la 16gica de control para cada
grhfico.
Para resolver este problema, cada uno de 10s grhfi-
cos mencionados anteriormente se convierte en una sub-
clase de una clase general llamada Grafico. Usando un
concept0 llamado sobrecarga [TAY90], cada subclase
define una operaci6n llamada dibujar. Un objeto pue-
de enviar un mensaje dibujar a cualquiera de 10s obje-
tos instanciados de cualquiera de las subclases. El objeto
que recibe el mensaje invocarh su propia operaci6n dibu-
jar para crear el grhfico apropiado. Por esto, el disefio
mostrado anteriormente se reduce a:
tipo-grafico dibujar
Cuando hay que aiiadir un nuevo tipo de grhfico a1
sistema, se crea una subclase con su propia operaci6n FIGURA 20.8b. Jerarquia de clases reestructurada.
Cste formara parte del espacio de soluci6n; en caso de La clasificaci6n mostrada anteriormente es una de
. que el objeto se necesite solamente para describir una las muchas que se han propuesto en la literatura.
soluci6n, Cste forma parte del espacio del problema. TambiCn es importante destacar quC no son 10s obje-
Pero, iquC debemos buscar una vez que se han aislado tos. En general, un objeto nunca debe tener un mom-
todos 10s nombres? bre procedimental imperativon [CAS89]. Por ejemplo,
si 10s desarrolladores de un software para un sistema
grafico mCdico definieron un objeto con el nombre
~ C i m oidentificar objetos inversion de imagen, estm'an cometiendo un sutil error.
cuando estudio cimo La imagen obtenida por el software pudiera ser, en efec-
resolver un problema? to, un objeto (es un elemento que forma parte del domi-
nio de informaci6n), per0 la inversi6n de la imagen es
Los objetos se manifiestan de alguna de las formas una operacidn que se aplica a dicho objeto. Inversidn
mostradas en la Figura 20.9. y pueden ser: debe definirse como una operaci6n del objeto imagen,
entidadcs externas (por ejemplo: otros sistemas, dis- per0 no como objeto separado que signifique <<inver-
positivos, personas) que producen o consumen infor- sion de imagenn. Como establece Cashman [CAS89],
macidn a usar por un sistemas computacional; <<...elobjetivo de la orientaci6n a objetos es encapsular,
cosas (por ejemplo: informes, presentaciones, car- per0 manteniendo separados 10s datos y las operacio-
tas, seiiales) que son parte del dominio de informa- nes sobre estos datow.
cion del problema; Para ilustrar c6mo pueden definirse 10s objetos duran-
te las primeras etapas del analisis, volvamos a1 ejemplo
ocurrencias o sucesos5 (por ejemplo: una transfe-
del sistema de seguridad HogarSeguro. En el Capitulo
rencia de propiedad o la terminaci6n de una serie de 12, realizamos un <<anAlisissintactico gramaticaln sobre
movimientos en un robot) que ocurren dentro del la narrativa de procesamiento para el sistema Hogar-
contexto de una operacidn del sistema; Seguro. La narrativa de procesamiento se reproduce a
papeles o roles (por ejemplo: director, ingeniero, ven- continuaci6n:
dedor) desempeiiados por personas que interacttian El software HogarSeguro le permite a1 propietario de la
con el sistema; casa configurar el sistema de seguridad una vez que este se
unidades organizacionales (por ejemplo: divisi611, instala, controla todos 10s sensores conectados a1 sistema de
grupo, equipo) que son relevantes en una aplicacibn; seguridad, e interactlia con el propietario a traves de un tecla-
do numerico y teclas de funci6n contenidas en el panel de
lugares (por ejemplo: planta de producci6n o mue- control de HogarSeguro mostrado en la Figura 11.2
lle de carga) que establecen el contexto del problema Durante la instalacih, el panel de control de HogarSe-
y la funcion general del sistema; guro se usa para ccprogramar, y configurar el sistema. A cada
estructuras (por ejemplo: sensores, vehiculos de cua- sensor se le asigna un nlimero y tipo, se programa una con-
tro ruedas o computadoras) que definen una clase de trasefia maestra para activar y desactivar el sistema, y se intro-
objetos o, en casos extremos, clases relacionadas de ducen nlimeros de telefono a marcar cuando un sensor detecte
un suceso.
objetos.
Cuando se reconoce un suceso de sensor, el software invo-
ca una alarma audible asociada a1 sistema. DespuCs de un
tiempo de espera especificado por el propietario durante las
actividades de configuracidn del sistema, el software marca
un nlimero de telefono de un servicio de control, proporcio-
na informacidn acerca de la localizaci6n, e informa de la
naturaleza del suceso detectado. El nhmero sera remarcado
cada 20 segundos hasta obtener una conexi6n telefhica.
Toda la interaccidn con HogarSeguro esta gestionada por
un subsistema de interaccidn con el usuario que toma la entra-
da a partir del teclado numerico y teclas de funcibn, y mues-
tra mensajes y el estado del sistema en la pantalla LCD. La
interacci6n con el teclado toma la siguiente forma ...
351
DEL SOFTWARE.U N ENFOQUE PRACTICO
INGENIER~A
Extrayendo 10s nombres podemos proponer varios Atributos comunes: puede definirse un conjunto de
.objetos potenciales: atributos para el objeto potencial, 10s cuales son apli-
cables a todas las ocurrencias del objeto.
Clase / Clasificaci6n Operaciones comunes: puede definirse un conjunto
Objeto potencial general de operaciones para el objeto potencial, las cuales
propietario rol o
son aplicables a todas las ocurrencias del objeto;
entidad externa Requisitos esenciales: entidades externas que apa-
sensor entidad externa recen en el espacio del problema y producen o con-
sumen informaci6n esencial para la producci6n de
panel de control entidad externa
cualquier solucion para el sistema, seran casi siem-
instalaci6n ocurrencia pre definidas como objetos en el modelo de requi-
sistema cosa sitos.
(alias sistema
de seguridad)
numero, tipo no son objetos.
sin0 atributos de
sensor
cont raseiia Un obieto potenciol debe sotisfocer lo rnoyorio de estos
maestra cosa corocteristicos poro utilizorlo en el rnodelo de onolisis.
nfimero
de teldfono cosa
Para ser considerado un objeto valido a incluir en
suceso de sensor
ocurrencia
modelo de requisitos, un objeto potencial debe satis-
alarma audible facer todas (o casi todas) las caracteristicas anterio-
entidad externa res. La decision de incluir objetos potenciales en el
servicio
de control unidad organizacio- modelo de analisis es algo subjetivo, y una evalua-
nal o entidad ci6n posterior puede llegar a descartar un objeto o
reincluirlo. Sin embargo, el primer paso del A 0 0 debe
La lista anterior se continuara hasta que se hayan ser la definici6n de objetos, y la consiguiente toma de
considerado todos 10s nombres de la descripci6n del decisiones (incluso subjetivas). Teniendo esto en cuen-
proceso. Observe que hemos llamado a cada entrada en ta, aplicamos las caracteristicas selectivas a la lista de
la lista un objeto potencial. Debemos considerar cada objetos potenciales de HogarSeguro (vCase tabla a
uno de ellos antes de tomar una decision final.
Debe tenerse en cuenta que: (1) la lista anterior no informacih del sensor = tipo de sensor
incluye todo, hay que aiiadir objetos adicionales para com- + nfimero de sensor + umbra1 de alarma
pletar el modelo; (2) algunos de 10s objetos potenciales informacih de respuesta de la alarma =
rechazados s e r h atributos de 10s objetos aceptados (por tiempo de retardo + nfimero de tel6fono
ejemplo, ndmero y tip0 son atributos de sensor, y con- + tipo de alarma
trasefia maestra y ndmero de telCfono pueden convertir- informaci6n de activaci6n/desactivaci6n
se en atributos de sistema); y (3) diferentes descripciones = contraseiia maestra + cantidad de
del problema pueden provocar la toma de diferentes deci- intentos permitidos + contrasefia tempo-
ral
siones de <<aceptaci6no rechazo>>(por ejemplo, si cada
propietario tiene su propia contrasefia o fue identificado informaci6n de identificaci6n = ID del
sistema + verificaci6n de nfimero de tel6-
por impresiones de voz, el objeto Propietario cumplin'a fono + estado del sistema
las caracteristicas 1 y 2 y habria sido aceptado).
Cada uno de 10s elementos de datos a la derecha del
20.3.2. Especificaci6n d e atributos signo de igualdad puede volver a definirse en un nivel
elemental, per0 para nuestros prop6sitos, comprenden
Los atributos describen un objeto que ha sido seleccio- una lista razonable de atributos para el objeto sistema
nado para ser incluido en el modelo de anilisis. En esen- (porcibn sombreada de la Fig. 20.10).
cia, son 10s atributos 10s que definen a1 objeto, 10s que
clarifican lo que se representa el objeto en el contexto del
20.3.3. Definici6n d e operaciones
espacio del problema. Por ejemplo, si tratArarnos de cons-
truir un sistema de estadisticas para jugadores profesio- Las operaciones definen el comportarniento de un obje-
nales de bCisbol, 10s atributos del objeto Jugador serian to y cambian, de alguna manera, 10s atributos de dicho
muy diferentes de 10s atributos del mismo objeto cuando objeto. Mis concretamente, una operacidn cambia valo-
se use dentro del contexto de un sistema de pensiones para res de uno o mis atributos contenidos en el objeto. Por
jugadores profesionales. En el primero, atributos tales lo tanto, una operacidn debe tener ccconocimiento>> de
como nombre, posicibn, promedio de bateo, porcentaje la naturaleza de 10s atributos de 10s objetos y deben ser
de estancia en el campo de juego, aiios jugados y parti- implementadas de manera tal que le permita manipular
dos jugados pueden ser relevantes. En el segundo caso, las estructuras de datos derivadas de dichos atributos.
algunos de estos atributos serian relevantes pero otros seri- Aunque existen muchos tipos diferentes de opera-
an reemplazados (o potenciados) por atributos como sala- ciones, Cstas pueden clasificarse en tres grandes cate-
no medio, crCdito total, opciones elegidas para el plan de gorias: (1) operaciones que manipulan, de alguna
pensibn, direccidn postal, etc. manera, datos (p.e.: afiadiendo, eliminando, reforma-
Para desarrollar un conjunto significativo de atributos teando, seleccionando); (2) operaciones que realizan
para un objeto, el analista puede estudiar de nuevo la narra- alglin cilculo; y (3) operaciones que monitorizan un
tiva del proceso (o descripcidn del h b i t o del alcance) objeto frente a la ocurrencia de un suceso de control.
para el problema y seleccionar aquellos elementos que
razonablemente ccpertenecen,, a1 objeto. Ademis, para ~Existealguna forma
cada objeto debe responderse el siguiente interrogante: razonable de tategorizar
<<iQuC elementos (compuestos y/o simples) definen com- las operationes de un objeto?
pletamente a1 objeto en el contexto del problema actual?*
En una primera iteracidn para obtener un conjunto de
g operaciones para 10s objetos del modelo de andisis, el
analista puede estudiar de nuevo la narrativa del proce-
CLAVE so (o descripci6n del imbito) del problema y seleccio-
10s otributos se escogen exominondo el problemo, nar aquellas operaciones que razonablemente pertenecen
buscondo cosos que definon completomente 10s obietos a1 objeto. Para realizar esto, se estudia de nuevo el ani-
y que 10s hocen hicos. lisis gramatical y se aislan 10s verbos. Algunos de estos
verbos serin operaciones legitimas y pueden conectar-
Para ilustrar esto, consideremos el objeto Sistema se ficilmente a un objeto especifico. Por ejemplo, de la
definido para HogarSeguro. Anteriormente ya indica- narrativa de proceso de HogarSeguro, presentada ante-
mos que el propietario puede configurar el sistema de riormente en este capitulo, vemos que ccal sensor se le
seguridad para reflejar la informacidn acerca de 10s sen- asigna un ndmero y un tipo>>o que <<seprograma una
sores, sobre la respuesta de la alarma, sobre la activa- contraseha maestra para activar y desactivar el sistema,,.
ci6n/desactivaci6n, sobre identificacibn, etc. Usando la Estas dos frases indican varias cosas:
notaci6n de la descripci6n del contenido definida para que una operaci6n de asignaci6n es relevante para
el diccionario de datos y presentada en el Capitulo 12, el objeto Sensor;
podriamos representar estos elementos de datos com- que una operaci6n de programar se le aplicari a1
puestos de la siguiente manera: objeto Sistema;
INGENlERfA DEL SOFTWARE. UN ENFOQUE PRACTICO
que activar y desacrivar son operaciones aplicables 20.3.4. Fin de la definicion del objeto
a1 Sistema (o sea que el estado del sistema puede La definicion de operaciones es el ultimo paso para
en ultima instancia definirse usando notacion del dic- completar la especificacion del objeto. En la Seccion
cionario de datos) como 20.3.3. las operaciones se eligieron a partir de un exa-
estado del sistema = [activado I desacti- men gramatical de la narrativa de proceso del sistema.
vado I Las operaciones adicionales pueden determinarse con-
Tras una investigaci6n mas detallada, es probable siderando la <<historiade la vida>>[COA91] de un obje-
que haya que dividir la operacion programar en varias to y 10s mensajes que se pasan entre objetos definidos
suboperaciones mas especificas requeridas para con- por el sistema.
figurar el sistema. Por ejemplo, programar implica La historia de la vida genCrica de un objeto puede
especificar numeros de telCfonos, configurar carac- definirse reconociendo que dicho objeto debe ser crea-
teristicas del sistema (por ejemplo, crear la tabla de do, modificado, manipulado o leido de manera diferen-
sensores, introducir las caracteristicas de las alar- te, y posiblemente borrado. Para el objeto Sistema, esto
mas), e introducir la(s) contrasefia(s), per0 por aho- puede expandirse para reflejar actividades conocidas que
ra, especificaremos programar como una operacion ocurren durante su vida (en este caso, durante el tiempo
que HogarSeguro se mantiene operativo). Algunas de
las operaciones pueden determinarse a partir de comu-
nicaciones semejantes entre objetos. Por ejemplo, el
Sistema Suceso sensor enviara un mensaje a Sistema para mos-
trar en pantalla la localizacion y numero del suceso; el
ID del sistema Panel de control enviari un mensaje de reinicializacibn
N h e r o de tel6fono de verificacih para actualizar el estado del Sistema (un atributo); la
Estado del sistema
Tabla de sensores
Alarma audible enviara un mensaje de consults, el
Tipo de sensor Panel de control enviara un mensaje de rnodificacibn
Niunero de sensor para cambiar uno o mis atributos sin reconfigurar el obje-
Umbra1 de alarma to sistema por completo; el Suceso sensor enviara un
Contrasefia maestra
Contrasefia temporal
mensaje para llamar a1 numero(s) de telCfono(s) conte-
N h e r o de intentos nido(s) en el objeto. Podran considerarse otros mensa-
jes para derivar operaciones correspondientes. La
definicion del objeto resultante se muestra en la Figura
Programar ( ) 20.10.
Mostrar ( )
Reiniciar ( )
Se usaria un enfoque similar para cada uno de 10s
Consultar ( ) objetos definidos para HogarSeguro. Despds de haber
Modificar ( ) definido 10s atributos y operaciones para todos 10s obje-
Llamar ( ) tos especificados hasta este punto, se crearian 10s ini-
cios del modelo AOO. En el Capitulo 21 se presenta un
FIGURA 20.10. El objeto sistema con operaciones estudio mhs detallado del modelo de analisis creado
asociadas. como parte del AOO.
Como examinamos en la Parte Primera y Segunda de 6. Seguimiento, monitorizaci6n y control del progreso.
este libro, la moderna gesti6n de proyectos de softwa-
re puede subdividirse en las siguientes actividades:
1. Establecimiento de un marco de proceso comlin
para el proyecto. Los proyectos 00 requieren mucho mbs gestibn
de lo plonificocibn y seguimiento que 10s proyertos
2. Uso del marco y de mCtricas historicas para desa- de softwore convencionol. No supongo que lo 00
rrollar estimaciones de esfuerzo y tiempo. le relevo de esto octividod.
3. Especificaci6n de productos de trabajo e hitos que
permitiran medir el progreso. El director tCcnico que se enfrenta con un proyecto
de software orientado a objetos aplica estas seis activi-
4. Definici6n de puntos de comprobaci6n para la gesti6n dades. Pero debido a la naturaleza unica del software
de riesgos, aseguramiento de la calidad y control. orientado a objetos, cada una de estas actividades de
5. Gesti6n de 10s cambios que ocurren invariable- gesti6n tiene un matiz levemente diferente y debe ser
mente a1 progresar el proyecto. enfocado usando un modelo propio.
CAPITULO 20 CONCEPTOS Y PRINClPlOS ORIENTADOS A OBJETOS
En las secciones que siguen, exploramos el area de Ensamblar un nuevo prototipo usando objetos de la
gesti6n de proyectos orientados a objetos. Los princi- biblioteca y 10s objetos que se crearon nuevos.
pios de gesti6n fundamentales seran 10s mismos, per0 Realizar pruebas para descubrir errores en el proto-
para que un proyecto 00 sea dirigido correctamente tipo.
hay que adaptar la tCcnica.
Obtener realimentacidn del cliente sobre el proto-
tipo.
Este enfoque continua hasta que el prototipo evolu-
Referencia web/ ' ciona hacia una aplicacion en produccion.
Enconhoro un tutoriol muy completo sobre gestibn
de proyectos 00 y un buen coniunto de enloces en: ~ C O aplicar
~ O un modelo
mini.net/cetus/oogroject-mngt.html. recursivo/paralelo en la
ingenieria del software OO?
Revision y refinamiento
Primeras iteraciones
en analisis/disefio
1 Revision y refinamiento
I
1 Revision y iefinamiento
Cada iteracion del proceso recursivo/paralelo requie- que el objetivo principal es la reutilizaci6n. Las estima-
re planificacih, ingenieria (analisis, disefio, extraccion ciones a partir de PF pueden usarse de manera efectiva,
de clases, prototipado y pruebas) y actividades de eva- pues 10s elementos del dominio de informaci6n requeri-
luaci6n (Fig. 20.11). Durante la planificaci6n, las activi- dos se pueden determinar a partir del planteamiento del
dades asociadas con cada una de las componentes problema. El analisis de PF puede aportar valores para
independientes del programa son incluidas en la planifi- estimaciones en proyectos 0 0 , per0 la medida de PF no
cacion. [Nota: Con cada iteracion se ajusta la agenda para provee una granularidad suficiente para ajustes de plani-
acomodar 10s carnbios asociados con la iteracidn prece- ficacion y esfueno a realizar, 10s cuales se requieren cuan-
dente]. Durante las primeras etapas del proceso de inge- do iteramos a travCs del paradigma recursivo/paralelo.
nieria, el anhlisis y el disefio se realizan iterativamente. Lorenz y Kidd [LOR941 sugieren el siguiente con-
La intenci6n es identificar todos 10s elementos importan- junto de mCtricas para proyectos6:
tes del analisis 00 y de 10s modelos de disefio. A1 conti-
nuar el trabajo de ingenieria, se producen versiones Numero de guiones de escenario. Un guibn de
escenario (como 10s casos de uso discutidos en el
incrementales del software. Durante la evaluaci6n se rea-
lizan, para cada incremento, revisiones, evaluaciones del Capitulo I 1) es una secuencia detallada de pasos que
describen la interacci6n entre el usuario y la aplica-
cliente y pruebas, las cuales producen una realimentacion
ci6n. Cada gui6n se organiza en tripletes de la forma:
que afecta a la siguiente actividad de planificaci6n y a1
subsiguiente incremento. (iniciador, accibn, participante)
donde iniciador es el objeto que solicita algun ser-
20.4.2. Metricas y estimacion en proyectos vicio (que inicia un mensaje); accibn es el resultado
orientados a objetos de la solicitud; y participante es el objeto servidor
Las tkcnicas de estimaci6n en proyectos de software con- que cumple la peticion (solicitud). El numero de guio-
vencionales requieren estimaciones de lineas de codigo nes de actuaci6n esth directamente relacionada a1
(LDC) o puntos de funci6n (PF) como controlador prin- tamafio de la aplicacion y a1 nhnero de casos de prue-
cipal de estimacion. Las estimaciones realizadas a partir ba que se deben desarrollar para ejercitar el sistema
de LDC tienen poco sentido en proyectos 00 debido a una vez construido.
trabajo del proceso. Lorenz y Kidd sugieren un conjunto Se ha creado y revisado un modelo de comporta-
de mCtricas que pueden ayudar durante esta planifica- miento (Capitulo 2 1).
ci6n del proyecto: Se han marcado clases reutilizables.
Numero de iteraciones principales. Recor-
dando el modelo en espiral (Capitulo 2), una ite- Hito tbcnico: diseiio 00 terminado
raci6n principal corresponderh a un recorrido de Se ha definido y revisado el conjunto de subsistemas
360 grados de la espiral. El modelo de proceso (Capitulo 22).
recursivo/paralelo engendrari un numero de mini- Las clases se han asignado a subsistemas y han sido
espirales (iteraciones localizadas) que suceden
durante el progreso de la iteraci6n principal. Lorenz revisadas.
y Kidd sugieren que las iteraciones de entre 2.5 y Se ha establecido y revisado la asignaci6n de tareas.
4 meses de duraci6n son m8s fhciles de seguir y Se han identificado responsabilidades y colabora-
gestionar. ciones (Capitulo 22).
Numero de contratos completos. Un contrato Se han disefiado y revisado 10s atributos y operaciones.
es <<ungrupo de responsabilidades publicas rela-
Se ha creado y revisado el modelo de paso de men-
cionadas que 10s subsistemas y las clases propor-
cionan a sus clientew [LOR94]. Un contrato es un sajes.
hito excelente, y deberia asociarse a1 menos un con- Hito tbcnico: programacidn 00 terminada
trato a cada iteracibn del proyecto. Un jefe de pro-
yecto puede usar contratos completos como un Cada nueva clase ha sido implementada en c6digo a
buen indicador del plogreso en un proyecto 00. partir del modelo de disefio.
Las clases extraidas (de una biblioteca de reutiliza-
ci6n) se han integrado.
20.4.4. Seguimiento del progreso e n un pro-
Se ha constmido un prototipo o incremento.
yecto orientado a objetos
Aunque el modelo de proceso recursivo/paralelo es el Hito tbcnico: prueba 00
mejor marco de trabajo para un proyecto 00, el para- Han sido revisadas la correcci6n y compleci6n del
lelismo de tareas dificulta el seguimiento del proyec-
anhlisis 00 y del modelo de disefio.
to. El jefe del proyecto puede tener dificultades
estableciendo hitos significativos en un proyecto 00 Se ha desarrollado y revisado una red de clases-
debido a que siempre hay un cierto numero de cosas responsabilidades+olaboraciones (Capitulo 23).
ocurriendo a la vez. En general, 10s siguientes hitos Se han disefiado casos de pmeba y ejecutado pme-
principales pueden considerarse <<completados>> a1 bas a1 nivel de clases para cada clase (Capitulo 23).
cumplirse 10s criterios mostrados: Se han disefiado casos de pmeba y completado pme-
bas de agmpamientos (Capitulo 23) y las clases se
Hito tbcnico: analisis 00 terminado han integrado.
Todas las clases, y la jerarquia de clases, estin defi- Se han terminado las pmebas del sistema.
nidas y revisadas.
Recordando el modelo de proceso recursivo/parale-
Se han definido y revisado 10s atributos de clase y
lo examinado anteriormente en este capitulo, es impor-
las operaciones asociadas a una clase. tante destacar que cada uno de estos hitos puede ser
Se han establecido y revisado las relaciones entre revisado nuevamente a1 entregar diferentes incremen-
clases (Capitulo 21). tos a1 usuario.
Las tecnologias de objetos reflejan una visi6n natu- sentados como objetos. Es importante destacar que
ral del mundo. Los objetos se clasifican en clases y 10s objetos (y las clases de las que se derivan) encap-
las clases se organizan en jerarquias. Cada clase con- sulan datos y procesos. Las operaciones de procesa-
tiene un conjunto de atributos que la describen y un miento son parte del objeto y se inician a1 pasarle un
conjunto de operaciones que define su comporta- mensaje a1 objeto. Una definici6n de clase, una vez
miento. Los objetos modelan casi todos 10s aspectos definida, constituye la base para la reutilizaci6n en
identificables del dominio del problema: entidades 10s niveles de modelado, disefio e implementaci6n.
externas, cosas, ocurrencias, roles, unidades organi- Los objetos nuevos pueden ser instaciados a partir
zacionales, lugares y estructuras pueden ser repre- de una clase.
C A P ~ T U L O20 C O N C E P T O S Y PRINCIPIOS ORIENTADOS A OBIETOS
Tres conceptos importantes diferencian el enfoque 00 de lineas de codigo necesarias para implementar un sis-
de la ingenieria del software convencional. El encapsu- tema y facilita 10s cambios en caso de que se produzcan.
lamiento empaqueta datos y las operaciones que mane- Los productos y sistemas orientados a objetos se pro-
jan esos datos. La herencia permite que 10s atributos y ducen usando un modelo evolutivo, a veces llamado
operaciones de una clase puedan ser heredados por todas recursivo/paralelo. El software orientado a objetos evo-
las clases y objetos que se instancian de ella. El poli- luciona iterativamente y debe dirigirse teniendo en cuen-
morfismo permite que una cantidad de operaciones dife- ta que el product0 final se desarrollara a partir de una
rentes posean el mismo nombre, reduciendo la cantidad serie de incrementos.
[BOO861 Booch, G., <<Object-OrientedDevelopmentw, IEEE [EVB89] Object-Oriented Requirements Analysis (course
Trans. Software Engineering, Ibl. SE-12, Febrero 1986, notebook), EVB Software Engineering, Inc., Frederick,
pp. 21 1 y ss. MD. 1989.
[BOO911 Booch, G., Object-Oriented Design, Benjamin- [JAC92]Jacobson, I., Object-Oriented Software Engineering,
Cummings, 1991. Addison-Wesley, 1992.
[BUD961 Budd, T., An introduction to Object-Oriented Pro- [LOR941 Lorenz, M., y Kidd, J., Object-Oriented Software
gramming, 2.a ed., Addison-Wesley, 1996. Metrics, Prentice-Hall, 1994.
[CHA93] Charnpeaux, D. de D. Lea, y P. Faure, Object-Orien- [TAY90]Taylor, D.A., Object-Oriented Technology:A Mana-
ted System Development, Addison-Wesley, 1993. ger S Guide, Addison-Wesley, 1990.
20.1. La ingenieria del software orientada a objetos e s d reem- 20.6. Considere la tipica interfaz grifica de usuario (IGU).
plazando ripidamente a 10s enfoques de desarrollo de soft- Defina un conjunto de clases y subclases para las enti-
ware tradicionales. Como todas las tecnologias, la orientation dades de la interfaz que aparecen generalmente en una
a objetos tambiCn tiene sus fallos. Utilizando Internet y otras IGU. Asegurese de definir 10s atributos y operaciones
fuentes de bibliografia mis tradicionales, escriba un breve apropiadas.
articulo que resuma lo que 10s criticos dicen sobre la 00 y
por quC creen que hay que tener cuidado a1 aplicar el para- 20.7. Detalle 10s objetos que aparecerian en un sistema de
digma de objetos. reserva de aulas de lectura en una universidad o colegio.
~ C u i l e sserian sus atributos?
20.2. En este capitulo no hemos considerado el caso en el que
un nuevo objeto necesita un atributo u operacion que no esti 20.8. Le ha sido asignada la tarea de ingenieria de un nue-
contenido en la clase de la que hereda el resto de atributos y vo programa de procesamiento de textos. Se ha identifi-
operaciones. iC6m0 Cree que se manejaria esta situation? cad0 una clase llamada documento. Defina 10s atributos
y operaciones relevantes de dicha clase.
20.3. Detalle 10s objetos que participarian en un sistema
de reservas de vuelos. iCuiles serian sus atributos? 20.9. Investigue dos lenguajes de programacion 00 dife-
20.4. Utilizando sus propias palabras y algunos ejemplos defina rentes y muestre la implementation de 10s mensajes en la
10s tCrminos clase, encapsulamiento, herencia y polimorfismo. sintaxis de cada uno de ellos. Ponga ejemplos.
20.5. Revise 10s objetos definidos en el sistema HogarSe- 20.10. Ponga un ejemplo concreto de reestructuracidn de
guro. j,Cree que hay otros objetos que deban ser definidos jerarquia de clases tal y como aparece en la discusion de
como principio del modelado? la Figura 20.8.
INGENIERiA DEL SOFTWARE. UN ENFOQUE PRACTICO
20.11. Ponga un ejemplo de herencia multiple. Investigue la Secci6n 20.3.1 para determinar quC clases debenan estar
algunos articulos sobre el tema y extraiga 10s pros y 10s en el modelo de anilisis.
contras.
20.13. Describa con sus propias palabras por quC el mode-
20.12. Escriba un enunciado para un sistema que le pro- lo recursivo/paralelo es apropiado en 10s sistemas 00.
porcione su profesor. Utilice el analizador sintictico gra-
matical para identificar clases candidatas, atributos y 20.14- Ponga tres 0 cuatro ejem~losde clases clave y de
operaciones. Aplique el criterio de selecci6n discutido en SoPorte que se describieron en la Secci6n 20.4.2.
La explosi6n de inter& por las tecnologias 00 ha dado como La naturaleza 6nica del paradigma 00 supone especia-
resultado la publication de literalmente cientos de libros duran- les retos a 10s gestores de proyecto. Los libros de Cock-
te 10s hltimos 15 aiios. El tratarniento abreviado de Taylor Burn (Surviving Object-Oriented Projects: A Manager's
[TAY90]sigue siendo la rnejor intrcducci6n al tema. Ademk, Guide, Addison-Wesley, 1998), Booch (Object Solutions:
10s libros de Ambler (The Object Primer: The application Deve- Managing the Object Oriented Project, Addison-Wesley,
lopper's Guide to Object-Orientation,SIGS Books, 1998),Gos- 1995), Goldberg y Rubin (Succeding With Objects: Deci-
sain y Graham (Object Modeling and Design Strategies, SIGS sion Frameworks for Project Management, Addison-Wes-
Books, 1998), Bahar (Object Technology Made Simple, Simple ley, 1995) y Meyer (Object-Success:A Manager's Guide
Software Publishing, 1996) y Singer (Object TechnologyStra- to Object Orientation, Prentice-Hall, 1995) consideran las
tegies and Tactics,Cambridge University Press, 1996) son tam- estrategias de planificacion, seguimiento y control de pro-
biCn valiosas introducciones a 10s conceptos y mktcdos 00. yectos 00.
Zarnir (Handbookof Object Technology,CRC Press, 1998) Earles y Simms (Building Business Objects, Wiley,
ha editado un volurninoso tratado que cubre todos 10s aspec- 1998), Carmichael (Developing Business Objects, SIGS
tos de las tecnologias de objetos. Fayad y Laitnen (Transition Books, 1998), Fingar (The Blueprint for Business Objects,
to Object-Oriented Sofhvare Development, Wiley, 1998) uti- Cambridge University Press, 1996) y Taylor (BusinessEngi-
liza casos de estudio para identificar 10s retos tkcnicos, cul- neerin with Object Technology, Wiley, 1995) enfocan la
turales y de gesti6n a superar cuando una organizaci6n hace tecnologia de objetos tal y como se aplica en contextos de
una transition a la tecnologia de objetos. Gardner et al. (Cog- negocios. Sus libros muestran mCtodos para expresar 10s
nitive Patterns: Problems-solving Frameworks for Object conceptos y requisitos de negocio directamente como obje-
Technology, Cambride University Press, 1998) proporcionan tos y aplicaciones orientadas a objetos.
a1 lector una introduccibn bisica sobre conceptos de resolu- En Internet hay gran variedad de fuentes de informa-
ci6n de problemas y la tecnologia asociada a 10s patrones cog- ci6n sobre tecnologias de objetos y otros temas relaciona-
nitivos y al modelado cognitive tal y corno se aplican en 10s dos. En http://www.pressman5.com encontrari una lista
sistemas orientados a objetos. de referencias web actualizada sobre temas 00.
C
UANDO se tiene que construir un nuevo producto o sistema, jc6m0 lo caracterizamos de
forma tal que sea tratado por la ingenieria del software orientado a objetos? iHay pregun-
tas especiales que queramos hacer a1 cliente? iCuriles son 10s objetos relevantes? iC6m0
se relacionan entre sf? iC6m0 se comportan 10s objetos en el contexto del sistema? ~ C 6 m oespe-
cificamos o modelamos un problerna de forma tal que podamos crear un diseiio eficaz?
A cada una de estas interrogantes se responde dentro del contexto del analisis orientado a
objetos (AOO), primera actividad tkcnica que se desarrolla como parte de la ingenieria del soft-
ware 00. En lugar de examinar un problerna utilizando el modelo de information clrisico de
flujo de datos, el A 0 0 introduce varios conceptos nuevos. Coad y Yourdon [COA9 11 conside-
ran el tema cuando escriben:
El A 0 0 (Andisis Orientado a Objetos) se basa en conceptos que ya aprendimos en la guarderia: obje-
tos y atributos, clases y miembros, todos y panes. El porquC nos ha llevado tanto tiempo aplicar estos con-
ceptos al anlilisis y especificaci6n dc sistemas es algo que nadie sabe a ciencia cierta...
El A 0 0 se basa en un conjunto de principios brisicos que se introdujeron en el Capitulo 11.
Para construir un modelo de analisis se aplican cinco principios basicos: (I) se modela el domi-
nio de la informacih; (2) se describe la funcion; (3) se representa el comportamiento del mode-
lo; (4) 10s modelos de datos, funcional y de comportamiento se dividen para mostrar m6s detalles;
y (5) 10s modelos iniciales representan la esencia del problema mientras que 10s riltimos apor-
tan detalles de la implementation. Estos principios forman la base para el enfoque del A 0 0
presentado en ese capitulo.
&Qu&cs? Antes de que pueda construir un &Porqu6 es importcmte? No s e puede traslada la informacih de los casoa de
sistema orientado a objetos. tiene que mnstruir software (orientadoa objetos o usoa una representacionde lasclases y
definii lasclases (objetos)que represen- de otro t i p ) hasta pue se tiene un cone sus colaboraciones mn las otras clases.
tan el problema a resolver, la forma e n cimiento ramnable del sistema o pro- Las maderisticas estdrticasy d i n h i c a s
que las clases s e relacionan e interac- duct~.El AOOnos proporciona una foma de las clases se modelan entonces utili-
turn unas con otras, el funcionamiento mncretade representar el conmimiento m d o un lenguaje de modelado unifica-
interno (atributos y operaciones) de 10s de los requisitos y una forma de probar do o cualquier otro m6todo.
objetos y 10s meccmismosd e comunica- dichoconmimiento enfrentcindoloconla ea el producto obtenido? Se
ci6n (mensajes) que 10s permiten tratu- percepci6n que el cliente tiene del siste- crea un modelo d e an~ilisisorientado
jar juntos. Todas estas cosasse cumplen ma a construir. a objetos. Dicho modelo se cornpane de
en el analisis orientado a objetos. jWe~ son lor El A 0 0 comien- una representaci6n grgrdrfica. o basada
iQdh lo h? ladefinici6n de un mode za con ma descripci6n de casx de uso, en el lenguaje. que define 10s atributos
lo d e cm&lisislleva implicita una des- que e s una descripcih de escenarios d e la clase. las relaciones y comprta-
cripci6n d e las caracteristicaa de lag sobre c6mo i n t e r a c ~ a n10s adores (gen- mientos y l a s comunicaciones entre
clases que describen un sistema o p m te, mbquinas u otros sistemas) con el sis- clases, asi como una representaci6n
ducto. La nctividad la realim un inge- tema a mnstruir. El modelo de clases- del comportamiento d e l a clase en e l
niero del software. responsabilidad-colaboraci6n(CRC) tiempo.
El prop6sito del A 0 0 es definir todas las clases que son relevantes al problema que se va a
resolver, las operaciones y atributos asociados, las relaciones y comportamientos asociadas con
ellas. Para cumplirlo se deben ejecutar las siguientes tareas:
1. Los requisitos brisicos del usuario deben comunicarse entre el cliente y el ingeniero del
software.
2. Identificar las clases (es decir, definir atributos y mktodos).
3. Se debe especificar una jerarquia de clases.
4. Representan las relaciones objeto a objeto (conexiones de objetos).
5. Modelar el comportamiento del objeto.
6. Repetir iterativamente las tareas de la 1 a la 5 hasta completar el modelo.
INGENIERIA DEL SOFTWARE. U N ENFOQUE P R A C T l C O
Es importante observar que no existe un acuerdo universal sobre 10s ccconceptos>>que sirven de base para el AOO,
per0 un limitado numero de ideas clave se repten a menudo, y son Cstas las que consideraremos en este capitulo.
El objetivo del analisis orientado a objetos es desarro- El metodo de Booch. El mCtodo de Booch [BOO941
llar una serie de modelos que describan el software de abarca un ccmicroproceso de desarrollo>>y un ccmacro-
computadora a1 trabajar para satisfacer un conjunto de proceso de desarrollo>>. El nivel micro define un conjunto
requisitos definidos por el cliente. El AOO, como 10s de tareas de andisis que se reaplican en cada etapa en el
mCtodos de analisis convencional descritos en el Capi- macro proceso. Por esto se mantienen un enfoque evo-
tulo 12, forman un modelo de andisis multiparte para lutivo. El micro proceso de desarrollo identifica clases y
satisfacer este objetivo. El modelo de analisis ilustra objetos y la semiintica de dichas clases y objetos, define
informaci6n, funcionamiento y comportamiento dentro las relaciones entre clases y objetosy realiza una serie de
del context0 de 10s elementos del modelo de objetos refinamientos para elaborar el modelo del an8lisis.
descrito en el Capitulo 20.
Vista del comportamiento: esta parte del modelo del Vista de implementacibn: 10s aspectos estructurales
anhlisis representa 10s aspectos dinhmicos o de com- y de comportamiento se representan aqui tal y como van
portamiento del sistema. TambiCn muestra las interac- a ser implementados.
ciones o colaboraciones entre 10s diversos elementos Vista del entorno: aspectos estructurales y de com-
estructurales descritos en las vistas anteriores. portamiento en el que el sistema a implementar se repre-
senta.
En general, el modelo de anhlisis de UML se centra
en las vistas del usuario y estructural. El modelo de dise-
En mini.net/cetus/oo-umI.html hoy un omplio iio de UML (tratado en el Capitulo 22) se dirige mas a
tutoriol y una listo de recursos UML que incluye las vistas del comportamiento y del entorno. En el Capi-
herromientos, ortirulos y ejemplos. tulo 22 describiremos UML con mas detalle.
El analisis en sistemas orientados a objetos puede ocu- la necesidad de 100 clases. Se le asigna a dos equipos
m r a muchos niveles diferentes de abstraction. A nivel la tarea de construir la aplicaci6n. Cada uno debe dise-
de negocios o empresas, las tCcnicas asociadas con el iiar y construir un producto final y, a su vez, esta com-
A 0 0 pueden acoplarse con un enfoque de ingenieria puesto de personas con el mismo nivel de habilidad y
de la informaci6n (Capitulo 10) en un esfuerzo por defi- experiencia.
nir clases, objetos, relaciones y comportamientos que
modelen el negocio por completo. A nivel de Areas de
negocios, puede definirse un modelo de objetos que des-
criba el trabajo de un Area especifica de negocios (o una
categoria de productos o sistemas). A nivel de las apli- Ohos beneficios derivodos de lo reutilizocibnson
caciones, el modelo de objetos se centra en 10s requisi- lo consistencia y lo fomilioridod. 10s pofrones denfro
del softwore serbn mbs consistentes, tendiendo
tos especificos del cliente, pues Cstos afectan a la
o focilitar el montenimiento del producto. Asegcrese de
aplicaci6n que se va a construir.
estoblecer un conjunto de reglos de reutilizocion
poro conseguir dichos objetivos.
Literatura tecnica
Taxonomia de clases
I
Aplicaciones existentes b
Fuentes Estandar de reusabilidad Modelo
de Recursos del cliente
domimio Modelos funcionales del
Consejo de experto analisis
del
:onocimiento Lenguajes del dominio del
-
Requisitos actuales/futuros * dominio
365
Ademhs, una vez que se han definido 10s objetos, el
analista debe estimar quC porcentaje de una aplicaci6n
tipica pudiera construirse usando 10s objetos reutilizables.
Desarrollar un modelo de analisis para 10s obje-
tos. El modelo de analisis serviri como base para el
diseiio y construccidn de 10s objetos del dominio.
Recolectar una muestra representativa de aplica- Adicionalmente a estas etapas, el analista del domi-
ciones en el dominio. Para realizar esta tarea, el ana- nio tambiCn debe crear un conjunto de lineas maestras
lista debe asegurar que la aplicacidn en cuestidn tiene para la reutilizacidn, y desarrollar un ejemplo que ilus-
elementos que caen dentro de las categorias ya defini- tre cdmo 10s objetos del dominio pudieran usarse para
das. Berard [BER93] observa que durante las primeras crear una aplicacidn nueva.
etapas de uso de las tecnologias de objetos, una orga- El andisis del dominio es la primera actividad tCc-
nizacidn del software tendr6 muy pocas, si hay alguna, nica en una amplia disciplina que algunos llaman inge-
aplicaciones 00.Debido a esto, el analista de dominio nieria del dominio. Cuando un negocio, sistema o
debe ccidentificar 10s objetos conceptuales (opuestos a product0 del dominio es definido como estrategico a
10s fisicos) en cada aplicacidn [no 001~. largo plazo, puede desarrollarse un esfuerzo continua-
do para crear una biblioteca reutilizable robusta. El obje-
Analizar cada aplicacion dentro de la muestra. El
tivo es ser capaz de crear software dentro del dominio
analista debe seguir las etapas siguientes [BER93]:
con un alto porcentaje de componentes reutilizables.
Identificar objetos candidatos reutilizables. Argumentos a favor de un esfuerzo dedicado a la inge-
Indicar las razones que hacen que el objeto haya sido nieria del dominio son: bajo coste, mayor calidad y
identificado como reutilizable. menor tiempo de comercializacidn.
Definir adaptaciones a1 objeto que tambiCn pueden
ser reutilizables.
Estimar el porcentaje de aplicaciones en el dominio
que pueden reutilizar el objeto.
Referencia web/ '
En www.sei.crnu.edu/str/descriptions/deda.htrnl
Identificar 10s objetos por nombre y usar tCcnicas de hay un tutorial sobre anblisis del dominio que merece lo peno.
gestidn de configuracidn para controlarlos (Capitulo 9).
El proceso de anfilisis orientado a objetos se adapta a componentes de representaci6n genCricos que apare-
conceptos y principios basicos de andisis discutidos en cen en todos 10s modelos de analisis 005.Los compo-
el Capitulo 11. Aunque la terminologia, notacidn y acti- nentes estciticos son estructurales por naturaleza, e
vidades difieren respecto de 10s usados en mCtodos con- indican caracten'sticas que se mantienen durante toda
vencionales, el A 0 0 (en su ndcleo) resuelve 10s mismos la vida operativa de una aplicacidn. Los componentes
objetivos subyacentes. Rumbaugh [RUM911 examina dincimicos se centran en el control, y son sensibles a1
esto cuando asegura que: tiempo y a1 tratamiento de sucesos. Estos liltimos defi-
El andisis ... se ocupa de proyectar un modelo preciso, con-
nen c6mo interactda un objeto con otros a lo largo del
ciso, comprensible y correcto del mundo real. ...El prop6sito tiempo. Pueden identificarse 10s siguientes componen-
de andisis orientado a objetos es modelar el mundo real de for- tes [MON92]:
ma tal que sea comprensible. Para esto se deben examinar 10s
requisitos, analizar las implicaciones que se deriven de ellos y Vista estcitica de clases sema'nticas. Una taxonomia de
r e a h a r l o s de manera rigurosa. Se deben abstraer primer0 las clases tipicas se mostrd en el Capitulo 20. Se irnponen 10s
caracteristicas del mundo real y dejar 10s pequeiios detalles requisitos y se extraen (y representan) las clases como
para m h tarde. parte del modelo de anilisis. Estas clases persisten a tra-
Para desarrollar un ccmodelo preciso, conciso, com- vCs de todo el period0 de vida de la aplicacidn y se deri-
prensible y correcto del mundo real>>,un ingeniero del van bashdose en la semhtica de 10s requisitos del cliente.
software debe seleccionar una notacidn que se sopor-
te a un conjunto de componentes genCricos de AOO. &ales son 10s tornponentes
Monarchi y Puhr [MON92] definen un conjunto de tlave de un modelo de AOO?
El proceso de A 0 0 no comienza con una preocupacion proporcionar una base para la validacion de las
por 10s objetos. Mas bien comienza con una compren- pruebas.
sion de la manera en la que se usara el sistema: por las
Durante el A 0 0 10s casos de uso sirven como base
personas, si el sistema es de interaccion con el hombre;
para 10s primeros elementos del modelo de anhlisis.
por otras maquinas, si el sistema esta envuelto en un Utilizando UML se puede crew una representaci6n
control de procesos; o por otros programas; si el siste- visual de 10s casos de uso llamada diagrama de casos
ma coordina y controla otras aplicaciones. Una vez que
de uso. Como otros elementos del anfilisis, 10s casos de
se ha definido el escenario, comienza el modelado del
uso pueden representarse a diferentes niveles de abs-
software.
traction. Los diagramas de casos de uso contienen casos
Las secciones que siguen definen una serie de tCcni-
de uso y actores, siendo estos ultimos las entidades que
cas que pueden usarse para recopilar requisitos basicos
interactuan con el sistema. Pueden ser humanos u otras
del usuario y despuCs definen un modelo de analisis para maquinas o sistemas que tengan definidas interfaces con
un sistema orientado a objetos. nuestro sistema.
21.4.1. Casos de uso
Como examinamos en el Capitulo 11,los casos de uso
modelan el sistema desde el punto de vista del usuario.
Creados durante la obtencion de requisitos, 10s casos de En www.univ-pan's1 .fr/CRINFO/aWg/MEE/miqOl4
uso deben cumplir 10s siguientes objetivos: existe un tutorial que aborda en profundidod 10s cams de IJSO.
definir 10s requisitos funcionales y operativos del sis-
tema (producto),diseiiando un escenario de uso acor- El sistema de seguridad HogarSeguro, discutido en
dado por el usuario final, y el equipo de desarrollo; capitulos anteriores, puede usarse para ilustrar como pue-
proporcionar una descripcion clara y sin ambigiie- den desarrollarse casos de uso. Recordando 10s requisi-
dades de como el usuario final interactua con el sis- tos basicos de HogarSeguro, podemos definir tres
tema y viceversa, y actores: e1,propietario (el usuario), 10s sensores (dis-
positivos adjuntos a1 sistema) y el subsistema de moni-
torizacion y respuesta (la estacion central que
monitoriza HogarSeguro). Para 10s prop6sitos de este
Los CONS de uu, son uno excelente hemmiento de
ejemplo, consideraremos solamente el actor propietario.
l i i t i n de r e q u i i , mdependiintementedel mbtodo de
onblisii uiihodo. VBm el coprtulo 11 porn rnb detolle.
La Figura 21.2.a muestra un diagrama de casos de
uso de alto nivel para el propietario. En dicha figura
se identifican dos casos de uso y se representan con elip- facer estas seis caracteristicas para poder ser conside-
ses. Cada caso de uso de alto nivel puede detallarse rado como posible miembro del modelo:
mediante diagramas de casos de uso de nivel inferior.
Por ejemplo, la Figura 2 1.2.b representa un diagrama I . retener informacibn: el objeto potencial sera util
de casos de uso para la funcion interactha. Se crea un durante el analisis si la informaci6n sobre el mismo
conjunto completo de diagramas de casos de uso para debe guardarse para que el sistema funcione
todos 10s actores. Pero para una detallada discusion sobre 2. Servicios necesarios: el potencial objeto debe tener
10s casos de uso usando UML es mejor consultar la un conjunto de operaciones identificables que per-
bibliografia sobre el tema (p.e. [ERI97] o [ALH98]). mitan cambiar 10s valores de sus atributos.
3. Multiples atributos: durante el analisis de requisitos
21.4.2. Modelado de clases-responsabilidades- nos centramos mas en la informacion mas impor-
colaboraciones tante. Un objeto con un solo atributo puede, en efecto,
ser litil durante el disefio, per0 probablemente sera
Una vez que se han desarrollado los escenarios de uso un atributo de otro objeto durante el analisis de acti-
basicos para el sistema, es el momento de identificar las vidades.
clases candidatas e indicar sus responsabilidades y cola-
boraciones. El modelado de clases-responsabilidades- 4. Atributos comunes: el conjunto de atributos definido
colaboraciones (CRC) [WIR90] aporta un medio sencillo para la clase debe ser aplicable a todas las ocurren-
de identificar y organizar las clases que resulten relevantes cias del objeto.
a1 sistema o requisitos del producto. Ambler [AMB95]
describe el modelado CRC de la siguiente manera:
Un modelo CRC es realmente una colecci6n de tarjetas
indice esthdar que representan clases. Las tarjetas e s t h divi-
didas en tres secciones. A lo largo de la cabecera de la tarjeta
usted escribe el nombre de la clase. En el cuerpo se listan las
responsabilidades de la clase a la izquierda y a la derecha 10s
colaboradores.
Clases Propietario
\\ AzA
Las pautas basicas para identificar clases y objetos se
presentaron en el Capitulo 20. Resumiendo, 10s objetos
se manifiestan en una variedad de formas (Secci6n
20.3.1): entidades externas, cosas, ocurrencias o suce-
sos, roles, unidades organizativas, lugares, o estructu-
\u de panico
Activarl
desactivar
ras. Una tCcnica para identificarlos en el context0 de un sisterna
problema del software es realizar un analisis gramati-
cal con la narrativa de procesamiento para el sistema.
Todos 10s nombres se transforman en objetos potencia-
les. Sin embargo, no todo objeto potencial podri FIGURA 21.2. a) Diagrama de casos de uso de alto nivel.
incluirse en el modelo. Un objeto potencial debe satis- b) Diagrama de casos de uso detallado.
C A P ~ T U L O2 1 ANALISIS O R I E N T A D O A O B J E T O S
~Comodeterminar si merece la
Responsabilidades
pena incluir un objeto potencial Las pautas basicas para identificar responsabilidades
en una tarjeta indice CRC? (atributos y operaciones) tambiCn fueron presentadas
en el Capitulo 20. Para resumir, 10s atributos represen-
Operaciones comunes: el objeto potencial debe defi- tan caracteristicas estables de una clase, esto es, infor-
nir un conjunto de operaciones aplicables, a1 igual maci6n sobre la clase que debe retenerse para llevar a
que antes, a todos 10s objetos de la clase. cab0 10s objetivos del software especificados por el
Requisitos esenciales: las entidades extemas que apa- cliente. Los atributos pueden a menudo extraerse del
recen en el espacio del problema y producen infor- planteamiento de alcance o discernirse a partir de la
maci6n esencial para la operaci6n de una soluci6n comprensi6n de la naturaleza de la clase. Las opera-
para el sistema casi siempre se definen como obje- ciones pueden extraerse desarrollando un analisis gra-
tos en el modelo de requisitos. matical sobre la narrativa de procesamiento del sistema.
Una clase potencial debe satisfacer las seis caracte- Los verbos se transforman en candidatos a operaciones.
risticas de selecci6n anteriores si va a ser incluida en el Cada operaci6n elegida para una clase exhibe un com-
modelo CRC. portamiento de la clase.
Firesmith [FIR931 extiende las caracteristicas de cla-
sificaci6n sugiriendo, ademas de las existentes, las
siguientes:
Clases dispositivo. Modelan entidades extemas tales 1s responsabilidades de uno clase incluyen tonto o 10s
como sensores, motores y teclados. atributos como o los ooerociones.
Clases propiedad. Representan alguna propiedad
importante del entorno del problema (por ejemplo: esta-
blecimiento de crCditos dentro del context0 de una apli- Wirfs-Brock y sus colegas [WIR90] sugieren cinco
caci6n de prestamos hipotecarios). pautas para especificar responsabilidades para las clases:
Clases interaccion. Modelan interacciones que ocu- 1. La inteligencia del sistema debe distribuirse de
rren entre otros objetos (por ejemplo: una adquisici6n o manera igualitaria. Toda aplicaci6n encierra un cierto
una licencia). grado de inteligencia, por ejemplo, lo que sabe el sis-
tema y lo que puede hacer. Esta inteligencia puede
distribuirse ente las clases de varias maneras. Las
i H a y alyuna manera de clasificar
clases cctontas>>(aquellas con pocas responsabilida-
las clases? i Q u i caracteristicas
des) pueden modelarse de manera que actuen como
nos ayudan a hacerlo?
sirvientes de unas pocas clases <<listas>>
(aquellas con
Adicionalmente, 10s objetos y clases pueden clarifi- muchas responsabilidades). Aunque este enfoque
carse por un conjunto de caracteristicas: hace que el flujo de control dentro de un sistema sea
claro, posee algunas desventajas: (1) Concentra toda
Tangibilidad. ~Representala clase algo tangible o la inteligencia en pocas clases, haciendo 10s cambios
palpable (por ejemplo, un teclado o sensor), o repre- mas dificiles; (2) Tiende a necesitar mas clases y por
senta information mas abstracta (por ejemplo: una salida lo tanto el esfuerzo de desarrollo aumenta.
prevista)?
Inclusividad. ~ E la s clase atbmica (es decir, no iComo asignar responsabilidades
incluye otras clases) o es agregada (incluye a1 menos a una clase?
un objeto anidado)?
Secuencia. ~ E las clase concurrente (es decir posee Por esta raz6n, la inteligencia del sistema debe
su propio hilo de control) o secuencial (es controlada distribuirse de manera igualitaria entre las clases de
por recursos externos)? una aplicaci6n. Como cada objeto conoce y actua
Persistencia. La clase es temporal (se crea durante sobre algunos pocos elementos (generalmente bien
la ejecuci6n del programa y es eliminada una vez que definidos y claros), la cohesion del sistema se ve
Cste termina), o permanente (es almacenada en una base incrementada. Adicionalmente, 10s efectos colatera-
de datos)? les provocados por cambios tienden a amortiguarse
Integridad. iEs la clase corrompible (es decir, no pro- debido a que la inteligencia del sistema se ha des-
tege sus recursos de influencias externas) o es segura (la compuesto entre muchos objetos.
clase refuerza 10s controles de accesos a sus recursos)?
Usando estas categorias de clases, pueden ampliar-
se las cctarjetas indice>>creadas como parte del modelo Si una clase tiene m a lista excesivamente largo de
CRC para incluir el tip0 de la clase y sus caracteristi- respansabilidades, to1 vez debenb cansidera~esu divisibn
cas (Fig. 21.3). en varias clases menares.
INGENIER~ADEL SOFTWARE. UN ENFOQUE PRACTICO
Para determinar si la inteligencia del sistema esti sabilidad no debe compartirse, de manera general,
distribuida equitativamente, las responsabilidades entre varias clases. Si la informaci6n esti distri-
definidas en cada tarjeta indice del modelo CRC buida, el software se torna mis dificil de mantener
deben ser evaluadas para determinar si cada clase y probar.
posee una lista de responsabilidades extraordina- Compartir responsabilidades entre clases relacio-
riamente grande. Esto indica una concentraci6n de nadas cuando sea apropiado. Existen muchos casos
inteligencia. Ademas, las responsabilidades de cada en 10s cuales una gran variedad de objetos exhibe el
clase deben mostrar el mismo nivel de abstracci6n. mismo comportamiento a1 mismo tiempo. Como un
Por ejemplo, entre la lista de operaciones de una ejemplo, considere un videojuego que debe mostrar
clase agregada llamada Comprobacion de cuenta 10s siguientes objetos: jugador, cuerpo-del-juga-
existen dos responsabilidades: saldo-de-la-cuenta dor, brazos-del-jugador, cabeza-del-jugador. Cada
y verificar-talones-cobrados.La primera operaci6n uno de estos atributos tiene sus propios atributos (p.e.:
(responsabilidad) implica un complejo procedi- posicidn, orientacibn, color, velocidad), y todos
miento matemitico y 16gico. La segunda es una sim- deben actualizarse y visualizarse a1 mover el usua-
ple actividad para empleados. Debido a que estas rio el joystick. Las responsabilidades actualizar y
dos actividades no estan a1 mismo nivel de abs- visualizar deben, por lo tanto, compartirse por 10s
traccibn, verificar-talones-cobrados debe situarse objetos seiialados. El jugador sabe cuando algo ha
dentro de las responsabilidades de la clase Com- cambiado y se requiere actualizar; colabora con 10s
probacion de entradas, la cual esti contenida en otros objetos para alcanzar una nueva posici6n u
la clase agregada Comprobacion de cuenta. orientacibn, per0 cada objeto controla su propia
visualizacibn.
1 Nombre de la clase: L
Colaboradores
Las clases cumplen con sus responsabilidades de una
de las dos siguientes maneras: ( I ) una clase puede
usar sus propias operaciones para manipular sus pro-
pios atributos, cumpliendo por lo tanto con una res-
ponsabilidad particular, o (2) puede colaborar con
otras clases.
Wirfs-Brock [WIR90] y sus colegas definen las cola-
boraciones de la siguiente forma:
Las colaboraciones representan solicitudes de un cliente a
un servidor en el cumplimiento de una responsabilidad del
FIGURA 21.3. Un modelo CRC de tarjeta indice. cliente. Una colaboraci6n es la realizacih de un contrato entre
el cliente y el sewidor... Decimos que un objeto colabora con
otro, si para ejecutar una responsabilidad necesita enviar cual-
Cada responsabilidad debe establecerse lo mcis gene- quier mensaje al otro objeto. Una colaboraci6n simple flu ye en
ral posible. Esta directriz implica que las responsa- una direccion, representando una solicitud del cliente a1 sewi-
bilidades generales (tanto 10s atributos como las dor. Desde el punto de vista del cliente, cada una de sus cola-
boraciones esti asociada con una responsabilidad particular
operaciones)deben residir en la parte alta de la jerar- implementada por el sewidor.
quia de clases (puesto que son gedricas, se aplica-
ran a todas las subclases). Adicionalmente, debe
usarse el polimorfismo (Capitulo 20) para definir las
operaciones que generalmente se aplica a la super-
clase, per0 que se implementan de manera diferente
en cada una de las subclases. Un objeto s e ~ d ocoloboro
r con un objetos cliente
en un esfuerzo por llevor a cobo uno determinodo
La inforrnacibn y el comportamientoasociado a ella,
responsobilidad. lo coloborocion irnplico el paso de rnensaies.
debe encontrarse dentro de la misma clase. Esto
implementa el principio 00 de encapsulamiento
(Capitulo 20). Los datos y procesos que manipulan Las colaboraciones identifican relaciones entre cla-
estos datos deben empaquetarse como una unidad ses. Cuando todo un conjunto de clases colabora para
cohesionada. satisfacer alglin requisito, es posible organizarlas en un
La informacibn sobre un elemento debe estar loca- subsistema (un elemento del disefio).
lizada dentro de una clase, no distribuida a trave's Las colaboraciones se identifican determinando si
de varias clases. Una clase simple debe asumir la una clase puede satisfacer cada responsabilidad. Si no
responsabilidad de almacenarnientoy manipulation puede, entonces necesita interactuar con otra clase. De
de un tip0 especifico de informaci6n. Esta respon- aqui surge lo que hemos llamado una colaboracion.
CAP~TULO
21 ANALISIS ORIENTADO A O B J E T O S
tantes que surgen a1 emerger clases y subclases. Usan- menta uno o mas contratos [WIR90] con sus colabo-
do la notaci6n UML podemos crear gran variedad de radores externos. Un contrato es una lista especifica
diagramas. Debe crearse una estructura de generaliza- de solicitudes que 10s colaboradores pueden hacer a
cidn-especializacidn para las clases identificadas. un subsistema'.
Para ilustrarlo considere el objeto sensor definido
para HogarSeguro y mostrado en la Figura 21.4. Aqui,
la generalizacibn, sensor, se refina en un conjunto de
especializaciones: sensor de entrada, sensor de hum0
y sensor de movimiento. Los atributos y operaciones
identificados en el sensor son heredados por las espe-
cializaciones de la clase. Hemos creado una jerarquia
de clases simple.
En otros casos, un objeto representado seg6n el
modelo inicial puede estar compuesto realmente de un Sensor
n6mero de partes las cuales pueden definirse a su vez de entrada
como objetos. Estos objetos agregados pueden repre-
sentarse como una estructura componente-agregado
[ERI97] y se definen usando la notacibn representada FIGURA 21.4.a Diagrama de clases que ilustra la relacion
en la Figura 21.5. El rombo implica una relacibn de de generalizacion-especializacion.
ensamblaje. Debe notarse que las lineas de conexi6n
pueden aumentarse con simbolos adicionales (no mos-
trados) para representar cardinalidad, que se adaptan de Panel
la notacidn del modelo entidad-relacibn descrito en el de control
Capitulo 12. -
Las representaciones estructurales proveen a1 ana-
lista de 10s medios para particionar el modelo CRC y
para representar esta partici6n grhficamente. La expan-
si6n de cada clase aporta 10s detalles necesarios para
revisidn y para el subsiguiente diseiio.
Teclado Pantalla Luz
21.4.4. Definicidn de subsistemas
Un modelo de anAisis para una aplicacion compleja pue-
de tener cientos de clases y docenas de estructuras. Por FIGURA 21.5.a Diagrama de ~ l a s e sque ilustra la relacion
esta razbn, es necesario definir una representaci6n con- de agregacion.
cisa que sea un resumen de 10s modelos CRC y estruc-
tural descritos anteriormente.
Los subsistemas pueden representarse dentro del
context0 del modelo CRC creando una tarjeta indice
4 del subsistema. La tarjeta indice del subsistema indi-
ca el nombre del subsistema, 10s contratos que debe
CLAVE
cumplir y las clases u otros subsistemas que soportan
Un subsisterno (poquete de UML) incluye uno jerorquia el contrato.
de clases rnbs detalloda.
Los paquetes son idhticos a 10s subsistemas en
intenci6n y contenido, per0 se representan grafica-
Los subconjuntos de clases que colaboran entre si mente en UML. Por ejemplo, suponga que el panel de
para llevar a cab0 un conjunto de responsabilidades control de HogarSeguro es considerablemente mas
cohesionadas, se les llama normalmente subsistemas complejo que el representado por la Figura 21.5, con-
o paquetes (en terminologia UML). Los subsistemas teniendo mliltiples monitores, una sofisticada distri-
o paquetes son abstracciones que aportan una refe- buci6n de teclas y otras caracteristicas. ~ s t pudiera
e
rencia o punter0 a 10s detalles en el modelo de anali- modelarse como una estructura todo-partes mostrada
sis. Si se observa desde el exterior, un subsistema en la Figura 21.6. Si el modelo de requisitos contu-
puede tratarse como una caja negra que contiene un viera docenas de estas estructuras (HogarSeguro no
conjunto de responsabilidades y que posee sus pro- las tendra), seria dificil absorber la representaci6n
pios colaboradores (externos). Un subsistema imple- completa de una vez. Definiendo una referencia de
' Recuerde que las clases interactuan usando una filosofia cliente/ser-
vidor. En este caso el subsistema es el sewidor y 10s colaboradores
extemos 10s clientes.
C A P ~ T U L O2 1 ANALISIS ORIENTADO A O B J E T O S
temas, como se muestra en la figura, pudiera referen- sensor (Figs. 21.5 y 21.6); para el sistema, suceso sen-
ciarse toda la estructura a travCs de un simple icono sor y alarma audible se crearh tambiCn estructuras si
(la carpeta de ficheros). Las referencias de paquetes estos objetos necesitan objetos ensamblados.
se crean generalmente para cualquier estructura que Las flechas discontinuas mostradas en la parte supe-
posea multiples objetos. rior de la Figura 2 1.7 representan relaciones de depen-
A1 nivel mhs abstracto, el modelo de A 0 0 conten- dencia entre 10s paquetes que se muestran. Sensor
drh solamente referencias de paquetes tales como las depende del estado del paquete suceso sensor. Las fle-
que se ilustran a1 inicio de la Figura 21.7. Cada una de chas continuas representan composici6n. En el ejem-
las referencias se expandirh a una estructura. Se ilus- plo, el paquete sistema esth compuesto por 10s paquetes
tran las estructuras para 10s objetos panel de control y panel de control, sensor y alarma audible.
Otros terminos para relacion son asociacion [RUM911 y conexion Es importante notar que esta e s una salida de la naturaleza bidi-
[COA911. reccional de las relaciones usadas en el modelado de datos (Capi-
tulo 12).
INGENIERfA DEL SOFTWARE. U N ENFOQUE PRACTICO
p n ~'.\h a s
e funcib Pantalla LC Gflficos Mensajes
tantes de mensajes (Capitulo 20). En nuestra descrip-
cion de la Figura 21.7, hicimos referencia a las flechas
que conectan simbolos de paquetes. TambiCn son vias
de mensajes. Cada flecha implica el intercambio de men-
FIGURA 21.7. Modelo de analisis con referencias a paquetes. sajes entre subsistemas en el modelo.
no preparado implica que el sensor esth abierto, por ejem- agregado jugador (en la aplicacion del videojuego exa-
plo, que m a puerta o ventana esth abierta.] minado anteriormente) incluira posicion y orientacion
2. El propietario usa el teclado para teclear una contraseiia de actual del jugador (atributos del objeto) asi como otras
cuatro digitos. La contraseiia se compara con la contraseiia caracteristicas de jugador que son relevantes a1 juego
valida almacenada en el sistema. Si la contraseiia es inco-
rrecta, el panel de control avisari una vez y se restaurara
(p.e.: un atributo que indique permanecen deseos mhgi-
por si mismo para recibir datos adicionales. Si la contrase- cos). El estado activo de un objeto indica el estado actual
iia es correcta, el panel de control espera por las acciones cuando Cste entra en una transformaci6n continua o pro-
siguientes. ceso. El objeto jugador poseera 10s siguientes estados
3. El propietario selecciona y teclea perrnanecer o continuar activos: en movimiento, en descanso, lesionado, en recu-
para activar el sistema. Permanecer activa solarnente10s sen- peracidn, atrapado, perdido entre otros. Para forzar la
sores del perimetro (10s sensores internos detectores de movi- transici6n de un objeto de un estado activo a otro debe
miento e s t h desactivados). Continuar activa todos 10s ocurrir un suceso (a veces, llamado disparador). Un com-
sensores.
ponente de un modelo objeto-comportamiento es una
4. Cuando ocurre la activacih, el propietario puede observar representacih simple de 10s estados activos de cada obje-
una luz roia de alarma.
to y 10s sucesos (disparadores) que producen 10s cambios
Las partes de texto subrayadas anteriormente indican entre estos estados activos. La Figura 21.9 ilustra una
sucesos. Debera identificarse un actor para cada suceso: representacibn simple de 10s estados activos para el obje-
la informaci6n que se intercambia debe anotarse. y debe- to panel de control en el sistema HogarSeguro.
rfin indicarse otras condiciones o restricciones.
Como ejemplo de un suceso tipico, considere la fra-
se subrayada del caso de uso propietario usa el teclado
para teclear una contrasefia de cuatro digitos. En el con- Cuondo se empiezon o identifcor estodos, lo otencibn
texto del modelo de analisis 00 el actor propietario se centro en 10s modos de romportomientoobse~obles
transmite un suceso a1 objeto panel de control. desde el exterior. Mbs torde, se pueden refinor estos
El suceso puede llamarse contrasefia introducida. estodos en comportomientosno evidentes cuondo
La informaci6n transferida son 10s cuatro digitos que se obse~oel sistemo desde el exterior.
forman la contraseiia, per0 Csta no es una parte esencial
del modelo de comportamiento. Es importante notar que Cada flecha en la Figura 2 1.9 representa una transi-
algunos sucesos tienen un impacto explicito en el flujo ci6n de un estado activo del objeto a otro. Las etique-
de control del caso de uso, mientras que otros no impac- tas mostradas en cada flecha representan 10s sucesos
tan directamente en este flujo de control. Por ejemplo. que disparan la transici6n. Aunque el modelo de esta-
el suceso contrasefia introducida no cambia explicita- do activo aporta una visi6n intema muy util de la <<his-
mente el flujo de control del caso de uso, per0 10s resul- toria de vidan de un objeto, es posible especificar
tados del suceso comparar contrasefia (derivada de la informaci6n adicional para aportar mas profundidad en
interacci6n contrasefia se compara con la contraseiia la comprensi6n del comportamiento de un objeto. Adi-
valida almacenada en el sistema) tendra un impacto cionalmente a especificar el suceso que provoca la ocu-
explicito en la informaci6n y flujo de control del soft- rrencia de la transicibn, el analisis puede tambiCn
ware HogarSeguro. especificar una guarda y una acci6n [CHAR93]. Una
Una vez que todos 10s sucesos han sido identifica- guarda es una condici6n Booleana, que debe satisfa-
dos, se asocian a 10s objetos incluidos. Los actores (enti- cerse para posibilitar la ocurrencia de una transici6n.
dades extemas) y objetos pueden responsabilizarse de Por ejemplo, la condici6n de guarda para la transici6n
la generaci6n de sucesos (p.e.: propietario genera el desde el estado <<endescanson a1 de <<cornparandonen
suceso contrasefia introducida) o reconociendo suce- la Figura 20.9 puede determinarse a travCs del examen
sos que han ocumdo en otra parte (p.e.: el panel de con- del caso de uso:
trol reconoce el resultado binario del suceso comparar if (entrada de contraseiia = 4 digitos)
contrasefia). then ejecutar transici6n al estado comparando;
Preparado para
Uno tronsicibn de un estado o otro requiere un suceso que
lo produzca. 10s sucesos son booleonos por noiuroleza yo
menudo ocurren cuondo un objeto se comunico con otro. FIGURA 21.10. Traza de sucesos parcial para el sistema
HogarSeguro.
Los mCtodos de A 0 0 permiten a un ingeniero del soft- 10s requisitos especificados por el cliente tal y como
ware modelar un problema representando las caracte- Cstos afectan a la aplicaci6n a construir.
risticas tanto dinamicas como estaticas de las clases y El proceso de A 0 0 comienza con la definici6n de
sus relaciones como componentes principales del mode- casos de uso (escenarios que describen c6mo se va a
lado. Como 10s mCtodos precedentes, el lenguaje unifi- utilizar el sistema). La tkcnica de modelado de clases-
cad0 de modelado UML construye un modelo de analisis responsabilidades-colaboraciones(CRC) se aplica para
con las siguientes caractensticas: (I) representacidn de documentar las clases y sus atributos y operaciones.
las clases y jerarquias de clases, (2) creacidn de mode- TambiCn proporciona una vista inicial de las colabora-
10s objeto-relacibn, y (3) obtencidn de modelos objeto- ciones que ocurren entre 10s objetos. El siguiente paso
comportamiento. en el A 0 0 es la clasificaci6n de objetos y la creaci6n
El andisis de sistemas orientados a objetos se reali- de una jerarquia de clases. Los sistemas (paquetes) se
za a muchos niveles diferentes de abstracci6n. En 10s pueden utilizar para encapsular objetos relacionados.
niveles de empresa o de negocio las tkcnicas asociadas El modelo objeto-relaci6n proporciona informaci6n
con el analisis se pueden conjugar con el enfoque de sobre las conexiones entre las clases, mientras que el
ingenieria del proceso de negocio. A estas tCcnicas a modelo objeto-comportamiento representa el compor-
menudo se las llama de andisis del dominio. En el nivel tamiento de 10s objetos individualmente y el global de
de implementaci6n el modelo de objetos se centra en todo el sistema.
CAPfTULO 21 ANALISIS O R I E N T A D O A O B J E T O S
[ALH98] Alhir, S.S., UML in a Nutshell, O'Reilly & Asso- [FIC92] Fichman, R.G., y Kemerer, C.F., Object-Oriented
ciates, Inc. 1998. and Conventional Analysis and Design Methodologies,
[AMB95] Ambler, S., <<UsingUse-Cases,,, Software Deve- Computer, vol. 25, n." 10, Octubre 1992, pp. 22-39.
lopment, Julio 1995, pp. 53-61 [FIN961 Fingar, P., The Blueprintfor Business Objects, Cam-
[ARA89] Arango, G., y Prieto-Diaz, R., <<DomainAnalysis: bridge University Press, 1996.
Concepts and Research Directions,,, Domain Analysis: [FIR931 Firesmith, D.G., Object Oriented Requeriments
Acquisition of Reusable Information for Software Cons- Analysis and Logical Design, Wiley, 1993.
truction (G. Arango y Prieto-Diaz, eds.), IEEE Computer
Society Press, 1989. [JAC92] Jacobson, I., Object-Oriented Software Engineering,
Addison-Wesley, 1992.
[BER93] Berard, E.V., Essays on Object-Oriented Software
Engineering, Addison-Wesley, 1993. [JAC99] Jacobson, I., Booch, G., y Rumbaugh, J., Unified
Software Development Process, Addison-Wesley, 1999.
[BEN991 Beneth, S., S. McRobb y R. Farmer, Object-Orien-
ted System Analysis and Design Usign UNL, McGraw- [MAT941 Mattison, R., The Object-Oriented Enterprise,
Hill, 1999. McGraw Hill, 1994.
[BOO941 Booch, G., Object-Oriented Analysis and Design, [MON92] Monarchi, D.E., y Puhr, G.I., <<AResearch Typo-
2.%d., Benjamin Cummings, 1994. logy for Object-Oriented Analysis and Design,,, CACM,
[BOO991 Booch, G., Jacobson, I., y Rumbaugh, J., The Unified vol. 35, n." 9, Septiembre 1992, pp. 35-47.
Modeling Language User Guide, Addison-Wesley, 1999. [RUM911 Rumbaugh, J., et al., Object Oriented Modelling
[CAR981 Carmichael,A., Developing Business Objects, SIGS and Design, Prentice-Hall, 1991.
Books, 1998. [RUM991 Rumbaugh, J., Jacobson, I., y Booch, G., The Uni-
[CHA93] de Champeaux, D., D. Lea, y P. Faure, Object- fied Modelling Language Reference Manual, Addison-
Oriented System Development, Addison-Wesley, 1993. Wesley, 1999.
[COA91] Coad, P., y E. Yourdon, Object-OrientedAnalysis, [SUL94] Sullo, G.C., Object Engineering, Wiley, 1994.
2.%d., PrenticeHall, 1991 [TAY95] Taylor, D.A., Business Engineering with Object
[EEL981 Eeles, P,. y Simms, O., Building Business Objects, Technology, Wiley, 1995.
Wiley, 1998. [WIR90] Wirfs-Brock, R., Wikerson, B., y Weiner, L., Desig-
[EX1981 Eriksson, H.E., y Penker, M., UML Toolkit,Wdey, 1998. ning Object Oriented Software, Prentice-Hall, 1990.
21.1. Higase con uno o mis libros sobre UML y compirelo 21.5. Escriba un caso de uso para el sistema HogarSeguro. Los
con el andisis estructurado (Capitulo 12) utilizando las dimen- casos de uso deben tratar el escenario requerido para establecer
siones de modelado propuestas por Fichman y Kemerer una zona de seguridad. Una zona de seguridad lleva asociado un
[FIC92] en la Secci6n 2 1.1.1. conjunto de sensores que pueden ser accedidos, activados y desac-
tivados no individualrnente sino en conjunto. Debe ser posible
21.2. Desarrolle una clase-presentacion sobre un diagrama definir hasta diez zonas de seguridad. Sea creativo, pero intente
estitico o dinimico de UML. Presente el diagrama en el con- mantenerse dentro de lo definido para el panel de control del sis-
texto de un ejemplo sencillo, per0 intente mostrar el suficien- tema tal y como fue definido previamente en este libro.
te nivel de detalle como para demostrar 10s aspectos mis
importantes del t i p de diagrama elegido. 21.6. Desarrolle un conjunto de casos de uso para el sistema
SSRB del Problema 12.13.
213. Conduzca un andisis del dorninio para una de las siguien-
tes ireas: Tendri que hacer varias suposiciones sobre la forma de
interaccion del usuario con el sistema.
a) Un sistema para almacenar 10s expedientes de 10s alumnos
de una universidad. 21.7. Desarrolle un conjunto de casos de uso para alguna de
las siguientes aplicaciones:
b) Una aplicacion de comercio electronic0 (p.e. ropa, libros,
a) Software para un asistente personal electronic0 de propo-
equipos electr6nicos, etc.)
sito general.
c) Un servicio a1 cliente para un banco. b) Software para un videojuego de su election.
d) El desarrollo de un videojuego. c) Software para el sistema de climatizaci6n de un auto-
e) Un irea de aplicacion propuesta por su instructor. m6vil.
21.4. Describa con sus propias palabras la diferencia entre las d) Software para un sistema de navegacion de un automovil.
vistas est5tica y dinimica de un sistema. e) Un sistema propuesto por su instructor.
I N G E N I E R ~ ADEL SOFTWARE. U N ENFOQUE PRACTICO
Lleve a cabo una pequeiia investigation (mas pocas horas) en 21.13. Desarrolle un modelo objeto-comportamiento para el
. el dominio de la aplicacion y conduzca una reunion TFEA producto o sistema elegido en el problema 21.7. Asegurese de
(Capitulo 11) con sus compaiieros para desarrollar unos requi- listar todos 10s sucesos, proporcionar la traza de sucesos, desa-
sitos bisicos (su instructor le ayudara a coordinarlo). rrollar un diagrama de flujo de sucesos y definir diagramas de
21.8. Desarrolle un conjunto completo de tarjetas CRC del estado para cada clase.
producto o sistema elegido en el problema anterior.
21.14. Describa con sus propias palabras la forma de deter-
21.9. Dirija una revision de las tarjetas CRC con sus colegas.
~ C u h t a clases,
s responsabilidades y colaboraciones adicio- minx 10s colaboradores de una clase.
nales ha aiiadido a consecuencia de la reunion? 21.15. ~ Q u C
estrategia propondria para definir subsisternasen
21.10. Desarrolle una jerarquia de clases para el producto o colecciones de clases?
sistema elegido en el Problema 21.7.
21.16. ~ Q u C
papel desempefia la cardinalidad en el desarrollo
21.11. Desarrolle un conjunto de subsistemas (paquetes) para
de un modelo objeto-relacion?
el producto o sistema elegido en el Problema 21.7.
21.12. Desarrolle un modelo objeto-relacion para el producto 21.17. iCu51 es la diferencia entre 10s estados pasivo y activo
o sistema elegido en el Problema 21.7. de un objeto?
Los casos de uso forman la base del aniiisis orientado a obje- Douglas, B., Real-Time UML: Developing EfSlcient Objects
tos, sin importar el mCtodo de A 0 0 elegido. Los libros de for Embedded Systems, Addison-Wesley, 1999.
Rosemberg y Scott (Use case driven Object modelling with Fowler, M., y Kendall Scott, UML Distilled, 2." ed., Addison-
UML: a practical approach, Addison-Wesley, 1999), Schnei- Wesley, 2000.
der, vinters y Jacobson (Applying Use Cases: A Practical Gui-
de, Addison-Wesley, 1999), y Texel y Williams (Use Cases Larman, C., Applying UML and Patterns: an Introduction to
Combined WithBoocWOMTIUML: Process and Products, Pren- Object Oriented Analysis, Prentice-Hall, 1997.
tice-Hall, 1997) proporciona una guia para la creacidn y uso Odell, J.J., y Fowler, M., Advanced Object Oriented Analy-
de esta importante herramienta de obtencion de requisitos y sis and Design Using UML, SIGS Books, 1998.
mecanismo de representacion. Ostereich, B., Developing SofhYare with UML: Object Orien-
Casi todos 10s libros publicados recientemente sobre ana- ted Analysis and Design in Practice, Addison-Wesley, 1999.
lisis y diseiio orientado a objetos ponderan UML. Todos 10s
que e s t h considerando en serio aplicar UML en su trabajo, Page-Jones, M., Fundamentals of Object-Oriented Design in
deberian comprar [B0099], [JAC99] y [RUM99]. Ademas UML, Addison-Wesley, 1999.
Stevens, P., y Pooley, R., Software Engineering with
de estos, 10s siguientes libros tambiCn son representativos de
Objects and Components, Addison-Wesley, 1999.
las docenas de ellos escritos sobre la tecnologia de UML:
En Internet hay gran cantidad de fuentes de informaci6n sobre
Douglas, B., y Booch, G., Doing Hard Time:Developing Real- andisis orientado a objetos y temas relacionados. Una lista actua-
Time Systems with UML, Objects, Frameworks and Pat- lizada sobre las referencias web relevantes de cara a1 analisis
terns, Addison-Wesley, 1999. orientado a objetos la encontm-5en http://www.pressman5.com
el principio, pero muchas otras pueden nenfes: la intetfaz de usucnia, la gestidn
ser reutilizadas, si se reconocen los de datos y 10s mecanisma da adminis-
palroues d e diseiio apropiados. El DOO ----- rle
tmrihn -- f.-m
- ~- --,-.-- -se
----- -- nhietnn
Elrdiseiinde -
especificacion de subsistemas que rea- establece un cmteproyectode disefio,que centra en 10s detalles intemos de cada
limn funciones necesarias y proveen pelmite a1 ingeniero de software definir clase, definici6n de atributos, operacie
soporte de infraestmctura, una descrip
.. . .. . , . . . .. la orquitectura 00, en iorma que maxi-
mice la reuumcmn: de esta manera, se ,
,
,
nes y detalles de 10s mensajes.
.&An , ,< , -
--I d . 4- u r l - * Cll.^-l-
, ,, ,
mejora la velocidad del desarrollo y la lo de diseiio 00ubarcu arquitedum de
calidad del producto terminado. software, descripcidn de la interfa de
~ e s s o n l o 6 ~ E l D O O s e d i v i d e usuario, componentes de gestidn de
yan entre las capas, subsistemas y en dos grandes actividades: dise60 del datcs, meccmismos de administracih de
objetos. El Diseiio Orientado a Objet- sistema y diseilo de objetos. El diseiio de tareasy desaipcianes detalladasde d a
(DOO), cumple todos estos requisitoa. sistema crea la arquitectura del pr& una de l a clases usadas en el sistema.
ingeniero d e software.
-
'or qnd es importante? Un sistema
-&e.=+-A- ~ h k . b - - .nb:l<-- 1-e .-la&-:&-
INGENIERfA DEL SOFTWARE. UN ENFOQUE PRACTICO
En el Capitulo 13 se introdujo el concept0 de una pirh- f o m a 10s cimientos sobre 10s que la pirhmide se sostie-
mide de disefio para el software convencional. Cuatro ne. La capa fundamental se centra en el disefio de 10s ohje-
capas de disefio -dates, arquitectura, interfaz y nivel tos del dvminio (Ilamadosputrorzes de diseiio). Los objetos
de componentes- fueron definidas y discutidas. Para del dominio juegan un papel clave, en la construcci6n de
sistemas orientados a objetos, podemos tambiCn definir la infraestructura del sistema 00 aportando soporte para
una pirimide, pero las capas son un poco diferentes. las actividades de interfaz hombre/miquina, administra-
RefiriCndose a la Figura 22.1, las cuatro capas de la pira- ci6n (gesti6n) de t a m s y gesti6n (administracibn)de datos.
mide de disefio 00 son: Los objetos del dominio se pueden usar, ademgs, para
La capa subsistema. Contiene una representaci6n desarrollar el disefio de la aplicaci6n en si misma.
de cada uno de 10s subsistemas, para permitir a1 soft-
ware conseguir sus requisites definidos por el cliente e 22.1.1. Enfoque convencional vs. 00
implementar la infraestructura que soporte 10s requeri- Los enfoques convencionales para el disefio de software
mientos del cliente. aplican distintas notaciones y conjunto de heuristicas,
para trazar el modelo de andisis en un modelo de dise-
fio. Recordando la Figura 13.1, cada elemento del mode-
lo convencional de analisis se corresponde con uno o
m6s capas del modelo de disefio. A1 igual que el dise-
iio convencional de software, el D O 0 aplica el disefio
de datos cuando 10s atributos son representados, el di-
La capa de clases y objetos. Contiene la jerarquia sefio de interfaz cuando se desarrolla un modelo de
de clases, que permiten al sistema ser creado usando mensajeria, y disefio a nivel de componentes (procedi-
generalizaciones y cada vez especializaciones m6s acer- mental), para operaciones de diseiio. Es importante notar
tadas. Esta capa tambiCn contiene representaciones. que la arquitectura de un disefio 00 tiene mLs que ver
La capa de mensajes. Contiene detalles de diseiio, con la colaboraci6n entre objetos que con el control de
que permite a cada objeto comunicarse con sus colabo- flujo entre componentes del sistema.
radores. Esta capa establece interfaces externas e inter- A pesar de que existen similitudes entre 10s disefios
nas para el sistema. convencionales y 00, se ha optado por renombrar las
La capa de responsabilidades. Contiene estructu- capas de la pirhmide de disefio, para reflejar con mayor
ras de datos y diseiios algoritmicos, para todos 10s atri- precisi6n la naturaleza de un disefio 00. La Figura 22.2
butos y operaciones de cada objeto. ilustra la relaci6n entre el modelo de analisis 00 (Capi-
tulo 2 1) y el modelo de disefio que se derivara de ah?.
Disefio
de mensajes
D i s e f i ~ aubislstemae
El diseiio de subsistemas se deriva considerando 10s continuidad: la habilidad para hacer pequeiios cam-
requerimientos globales del cliente (representados por bios en un programa y que se revelen haciendo 10s
10s casos de uso) y 10s sucesos y estados que son exter- cambios pertinentes en uno o muy pocos m6dulos.
namente observables (el modelo de comportamiento de proteccidn: una caracteristica arquitectbnica, que
objetos). El diseiio de clases y objetos es trazado de la reduce la propagacidn de efectos colaterales, si ocu-
descripci6n de atributos, operaciones y colaboraciones rre un error en un mddulo dado.
contenidas en el modelo CRC. El diseiio de mensajes es
manejado por el modelo objeto-relacibn, y el diseiio de
responsabilidades es derivado del uso de atributos, ope-
raciones y colaboraciones descrito en el modelo CRC.
Fichman y Kemerer [FIC92] sugieren diez compo- Una referenda que responde a la preguntu iqu6 hace
nentes de diseiio modelado, que pueden usarse para com- que uo diseiio orientudo a obietos seo bueno?, puede
parar varios mCtodos convencionales y orientados a encontrarse en: www.linetica.com/ootips/ood-
objetos: principles.html
1. representach de la jerarquia de mbdulos.
2. especificacidn de las definiciones de datos. De estos criterios, Meyer [MEY90], sugiere cinco
3. especificaci6n de la 16gicaprocedimental. principios basicos de diseiio, que pueden ser deducidos
para arquitecturas modulares: (1) unidades linguisticas
4. indicaci6n de secuencias de proceso final-a-final modulares, (2) pocas interfaces, (3) pequeiias interfa-
(end-to-end) ces (acoplamiento dCbil), (4) interfaces explicitas y (5)
5. representaci6n de estados y transiciones de 10s ocultaci6n de informacidn.
objetos.
6. definition de clases y jerarquias.
7. asignacion de operaciones a las clases.
8. definici6n detallada de operaciones.
e iQue principios basicos
nos guian en el diseiio
de arquitecturas modulares?
9. especificaci6n de conexiones de mensajes.
10. identificacibn de semicios exclusivos. Los m6dulos se definen como unidades linguisticas
modulares, cuando cccorresponden a unidades sintacti-
Los criterios y principios de diseiio presentados en tos enfatiza el esquema detallado de un objeto indivi-
esta secci6n pueden ser aplicados a cualquier mCtodo dual. Se seleccionan las operaciones del modelo de
de diseiio (asi como a1 diseiio estmcturado). Como se anilisis, y 10s algoritmos se definen para cada opera-
ver5, el mCtodo de diseiio orientado a objetos logra cada ci6n. Se representan las estructuras de datos apropia-
uno de 10s criterios mis eficientemente que otros enfo- das para atributos y algoritmos. Las clases y atributos
ques, y resulta en arquitecturas modulares, que cumplen de clase son diseiiados de manera que se optimice el
efectivarnente cada uno de 10s criterios. acceso a 10s datos, y se mejore la eficiencia computa-
cional. Se crea un modelo de mensajeria, para imple-
22.1.3. El Panorama de D O 0 mentar relaciones de objetos (asociaciones).
Como se vio en el Capitulo 21, una gran variedad de El metodo de Jacobson. El diseiio para ISOO
mCtodos de analisis y diseiio orientados a objetos fue (Ingenieria del software orientada a objetos) [JAC92]
propuesta y utilizada durante 10s ochenta y 10s noven- es una versi6n simplificada del mCtodo propietario
ta. Estos metodos establecieron 10s fundamentos para Objectory, tambiCn desarrollado por Jacobson. El
la notaci6n moderna de DOO, heuristicas de diseiio y modelo de diseiio enfatiza la planificacion para el
modeios. A continuaci6n, haremos una breve revisi6n modelo de anilisis ISOO. En principio, el modelo
global de 10s primeros mCtodos de DOO: idealizado de anilisis se adapta para acoplarse a1
ambiente del mundo real. DespuCs 10s objetos de
El metodo de Booch. Como se vio en el Capitulo diseiio primarios, llamados bloquesz, son creados y
21, el metodo Booch [BOO941 abarca un ccproceso de catalogados como bloques de interfaz, bloques de enti-
micro desarrollo>> y un ccproceso de macro desarrollon. dades y bloques de control. La comunicaci6n entre
En el context0 del diseiio, el macro desarrollo engloba bloques durante la ejecuci6n se define y 10s bloques
una actividad de planificaci6n arquitect6nica,que agrupa se organizan en subsistemas.
objetos similares en particiones arquitectonicas separa-
das, capas de objetos por nivel de abstracci6n, identi- El metodo de Coad y Yourdon. ~ s t metodo e para
fica situaciones relevantes, crea un prototipo de diseiio DO0 [COA911, se desarrollo estudiando ccc6mo es que
y valida el prototipo aplicA.ndolo a situaciones de uso. 10s diseiiadores orientados a objetos efectivos,, hacen
El micro desarrollo define un conjunto de <<reglam que su trabajo. La aproximaci6n de diseiio dirige no s610 la
regulan el uso de operaciones y atributos y las politicas aplicaci6n, sino tambiCn la infraestmctura de la aplica-
del dominio especifico para la administraci6n de la c i h , y se enfoca en la representacibn de cuatro com-
memoria, manejo de errores y otras funciones; desa- ponentes mayores de sistemas: la componente de
rrolla situaciones que describen la semintica de las dominio del problema, la componente de interacci6n
reglas y politicas; crea un prototipo para cada politica; humana, la componente de administraci6n de tareas y
instrumenta y refina el prototipo; y revisa cada politica la de administraci6n de datos.
para asi dransmitir su visi6n arquitect6nican [B0094]. El metodo de Wirfs-Brock. Wirfs-Brock, Wilker-
son y Weiner [WIR90] definen un conjunto de tareas
tknicas, en la cual el anilisis conduce sin duda a1 diseiio.
Los protocolos3 para cada clase se construyen refinando
contratos entre objetos. Cada operaci6n (responsabili-
dad) y protocolo (diseiio de interfaz) se diseiia hasta un
nivel de detalle que guiari la implementaci6n. Se desa-
rrollan las especificaciones para cada clase (definir res-
ponsabilidades privadas y detalles de operaciones) y
El metodo de Rumbaugh. La tCcnica de modelado cada subsistema (identificar las clases encapsuladas y
de objetos (TMO) [RUM911 engloba una actividad de la interaction entre subsistemas).
diseiio que alienta ai diseiio a ser conducido a dos dife-
rentes niveles de abstracci6n. El diseiio de sistema se
centra en el esquema de 10s componentes que se nece-
Aunque no es ton mbusto como UML, el mbtodo Wih-
sitan para constmir un sistema o product0 completo. Brock fiene uno elegonciosencillo, 9ue lo convierte
El modelo de andisis se divide en subsistemas, 10s en un enfogue ohernativo e interewnte ol D00.
cuales se asignan a procesadores y tareas. Se define
una estrategia para implementar la administraci6n de A pesar de que la terminologia y etapas de proceso
datos, y se identifican 10s recursos y mecanismos de para cada uno de estos rnCtodos de DO0 difieren, 10s
control requeridos para accesarlos. El diseiio de obje- procesos de DO0 global son bastante consistentes.
* Un bloque es la abstraccion de disefio, que permite la representa- W n protocolo es una descripcion formal de 10s mensajes, a 10s que
cion de un objeto agregado. la clase responde.
C A P ~ T U L O2 2 DISENO O R I E N T A D O A O B J E T O S
Para llevar a cab0 un disefio orientado a objetos, un Estas proporcionaron una vision intema a1 uso de las
ingeniero de software debe ejecutar las siguientes eta- situaciones para el sistema (facilitando guias para el
pas generales: modelado de comportamiento), y establecieron funda-
Describir cada subsistema y asignar a procesadores mentos para la implementacion y vistas del modelo
y tareas. ambiental, identificando y describiendo elementos
estructurales estaticos del sistema.
Elegir una estrategia para implementar la adminis-
UML se organiza en dos actividades mayores:
traci6n de datos, soporte de interfaz y administracion
disefio del sistema y disefio de objetos. El principal
de tareas.
objetivo de UML, disefio de sistema, es representar
Disefiar un mecanismo de control, para el sistema la arquitectura de software. Bennett, Mc Robb y Far-
apropiado. mer [BEN99], exponen este aspect0 de la siguiente
Disefiar objetos creando una representaci6n proce- manera:
dural para cada operacion, y estructuras de datos para En tkrminos de desarrollo orientado a objetos, la arqui-
10s atributos de clase. tectura conceptual esti relacionada con la estructura del
Disefiar mensajes, usando la colaboracion entre obje- modelo estatico de clase y las conexiones entre las com-
tos y relaciones. ponentes del modelo. El modelo arquitectura describe la
manera como el sistema se divide en subsistemas o m6du-
Crear el modelo de mensajeria. los, y como se comunican exportando e importando datos.
Revisar el modelo de disefio y renovarlo cada vez La arquitectura de codigo, define como es que el c6digo
del programa se encuentra organizado en archivos y direc-
que se requiera.
torios y agrupado en librerias. La arquitectura de ejecucion
se centra en 10s aspectos dinimicos del sistema y la comu-
nicaci6n entre componentes, mientras las tareas y opera-
ciones se ejecutan.
Un conjunto de etopos genkricos se oplico duronte La definicion de ccsubsistemas>>, nombrada por Ben-
el DOO, sin importor el rnktodo de diseiio que se escojo. nett et al., es una preocupacion principal durante el dise-
iio de sistema de UML.
Es importante hacer notar que las etapas de disefio
discutidas en esta section son 1terativas.-ESOsignifica
que deben ser ejecutadas incrementalmente, junto con
las actividades de AOO, hasta que se produzca el dise-
fio completo. El diseiio de sistemo se centra en orquitecturo
de softwore y definicion de subsistemos.
El diseiio de objetos describe objetos, hosto
22.1.4. Un enfoque unificado para el D O 0 un nivel en el cuol puedon ser irnplernentodos,
En el Capitulo 2 1, se menciono como Grady Booch, en un lenguoje de progrornocion.
James Rumbaugh e Ivar Jacobson, combinaron las
mejores cualidades de sus mCtodos personales de ana- El diseiio de objetos se centra en la description de
h i s y disefio orientado a objetos, en un metodo uni- objetos y sus interacciones con 10s otros. Una especifi-
ficado. El resultado, llamado el Lenguaje de Modelado cacion detallada de las estructuras de datos de 10s atri-
Unificado, se ha vuelto ampliamente usado en la butos y disefio procedural de todas las operaciones, se
industria4. crea durante el disefio de objetos. La visibilidad5 para
todos 10s atributos de clase se define, y las interfaces
entre objetos se elaboran para definir 10s detalles de un
modelo completo de mensajes.
Referencia web/ ' El disefio de sistemas y objetos en UML se extien-
de para considerar el diseiio de interfaces, adminis-
Un tutorial y listodo extenso de recunos de UML incluyendo
herrornientos, referencios y ejernplos, traci6n de datos con el sistema que se va a construir
se pueden enconhor en: mini.net/cetus/oo-umI.html y administraci6n de tareas para 10s subsistemas que
se han especificado. La interfaz de usuario en UML
Durante el modelo de analisis (Capitulo 21), se repre- utiliza 10s mismos conceptos y principios examina-
sentan las vistas del modelo de usuario y estructural. dos en el Capitulo 15. La vision del modelo de usua-
Booch, Rumbaugh y Jacobson han escrito tres libros muy impor- Visibilidad indica si el atributo es public0 (disponible a traves de
tantes sobre UML. El lector interesado debe consultar [B0099], todas las instancias de la clase),privado (disponiblesolo para la clase
[RUM991y UAC991. que lo especifica) o protegido (un atributo que puede ser usado por
la clase que lo especifica y por sus subclases).
INGENIER~A
DEL SOFTWARE. UN ENFOQUE P R ~ C T I C O
El disefio de sistema desarrolla el detalle arquitect6ni- particiona el modelo de analisis, para definir colecciones
co requerido para construir un sistema o producto. El y
congruentes de clases, relaciones comportamiento.Estos
proceso de diseiio del sistema abarca las siguientes acti- elementos de disefio se definen como subsistema.
vidades:
Partici6n del modelo de analisis en subsistemas.
Identificar la concurrencia dictada por el problema. 10s conceptos de cohesidn y ocoplorniento (Copitvlo 13)
Asignar subsistemas a procesadores y tareas. pueden oplicorse o nivel de subsisternos. Esfukrcese
Desarrollar un disefio para la interfaz de usuario. par olconzor uno bueno independencio funcionol,
cuondo diseie subsisternos
Elegir una estrategia basica para implementar la
administracidn (gesti6n) de datos. En general, todos 10s elementos de un subsistema
Identificar recursos globales y 10s mecanismos de comparten alguna propiedad en com6n. Y se integran
control requeridos para su acceso. para completar la misma funci6n; deben residir dentro
del mismo producto de hardware, o deben administrar
iCuiles son las etapas la misma clase de recursos. Los subsistemas se caracte-
del proceso de diseiio rizan por sus responsabilidades;eso significa que un sub-
de sistemas? sistema puede identificarse por 10s servicios que provee
[RUM91]. Cuando se usa en el context0 de un disefio de
Disefiar un mecanismo de control apropiado para el sistema 00, un servicio es una colecci6n de operacio-
sistema, incluyendo administraci6n de tareas. nes que llevan a cab0 una funci6n especifica (por ejem-
plo, administrar archivos de procesador de textos,
Considerar c6mo deben manejarse las condiciones
de frontera. producir un rendering tridimensional,traducir una seiial
de video anal6gica en una imagen digital comprimida).
Revisar y considerar trade-offs.
En las secciones siguientes, el disefio de actividades iQue criterios nos guian
relacionadas con cada una de estas etapas se conside- en el diseiio de subsistemas?
ran con mayor detalle.
Cuando se definen (y disefian) 10s subsistemas, se
deben seguir 10s siguientes criterios de disefio:
22.2.1. Particionar e l modelo d e analisis El subsistema debe tener una interfaz bien definida,
Uno de 10s principios fundamentales del andisis (Capi- a travCs de la cual se reduzcan todas las comunica-
tulo 11) es hacer particiones. En el diseiio de sistemas 00 ciones con el resto del sistema.
Hoy e n dia la mayoria de las clases de interfaz son parte de una 7 Recuerde que el A 0 0 e s una actividad iterativa. Es totalmente posi-
libreria de componentes de software reutilizables. Esto facilita el ble que el modelo de analisis sea revisado como consecuencia del
disefio e implementation de IGUs (Interfaz grafica de usuario). trabajo de disefio.
C A P ~ T U L O22 DISENO ORIENTADO A OBJETOS
Con la excepcion de un pequeiio numero de ccclases 6. Definir el modelo de mensajeria para la comunica-
de comunicacion>>,las clases incluidas dentro del cion entre capas.
subsistema deben colaborar solo con otras clases den- 7. Revisar el diseiio de capas, para asegurar que el aco-
tro del subsistema. plamiento entre capas se minimiza (un protocolo
El numero de subsistemas debe ser bajo. cliente/senidor puede ayudar a realizar esta tarea)
Un subsistema puede ser particionado internamente,
8. Iterar para refinar el diseiio de capas.
para ayudar a reducir la complejidad.
Cuando dos subsistemas se comunican entre si, pue-
den establecer un enlace clientelservidor o un enlace 22.2.2. Asignacih de concurrencia y subsistemas
punro-a-punto (peer-to-peer) [RUM91]. En un enlace El aspect0 dinamico del modelo objeto-comportamien-
cliente/senidor, cada uno de 10s subsistemas asume uno to provee una indicacion de concurrencia entre clases (o
de 10s papeles implicados, el de el cliente o el del ser- subsistemas). Si las clases (o subsistemas) no se activan
vidor. El servicio fluye del servidor a1 cliente en una a1 mismo tiempo, no hay necesidad para el procesamiento
sola direccion. En un enlace punto-a-punto, 10s servi- concurrente.Esto significa que las clases (o subsistemas)
cios pueden fluir en cualquier direccion. pueden ser implementadas en el mismo procesador de
Cuando un sistema es particionado en subsistemas, hardware. Por otro lado, si las clases (o subsistemas)
se lleva a cab0 otra actividad de diseiio, llamada estra- deben actuar en sucesos asincronicamente y a1 mismo
tificacion por capas. Cada capa [BUS961 de un sistema tiempo, se veran como concurrentes. Cuando 10s sub-
00, contiene uno o mas subsistemas y representa un sistemas son concurrentes, existen dos opciones de alo-
nivel diferente de abstraccion de la funcionalidad reque- jamiento: (1) alojar cada subsistema en procesadores
rida para completar las funciones del sistema. En la independientes 6 (2) alojar 10s subsistemas en el mismo
mayoria de 10s casos, 10s niveles de abstraccion se deter- procesador y proporcionar soporte de concurrencia, sobre
minan por el grado en que el procesamiento asociado las caracteristicas del sistema operativo.
con el subsistema es visible a1 usuario final.
Por ejemplo, una arquitectura de cuatro capas debe
incluir: (1) una capa de presentacion (el subsistema aso-
ciado con la interfaz de usuario), (2) una capa de apli- En lo moyorio de 10s cosos, uno implementocian
cacion (el subsistema que lleva a cab0 procesos asociados de multiproceso incremento lo complejidod y el riesgo
tecnico. Siempre que sea posible, escojo lo orquiteciura
con la aplicacion), (3) una capa de formato de datos (10s
de procesador mhs simple que buedo reolizor el trobojo
subsistemas que preparan 10s datos para ser procesados),
y (4) una capa de base de datos (el subsistema asociado Las tareas concurrentes se definen [RUM9 11 exa-
con la administration de datos). Cada capa se encuen- minando el diagrama de estado para cada objeto. Si el
tra mas profundamente dentro del sistema, representan- flujo de sucesos y transiciones indica que solo un obje-
do un procesarniento mas especifico a1 ambiente. to esta activo en el tiempo, un hilo de control se ha esta-
blecido. El hilo de control continua, aun cuando un
~ C O se~ tree
O un diseiio
objeto envia un mensaje a otro objeto, mientras que el
por capes?
primer objeto espera por la respuesta. Sin embargo, si
Buschmann y sus colegas [BUS961 sugieren el el primer objeto continua procesando despuCs de enviar
siguiente enfoque de diseiio para estratificacion por capas: un mensaje, el hilo de control se divide.
1. Establecer 10s criterios de estratificacion por capas. Las tareas en un sistema 00 se diserian generando
Esto significa decidir como se agruparan 10s subsis- hilos de control aislados. Por ejemplo, mientras que el
temas en una arquitectura de capas. sistema de seguridad HogarSeguro monitoriza sus sen-
2. Determinar el numero de capas. Muchas de ellas sores, puede tambikn marcar a la estacion central de
complican imecesariamente; muy pocas debilitan la monitorizacion para verificar la conexion. Ya que 10s
independencia funcional. objetos involucrados en ambos comportamientos estan
3. Nombrar las capas y asignar subsistemas (con sus activos a1 mismo tiempo, cada uno representa un hilo
clases encapsuladas) a una capa. Asegurarse de que de control y cada uno puede ser definido como una tarea
la comunicacion entre subsistemas (clases) en una distinta. Si la monitorizacion y marcado ocurrieran
capa8, y otros subsistemas (clases) en otra capa, secuencialmente, podna implementarse una sola tarea.
siguen la filosofia de diseiio de la arquitectura. Para determinar cual de las opciones de asignacion
4. Diseiiar interfaces para cada capa. de procesadores es apropiada, el diseiiador debe consi-
5. Refinar 10s subsistemas, para establecer la estructura derar 10s requisitos de desempeiio, costos y el encabe-
de clases para cada capa. zado impuesto por la comunicaci6n entre procesadores.
22.2.3. Componente d e administracion d e tureas interfaz por si misma representa un subsistema de impor-
Coad y Yourdon [COA91] sugieren la estrategia siguien- tancia critica para la mayoria de las aplicaciones moder-
te, para el diseiio de objetos que manipulan tareas con- nas. El modelo de analisis 00 (Capitulo 21), contiene
currentes: 10s escenarios de uso (llamados casos de uso), y una
se determinan las caracteristicas de la tarea. descripcion de 10s roles que juegan 10s usuarios (lla-
mados actores) cuando interactdan con el sistema. Este
se define un coordinador de tarea y objetos asocia-
modelo sirve como entrada a1 proceso de diseiio de inter-
dos. faz de usuario.
se integra el coordinador y otras tareas.
Las caracteristicas de la tarea se determinan, com-
prendiendo c6mo es que se inicia la tarea. Las tareas
controladas por sucesos y manejadas por reloj son l o moyotfo de h s closes necesorios para treat
uno interfaz moderrm yo existen y e h n disponibles
las mas comunes. Ambas se activan por una inte-
poro el diseiiodor. Eldiseiio de interfoz obedece
rrupcion, per0 la primera recibe una interruption de ol enfoque definido en el Copitulo 15.
alguna fuente externa (por ejemplo, otro procesador,
un Sensor), mientras que la ultima es controlada por
el reloj. Una vez que el actor y su situacidn de uso se defi-
nen se identifica una jerarquia de comando. La jerar-
quia de 6rdenes define la mayoria de las categorias del
mend de sistema (la barra de mend o la paleta de herra-
mientas), y todas las subfunciones, que estarin dispo-
nibles en el contexto de una categoria importante de
menu de sistema (las ventanas de mend). La jerarquia
de ordenes se refina repetidamente, hasta que cada caso
Ademas de la manera en que una tarea es inicia- de uso pueda ser implementado navegando por la jerar-
da, tambiCn se deben determinar la prioridad y cri- quia de funciones.
ticidad de la tarea. Las tareas de alta prioridad deben Debido a que existe una amplia variedad de entor-
tener acceso inmediato a 10s recursos del sistema. nos de desarrollo de interfaces de usuario, el disefio de
Las tareas de alta criticidad deben continuar ope- 10s elementos de una IGU (Interfaz Grifica de Usuario)
rando aun cuando la disponibilidad de un recurso es no es necesario. Ya existen clases reutilizables (con atri-
reducida o el sistema operativo se encuentra en esta- butos y operaciones apropiadas) para ventanas, iconos,
do degradado. operaciones de ratdn y una amplia gama de otro tip0 de
Una vez que las caracteristicas de la tarea se han funciones de interaction. La persona que implementa
determinado, se definen 10s atributos y operaciones estas clases (el desarrollador), solo necesita instanciar
del objeto requerido, para alcanzar coordinaci6n y objetos, con las caracteristicas apropiadas para el domi-
comunicaci6n con otras tareas. La plantilla basica de nio del problema.
una tarea (para un objeto tarea), toma la forma de
[COA9 1] :
Nombre de l a tarea - el nonbre del objeto 22.2.5. Componente d e la administraci6n
Descripcidn - un r e l a t o que describe el propdsito d e datos
del objeto.
Prioridad - prioridad de la tarea (por ejemplo, a l t a , La administracion o gesti6n de datos engloba dos ire-
media, ba ja) . as distintas de inter&: (1) la administracih (gestion)
Servicios - l i s t a de operaciones que son responsa- de datos criticos para la propia aplicaci6n, y (2) la crea-
bilidad del objeto. ci6n de infraestructura para el almacenamiento y recu-
Coordinados por - la manera como se invoca el com- peraci6n de 10s objetos. En general, la administracion
portmiento del objeto. de datos se diseiia en forma de capas. La idea es aislar
Comunicados via - datos de entrada y salida r e l e - ~ 10s requisitos de bajo nivel que manipulan las estructu-
vantes a la tarea. ras de datos, de 10s requisitos de alto nivel para mane-
La descripcion de esta plantilla puede ser traducida jar 10s atributos del sistema.
en el modelo de diseiio esthdar (incorporando la repre- En el contexto del sistema, un sistema de manipula-
sentacion de atributos y operaciones), para 10s objetos ci6n de bases de datos, normalmente se usa como alma-
tarea. cCn de datos comlin para todos 10s subsistemas. Los
objetos requeridos para manipular la base de datos son
miembros de clases reutilizables que se identifican
22.2.4. Componente d e interfaz de usuario mediante el andisis del dominio (Capitulo 21), o que
Aunque la componente de interfaz de usuario se imple- se proporcionan directamente por el fabricante de la
menta dentro del contexto del dominio del problema, la base de datos. Una discusion detallada del diseiio de
C A P ~ T U L O22 DISENO ORIENTADO A O B J E T O S
bases de datos para sistemas 00 esta fuera del ambit0 debe diseiiar un mecanismo de control para ello. Rum-
de este libro9. baugh y sus colegas [RUM911 sugieren que cada recur-
El diseiio de la componente de administration de so deba ser poseido por un ccobjeto guardian,,. El objeto
datos incluye el diseiio de 10s atributos y operaciones guardian es el porter0 del recurso, controlando el acce-
requeridas para administrar objetos. Los atributos sig- so y moderando peticiones contradictorias para 61.
nificativos se aiiaden a cada objeto en el dominio del
problema, y proporcionan informacion que responde a 22.2.7. Comunicaciones entre subsistemas
la pregunta < < ~ C O me~almaceno?>>.
O Coad y Yourdon
[COA91] aconsejan la creaci6n de una clase objeto- Una vez que cada subsistema ha sido especificado, es
servidor, c o n 10s servicios de (a) indicar a1 objeto que necesario definir las colaboraciones que existen entre
se almacene a si mismo, y (b) recuperar objetos alma- subsistemas. El modelo que se usa para la colaboracion
cenados para su uso por otros componentes de disefio>>. objeto-objeto puede ser extendido en conjunto para 10s
Como un ejemplo de la gestion de 10s datos para el subsistemas. La Figura 22.4 ilustra un modelo de cola-
objeto Sensor, examinado como parte del sistema de boracion. Como se vio anteriormente en este capitulo,
seguridad HogarSeguro, el diseiio puede especificar un la comunicaci6n puede ocurrir estableciendo un enlace
archivo llamado <<Sensor>>. Cada registro deberia corres- cliente/servidoro punto-a-punto. RefiriCndose a la Figu-
ponder a una instancia denominada Sensor, y habria de ra, se debe especificar la interaction que existe entre
contener 10s valores de cada atributo de Sensor para una subsistemas. RecuCrdese que un contrato proporciona
instancia dada. Las operaciones dentro de la clase objeto- la indicacih de 10s modos como un subsistema puede
servidor deberian permitir a un objeto especifico ser interactuar con otro.
almacenado y recuperado, cuando sea requerido por el
sistema. Para objetos mas complejos, seria necesario iQuti etapas de diseiio
se requieren para especificar
especificar una base de datos relacional, o una base de
un ((contrato)) de un subsistema?
datos orientada a objetos para ejecutar la misma funci6n.
Las siguientes etapas de diseiio pueden aplicarse para
especificar un contrato para un subsistema [WIR90]:
I Subsistema
ciiente 1Solicitud
1 . Listar cada peticidn que puede ser realizada por 10s
colaboradores del subsistema. Organizar las peti-
ciones por subsistema y definirlas dentro de uno o
mas contratos apropiados. Asegurarse de anotar con-
tratos que se hereden de superclases.
2. Para cada contrato, anotar las operaciones (las here-
dadas y las privadas,) que se requieren para irnple-
Solicitud mentar las responsabilidades que implica el contrato.
Asegurarse de asociar las operaciones con las clases
especificas, que residen en el subsistema.
Solicitud
3. Considerar un contrato a la vez, crear una tabla con
la forma de la Figura 22.5. Para cada contrato, la
tabla debe incluir las siguientes columnas:
FIGURA 22.4. Modelo de colaboracion entre subsistemas. Tipo: el tipo de contrato (por ejemplo, clientel
servidor o punto-a-punto).
22.2.6. Componente de gesti6n de recursos Contrato Tipo Colaboradores Clasels) Operacion(es) Formato
del mensaje
Estan disponibles una variedad de recursos diferentes
para un sistema o product0 0 0 ; y, muchas veces, 10s
subsistemas compiten por estos recursos a1 mismo tiem-
po. Los recursos globales del sistema pueden ser enti-
dades externas (por ejemplo, una unidad de disco,
procesador o linea de comunicaciones) o abstracciones
(por ejemplo, una base de datos, un objeto). Sin impor-
tar la naturaleza del recurso, el ingeniero de software FIGURA 22.5. Tabla de colaboraciones del subsistema.
Colaboradores: 10s nombres de 10s subsiste- grafo de colaboraci6n es similar, en forma, a1 dia-
mas que son parte del contrato. grama de flujo de sucesos examinado en el Capi-
Clase: 10s nombres de las clases (contenidas en tulo 21. Cada subsistema se representa, junto con
el subsistema), que proporcionan servicios deno- sus interacciones con otros subsistemas. Los con-
tados por el contrato. tratos que se invocan durante interacci6n, se deta-
Operaciones: nombres de las operaciones (den- llan como se muestra en la Figura. Los detalles
tro de la clase), que implementan 10s servicios. de la interacci6n se determinan observando el con-
trato en la tabla de colaboraci6n del subsistema
Formato del mensaje: el formato del mensaje (Fig. 22.5).
requerido para implementar la interacci6n entre
colaboradores.
Esboce una descripci6n apropiada del mensaje,
para cada interacci6n entre 10s subsistemas.
4. Si 10s modos de interaccidn entre 10s subsisternas Cada contrato entre subsisterna se manifiesto por uno o
son complejos, dehe crear un diagrama subsis- mas rnensajes que se transporton entre 10s obietos dentro
tema-colaboracidn como el de la Figura 22.6. El de 10s subsisternas.
Retomando la metafora que se introdujo a1 inicio del objeto, y detalles de procedimientos, que describen las
libro, el diseiio de sistemas 00 se puede visualizar como operaciones.
el plano del suelo de una casa. El plano del suelo espe-
cifica el prop6sito de cada habitaci6n y sus caracteris-
ticas arquitect6nicas,que conectan las habitaciones unas
con otras y con el ambiente exterior. Ahora es el momen- kegcirese de que lo orquitecturo se ho dehido
ontes de comenzor el diseio de objetos. No deje
to de proporcionar 10s detalles que se requieren, para
que lo orquitechwa predomine.
construir cada habitaci6n. En el context0 del DOO, el
diseiio de objetos se centra en las <<habitaciones>>. La descripci6n del protocolo no es nada mas que un
Bennet y sus colegas [BEN991 examinan el diseiio conjunto de mensajes y un comentario correspondien-
de objetos de la siguiente manera: te para cada mensaje. Por ejemplo, una porci6n del pro-
El diseiio de objetos tiene que ver con el diseiio detallado t o c o l ~de descripci6n para el objeto sensor de
de 10s objetos y sus interacciones. Se completa dentro de la movimiento (descrito anteriormente), podria ser:
arquitecturaglobal, definida durante el diseiio del sistema y de
MENSAJE(sensor.movimiento) -> leer: DEWELVE sen-
acuerdo con las reglas y protocolos de diseiio aceptados. El
sor.ID, sensor.estado;
diseiio del objeto esta relacionado en particular con la especi-
ficacion de 10s tipos de atributos, corno funcionan las opera- Esto describe el mensaje requerido para leer el Sen-
ciones y corn0 10s objetos se enlazan con otros objetos. sor. Igualmente,
Es en esta fase cuando 10s principios y conceptos MENSAJE(sensor.movimiento) -> asigna: ENVIA sen-
bhsicos asociados con el diseiio a nivel de componen- sor.ID, sensor.es tado;
tes (Capitulo 16) entran en juego. Se definen las estruc-
turas de datos locales (para atributos), y se diseiian 10s Asigna (establece) o inicializa el estado del Sensor.
algoritmos (para operaciones).
I Subsistema1-'
para el panel
22.3.1. Descripcih de objetos
de estado para la zona
Una description del diseiio de un objeto (instancia de I de estado de prueba I
Solicltud de
clase o subclase) puede tomar una o dos formas especificacion
[GOL83]: (1) Una descripcidn de protocolo que esta- del tipo de
blece la interfaz de un objeto, definiendo cada mensaje chequeo Solicitud de notification
periodic0 periodica del chequeo
que el objeto puede recibir y las operaciones que el obje- de actualization de la
de estado
to lleva a cab0 cuando recibe un mensaje, o (2) Una des- de la alarms 1 , configuraclon de alarrna
cripcidn de implementacibn que muestra detalles de del sisterna Subsistma
implementaci6n para cada operaci6n implicada por un central
de
mensaje pasado a un objeto. Los detalles de imple-
mentacion incluyen informaci6n acerca de la parte pri-
vada del objeto; esto significa, detalles intemos acerca FIGURA 22.6. Grafico abreviado del subsistema colaborado
de la estructura de datos, que describen 10s atributos del de HogarSeguro.
C A P ~ T U L O2 2 D I S E N O ORIENTADO A O B l E T O S
,
ninguna operaci6n o atributo.
plo, la Figura 22.12 habra un numero de componentes,
que posean una relaci6n de generalizacih con la clase
Producto Manufacturado
Componente.
7
Y
I-----,--
Componente
-
vado
represents
agregmh
na todas las instancias de 10s objetos que estin conte- mo de la linea determina que un administrador dirige a
nidos desaparecen. Por ejemplo, una clase Cliente que un coniunto de empleados.
representa clientes en un banco tendra una relaci6n de La asociaci6n entre clases puede nombrarse para
composici6n con las cuentas que el cliente posee; por- documentar explicitamente la relaci6n. Por ejemplo, la
que si el cliente se elimina, por ejemplo, se mueve a otro Figura 22.17 documenta el hecho de que un adminis-
banco, todas sus cuentas son eliminadas; esta forma de trador dirige a un grupo (colecci6n) de empleados.
w
relacion se indica de manera muy similar a la agrega-
cion, per0 en esta ocasi6n el rombo esta relleno en lugar Administrador
de hueco. Esto se muestra en la Figura 22.14.
22.5.4. Asociaciones
La agregaci6n y la composici6n son ejemplos especifi-
cos de una relaci6n entre dos clases. Una relaci6n ocu-
rre entre dos clases cuando existe alguna conexi6n entre
ellas, en UML esto se conoce como asociaci6n. Algu-
nos ejemplos de esto se describen a continuaci6n:
u Empleado
C---l
Estudiante involucrados con un sistema para la administracidn de
productos en un almacCn (Warehouse). Por ejemplo, el
administrador del almacCn puede hacer una petici6n a
nivel de existencias de un producto en particular. A1 lle-
FIGURA 22.18. Documentando roles.
var a cab0 estas funciones, el administrador del alma-
cCn genera un numero de casos de uso, cada uno de 10s
El actor en este caso es el prestatario, que utiliza la cuales hacen uso de otro caso de uso, que valida el nom-
biblioteca, y el circulo ovalado muestra el caso de uso bre del producto a1 que se hace referencia en el caso de
con el mismo nombre debajo. Los casos de uso repre- uso para revisar; por ejemplo, que el administrador haya
sentan una vision, a un alto nivel funcional, de un sis- escrito un nombre de producto valido.
tema en UML. En general, un sistema grande debe Aqui, el hecho de que un caso de uso se emplee por
contener centenares, si no millares de casos de uso. Un otros casos, se indica por medio de una flecha con pun-
fragment0 de un grupo de casos de uso relacionados con ta hueca.
el mismo actor se muestra en la Figura 22.20.
-
Consultar producto
/ \
Adrninistrador
del alrnacen,
- ccusesn
22.5.6. Colaboraciones
Administrador \ Emitir informe de estado
Durante la ejecucidn de un sistema orientado a obje-
tos, 10s objetos interactuaran con cada uno de 10s otros.
Por ejemplo, en un sistema bancario, un objeto Cuen-
ta puede enviar un mensaje a un objeto transaccion
para crear una transaccion que ha ocumdo en una cuen-
ta, por ejemplo una cuenta de cargo. Este tipo de infor-
\ maci6n es importante para el diseiiador de un sistema
I Seleccionar plantilla
orientado a objetos, durante el proceso de la identifi-
cation y validacion de clases. Por esta razon, UML
tiene dos notaciones equivalentes para definir las inte-
racciones. En este libro nos centraremos so10 en uno:
el diagrama de secuencias; el otro diagrama se cono-
Terminar proyecto
ce corno diagrama de colaboracion, y es equivalente
a1 diagrama de secuencia; de hecho, son tan similares
lniciar Proyecto que las herramientas CASE pueden normalmente cre-
ar un diagrama, a partir de una instancia o de la otra.
La Figura 22.22 muestra un ejemplo simple de un dia-
FIGURA 22.20. Un conjunto de casos de uso. grama de secuencias.
C A P ~ T U L 2O2 DISENO ORIENTADO A OBIETOS
En este diagrama existen tres objetos, 10s cuales Aqui un actor, representado por un objeto an6nimo
se involucran en una interacci6n. El primer0 es el definido por la clase InformeBalance, envia un men-
objeto administrador descrito por la clase Emplea- saje a1 objeto cuenta, que consulta la cuenta.
do. Esto envia un mensaje actualizarlnforme a un Este objeto comprueba si es una cuenta vhlida, y lue-
objeto llamado informeventas, el cual envia un men- go envia un-mensaje generarlnformeBalance a un obje-
saje crearTransacci6n a un objeto transaccidn- to informeBalance, que contiene 10s datos requeridos
Ventas. por el cliente del banco.
[ZtEi
[G) )F]
adminisfrador: 22.5.7. Diagramas de estado
Otro componente importante de UML es el diagrama
de estado. Este muestra 10s diferentes estados en que un
actualizar lnforme ; objeto se encuentra, y c6mo se dan las transiciones de
F
u
n: crearTransaccion :
cada estado a otros estados. Tal diagrama contiene 10s
siguientes componentes:
Estados: se muestran dentro de cuadros, con esqui-
: cambiar Detalles : nas redondeadas.
U Transiciones entre estados mediante flechas.
/
CerrarCuenta
tulles.
La Figura 22.23 muestra otro ejemplo de un diagra-
ma de secuencias.
Transaccion
u : comprobar-
CuentaValida ;
FIGURA 22.24. Ejemplo d e u n diagrama de estados.
El objetivo de esta secci6n es mostrar el uso de diagra- 6. El sitio web deberi interactuar con un sistema de
mas UML, descrito en la Secci6n 22.25, aplicado a un control de inventario, que tambiCn requiere desarro-
sistema real. Este sistema es un sistema de comercio 110. Este sistema de control de inventarios debe mane-
electr6nico (e-commerce). jar el proceso de recepcidn de libros de 10s inventatios
de las editoriales, retiro de libros cuando se ordenan
por parte de un cliente, y reordenaci6n de existencia
de un libro, cuando se encuentra por vaciarse, para
Libros-en-linea es una compaiiia creada reciente- encarar un problema de suministros, en un tiempo
mente, que es subsidiaria de otra gran compaiiia mul- de siete dias.
tinacional de comercio, conocida como Pollday 7. El control de inventarios por parte del administrador
Publishing. Los directores de Pollday Publishing se seri fijado en un tiempo de siete semanas. ~l o ella
decidieron a llevar a cab0 un gran crecimiento en ven- tendrin la responsabilidad de mantener las ventas, y
tas por internet entre sus clientes, y decidieron pre- la disponibilidad de existencias y, cuando las exis-
parar a Libros-en-Linea para ello. El concept0 que tencias de un libro se encuentren bajas, hacer un
Pollday tiene es el de un sitio Web de comercio elec- nuevo pedido. Para realizar esto, este sistema de con-
tr6nic0, que tenga catilogos detallados de cada libro trol de inventarios debe proporcionar informes de
que manejan, junto con recursos con 10s que el usua- ventas y existencias de inventario con regularidad.
rio del sitio Web puede ordenar libros, utilizando una 8. Un Administrador de Marketting intemendrii cada
forma incluida en una pigina Web. A continuaci6n, ocho semanas. El Jefe de Marketting tendri la fun-
se muestran algunos extractos, tornados del conjun- ci6n de determinar 10s precios a 10s que 10s libros
to de requisitos iniciales, detallados por el equipo tCc- serin vendidos. Se dari la situaci6n de que un libro
nico de Libros-en-linea: puede tener un numero diferente de precios durante
Libros-en-linea desea desarrollar la capacidad de su tiempo de vida; por ejemplo, se debe decidir si se
ventas en linea por medio de la Web. EL sitio web ofrece con un mayor descuento durante las primeras
que implementa esta capacidad debe permitir a1 semanas, y luego ajustar el precio a 10s precios reco-
cliente examinar 10s detalles del libro, ordenarlo y mendados por las editoriales.
registrar su direcci6n de correo electr6nico para reci- La cornpailia que desarroll6 el software para Libros-
bir ofertas especiales con detalles, publicaciones nue- en-linea, primer0 identific6 un numero de clases candi-
vas y revisiones. datas, que a continuaci6n se detallan:
Cuando un cliente accede al sitio Web, cada uno de RegistroCliente. Detalles de alguien que compra
10s recursos antes descritos se despliegan. libros, o que se registr6 para recibir correos electro-
Si el cliente registra su direcci6n de correo electro- nicos con informaci6n.
nico, se le preguntarin su informacion personal. Esto Libro. El articulo principal, quC Libros-en-linea
incluye su nombre, una direcci6n de correo electr6- vende.
nico, una direcci6n postal. Un miembro del equipo Orden. Una orden que un cliente realiza, para uno
conocido como el administrador de contratos sera el o mis libros. Esta orden debe ser para una simple
responsable de enviar informaci6n de oferta, etc., a copia de un libro, o para copias de un numero de
10s clientes. libros o incluso multiples copias de muchos libros.
El cliente podri comprar libros del catilogo en Una orden contendri un numero de lineas de orden
linea, examinando las piginas con detalles de 10s (vCase a continuaci6n), y una especificacion de envio.
libros y seleccionando el libro, que comprarii LineaDeOrden. Esta es una simple linea de orden.
mediante algun mecanismo como el de presionar Por ejemplo la orden de la copia de un libro. Una
un boton. El sistema deberii mantener un carrito de orden consistiri en una o mis lineas de orden. Una
compras virtual, en el que 10s detalles de cada libro linea de orden contendri informacion acerca de
se almacenan. Conforme el carrito se va llenando quC libro se ordena y la cantidad ordenada (usual-
de libros, se muestra a1 cliente el precio acumulado mente 1).
de todas sus compras. Carrito. Es un contenedor que existe durante la
Cuando el cliente ha terminado de comprar en el sitio exploration del sitio Web, por parte de un cliente que
Web, se le pediri informacion acerca de qut forma realiza una orden. Los contenidos del carrito serin
de envio se utilizari. Por omision se mostrara la lineas de orden. Cuando un cliente complete una
opcion de envio por correo estindar, y un servicio orden, las lineas de orden del carrito y la informa-
de envio expreso garantizado para entregar dentro cion de envio proporcionada por el usuario serin ane-
de 24 horas. xadas a una orden.
C A P ~ T U L O2 2 DISENO ORIENTADO A O B J E T O S
OrdenEspera. Esta es una parte de la orden, la cual Estas fueron, entonces, las clases identificadas princi-
no puede cumplirse por las existencias del almacCn. palmente. TambiCn se identificaron un nlimero de actores:
Si el cliente esti conforme, esperando por un libro Cliente. Este es el actor principal: la persona que
que no esti en existencia, entonces se realiza una lleva a cab0 las acciones, que resultan en 10s mayo-
orden de espera. Esta orden de espera se satisface, res cambios de estado del sistema.
cuando las existencias del libro se restauran por Administrador de marketting. Es un actor importante
Libros-en-linea. que ajusta muchos de 10s parimetros del sistema,
Almacen. Esta es una colecci6n de libros que se tales como el precio de 10s libros.
encuentran en existencia. Una orden de libro o de Administrador del control de inventarios. Alguien
colecci6n de libros se manda a1 almacCn y de ahi que controla 10s inventarios en un almacCn y toma
se retiran 10s libros de sus cajas del almacCn, se decisiones acerca de las 6rdenes.
empaquetan y se despachan a1 cliente. En ese Existen un gran nlimero de casos de uso asociados
momento, se ajustan 10s detalles de las existen- con estas acciones, muchas de ellas asociados con el
cias. actor cliente, se muestran en la Figura 22.25.
RegistroExistencias. Estos son 10s datos que des- La selecci6n de casos de uso asociados con el Cliente, y
criben 10s detalles de las existencias de un libro; las mostradas en la Figura 22.25 incluyen casos de uso para:
por ejemplo, cuintos hay en existencia, el nivel Registro. Aqui el cliente proporciona su nombre y
actual cuando se ha hecho una requisicidn a las edi- su clave. Una vez registrada, pueden examinar el
toriales, y la localizaci6n de 10s libros dentro del catilogo de libros.
almacCn. Ordenar.Aqui el cliente ordena una o mis copias de
NotaEmpaque. Esta es una nota enviada con una un libro.
colecci6n de libros a1 cliente. La nota de empaque Realizar. El cliente completa la orden y ordena a1 sis-
contiene informaci6n acerca de cuintos libros se tema iniciar el proceso en que la orden se despacha.
enviaron y la tarifa de envio aplicada. TambiCn puede Buscar un libro. El cliente busca, en el catilogo en
contener detalles de algunos libros, que no pudieron linea, un libro especifico.
ser enviados porque no se encontraban en las exis- Eliminar tarjeta de crkdito. Aqui el cliente puede eli-
tencias. minar una o mis de las tarjetas de crCdito registra-
TarjetaCredito. Un cliente pagari por sus libros das y asociadas con 61.
mediante una tarjeta de crCdito. El sistema permite Registrar tarjeta de crkdito. Aqui el cliente registra
a1 cliente pre-registrar su o sus tarjetas, para que una o mas de sus tarjetas de crCdito a1 sistema.
no tenga que reescribirlas cada vez que haga una
Una porcion de uno de estos diagramas de clase para
orden.
el sistema, se muestra en la Figura 22.26. Un nlimero
de roles asociados con el diagrama se ha omitido; regu-
larmente se incluyen. Algunas de las relaciones entre
clase, tambiCn se omitieron.
El diagrama muestra muchas de estas clases antes
Registro
d
/ descritas. Las linicas clases que se omitieron son:
OrdenSatisfecha y OrdenEspera. Estas dos clases son
especializaciones de la clase Orden, que representa una
orden de libros para un cliente.
A, Cornprobar pedido
u..
t \ Encontrar libro
Borrar tarjeta
de credito
de la tarjeta f
I a Libro
Registrar almacenado
tarjeta de credito
FIGURA 22.26. Una seccion de un diagrama de clases
FIGURA 22.25. Algunos casos de uso para el actor Cliente. para el caso de estudio.
399
C A P ~ T U L O22 DISENO ORIENTADO A OBIETOS
cliente y su direccion; ambos se expresan como cade- La palabra clave String especifica que esta operacion
nas de caracteres. Normalmente, en un sistema real exis- devolveri una cadena, y la palabra clavepublic descri-
ten muchos mis atributos asociados con la clase. La be el hecho de que cualquier c6digo de cualquier otra
descripcidn del atributo incluye su tip0 (String) y su clase puede hacer uso de esta operacion: public es el
visibilidad. En el ejemplo anterior, a 10s dos atributos opuesto de la palabra clave private, detallada en el p h a -
mostrados se les asigna la visibilidad de privados. Esto fo anterior.
significa que pueden ser accedidos por cualquier c6di- El codigo para esta operacion se encierra con llaves
go dentro de la clase per0 no por alguno fuera de ella; ( ( } ) de operaci6n.
por ejemplo, el c6digo que pertenece a otra clase. Esto La operacion modificarDireccidnCliente difiere en
significa que las variables de instancia se encapsulan dos cosas de la operaci6n obtenerNombreCliente. En
dentro de la clase. Existen otros modificadores de visi- primer lugar, le antecede la palabra void; esto indica que
bilidad en Java: Se encontrari con otro despuCs, cuan- no hay resultado que regresar de la operacion: la ope-
do se describan las operaciones de una clase. raci6n solo lleva a cab0 acciones que modifican 10s atri-
butos de la clase. En segundo, la operaci6n asociada con
[Gi)DeOrden [=I
[G) el argumento direccidn, que es una cadena que repre-
senta la nueva direccion de un cliente, que reemplaza-
r i a la anterior.
Esto, entonces, es la forma bisica de una clase en
Java; es muy similar en muchas formas a la estructura
de clases expresada para 10s lenguajes orientados a obje-
u-
AjustarNivelStock
tos, con excepcidn de SmallTalk. A continuacion, se
muestra el c6digo completo de una clase muy simple.
La clase representa un contador, que es un dispositivo
que sirve para registrar el nlimero de veces que una pagi-
na web ha sido accedida por visitantes de un sitio Web.
class Contador i
private int veces;
public Contador ( int valorInicio )
i
FIGURA 22.27. Un diagrarna de secuencia para el caso de veces = valorInicio;
estudio.
i
public void ajustaContador( int valor )
TambiCn se han mostrado dos operaciones dentro de i
la clase Cliente. La primera es la operaci6n obtener- veces = valor;
NombreCliente, que devuelve el nombre del cliente des- i
crito por la clase. public int obtenerCuenta ( )
i
return veces;
i
public void incrementacuenta ( )
i
vecestt;
i
i
La clase denominada Contador tiene un atributo
veces, que registra el nlimero de veces consultado por
Cancelar usuarios. La siguiente operaci6n tiene el mismo nom-
de libro Seleccionar
bre de la clase, y se conoce como constructor. Este es
Transporte
un fragment0 de c6digo ejecutable, que se ejecuta cuan-
do el objeto se crea, recibe un argumento entero que es
el valor inicial del contador. Cuando el usuario de la
clase desea crear un objeto contador, el c6digo es el
siguiente:
Contador cont = new Contador( 0 );
La operaci6n obtenerCuenta regresa el valor actual del RecuCrdese que, en la herencia, las operaciones en
contador, la operaci6n ajustacontador ajusta el atributo la superclase (en nuestro clase Contador) se heredan por
veces a un valor dado por su argumento, y la operaci6n la superclase (en nuestro caso TiempoContador), a
incrementacuenta incrementa el atributo veces en uno (la menos que se sobrecarguen.
operaci6n ++ es la operaci6n de increment0 en uno). La primera operaci6n ajustacontador, sobrecarga a1
La sintaxis de Java para enviar mensajes a1 objeto es mCtodo correspondiente en la superclase. Primero ini-
la siguiente: cializa el atributo veces dentro de la superclase, hacien-
0bjeto.nombreOperacidni argumentos ) do una llarnada a su constructor (la palabra clave sdper
se utiliza para ello), y luego se construye un nuevo obje-
Por ejemplo para incrementar un objeto Contador to Time. Este objeto se define en cualquier otro lugar, y
cont el c6digo seria: no se debe mostrar el c6digo. La operaci6n ajustacon-
cont.incrementacuenta( j ; tador tambiCn sobrecarga la operacidn correspondiente
La clase anterior es muy simple; de cualquier modo, dentro de Contador. El c6digo dentro de la clase prime-
s i n e para ilustrar las caracteristicas estructurales prin- ro inicializa el atributo de la superclase,para que sea igual
cipales de c6mo se define una clase. Existen otras com- a valor. Luego envia un mensaje setNow a1 ambuto hora-
plicaciones, como el hecho de que pueden definirse varios Acceso, para ajustar su valor a la hora actual, el c6digo
niveles de visibilidad; de cualquier modo, esto queda para la operaci6n setNow forma parte de la clase Time y
fuera del alcance de un libro de ingenieria del software. no se muestra. El mCtodo obtenHora es simple: todo lo
Existen dos maneras de combinar clases: la primera que hace es regresar el valor de horaAcceso. La opera-
es la herencia y la segunda es la agregacion. Los lenguajes ci6n incrementaCuenta sobrecarga la operaci6n corres-
de programaci6n orientada a objetos contienen recursos pondiente en la clase Contador. Primero incrementa el
que permiten a ambas ser implementadas fzicilmente. valor de veces, llamando a la operaci6n incrementacuenta
En Java, la palabra clave extends se utiliza para deri- dentro de la superclase, luego ajdstale valor de horaAc-
var una clase de una ya existente por medio de la heren- ceso, enviando un mensaje setNow a1 objeto. El mCtodo
cia. Por ejemplo, asdmase que se necesita derivar una obtencuenta, heredado de la clase Contador, no necesi-
clase nueva, que se parece mucho a la clase Contador, ta ser sobrecargada, ya que todo lo que hace es regresar
per0 que ademhs registra la hora a la que la cuenta se el valor del ambuto veces, dentro de la superclase.
increment6 El esqueleto de la nueva clase, que hereda Esto es, como un lenguaje de programaci6n orienta-
la clase Contador, se muestra a continuaci6n: do a objetos implementa la herencia. La implementaci6n
class TiempoContador extends Contadori de la agregaci6n es m6s simple: todo lo que involucra
// Algunos atributos nuevos es la inclusidn de las partes agregadas como atributos de
// Algunas operaciones nuevas. clase. Por ejemplo, la clase siguiente Computadora,
I representa a una computadora; forma parte de un siste-
ma para planificar la fabricaci6n de computadoras. Una
La palabra clave extends especifica el hecho de que
computadora es agregada desde un monitor, un teclado,
la clase TiempoContador se hereda de la clase Conta-
una unidad de proceso y asi sucesivamente. Esto se mues-
dor. El c6digo para la clase se muestra a continuaci6n:
tra en la clase como una sene de atributos.
class TiempoContador extends Contadori
class Computer 1
Time horadcceso;
private Moni tor mon ;
pub1 ic TiempoContador( int valorInicio )
private KeyBoard kb;
private Processor proc;
super( valorInicio j; // dema's atributos
horaAcceso = new Time horaAcceso( ); //dehicidn de las operaciones asociadas con
la computadora.
public void ajustaContador( int valor j I
super.ajustaContador( int valor ); Como un ejemplo final de c6digo en Java, se ha
horaAcceso.setNow( j; reproducido mucho del c6digo para un cliente, del
I pequefio caso de estudio mostrado en la Secci6n 22.6.
public Time obtenHora ( j Un cliente es alguien que comprarh libros usando inter-
i net. El c6digo para muchos de 10s mktodos se encuen-
return horaAcceso; tra a continuacih:
I class Cliente
public void incrementacuenta( ) i
i String nombre, direccidn, tipoTarjetaCredito,
super.incrementacuenta( ) ; clave, infoseguridad;
horaAcceso.setNow( ); HistorialCompras Hc;
OrdenesActuales ordenesA;
Preferencias pref;
C A P ~ T U L O22 DISENO ORIENTADO A O B J E T O S
Public obtenPrefCliente( ) i
return Hc;
return pref; i
i public void inic0rdenesA ( )
public String obtenerNombre( ) i
//utiliza el metodo setclear de Ordenes-
return nombre; Actuales para
i //inicializar las ordenes actuales
publ ic String obtenDireccion( j ordenesA.setclear ( ) ;
i
return direccion; publ ic void agregaordeni Orden ord )
i i
publ ic String obtenTipoTajetaCredito ( ) //Utiliza el metodo addcurrentorders de
OrdenesActuales
return tipoTarjetaCredito; ordenesA.addCurrentOrders(ord );
i I
public String obtenClave( ) public void borraordeni Orden ord }
El disefio orientado a objetos traduce el modelo de Durante el diseiio del sistema, la arquitectura del sis-
A 0 0 del mundo real, a un modelo de implementaci6n tema orientado a objetos se desanolla. Ademas del desa-
especifica, que puede realizarse en software. El pro- rrollo de sistemas, de sus interacciones y de su colocaci6n
ceso de D O 0 puede describirse como una piramide dentro de las capas arquitectonicas, el disefio de sistemas
compuesta por cuatro capas. La capa fundamental se considera la componente de interaccion con el usuario,
centra en el disefio de subsistemas, que implementan una componente de administration de tareas y una com-
funciones principales de sistema. La capa de clases ponente de rnanejo de datos. Estas componentes de sub-
especifica la arquitectura de objetos global, y la jerar- sistemas proporcionan la infraestructura de disefio, que
quia de clases requerida para implernentar un sisterna. permite a la aplicacion operar efectivamente. El proceso
La capa de mensajes indica como debe ser realizada de diseiio de objetos se centra en la description de estruc-
la colaboracion entre objetos, y la capa de responsa- turas de datos, que usan 10s atributos de clase, 10s algo-
bilidades identifica las operaciones y atributos que ritmos que usan las operaciones y 10s mensajes que
caracterizan cada clase. permiten colaboraciones entre objetos relacionados.
A1 igual que el AOO, existen diferentes mCtodos de Los patrones de disefio permiten a1 disefiador crear
DOO. UML es un intento de proporcionar una aproxi- la arquitectura de disefio integrando componentes reu-
macion simple a1 DOO, que se aplica en 10s dominios sables. La prograrnacion 00 extiende el modelo de dise-
de aplicaciones. UML y otros mCtodos, aproximan el fio a un dorninio de ejecucion. Un lenguaje de
proceso de diseiio mediante dos niveles de abstraccion programacion 00 se usa para traducir las clases, atri-
4 i s e i i o de subsistemas (arquitectura) y diseiio de obje- butos, operaciones y mensajes, de manera que puedan
tos individuales-. ejecutarse por la maquina.
[BEN991 Bennett, S., S. McRobb y R. Farmer, Object [GAM95] Gamma, E., et al., Design Patterns, Addison-
Oriented System Analysis and Design Using U M L , Wesley, 1995.
McGraw Hill, 1999.
[GOL83] Goldberg, A., y D. Robson, Smalltalk-80: The
[BIH92] Bihari, T., y P. Gopinath, ((Object-Oriented Real- Language and Its Implementation, Addison-Wesley,
Time Systems: Concepts and Examples,>,Computer, vol. 1983.
25, n." 12, Diciembre 1992, pp. 25-32.
[JAC92] Jacobson, I., Object-Oriented Software Enginee-
[BOO941 Booch, G., Object-OrientedAnalysis and Design, ring, Addison-Wesley, 1992.
2.%d., Benjamin Cummings, 1994. [JAC99] Jacobson, I., G. Booch y J. Rumbaugh, Unified
[BOO991 Booch, G., I. Jacobson y J. Rumbaugh, The Uni- Software Development Process, Addison-Wesley, 1999.
fied Modelling Language User Guide. Addison-Wesley, [MEYBO] Meyer, B., Object-Oriented Software Construc-
1999. tion, 2.%d., Prentice-Hall, 1988.
[BR091] Brown, A.W., Object-Oriented Databases, [PRE95] Pree, W., Design Patterns for Object-Oriented
McGraw-Hill, 1991. Software Development, Addison-Wesley, 1995.
[BUS961 Buschmann, F., et al., A System of Patterns: Pat- [RUM911 Rumbaugh, J., et al., Object-Oriented Modelling
tern Oriented System Architecture, Wiley, 1996. and Design, Prentice-Hall, 1991.
[COA91] Coad, P., y E. Yourdon, Object-Oriented Design, [RUM991 Rumbaugh, J., I. Jacobson y G. Booch, The Uni-
Prentice-Hall, 1991. fied Modelling Language Reference Manual, Addison-
Wesley, 1999.
[COX851 Cox, B., ((Software Ics and Objective-C>>,Unix-
World, primavera de 1985. [RA094] Rao. B.A., Object-Oriented Databases: Tech-
nology, Applications and Products, McGraw-Hill,
[DAV95] Davis, A . , <<Object-OrientedRequirements to 1994.
Object-Oriented Design: An Easy Transition?,,, J.Sys-
tems Software, vol. 30, 1995, pp. 151-159. [TAY92] Taylor, D.A., Object-Oriented Information Sys-
tem, Wiley, 1992.
[DOU99] Douglass, B., Real-TimeUML: Developing Effi-
cient Objects for Embedded Systems, Addison-Wesley, [WIR90] Wirfs-Brock, R., B. Wilkerson y L.Weiner, Desig-
1999. ning Object-Oriented Software, Prentice-Hall, 1990.
CAPfTULO 2 2 D I S E N O ORIENTADO A O B J E T O S
21.1. La pirimide de diseiio para el D O 0 difiere, de alguna 21.12. Aplique el enfoque del D O 0 examinado anteriormen-
manera, de la descrita para el diseiio del software conven- te en este capitulo, para diseccionar el diseiio del sistema
cional (Capitulo 13). Vea las diferencias y semejanzas de HogarSeguro. Defina todos 10s subsistemas relevantes, y desa-
ellas dos. rrolle el diseiio de objetos para las clases importantes.
21.2. iC6m0 difieren el D O 0 y el estructurado? ~ Q u Caspec- 21.13. Aplique el enfoque del D O 0 examinado en este capi-
tos de estos dos mCtodos de diseiio son 10s mismos? tulo a1 sistema SSRB descrito en el problema 12.13.
21.3. Revise 10s cinco criterios para la modularidad eficaz exa- 21.14. Describa un juego de video y aplique el enfoque del
minados en la Seccidn 22.1.2. Usando el enfoque de diseiio D O 0 examinado en este capitulo, para representar su diseiio.
descrito posteriormente en el capitulo, demuestre cdmo se
logran estos cinco criterios. 21.15. Usted es responsable del desarrollo de un sistema de
correo electrdnico a implementarse sobre una red de PC. El
21.4. Seleccione uno de 10s mCtodos de D O 0 presentados en sistema de e-mail permitira a 10s usuarios escribir cartas diri-
la Seccidn 22.1.3, y prepare un tutorial de una hora para su gidas a otro usuario o a una lista de direcciones especifica.
clase. Aseg6rese de mostrar todas las convenciones graficas Las cartas pueden ser enviadas, copiadas, almacenadas, etc.
de modelado que sugiere el autor. El sistema de correo electrdnico hara uso de las capacidades
21.5. Seleccione un mCtodo de D O 0 no presentado en la Sec- de procesamiento de texto existentes para escribir las cartas.
cidn 22.1.3, (por ejemplo, HOOD), y prepare un tutorial de Usando esta descripcidn como punto de partida, derive un
una hora para su clase. Aseg6rese de mostrar todas las con- conjunto de requisitos, y aplique las tCcnicas de DOO, para
venciones graficas de modelado que sugiere el autor. crear un diseiio de alto nivel, para el sistema de correo elec-
trdnico.
21.6. Analice cdmo 10s casos de uso pueden servir como una
fuente importante de informacidn para el diseiio. 21.16. Una nacidn ubicada en una pequeiia isla ha decidido
21.7. Investigue un entomo de desarrollo IGU, y muestre cdmo construir un sistema de control de trafico akreo (CTA) para su
el componente de interaccidn hombre-mfiquina se implemen- dnico aeropuerto. El sistema se especifica como sigue:
ta en el mundo real. ~ Q u C
patrones de diseiio se ofrecen y cdmo Todos 10s aviones que aterrizan en el aeropuerto deben
se usan? tener un transmisor que transmita el tip0 de avion y 10s
datos del vuelo en un paquete, con formato de aka densi-
21.8. La gestidn de tareas en sistemas 00 puede ser muy com- dad, a la estaci6n de CTA de tierra. La estacidn de CTA de
pleja. Realice alguna investigacidn sobre mCtodos de DOO, tierra puede interrogar a un avibn, para solicitar informa-
para sistemas en tiempo real (por ejemplo, [BIH92] o ci6n especifica y almacenarla en una base de datos de avio-
[DOU99]) y determine cdmo la gestidn de tareas se realiza nes. Se crea un monitor de graficos por ordenador, a partir
dentro de este contexto. de la information almacenada, y se la muestra a un con-
21.9. Examine cdmo el componente de manejo de datos se trolador de trifico. El monitor se actualiza cada 10 segun-
implementa en un entomo de desarrollo 00 tipico. dos. Toda la informaci6n es analizada, para determinar si
existen ccsituaciones peligrosas~.El controlador de trifico
21.10. Escriba un articulo de dos o tres pagina sobre bases de akreo puede interrogar la base de datos, para buscar infor-
datos orientadas a objetos, y analice cdmo pueden usarse, para maci6n especifica acerca de cualquier avi6n que se mues-
desarrollar el componente de gestidn de datos. tre en pantalla.
21.11. iC6m0 reconoce un diseiiador las tareas que deben ser Usando el DOO, Cree un disefio para el sistema de CTA.
recurrentes? No intente implementarlo.
Ademas de las muchas referencias de este capitulo, 10s libros dos en la seccidn otras lecturas y fuentes de informacidn del
de Gossain y Graham (Object modelling and Design Strate- Capitulo 21 tambiCn se centran en el diseiio con un nivel de
gies, SIGS Books, 1998), Meyer (Object-Oriented Design detalle considerable.
Through Heuristics, Addison-Wesley, 1996), y Walden, Jean- El uso de patrones de diseiio para el desarrollo de soft-
Marc Nerson (Seamless Object-Oriented Software Architec- ware orientado a objetos tiene importantes implicaciones
ture: Analisis and Design of Reliable Systems, Prentice-Hall, para la ingenieria del software basada en componentes, la
1995) cubren con bastante detalle el DOO. Fowler (Refacto- reutilizacidn en general y la calidad global de 10s sistemas
ring: improving the Design of Existing Code, Addison-Wes- resultantes. Ademas de [BUS961 y [GAM95], muchos libros
ley, 1999) dirige el uso de tecnicas orientadas a objetos para recientes dedican sus paginas a1 mismo tema, como 10s
rediseiiar y reconstruir programas antiguos con el fin de mejo- siguientes:
rar su calidad de diseiio. Ambler, S.W., Process Patterns: Building Large-Scale
Muchos libros de diseiio orientado a objetos publicados Systems Using Object Technology, Cambridge University
recientemente enfatizan UML. El lector seriamente interesa- Press, 1999.
do en aplicar UML a su trabajo debe adquirir [B0099], Coplien, J.O., D.C. Schmidt, Pattern Languages of Pro-
[RUM991 y [JAC99]. Ademas, muchos de 10s libros referi- gram Design, Addison-Wesley, 1995.
INGENIERiA DEL SOFTWARE. U N ENFOQUE P R A C T I C O
Fowler, M., Analysis Patterns: Reusable Object Models, Eiffel: Thomas, P., y R. Weedon, Object-Oriented Pro-
Addison-Wesley, 1996. gramming in EzFeI, Addison-Wesley, 1997.
Grand, M., Patterns in Java, vol. 1, John Wiley, 1998. Jezequel, J.M., Object-Oriented Software Engineering
Langr, J., Essential Java Style: Patterns for Implementa- With Ezffel, Addison-Wesley, 1996.
tion, Prentice-Hall, 1999. Java: Coad, P., M. Mayfield y J. Kern, Java Design: Buil-
Larman, C., Applying Unl and Patterns: An Introduction ding Better Apps and Applets, 2.%d., Prentice-Hall, 1998.
to Object-Oriented Analysis and Design, Prentice-Hall, 1997. Lewis, J., y W. Loftus, Jal*aSoftware Solutions: Founda-
Martin, R.C., et al., Pattern Languages of Program Design tions of Program, Addison-Wesley, 1997.
3, Addison-Wesley, 1997. Smalltalk: Sharp, A., Smalltalk by Example: The Develo-
Rising, L., y J. Coplien (eds.), The Patterns Handbook: per's Guide, McGraw-Hill, 1997.
Techniques, Strategies, andApplications, SIGS Books, 1998. LaLonde, W.R., y J.R. Pugh, Programming in Smalltalk,
Pree, W., Design Patterns for Object-Oriented Software Prentice-Hall, 1995.
Development, Addison-Wesley, 1995. Los libros que cubren temas de DOO, mediante el uso de
Preiss, B., Data Structures and Algorithms with Object- dos o mas lenguajes de programacion, proporcionan una idea
Oriented Design Patterns in Java, John Wiley, 1999. y comparacion de las capacidades de 10s lenguajes. Algunos
Vlissides, J., Pattern Hatching: Design Patterns Applied, titulos son:
Addison-Wesley, 1998. Drake, C., Object-Oriented Programming With C++ and
Vlissides, J.M., J.O. Coplien y N. Kerth, Pattern Lan- Smalltalk, Prentice Hall, 1998.
guages of Program Design 2, Addison-Wesley, 1996. Joyner, I., Objects Unencapsulated: Java, Ezffel and C++,
Cientos de libros de programacion orientada a objetos Prentice Hall, 1999.
(POO) han sido publicados. Una muestra de libros especifi- Zeigler, B.P., Objects and Systems: Principled Design With
cos en lenguajes de POO: Implementations in C++ and Java, Springer Verlag, 1997.
C++: Cohoon, J.P., C++ Program Design: An Introduc- Una amplia variedad de fuentes de informaci6n sobre dise-
tion to Programming and Object-Oriented Design, McGraw- Ao orientado a objetos, asi como temas relacionados, estan
Hill, 1998. disponibles en internet. Una lista actualizada de referencias
Barclay, K., y J. Savage, Object-Oriented Design With a sitios (paginas) web, que pueden ser relevantes a1 DOO,
C++, Prentice-Hall, 1997. pueden encontrarse en http://www.pressrnanS.com
PRUEBAS ORIENTADAS
A OBJETOS
Palabras clave L objetivo de las pruebas, expresado de forma sencilla, es encontrar el mayor numero
diseiio de wsos posible de errores con una cantidad razonable de esfuerzo, aplicado sobre un lapso de
de pruebas.. ........412 tiempo realists. A pesar de que este objetivo fundamental permanece inalterado para el
integration. ........ .41 1 software orientado a objetos, la naturaleza de 10s programas 00 cambian las estrategias y las
pnebaaleatoria.....416 tkticas de prueba.
proebaunitatia ......410 Puede argumentarse que, conforme el A 0 0 y el D O 0 maduran, una mayor reutilizacion de
pmebas a nivel
patrones de diseiio mitigarin la necesidad de pruebas intensivas en 10s sistemas 00. La verdad
dedases.......... ..416 es justo lo contrario. Binder [BIN94b] lo analiza, cuando afirma que:
pruebas ksados Cada reutilizacidn cs un nuevo context0 de uso y es prudente repetir las pruebas. Pasece probable que
en escenatios........41 5 se necesitasin menos pruebas para obtener una aha fiabilidad cn sistemas oricntados a objetos.
pruebas basadas La prueba de 10s sistemas 00 presentan un nuevo conjunto de retos al ingeniero del soft-
en fallos. ........412-413 ware. La definition de pruebas debe ser ampliada para incluir ticnicas que descubran errores
proebas (revisiones ticnicas formales), aplicadas para 10s modelos de A 0 0 y DOO. La integridad, com-
de descomposicibn ...416 pleci6n y consistencia de las representaciones 00 deben ser evaluadas conforme se constru-
pruebas yen. Las pruebas de unidad pierden mucho de su significado, y las estrategias de integraci6n
de estructura ........415 cambian de mod0 significativo. En resumen, las estrategias y tilcticas de prueba deben tomar-
pmebas interdases.. .417 se en cuenta para las caracteristicas propias del software 00.
revis5n Am........408
revision
d e l d o C R C ......409
rwisi6n Dm........409
validadh.. ........ . 4 1 1
aQu6 es? La arquitectura d e software la fmstraci6n asociada con un produc- basado e n usos y pruebas de agrupa-
orientado P objetos se manifiesta e n tode baja calidad. Con el prop6sito d e miento, junto con 1- enfoques basados
una serie de subsistemas organizados encontrar el mayor n6mero posible d e e n fallos, se aplican para probar
por capos. que encapsulan clases que errores, las pmebas deben conducirse exhaustivamente las clases colabora-
colaboran entre si. Cada uno de estos sistem6ticamente. y los c a m s de prue- doras. Por ultimo, 10s casos d e uso
elementos del sistema (subsistemas y ba deben ser designados mediante t k - (desarrolladoscomo parte del mode10
clases). realizan funciones que cryudan nicas disciplinadas. de andlisis 00)se usan para descubrir
o akanzur requerimientos del sistema. errores e n el software a nivel d e vali-
&Cu6lesson 10s pas-? Las pruebas
Es necesario probar un sistema 00, en daci6n.
00 son estrat&gkamente similares a
una variedad d e niveles diferenies, e n ~ C u d es
l el product0 obtenido? Se
las pmebas d e sisternasconvenciona-
un e s f u e m para descubrir errores. que diseiian y documentan un conjunto d e
les, per0 tdcticamente diferentes. Ya
deben ocurrir cuando las clases cola- casos d e prueba, diseiiados para p r e
que 10s modelos d e anblisis y diseiio
boran con otras entre si,y 10s subsis- bar clases, sus colaboraciones y com-
00 son similares e n estmctura y con-
temas se comunican por medio d e las portamientos; se definen 10s resultados
tenido a1 prcgrama 00,las *pmebasn
capas arquitecthicas. esperados, y s e registran 10s resulta-
cornienzan con la revisi6n d e estos
iQui6n lo hace? Los pruebas orienta- mcdelos. Una vez que se ha generado dos reales.
d a s a objetos s e realizan por ingenie- el c6digo. las pmebas 00 comienzan & k opuedo edm seguro de que la
ros d e software y especialistas e n men lo pequeiio* con l a s pruebas d e he hecho corredamente? Cuando
pruebas. . - . - .. - .
clases. Existen pruebas diseiiadas comienzan las pmebas, se cambla su
;Por qu€ies importante? Se debe eje- para probar las operaciones de las cla- punto d e vista. ilntenta .romper. el
cutar el prcgrama antes d e que llegue s e s y examinar si 10s errores existen software! Diseiiar 10s casos d e pmeba
a1 cliente, con la intenci6n especifica cuando una clase colabora con otras. de m a fonna disciplinada y revisar 10s
d e descubrir todos 10s errores, d e Asi como Ias clases se integran para casos de pmeba qua se crean con meti-
manera que el cliente no experimente formar un subsistema basado en hilos, culosidad.
La construcci6n del software orientado a objetos 3. El comportamiento del sistema o sus clases pueden
comienza con la creaci6n de 10s modelos de anilisis caracterizarse inadecuadarnente, para alojar el atri-
y diseiio (Capitulos 21 y 22). Debido a la naturaleza but0 irrelevante.
evolutiva del paradigma de ingeniena de software 0 0 ,
estos modelos comienzan como representaciones, rela- Si el error no se descubre durante el anilisis y se pro-
tivamente informales, de 10s requisitos del sistema, y paga mis alli, 10s siguientes problemas pueden ocurrir
evolucionan en modelos detallados de clases, cone- (y tendrfin que evitarse con una nueva revisi6n) duran-
xiones y relaciones de clases, el diseiio del sistema y te el diseiio:
el diseiio de objetos (incorporando un modelo de 1. La localizaci6n impropia de la clase a un subsistema
conectividad de objetos por medio de mensajes). En ylo tareas puede ocurrir durante el diseiio del sis-
cada etapa, 10s modelos pueden probarse, en un inten- tema.
to de descubrir errores, antes de su propagaci6n a la
siguiente iteracibn. 2. El trabajo del diseiio innecesario tendri que ser recu-
perado, para crear el diseiio procedimental, para las
operaciones que afecten a1 atributo innecesario.
3. El modelo de mensajes (mensajeria) seri incorrect0
(debido a que deben diseiiarse mensajes para las ope-
raciones innecesarias).
Los modelos de analisis y disefio no pueden probarse en grafica de las conexiones entre clases. Toda esta infor-
el sentido convencional,ya que no pueden ejecutarse. Sin macion se puede obtener del modelo de A 0 0 (Capitu-
embargo, se pueden utilizar las revisiones tkcnicas for- lo 21).
males (Capitulo 8) para examinar la exactitud y consis-
tencia de arnbos modelos de analisis y disefio.
1 Modelos de DO0
FIGURA 23.1. Un ejemplo de tarjeta indice CRC usada para El diseiio de sistema se revisa examinando el mode-
revision. lo objeto-comportarniento desarrollado durante el A 0 0 ,
y la correspondencia necesaria del comportamiento del
Utilizando las conexiones invertidas, ya examina- sistema, frente a 10s subsistemas disefiados para lograr
das en el paso 3, determinar si otras clases se requie- este comportamiento.
ren y si las responsabilidades se han repartido La concurrencia y asignaci6n de tareas tambiCn se
adecuadamente entre las clases. revisan dentro del contexto del comportamiento del sis-
tema. Los estados de comportarnientodel sistema se eva-
Determine si las responsabilidades muy solicita- luan para determinar cuhles existen concurrentemente.
das, dehen combinarse en una sola responsabili- Los escenarios o situaciones de 10s casos de uso se uti-
dad. Por ejemplo, leer tarjeta de crtdito y obtener lizan para validar el diseAo de la interfaz de usuario.
autorizacibn ocurren en cada situaci6n. Por consi- El modelado de objetos debe probarse frente a la red
guiente, se pueden combinar en la responsabilidad objeto-relacion, para asegurarse de que todos 10s obje-
validar petici6n de crtdito, que incorpora obtener tos de diseiio contienen 10s atributos y operaciones nece-
el numero de tarjeta de crkdito, y conseguir la auto- sarias y para implementar las colaboraciones que se
rizacihn. definieron para cada tarjeta CRC. Ademhs, la especifi-
Se aplican iterativamente 10s pasos 1 a 5 para cada caci6n detallada de las operaciones (por ejemplo, 10s
clase, y durante cada evolucibn del modelo de algoritmos que implementan a las operaciones), se revi-
AOO. san usando tCcnicas de inspecci6n convencionales.
La estrategia clhsica para la prueba de software de orde- ultimo, el sistema se comprueba como un todo para ase-
nador, comienza con ccprobar lo pequeiion y funciona gurarse de que se descubren 10s errores en requisitos.
hacia fuera haciendo ccprobar lo grande>>.Siguiendo la
jerga de la prueba de software (Capitulo 18), se comien-
za con las pruebas de unidad, despuCs se progresa hacia
encuentro
las pruebas de integraci6n y se culmina con las pruebas
rneior
de validaci6n del sistema. En aplicaciones convencio-
ellos.
nales, las pruebas de unidad se centran en las unidades
de programa compilables m8s pequefias --el subpro-
grama (por ejemplo, m6dul0, subrutina, procedimiento,
componente)-. Una vez que cada una de estas unida- 23.3.1. Las pruebas de unidad en el contexto
des han sido mobadas individualmente. se inteaan en
una estructura de programa, mientras que se ejecutan
- de la 00
Cuando se considera el software orientado a objetos, el
una sene de pruebas de regresi6n para descubrir errores, concept0 de unidad cambia. La encapsulaci6n conduce
debidos a las interfaces entre 10s m6dulos y 10s efectos a la definici6n de clases y objetos. Esto significa que
colaterales producidos por aiiadir nuevas unidades. Por cada clase y cada instancia de una clase (objeto), envuel-
CAPfTULO 23 PRUEBAS ORIENTADAS A OBJETOS
ven atributos (datos) y operaciones (tambiCn conoci- ro, las pruebas basadas en hilos, integran el conjunto
. dos como mCtodos o servicios), que manipulan estos de clases requeridas, para responder una entrada o suce-
datos. En vez de probar un m6dulo individual, la uni- so a1 sistema. Cada hilo se integra y prueba individual-
dad mLs pequeiia comprobable es la clase u objeto mente. Las pruebas de regresi6n se aplican para asegurar
encapsulado. Ya que una clase puede contener un ntime- que no ocurran efectos laterales. La segunda aproxi-
ro de operaciones diferentes, y una operaci6n particu- maci6n de integracibn, la prueba basada en el uso,
lar debe existir como parte de un ntimero de clases comienza la construcci6n del sistema probando aque-
diferentes, el significado de la unidad de prueba cam- llas clases (llamadas clases independientes), que utili-
bia dristicamente. zan muy pocas (o ninguna) clases servidoras. DespuCs
No se puede probar mLs de una operaci6n a la vez de que las clases independientes se prueban, esta secuen-
(la visi6n convencional de la unidad de prueba), per0 si cia de pruebas por capas de clases dependientes conti-
como parte de una clase. Para ilustrar esto, considkre- nua hasta que se construye el sistema completo. A
se una jerarquia de clases, en la cual la operaci6n X se diferencia de la integraci6n convencional, el uso de dri-
define para la superclase y se hereda por algunas sub- vers y stubs como operaciones de reemplazo, debe evi-
clases. Cada subclase utiliza la operaci6n X, per0 se tarse siempre que sea posible.
aplica en el contexto de 10s atributos y operaciones pri-
vadas que han sido definidas para la subclase. Ya que el
contexto en el que la operaci6n X se utiliza varia de
manera sutil, es necesario para probar la operaci6n X
en el contexto de estas subclases. Esto significa que pro- Lo estrotegio de integrocibn de pruebos 00 se centro
bar la operaci6n X en vacio (la aproximacibn de la prue- en grupos de closes que coloboron o se comunicon
ba de unidades tradicionales) es inefectiva en el contexto de lo mismo monero.
orientado a objetos.
La prueba de agrupamiento [MGR94] es una fase
en las pruebas de integraci6n de software 00.Aqui, un
agrupamiento de clases colaboradoras (determinadas
por la revisidn de 10s modelos CRC y objeto-relacibn),
l o pruebo de softwore 00 es equivolente ol mbdulo se prueba diseiiando 10s casos de prueba, que intentan
de pruebos unitorias para el software convencionol. revelar errores en las colaboraciones.
No es recomendoble comprobor operociones por separodo.
23.3.3. Pruebas de validaci6n en un contexto 00
La prueba de clases para el software 00 es el equiva-
lente de las pruebas de unidad para el software conven- A1 nivel de sistema o de validacibn, 10s detalles de
ciona12.A diferencia de las pruebas de unidad del software conexiones de clases desaparecen. Asi como la vali-
convencional que tienden a centrarse en el detalle algo- daci6n convencional, la validaci6n del software 00
n'tmico de un m d u l o y de 10s datos que fluyen a travks se centra en las acciones visibles a1 usuario y salidas
de la interfaz del mdulo, la prueba de clases para el soft- reconocibles desde el sistema. Para ayudar en la cons-
ware 00 se conduce mediante las operaciones encapsu- trucci6n de las pruebas de validacibn, el probador debe
ladas por la clase y el comportamiento de la clase. utilizar 10s casos de uso (Capitulo 20), que son parte
del modelo de anhlisis. Los casos de uso proporcionan
un escenario, que tiene una gran similitud de errores
23.3.2. Las pruebas de integracibn con 10s revelados en 10s requisitos de interacci6n del
en e l contexto 00 usuario.
Ya que el software orientado a objetos no tiene una
estructura de control jerhrquico, las estrategias con-
vencionales de integraci6n descendente (top-down) y
ascendente (bottom-up) tienen muy poco significado.
En suma, la integraci6n de operaciones una por una en
una clase (la aproximacih de la integraci6n incremen-
tal convencional), a menudo es imposible por la ccinte- Los mktodos de prueba convencionales de caja negra
racci6n directa e indirecta de 10s componentes que pueden usarse para realizar pruebas de validaci6n. Ade-
conforman la clasen [BER93]. mas, 10s casos de prueba deben derivarse del modelo de
Existen dos estrategias diferentes para las pruebas comportamiento del objeto y del diagrama de flujo de
de integraci6n de 10s sistemas 00 [BIN94a]. El prime- sucesos, creado como parte del AOO.
Los metodos de diseiio para pmebas de caso, para las clases 00,
se discuten de las Secciones 23.4 a 23.6.
1NGENlERfA DEL SOFTWARE. UN ENFOQUE PRACTICO
Concepto de D O 0 que debe usarse con extrema precaution. Las Secciones 23.4.3 a 23.4.6 han sido adaptadas de un articulo
de Brian Marick, divulgado e n el grupo de noticias de internet
comp.testing.Esta adaptacion se ha incluido con el permiso del autor.
Para adentrarse mas en la discusion de este tema, vease [MAR94].
CAP~TULO
23 PRUEBAS ORIENTADAS A O B J E T O S
planificaci6n preliminar requerida para llevar a cab0 la perciben como ccimprobables>>,entonces esta aproxi-
prueba basada en fallos comienza con el modelo de an$ maci6n no es en realidad mejor que la tCcnica de prue-
h i s . El probador busca fallos posibles (por ejemplo, 10s bas aleatorias. De cualquier manera, si 10s modelos de
aspectos de implementaci6n del sistema que pueden anhlisis y disefio pueden proporcionar la visi6n de lo
manifestarse en defectos). Para determinar si existen que parece andar mal, entonces las pruebas basadas en
estos fallos, 10s casos de prueba se disefian para probar errores pueden encontrar un numero significativo de
el disefio o c6digo. errores con esfuerzos relativarnente pequeiios.
Las pruebas de integraci6n buscan fallos probables
en operaciones o mensajes de conexi6n. Tres tipos de
fallos se encuentran en este contexto: resultados ines-
perados, uso incorrecto de operaciones/mensajes, invo-
l o esrategia cansiste en hater hipbtesis de una serie caciones incorrectas. Para determinar fallos probables
de posibles fallos, y luego conducir 10s pruebas cuando las funciones (operaciones) se invocan, se debe
poro cornprobor las hipbtesis. examinar el comportamiento de la operaci6n.
ConsidCrese un ejemplo simple5. Los ingenieros de iQue tip0 de fallos
software generalmente cometen errores en 10s limites se encuentran en lamadas
del problema. Por ejemplo, cuando se prueba una ope- a operaciones y conexiones
raci6n SQRT que genera errores para numeros negati- de mensajes?
vos, se sabe probar 10s limites: un numero negativo
cercano a1 cero y el cero mismo. El cccero mismo>>com- Las pruebas de integraci6n se aplican tanto a atribu-
prueba si el programador ha cometido un error como: tos como a operaciones. Los cccomportarnientos>> de un
If ( x > 0 ) calcular-la-raiz-cuadrada ( ); objeto se definen por 10s valores que se asignan a sus
En lugar de lo correct0 atributos. Las pruebas deben verificar 10s atributos para
determinar si se obtienen valores apropiados para 10s
If ( x >= 0 ) calcular-la-raiz-cuadrada ( );
distintos tipos de comportamientos de 10s objetos.
Como otro ejemplo, considkrese la expresi6n booleana Es importante hacer notar que las pruebas de inte-
siguiente: graci6n intentan encontrar 10s errores en el objeto clien-
If (a && !b I I c ) te, no en el semidor. Dicho en tCrminos comunes, el
enfoque de las pruebas de integraci6n es determinar si
el error existe en el c6digo de invocacibn, no en el c6di-
go invocado. La invocaci6n a operaciones se utiliza como
una pista, una forma de encontrar 10s requerimientos de
Yo que lo pruebo bosodo en follos se do en un nivel la prueba que validen el c6digo de invocaci6n.
detollodo, se reservo mejor poro 10s operociones
y closes que son critcos o sospechosos.
23.4.4. El impacto de la programaci6n 00 en las
Las pruebas de multicondici6n y tCcnicas relaciona- pruebas
das examinan las faltas posibles con toda seguridad en Hay distintas maneras en que la programaci6n orienta-
esta expresibn, como, por ejemplo, da a objetos puede tener un impacto en las pruebas.
&& deberia de ser II Dependiendo del enfoque de la POO.
Algunos tipos de fallos se vuelven menos probables
! se ignor6 donde se necesitaba
(no vale la pena probar).
Y deberia haber un pakntesis alrededor de !b Ilc Algunos tipos de fallos se vuelven m8s probables
Para cada error probable, se diseiian casos de prue- (vale la pena probar).
ba, que forzar6n a la condici6n incorrecta a fallar. En la Aparecen algunos tipos nuevos de fallos.
expresi6n anterior, (a=O, b=O, c=O) forzarhn a que la
expresi6n se evalue falsa. Si el && hubiera sido II, el
c6digo hubiera dado el resultado incorrecto y el control
habna seguido la rama err6nea.
Desde luego que la efectividad de estas tkcnicas
depende de c6mo 10s probadores perciben el ccfallo pro-
bable>>.Si 10s fallos verdaderos en un sistema 00 se
Cuando se invoca una operaci6n es dificil decir exac- bada, porque representa un nuevo diseiio y nuevo
tamente quC c6digo se ejecuta. Esto es, la operaci6n c6digo. Pero, ila d e r i v a d a : : h e r e d a d d ( ) debe ser
debe pertenecer a una de muchas clases. Incluso, pue- recomprobada?
de ser dificil determinar el tip0 exacto o clase de un Si la d e r i v a d a :h e r e d a d a ( ) inv0ca a redefini-
parhetro. Cuando el c6digo lo acceda puede obtener- da y el comportamiento de redefinida cambia, d e r i -
se un valor inesperado. La diferencia puede entenderse v a d a : : h e r e d a d d ( ) podria manejar errdneamente
considerando la llamada a una funci6n convencional: el nuevo comportamiento. De este modo, se necesi-
tan nuevas pruebas aunque el diseiio y el c6digo no
hayan cambiado. Es importante hacer notar, sin
Para el software convencional, el probador debe con- embargo, que solo un subconjunto de todas las prue-
siderar todos 10s comportamientos atribuidos afunc y bas para d e r i v a d a : :h e r e d a d a ( ) deben rehacerse.
nada mhs. En un contexto 00,el probador debe consi- Si parte del diseiio y codificaci6n para heredada no
derar 10s comportamientos de base:func( ), de deriva- depende de redefinida (por ejemplo, no la llama ni
da:func(), y asi sucesivamente. Cada vez que func se llama ningun c6digo que indirectamente la llame),
invoca, el probador debe considerar la uni6n de todos ese c6digo no necesita ser recomprobado en la clase
10s comportamientos distintos. Esto es rnhs ficil si se derivada.
siguen prhcticas de disefio 00 adecuadas, y se limitan B a s e : r e d e f i n i d a ( ) y d e r i v a d a :z r e d e f i n i d a ( )
las diferencias entre superclases y subclases (en el len- son dos operaciones diferentes con especificaciones e
guaje de C++, estas se llaman clases base y clases deri- implementaciones diferentes. Cada una deberia tener
vadas). un conjunto de requisitos de prueba, derivadas de la
La aproximaci6n a las pruebas para clases derivadas especificaci6n e implementacibn. Aquellos requisitos
y base es esencialmente la misma. La diferencia es de prueban errores probables: fallos de integracibn, fallos
contabilidad. de condicibn, fallos de limites y asi sucesivamente. Pero
Probar las operaciones de clases es anhlogo a probar las operaciones es probable que Sean similares por lo
cddigo que toma un parhmetro de la funcidn y luego la que el conjunto de requisitos de pruebas se solapan.
invoca. La herencia es una manera conveniente de pro- Cuanto mejor sea el diseiio 00, el solapamiento sera
ducir operaciones polim6rlicas. En la Ilamada, lo que mayor. Es necesario desarrollar las nuevas pruebas, solo
importa no es la herencia, sino el polimorfismo. La para aquellos requisitos de d e r i v a d a ::r e d e f i n i d a ( I
herencia hace que la bdsqueda de 10s requisitos de prue- que no fueron satisfechas por pruebas de b a s e ::r e d e -
ba sea mis directa. finida( ) .
En virtud de la construccidn y arquitectura de soft- Para concluir, las pruebas de b a s e :r r e d e h i d a ( )
ware, jexisten algunos tipos de fallos mhs probables se aplican a 10s objetos de la clase derivada. Las entra-
para un sistema 00, y otros menos probables? la res- das de las pruebas deben ser apropiadas para las clases
puesta es <<sin.Por ejemplo, a causa de que las ope- base y derivada, per0 10s resultados esperados pueden
raciones 00 son generalmente m i s pequeiias, se diferir en la clase derivada.
tiende a gastar rnhs tiempo en la integraci6n ya que
existen m i s oportunidades de errores de integraci6n.
Asi que 10s errores de integraci6n se vuelven mis pro-
bable~. 23.4.6. Diseiio d e pruebas basadas
e n el escenario
Las pruebas basadas en 10s errores no localizan dos
23.4.5. Casos d e prueba y jerarquia d e clases tipos de errores: (1) especificaciones incorrectas y (2)
Como se explic6 previamente en este capitulo, la heren- interacci6n entre subsistemas. Cuando ocurren errores
cia no obvia la necesidad de probar todas las clases asociados con especificaciones err6neas, el producto
derivadas. De hecho, puede complicar el proceso de no realiza lo que el cliente desea. Puede que haga cosas
prueba. incorrectas, o puede omitir funcionalidad importante.
Pero en cualquier circunstancia, la calidad (cumpli-
miento de requisitos) se sacrifica. Los errores asocia-
dos con la interaccih de subsistemas ocurren cuando
el comportamiento de un subsistema crea circunstan-
Aunque se hoyo comprobado bostante uno close base, cias, (por ejemplo, sucesos, flujo de datos) que causan
tendra que comprobor 10s closes derivodos de ello.
que el otro subsistema falle.
Las pruebas basadas en el escenario se concentran
ConsidCrese la situaci6n siguiente. Una clase base en lo que el usuario hace, no en lo que el producto
contiene operaciones heredadas y redefinidas. Una hace. Esto significa capturar las tareas (por medio de
clase derivada redefine operaciones redefinidas para 10s casos de uso) que el usuario tiene que hacer,
funcionar en un contexto local. Existe la pequeiia duda despuCs aplicarlas a ellas y a sus variantes como
de que la d e r i v a d a :: r e d e i k i d a ( ) debe ser compro- pruebas.
C A P ~ T U L O23 PRUEBAS ORIENTADAS A O B J E T O S
Las mejores pruebas se dan cuando el disefiador Los modelos de andisis y disefio se utilizan como
.observa a1 sistema de una manera nueva o poco con- una base para la verificaci6n de la estructura profunda.
vencional. Por ejemplo, si el sistema o product0 tiene Por ejemplo, el diagrama objeto-relaci6n o el diagrama
una interfaz basada en comandos, pruebas mfis com- de colaboraci6n de subsistemas describe colaboracio-
pletas se darfin si el diseiiador de casos supone que las nes entre objetos y subsistemas, que no pueden ser visi-
operaciones son independientes de 10s objetos. Hacer b l e ~extemamente.
preguntas como cciQuerrii el usuario usar esta operaci6n El diseiio de casos de prueba entonces se pregunta:
--que se aplica s610 a1 objeto scanner- mientras tra- <<iSeha capturado (como una prueba) alguna tarea que
baja con la impresora?n. Cualquiera que sea el estilo de pruebe la colaboraci6n anotada en el diagrama objeto
la interfaz, el diseiio de casos de prueba que ejercita la relacibn, o en el diagrama de colaboraci6n de subsiste-
estructura superficial debe usar ambos objetos y opera- mas? Si no es asi, ipor quC no?>>
ciones, como pistas que conduzcan a las tareas desa- El diseiio de representaciones de jerarquias de clases
percibidas. proporciona una visi6n de la estructura de herencia. La
La estructura profunda se refiere a 10s detalles tCc- estructura jerkquica se utiliza en la verificaci6n basada
nicos de un programa 00. Esto es, la estructura que se en errores. ConsidCrese la situaci6n en la cud una ope-
comprende examinando el disefio y/o el cbdigo. La veri- raci6n llamada llamar a( ) tiene un solo argumento, y
ficaci6n de la estructura profunda estfi disefiada para ese argumento es unareferencia a la clase base. ~ Q u C
ejercitar dependencias, comportamientos y mecanismos ocurrirfi cuando llamar-a( ) pase a la clase derivada?
de comunicaci6n, que han sido establecidos como par- iCudes s e h las diferencias en comportamiento que pue-
te del disefio del objeto y del sistema (Capitulo 22) de dan afectar a tal funci6n? Las respuestas a estas pregun-
software 00. tas pueden conducir al disefio de pruebas especializadas.
En el Capitulo 17 se mencion6 que la prueba de soft- Esto representa la secuencia de verificaci6n minima
ware comienza <<enlo pequeiio>>y lentamente progresa para una cuenta. De cualquier modo, pueden existir una
hacia la prueba cca grande,,. La prueba <<enpequefio>>, amplia variedad de combinaciones de operaciones posi-
se enfoca en una sola clase y 10s mCtodos encapsulados bles, dentro de esta secuencia:
por ella. La verificaci6n y partici6n a1 azar son mCto- Abrir - configurar - depositar - [depositar I r e t i -
dos que pueden usarse para ejercitar a una clase duran- rar I consul tar saldo I resumen / Limi tecredi t o I" -
te la prueba 00 [KIR94]. retirar - cerrar
Pueden generarse una variedad de secuencias de ope-
raciones diferentes a1 azar. Por ejemplo,
23.5.1. La verificacion a1 azar para clases 00
Prueba rl: abrir - contigurar - deposi tar - consul tar
A manera de ilustraciones sencillas de estos mCtodos, saldo - resumen - retirar - cerrar.
considCrese una aplicacibn bancaria en la cual una cla- Prueba r 2 : abrir - contigurar - depositar - retirar -
se cuenta contiene las siguientes operaciones: abrir, depositar - consultar saldo - LimiteCr6-
configurar, depositar, retirar, consultar saldo, resumen, d i t o - retirar - cerrar.
LimiteCrkdito y cerrar [KIR94]. Cada una de estas ope- Estas y otras pruebas de orden aleatorio se realizan
raciones debe aplicarse a cuenta, per0 algunas limita- para probar diferentes registros de operaciones de ins-
ciones (por ejemplo, la cuenta debe ser abierta antes de tancias de clases.
que otras operaciones puedan aplicirsele, y cerrada des-
puCs de que todas las operaciones hayan sido comple- 23.5.2. Prueba de particion a1 nivel de clases
tadas) e s t b implicitas en la naturaleza del problema. La prueba de particidn reduce el niimero de casos de prue-
A6n con estas limitaciones, existen muchas combina- ba requeridos para validar la clase, de la misma forma que
ciones de operaciones. El registro de operaciones mini- la partici6n equivalente (Capitulo 17) para software con-
ma de una instancia de cuenta incluye las siguientes vencional. Las entradas y salidas se clasifican, y 10s casos
operaciones: de prueba se diseiian, para validar cada categoria. Pero
Abrir - contigurar - depositar - retirar - cerrar. jc6m0 se derivan las categorias de partici6n?
~ Q u eoptiones de pruebas
estan disponibles a nivel
El nlimero de combinocionesposibles para uno pruebo de tlases?
oleotorio puede crecer mucho. Uno estrategio similor
para lo pruebos de onoys ortogonoles (Copilvio 171, La particidn basada en estados clasifica las opera-
puede usone poro mejoror lo eficiencio de 10s pmebos. ciones de clase basada en su habilidad de cambiar el
CAPfTULO 23 PRUEBAS ORIENTADAS A O B J E T O S
estado de la clase. Una vez mas, considerando la clase La particion basada en atributos clasifica las opera-
cuenta, operaciones de estado incluyen a depositar y ciones de clase basada en 10s atributos que ellas usan.
retirar, y considerando que las operaciones de no-esta- Para la clase cuenta, 10s atributos saldo y LimiteCre-
do incluyen a consultar saldo, resumen y LimiteCre'di- dito pueden usarse para definir particiones. Las opera-
to, las pruebas se diseiian de manera que las operaciones ciones se dividen en tres particiones: (1) Operaciones
que cambian el estado, y aquellas que no lo cambian, que utilizan LimiteCredito, (2) operaciones que modi-
se ejerciten separadamente. Entonces: fican LimiteCredito, y (3) operaciones que no utilizan
o modifican LimiteCredito. Las secuencias de prueba
Prueba p, : abrir- configurar - depositar - deposi tar se disefian por cada particion.
- retirar - retirar cerrar.
-
mm de inforrnacion
prueba de particion de clases individuales. La manera Prueba s l : abrir - PI-eparar-cuenta - deposi tar ( i n i -
como una sola clase se particiona se discuti6 en la Sec- cial) - r e t i r o (final) cerrar
-
ci6n 23.4.5. De cualquier modo, la secuencia de prue- N6tese que esta secuencia es idCntica a la secuencia
bas se extiende para incluir aquellas operaciones que se minima de pruebas, discutida en la Secci6n 23.5.1. Si
invocan por 10s mensajes a clases colaboradoras. Una se agregan secuencias de prueba adicionales a la secuen-
aproximacion alternativa basa las pruebas por partici6n cia minima:
en las interfaces de una clase en particular. Haciendo
Prueba s2: abrir preparar cuenta
- - deposita~~iini-
referencia a la Figura 23.2, la clase banco recibe men- cia1)- saldo - credit0 - r e t i r o (fmal) -
sajes de las clases ATM y Cajero. Los mCtodos inclui- cerrar .
dos en banco pueden probarse particionindolos en
Prueba s;: preparar cuentd deposita~.f i n i c i a l )
aquellos que sirven a ATM y aquellos que sirven a Caje- -
El objetivo global de la verificacion orientada a objetos citen. El estado de la clase representada por 10s valo-
-encontrar el miximo numero de errores con un mini- res de sus atributos se examina, para determinar si
mo de esfuerz-, es idCntico a1 objetivo de prueba del persisten errores.
software convencional. Pero la estrategia y ticticas para La prueba de integracion puede llevarse a cab0 utili-
la prueba 00 difieren de mod0 significativo. La vision zando una estrategia basada en hilos o basada en el uso.
de verificacion se amplia, para incluir la revision de La estrategia basada en hilos integra el conjunto de cla-
ambos modelos de disefio y de anilisis. ses, que colaboran para responder a una entrada o suce-
En resumen, el enfoque de prueba se aleja del com- so. Las pruebas basadas en el uso construyen el sistema
ponente procedimental (el modulo) hacia la clase. Ya que en capas, comenzando con aquellas clases que no usan
10s modelos de analisis y disefio 00 y el c6digo fuente clases servidoras. Los mCtodos de disefio de integracion
resultante se acoplan seminticamente, la prueba (a mane- de casos de prueba pueden usar pruebas a1 azar y por par-
ra de revisiones tkcnicas formales) comienza en estas acti- ticion. En suma, las pruebas basadas en el escenario y las
vidades de ingenieria. Por esta razon, la revision de 10s pruebas derivadas de 10s modelos de comportamiento pue-
mCtodos CRC, objeto-relacion y objeto-comportamiento, den usarse para verificar una clase y sus colaboraciones.
pueden verse como una primera etapa de prueba. Una secuencia de pruebas registra el flujo de operacio-
Una vez que la P O 0 ha sido concluida, las prue- nes, a travCs de las colaboraciones de clases.
bas de unidad se aplican a cada clase. El disefio de La prueba de validacion de sistemas 00 esta orien-
pruebas para una clase utiliza una variedad de mCto- tada a caja negra y puede completarse aplicando 10s
dos: pruebas basadas en errores, las pruebas a1 azar mismos mCtodos de prueba de caja de negra discutidos
y las pruebas por particion. Cada uno de estos mCto- para el software convencional. Sin embargo, las prue-
dos ejercita las operaciones encapsuladas por la cla- bas basadas en el escenario dominan la validacion de
se. Las secuencias de pruebas se diseiian para sistemas 00, haciendo que el caso de uso sea el con-
asegurarse de que las operaciones relevantes se ejer- ductor primario para las pruebas de validacion.
[AMB95] Ambler, S., <<UsingUse Cases,,, Sofmare Deve- [KIR94] Kirani, S., y W.T. Tsai, <<Specificationand Verifica-
lopment, Julio de 1995, pp. 53-61. tion of Object-Oriented Programs,,, Technical Report TR
[BER93] Berard, E.V., Essays on Object-Oriented Software 94-96,Computer Science Department, University of Min-
Engineering, vol. 1, Addison-Wesley, 1993. nesota, Diciembre de 1994.
[BIN94a] Binder, R.V., {{TestingObject-Oriented Systems:
A Status Report,,, American Programmer, vol. 7, n." 4, [LIN94] Lindland, O.I., et al., dnderstanding Quality in Con-
Abril de 1994, pp. 23-28. ceptual Modeling,,, IEEE Software, vol. 11, n." 4, Julio de
1994, pp. 42-49.
[BIN94b] Binder, R.V., <<Object-OrientedSoftware Testing,,,
CACM, vol. 37, n." 9, Septiembre de 1994, p. 29. [MAR941 Marick, B., The Craft of Software Testing, Prenti-
[CHA93] DeChampeaux, D., D. Lea y P. Faure, Object-Orien- ce Hall, 1994.
ted System Development, Addison-Wesley, 1993.
[FIC92] Fichman, R., y C. Kemerer, {{Object-Orientedand [MGR94] McGregor, J.D., y T.D. Korson, <<IntegratedObject-
conceptual Design Methodologies,,, Computer, vol. 25, Oriented Testing and Development Processes,,, CACM,
n." 10, Octubre de 1992, pp. 22-39. vol. 37, n." 9, Septiembre de 1994, pp. 59-77.
23.1. Describa con sus propias palabras por quC la clase es 23.4. Derive un conjunto de tarjetas indice CRC para Hogar-
la mas pequeiia unidad razonable para las pruebas dentro de Seguro y ejecute 10s pasos seiialados en la Secci6n 23.2.2 para
un sistema 00. determinar si existen inconsistencias.
23.2. LPor quC debemos probar de nuevo las subclases ins- 23.5. cud es la diferencia entre las estrategias basadas en hilos
tanciadas de una clase existente si Csta ya ha sido probada por y aquellas estrategias basadas en uso para las pruebas de inte-
complete? ~Podemosusar 10s casos de prueba diseiiados para gracion? ~ C o m ocabe la prueba de appacion en ellas?
dicha clase? 23.6. Aplique la prueba aleatoria y la de particion a tres cla-
23.3. L P OquC
~ debe comenzar la ccprueba,, con las activida- ses definidas en el diseiio del sistema HogarSeguro produci-
des de A 0 0 y DOO? do por usted en el Problema 22.12.
I N G E N ~ E R ~DEL
A SOFTWARE. UN ENFOQUE PRACTICO
Produzca casos de prueba que indiquen las secuencias de ope- 23.10. Obtenga pruebas usando 10s mCtodos sefialados en 10s
raciones que se invocaran. Problemas 23.6 y 23.7 para el sistema de e-mail considerado
.23.7.Aplique la prueba de multiples clases y las pruebas deri- en el Problema 22.15.
vadas del modelo de comportamiento a1 disefio de HogarSe-
guro. 23.11. Obtenga pruebas usando 10s mCtodos sefialados en 10s
Problemas 23.6 y 23.7 para el sistema ATC considerado en el
23.8. Obtenga pruebas usando 10s mCtodos sefialados en 10s Problema 22.16.
Problemas 23.6 y 23.7 para el sistema SSRB descrito en el
Problema 22.13. 23.12. Obtenga cuatro pruebas adicionales usando cada
23.9. Obtenga pruebas usando 10s mCtodos sefialados en 10s uno de 10s mCtodos sefialados en 10s Problemas 23.6 y 23.7
Problemas 23.6 y 23.7 para el juego de video considerado en para la aplicaci6n bancaria presentada en las Secciones 23.5
el Problema 22.14. y 23.6.
La literatura para la prueba 00 es relativamente escasa, aun- Jorgenesen (Software Testing: A Craftsman's Approach,
que se ha expandido algo en aiios recientes. Binder (Testing CRC Press, 1995) y McGregor y Sykes (Object-Oriented
Object-Oriented Systems: Models, Patterns, and Tools, Addi- Software Development, Van Nostrand Reinhold, 1992) pre-
son-Wesley, 2000) ha escrito el tratarniento mas extenso del senta capitulos dedicados a1 tema. Beizer (Black-Box Tes-
tema publicado hasta la fecha. Siege1 y Muller (Object Orien- ting, Wiley, 1995) analiza una variedad de mCtodos de
ted Software Testing: A Hierarchical Approach, Wiley, 1996) disefio de casos prueba 10s cuales son apropiados en un con-
propusieron una estrategia practica de prueba para sistemas texto 00.
00. Marick (The Craft of Software Testing: Subsystem Tes- Binder (Testing Object-Oriented Systems, Addison-Wes-
ting Including Object-Based and Object-Oriented Testing, ley, 1996) y Marick [MAR941 presenta tratamientos detalla-
Prentice Hall, 1995) cubre la prueba tanto para software con- dos de prueba 00. En resumen, muchas de las fuentes
vencional como para 0 0 . anotadas para el Capitulo 17 son en general aplicables a la
Antologias de publicaciones sobre prueba 00 han sido edi- prueba 00.
tadas por Kung et al. (Testing Object-Oriented Software, IEEE Una amplia variedad de fuentes de informaci6n de prue-
Computer Society, 1998) y Braude (Object Oriented Analysis, ba orientada a objetos y temas relacionados se encuentran dis-
Design and Testing: Selected Readings, IEEE Computer ponibles en internet. Una lista reciente a sitios (paginas) web
Society, 1998). Estos tutoriales de IEEE proporcionan una inte- que son relevantes a la prueba 00 puede encontrarse en
resante perspectiva hist6rica en el desarrollo de prueba 00. http://www.pressman5.com
DEL SOFTWARE. UN ENFOQUE P R ~ C T I C O
INGENIER~A
Los objetivos primarios para las mCtricas orientadas a Cada uno de estos objetivos es importante, per0 para
objetos no son diferentes de aquellos de las mCtricas el ingeniero de software la calidad del producto debe
desarrolladas para el software convencional: ser lo m8s importante. Pero jc6m0 medir la calidad de
un sistema OO? ~QuCcaracteristicas del modelo de dise-
para entender mejor la calidad del producto. fio pueden y deben evaluarse para determinar si el sis-
para evaluar la efectividad del proceso. tema sera fhcil de implementar, facil de verificar, simple
de modificar y, lo mas importante, aceptable para 10s
Para mejorar la d i d a d del trabajo llevado a cab0 a1 usuarios finales? Estas preguntas serin contestadas en
nivel del proyecto. la p a t e restante del capitulo.
Las metricas para cualquier producto de ingenieria son Ya que el software convencional enfatiza la funcion
reguladas por las caracteristicas linicas del producto. como un mecanismo de localizacion, las mCtricas de
Por ejemplo, seria inlitil o sin sentido contar las millas software se han enfocado a la estructura interna o fun-
por galon de consumo para un automovil elCctrico. La ciones de complejidad (por ejemplo, longitud del modu-
mCtrica es firme para 10s automoviles convencionales lo, cohesion o complejidad ciclom~tica),o a la manera
(es decir, impulsados por sistemas de combustion inter- como las funciones se conectan entre si (acoplamiento
na a gasolina) per0 no se aplica cuando el mod0 de pro- de modulos).
pulsion cambia radicalmente. El software orientado a
objetos es fundamentalmente diferente del software
desarrollado con el uso de mCtodos convencionales. Por Mbtricas tbcnicos porn sohore convendonal
esta razon, las metricas para sistemas 00 deben ser afi- se describen en el Copltulo 19.
nadas a las caracteristicas que distinguen a1 software
00 del software convencional. Puesto que la clase es la unidad basica de un siste-
Berard [BER95] define cinco caracteristicas que ma 00, la localizaci6n se basa en 10s objetos. Por esta
regulan las mCtricas especializadas: Localizacion, razon, las mCtricas deben aplicarse a la clase (objeto),
encapsulacion, ocultamiento de informacion, herencia como a una entidad completa. En suma, la relacion entre
y tCcnicas de abstraccion de objetos. Cada una de estas operaciones (funciones) y clases no es necesariamente
caracteristicas se discute brevemente en las secciones uno a uno. Por lo tanto, las mCtricas que reflejan la mane-
siguientesl. ra en la que las clases colaboran deben ser capaces de
acomodarse a relaciones uno a muchos y muchos a uno.
nes, y 10s estados de la clase, definidos por valores de una jerarquia de clases. En general, el software con-
atributos especificos. vencional no cumple esta caracteristica.
La encapsulacih influye en las metricas, cambian- Ya que la herencia es una caracteristica vital en
do el enfoque de las mediciones de un m6dulo simple, muchos sistemas 00, muchos mCtodos 00 se centran
a un paquete de datos (atributos) y m6dulos de proce- en ella. Los ejemplos (discutidos rnis adelante en este
so (operaciones). capitulo) incluyen mdltiples hijos (instancias inmedia-
En suma, la encapsulaci6n eleva la medici6n a un tas de una clase), mdltiples padres (generalizaciones
nivel de abstraccih mis alto. inmediatas), y jerarquias de clase a un nivel de anida-
Por ejemplo, rnis adelante en este capitulo se intro- miento (profundidad de una clase en la jerarquia de
ducirh las mCtricas asociadas con el nlimero de opera- herencia).
ciones por clase. Contrasta este nivel de abstraccih con
las metricas que se centran en contar condiciones boo-
leanas (complejidad ciclomitica) o en contar lineas de
c6digo. La abstraccih es un mecanismo que permite a1 dise-
iiador concentrarse en 10s detalles esenciales de un com-
ponente de programa (ya Sean datos o procesos),
prestando poca atenci6n a 10s detalles de bajo nivel.
La ocultacih de informacih suprime (u oculta) 10s Como Berard declara: <<laabstraccih es un concepto
detalles operacionales de un componente de programa. relativo. A medida que se mueve a niveles rnis altos de
Solo se proporciona la informacih necesaria para acce- abstraccih, se ignoran rnis y rnis detalles, es decir, se
der a1 componente a aquellos otros componentes que tiene una visi6n mis general de un concepto o elemen-
deseen acceder. to. A medida que se mueve a niveles de abstraccih rnis
Un sistema 00 bien diseiiado debe implementar bajos, se introducen rnis detalles, es decir, se tiene una
ocultacih de informaci6n. Por esta r a z h , las mCtricas visi6n rnis especifica de un concepto o elemento.,,
que proporcionan una indicacih del grado de oculta- Ya que una clase es una abstraccih, que puede visua-
ci6n logrado suministran un indicio de la calidad del lizarse a diferentes niveles de detalle de diferentes de
diseiio 00. maneras (por ejemplo, como una lista de operaciones,
como una secuencia de estados, como una serie de cola-
boraciones), las mCtricas 00 representan abstracciones
24.2.4. Herencia en tCrminos de mediciones de una clase (por ejemplo,
La herencia es un mecanismo que habilita las respon- numero de instancias por clase por aplicacih, ndmero
sabilidades de un objeto, para propagarse a otros obje- o clases parametrizadas por aplicacibn, y proporcih de
tos. La herencia ocurre a travCs de todos 10s niveles de clases parametrizadas con clases no parametrizadas).
Mucho acerca del diseiio orientado a objetos es sub- dad. La poblacidn se mide haciendo un recuento de las
jetivo -un diseiiador experimentado <csabe>> como entidades 00,como las clases u operaciones. Las medi-
caracterizar a un sistema 00, para que implemente das de volumen son idCnticas a las de poblaci6n, per0
efectivamente 10s requerimientos del cliente-. Pero, se realizan dinimicamente - e n un instante de tiempo
cuando un modelo de diseiio 00 crece en tamaiio y dado-. La longitudes la medida de una cadena de ele-
complejidad, una visi6n mis objetiva de las caracte- mentos de disefio interconectados (por ejemplo, la pro-
n'sticas del diseiio puede beneficiar a1 diseiiador expe- fundidad de un irbol de herencia es una medida de
rimentado (que adquiere vista adicional), y a1 novato longitud). Las mktricas defuncionalidad proporcionan
(que obtiene indicadores de calidad que de otra mane- una indicaci6n indirecta del valor entregado a1 cliente
ra no estm'an disponibles). por una aplicacih 00.
e ~ Q u ecaracteristicas pueden
rnedirse cuando se evalua
un diseiia OO?
Complejidad. Asi como el tamaiio, existen diferen-
tes enfoques de la complejidad del software [ZUS97].
Whitmire la define en tkrminos de caracteristicas estruc-
turales, examinando c6mo se interrelacionan las clases
Como parte de un tratamiento detallado de las mktri- de un diseiio 00 con otras.
cas de software para sistemas 00, Whitmire [WHI97] Acoplamiento. Las conexiones fisicas entre 10s ele-
describe nueve caracten'sticas distintas y medibles de mentos del diseiio 00 (por ejemplo, el numero de cola-
un diseiio 00: boraciones entre clases o el numero de mensajes
Tamaiio. El tamaiio se define en tkrminos de cuatro intercambiados entre objetos), representan el acopla-
enfoques: poblacih, volumen, longitud y funcionali- miento dentro de un sistema 00.
INGENIERfA DEL SOFTWARE. UN ENFOQUE P R ~ C T I C O
Por esta raz6n, las medidas y metricas para una clase Asi mismo, la clase <<padre>>es de las que heredan las
individual, la jerarquia de clases y las colaboraciones subclases (algunas veces llamadas hijas), sus atributos
de clases poseen un valor incalculable, para el ingenie- y operaciones. La clase, normalmente, colabora con
ro del software que ha de evaluar la calidad del diseiio. otras clases. Cada una de estas caracteristicas pueden
En capitulos anteriores se estudi6 que la clase encap- usarse como base de la medici6n2.
sula operaciones (procesamiento) y atributos (datos).
La definicion formal e s un poco mas compleja. Vease [CHI941 para Para un tratamiento mas completo. vease [LOR94].
mas detalle.
CAPfTULO 2 4 M ~ T R I C A ST ~ C N I C A SPARA SISTEMAS ORIENTADOS A O B l E T O S
La mCtrica MPC propuesta por Chidamber y Keme- 24.4.3. L a coleccion de metricas MDOO
rer (Secci6n 24.4.1) es tambiCn una mttrica ponderada Harrison, Counseil y Nithi [HAR98] propusieron un
del tamaiio de clase. conjunto de mCtricas para el disefio orientado a objetos
Como se indic6 con anterioridad, valores grandes (MDOO), que proporcionan indicadores cuantitativos
para TC indican que la clase debe tener bastante res- para el diseiio de caracten'sticas 00. A continuation,
ponsabilidad. Esto reduciri la reutilizaci6n de la clase una muestra de mCtricas MDOO:
y complicari la implementaci6n y las pruebas. En gene-
ral, operaciones y atributos heredados o publicos deben
ser ponderados con mayor importancia, cuando se deter-
mina el tamaiio de clase. [LOR941 Operaciones y atri-
butos privados, permiten la especializacion y son mis
propios del disefio.
TambiCn se pueden calcular 10s promedios para el
numero de atributos y operaciones de clase. Cuanto
menor sea el valor promedio para el tamafio, seri mis
posible que las clases dentro del sistema puedan reuti- Factor de herencia de metodos (FHM). El grado
lizarse. en que la arquitectura de clases de un sistema 00 hace
uso de la herencia tanto para mttodos (operaciones)
Numero de operaciones redefinidas para una sub-
como atributos, se define corno:
clase (NOR). Existen casos en que una subclase reem-
plaza una operaci6n heredada de su superclase por una FHM = Z Mi(Cj)/ Z Ma(Cj)
versi6n especializada para su propio uso. A esto se le donde el sumatorio va desde i=l hasta TC. TC se defi-
llama redejnicidn. Los valores grandes para el NOR, ne como el numero total de clases en la arquitectura, Ci
generalmente indican un problema de diseiio. Tal como es una clase dentro de la arquitectura, y
indican Lorenz y Kidd:
Ma(Ci) = MAC,) + Mi(Ci)
Dado que una subclase debe ser la especializaci6n de sus
superclases, deben, sobre todo, extender 10s servicios (opera- donde
ciones) de las superclases. Esto debe resultar en nuevos nom- Ma(Cj)= al numero de mCtodos que pueden ser invo-
bres de mktodos unicos.
cados en relacion con C i
Si el NOR es grande, el disefiador ha violado la abs- MACi) = al nlimero de mCtodos declarados en la clase
tracci6n representada por la superclase. Esto provoca 0
Li
una dCbil jerarquia de clases y un software 0 0 , que
Mi(Ci)= a1 numero de mCtodos heredados (y no rede-
puede ser dificil de probar y modificar.
finidos) en C i
Numero de operaciones aiiadidas por una sub- El valor de FHM (el factor de herencia de atributo,
clase (NOA). Las subclases se especializan afiadiendo FHA, se define de manera aniloga), proporciona una
operaciones y atributos privados. A medida que el referencia sobre impact0 de la herencia en software 00.
valor NOA se incrementa, la subclase se aleja de la
abstracci6n representada por la superclase. En gene- Factor de acoplamiento (FA). Con anterioridad, en
ral, a medida que la profundidad de la jerarquia de este capitulo se indic6 que el acoplamiento es un indi-
clases incrementa (APH se vuelve grande), el valor cador de las conexiones entre 10s elementos del disefio
para NOA a niveles mas bajos en la jerarquia deberia 00. La coleccion de mCtricas MDOO define el factor
disminuir. de acoplamiento de la siguiente manera:
1ndice de especializacion (IES). El indice de espe- FA = [ Z i q es-cliente (C,, C,)] / ( T C ~- T C )
cializacion proporciona una indicacion aproximada del donde 10s sumatorios van desde i = 1 hasta TC y desde
grado de especializaci611, para cada una de las subcla- j = 1 hasta TC. La funci6n
ses en un sistema 00. La especializaci6n se puede alcan-
zar aiiadiendo o eliminando operaciones, pero tambiCn Es cliente = 1, si existe una relacion entre la clase
redefiniendo. cliinte, C , y la clase semidora C , y C , # C,.
IE = [NOR x nivel ] 1 MtOmI Es-cliente = 0, en cualquier otro caso.
I N G E N I E R ~ ADEL SOFTWARE. U N E N F O Q U E PRACTICO
Ya que la clase es la unidad dominante en 10s siste- enviados por una sola operaci6n se incrementan, es mas
mas 0 0 , se han propuesto menos mktricas para ope- probable que las responsabilidades no hayan sido correc-
raciones que las relacionadas con las clases. Churcher tamente asignadas dentro de la clase.
y Shepperd [CHU95] discuten lo anterior cuando
declaran que:
Resultados de estudios recientes indican que 10s mCtodos
tienden a ser pequeiios, tanto en t6rminos de nlimero de sen-
tencias como en complejidad logica [WIL93], sugiriendo que
la estructura de conectividadde un sistema debe ser m k impor-
tante que el contenido de 10s modulos individuales.
De cualquier modo, existen algunas ideas que pue- Complejidad de operacion (CO). La complejidad
den llegar a apreciarse, examinando las caracteristicas de una operaci6n puede ser calculada usando cualquiera
promedio para 10s mCtodos (operaciones). A continua- de las metricas de complejidad (Capitulo 19) propues-
cion se resumen tres simples metricas, propuestas por tas para el software convencional [ZUS90]. Ya que las
Lorenz y Kidd [LOR94]: operaciones deben limitarse a una responsabilidad espe-
Tamano medio de operacion (TOmedi,). Aunque cifica, el diseiiador deberia esforzarse por mantener la
las lineas de c6digo podrian ser usadas como un indi- CO tan baja como sea posible.
cador para el tamafio de operacibn, la medida LDC ado- Numero de parametros de media por operacion
lece de todos 10s problemas discutidos en el Capitulo 4. (NPmedi,). Tan largo como sea el numero de parime-
Por esta raz6n, el nlimero de mensajes enviados por la tros de operacibn, mas compleja sera la colaboraci6n
operaci6n proporciona una alternativa para el tamafio entre objetos. En general, NPmedi,debe mantenerse tan
de operaci6n. A medida que el numero de mensajes baja como sea posible.
Las metricas de disefio anotadas en las Secciones 24.4 organizan en categonas, que reflejan caracteristicas de
y 24.5 proporcionan una indicaci6n de la calidad de diseiio importantes.
diseiio. TambiCn proveen una indicacion general de la
cantidad de esfuerzo de pruebas requerido para probar Encapsulaci6n
un sistema 00. Carencia de cohesion en metodos (ccM)~. Cuanto
Binder [BIN941 sugiere que una amplia gama de mas alto sea el valor CCM sera necesario probar mas
metricas de disefio tienen una influencia directa en la estados para asegurar que 10s mttodos no generan efec-
cccomprobabilidadu de un sistema 00. Las mCtricas se tos colaterales.
Como se present6 en la Parte Dos de este libro, el tra- maci6n del tamafio de implementaci6n del software. El
bajo del jefe de proyecto es planear, coordinar, registrar tamafio es directamente proporcional a1 esfuerzo y la
y controlar un proyecto de software. En el Capitulo 20 duraci6n. Las siguientes mCtricas [LOR941 pueden pro-
se presentaron algunos de 10s aspectos especiales aso- porcionar una visi6n sobre el tamafio del software:
ciados con la gesti6n de proyecto para proyectos 00.
Pero iquC hay acerca de las mktricas? existe en mCtri-
cas 00 especializadas que puedan ser utilizadas por el l o oplitahilidad de un modelo de procesos evolutivos,
jefe de proyecto para proporcionar una visi6n interna llamodo el modelo retunivo/poralelo, se dixute en el
adicional sobre el progreso de su proyecto? 8. La res- Capitulo 20.
puesta, desde luego es ccsi~.
La primera actividad ejecutada por el jefe de pro-
Numero de escenario (NE). El n6mero de escena-
yecto es planificar, y una de las primeras tareas de pla- rios o casos uso (Capitulos 11 y 2 1) es directamente
nificaci6n es la estimation. Retomando el modelo proporcional a1 ndmero de clases requeridas para cubrir
evolutivo de procesos, la planificaci6n se vuelve a revi-
10s requisitos, el nlimero de estados para cada clase, el
sar despuCs de cada iteraci6n del software. De este n6mero de mCtodos, atributos y colaboraciones. El NE
modo, la planificaci6n (y sus estimaciones de proyec- es un importante indicador del tarnafio de un programa.
to) es revisada nuevamente despuCs de cada iteraci6n
de AOO, D O 0 e incluso POO. Numero de clases clave (NCC). Una clase clave se
Uno de 10s aspectos clave, a1 que debe hacer frente centra directamente en el dominio del negocio para el
un jefe de proyecto durante la planificaci61-1,es una esti- problema, y tendrh una menor probabilidad de ser imple-
' Vease la Seccion 24.4.1 para una descripcion de NCC y APM. Una descripcion interesante de la coleccion de metricas CK (Sec-
cion 24.4.1) para el uso en la administracion de la toma de decisio-
nes puede encontrarse en [CHI98].
INGENIERfA DEL SOFTWARE. UN ENFOQUE PRhCTICO
mentada por medio de la reutilizacion9. Por esta razon, Las mCtricas NE, NCC y NSUB pueden recolectar-
. valores altos para NCC indican gran trabajo de desa- se sobre proyectos 00 pasados, y e s t h relacionados con
rrollo substancial. Lorenz y Kidd [LOR941 sugieren que el esfuerzo invertido en el proyecto como un todo, y en
entre el 20 y el 40 por 100 de todas las clases en un sis- actividades de procesos individuales (por ejemplo, AOO,
tema 00 tipico corresponde a las clases clave. El resto DOO, PO0 y pruebas 0 0 ) . Estos datos pueden tambiCn
es infraestructura de soporte (GUI, comunicaciones, utilizarse junto con metricas de disefio discutidas con
bases de datos, etc.). anterioridad en este capitulo, para calcular ccmCtricas de
productividad>>, tales como el numero de clases prome-
Numero de subsistemas (NSUB). El numero de sub- dio por desarrollador o promedio de mktodos por per-
sistemas proporciona una vision sobre la asignacion de sona/mes. Colectivamente, estas metricas pueden usarse
recursos, la planificacion (con Cnfasis particular en el para estimar el esfuerzo, duration, personal y otra infor-
desarrollo paralelo) y el esfuerzo de integracion global. maci6n de proyecto para el proyecto actual.
El software orientado a objetos es fundamentalmente dife- Las metricas orientadas a operaciones se centran
rente a1 software desarrollado con el uso de mCtodos con- en el tamaiio y complejidad de las operaciones indi-
vencionales. Es por esto que las mCtricas para sistemas viduales. Sin embargo, es importante hacer notar que
00 se enfocan en la ponderacion que puede aplicarse a la primera para las metricas de disefio 00 es a nivel
las clases y a las caracteristicas del diseiio -1ocaliza- de clases.
cion, encapsulacion, ocultamiento de informacion,heren- Se ha propuesto una amplia variedad de metricas 00
cia y tkcnicas de abstraccion de objetos-, que definen para evaluar la comprobabilidadde un sistema 00.Estas
a la clase como unica. mCtricas se centran en la encapsulacion, herencia, com-
La colecci6n de mktricas CK define seis mCtricas de plejidad de las clases y polimorfismo. Muchas de estas
software orientadas a la clase que se centran en la cla- metricas han sido adaptadas de la coleccion CK y de las
se y en la jerarquia de clases. La coleccion de mCtricas mktricas propuestas por Lorenz y Kidd. Otras han sido
tambiCn incorpora mCtricas para evaluar las colabora- propuestas por Binder.
ciones entre clases y la cohesion de mCtodos que resi- Las caracteristicas ponderables del modelo de an&
den dentro de la clase. A1 nivel orientado a clases, la lisis y disefio pueden ayudar a1 jefe de proyecto de un
coleccion CK puede complementarse con las mCtricas sistema 00 en la planificacion y registro de las acti-
propuestas por Lorenz y Kidd y la coleccion de mCtri- vidades. El numero de escenarios (casos de uso), cla-
cas MDOO. Estas incluyen ponderaciones de cctamaiio>> ses clave y subsistemas proporcionan informacion
de clase, y otras metricas que proporcionan una vision acerca del nivel de esfuerzo requerido para implementar
acerca del grado de especializaci6n de las subclases. el sistema.
[BER95] Berard, E., Metrics for Object-Oriented Sojbare [HAR98] Harrison, R., S.J. Counseil y R.V. Nithi, <<An Eva-
Engineering, publicado en internet en comp.software- luation of the MOOD Set of Object-Oriented Software
eng, 28 de enero de 1995. Metrics,,, IEEE Trans. Sofrware Engineering, vol. 24, n." 6,
[CHI941 Chidamber, S.R., y C.F. Kemerer, <<A Metrics Sui- Junio de 1998, pp. 491-496.
te for Object-Oriented Design,,, IEEE Trans. Software [LOR941 Lorenz, M., y J. Kidd, Object-Oriented Software
Engineering, vol. 20, n." 6, Junio de 1994, pp. 476-493. Metric, Prentice-Hall, 1994.
[CHI981 Chidamber, S.R., D.P. y C.F. Kemerer, <<Manage-
ment Use of Metrics for Object-Oriented Software: An [WHI97] Whitmire, S., Object-Oriented Design Measure-
Exploratory Analysiw, IEEE Trans. Software Enginee- mente, Wiley, 1997.
ring, vol. 24, n." 8, Agosto de 1998, pp. 629-639.
[ZUS90] Zuse, H., Software Complexity: Measures and
[CHU95] Churcher, N.I., y M.J. Shepperd, <<Towards a Con- Methods, DeGruyter, Nueva York, 1990.
ceptual Framework for Object-Oriented Metricw, ACM
Software Engineering Notes, vol. 20, n." 2, Abril de 1995, [ZUS97] Zuse, H., A framework of Software Mesurement,
pp. 69-76. DeGruyter, Nueva York, 1997.
Una variedad de libros de AOO, D O 0 y Comprobacion 00 (Object-Oriented Metrics: Measures of Complexity, Prentice-
(vCase Otras lecturas y fuentes de informacidn en 10s Capitu- Hall, 1996) ofrecen 10s linicos libros dedicados a metricas
10s 20, 21 y 22) que hacen referencia de paso a las metricas 00. Otros libros dedicados a las mCtricas de software con-
0 0 , pero hay pocos que abordan el tema con detalle. Los libros vencional (vCase otras lecturas y fuentes de informacidn en
escritos por Jacobson (Object-Oriented Sofiware Engineering, 10s Capitulos 4 y 19) contienen discusiones limitadas de
Addison-Wesley, 1994) y Graham (Objecto-Oriented Met- mCtricas 00.
hods, Addison-Wesley, segunda edicion, 1993). Proporcionan ' Una amplia variedad de fuentes de informacion para mCtri-
un tratamiento mas extenso que la mayoria. cas orientadas a objetos y temas relacionados se encuentra
Whitmire [WHI97] presenta el tratamiento matematica y disponible en internet. Una lista reciente de referencias a sitios
extensamente mas sofisticado de las mCtricas 00 publicadas (paginas) web relevantes a las mttricas 00 pueden encon-
a la fecha. Lorenz y Kidd [LOR941 y Hendersen-Sellers trarse en http://www. mhhe.pressman5.com
PARTE I
TEMAS AVANZADOS
E N INGENIERIA
DEL SOFTWARE
que pueden tener un impacto profundo enI la ingenieria del software la proxima
dCcada.
operadores
I .. .......,442
de conjuntos..
..*
iQuQes? Estos m6todos permiten a1 inge- pueden perder vidas o incluso tener lee o escribe datos en un estado. Una
niero del software crear una especiii- graves consecuencias econdmicas. En operacidn s e asocia a dos condicio-
caci6n sin ambigiiedades que sea mas dichas situaciones es esencial descu- nes: una precondici6n y una postcon-
completa y conslante que las que s e brir 10s errores antes de poner en ope- dicion. La notaci6n y l a heuristica
utilizan e n 10s metcdos convenciona- raci6n la computadora. Los metodos asociados con 10s conjuntos y especi-
les u orientados a objetos. La teoria d e formales reducen drasticamente 10s ficaciones constructivas +peradores
conjuntos y las notaciones Itqicas s e errores d e especificacion. y conse- d e conjuntos. operadores lbgicos y
utilizan para crear una sentencia cla- cuentemente son la base del software sucesione- forman la base d e 10s
r a d e hechos (o d e requisitos). Esta que tiene pocos errores una vez que el metodos formales.
especificaci6n matematica entonces se cliente comienza a utilizarlo.
~Cu61es el producto obtenido?
puede para cornprobar que iCu&lesson lm El pimer paso
sea 'Orrecta y esta Cuando s e aplican metodos formales
e n la aplicacibn de los m&todos for- s e produce una especificacidn repre-
especificacion s e crea utilizando nota-
males e s definir el invarianie d e senlada en un lenguaje formal coma z
ciones matem&iicas,inherentemente
dates, el estado o VDM
es menosambiguaque Ios nodes para el Iuncionamiento de un sistema.
males d e presentacion.
El invariante de datos e s una condi- &Cdmopuedo edar saguro de que
iQli611lo hace? Un ingeniero del soft- ci6n que s e verifica mediante la eie- lo he hetho comectamente? Debi-
ware es~ecializadocrea una esFcifi- cuci6n d e una funcidn que contiene un do a que 10s mbtodos formales utilizan
caci6n formal. conjunto de datos. Los datos almace- la matemdtica discreta como meca-
aPor qu&es importante? En sistemas nados forman el estado e n donde una nismo d e especiiicaci6n. para demos-
criticos para la misidn y para la segu- funci6n puede acceder y alterar: y las trarque ma especificaci6n e s correcta,
ridad, un fall0 puede pagarse muy operaciones son las acciones que tie- s e pueden aplicar pruebas lbgicas a
caro. Cuando la computadora lalla se nen Iugar en un sistema a medida que cada funcidn del sistema.
INGENIERfA DEL SOFTWARE. U N ENFOQUE PRACTICO
La Encyclopedia of Software Engineering [MAR941 ros del software, hay otros (hay quien diria que la mayo-
define 10s mCtodos formales de la siguiente forma: ria) que no consideran especialmente agradable el pun-
Los metodos formales que se utilizan para desarrollar sis- to de vista matem6tico del desarrollo del software. Para
temas de computadoras son tecnicas de base matematica para entender por quC un enfoque formal tiene un cierto inte-
describir las propiedades del sistema. Estos metodos formales r&, es preciso considerar en primer lugar las deficien-
proporcionan marcos de referencia en el seno de 10s cuales las cias asociadas a 10s enfoques menos formales.
personas pueden especificar, desarrollar y verificar 10s siste-
mas de manera sistematica, en lugar de hacerlo ad hoc.
Se dice que un metodo es formal si posee una base mate- 25.1.1. Deficiencias de 10s enfoques menos
mitica estable, que normalmente vendra dada por un lengua- formales
je formal de especificacidn. Esta base proporciona una forma Los mCtodos descritos para el analisis y diseiio en las
de definir de manera precisa nociones tales como la consis-
tencia y completitud,y, lo que es aun m k relevante,la especi- Partes Tercera y Cuarta de este libro hacen un amplio
ficacion, la implementacidn y la correccion. uso del lenguaje natural y de toda una gama de nota-
ciones graficas. Aun cuando la aplicacion cuidadosa de
10s mCtodos de analisis y diseiio junto con una revision
detallada puede ciertamente llevar a un software de ele-
vada calidad, la torpeza en la aplicacion de estos mCto-
dos puede crear toda una gama de problemas. La
especificacion de un sistema puede contener contradic-
ciones, ambiguedades, vaguedades, sentencias incom-
pletas y niveles mezclados de abstraction.
I EZ rnuy extentida la traduccion del tkrrnino incompleteness por Una palabra de precaucion es apropiada en este punto. Las espe-
incompletitud,per0 este terrnino en espaiiol no esta aceptado por la cificaciones rnaternaticas de sisternas que se presentan en este capi-
RAE. (N. del Trad.) tulo no son tan sucintas corno una expresion rnaternatica simple. Los
sisternas de software son notoriarnente cornplejos, y no seria realista
esperar que pudieran especificarse en la rnisrna linea que las rnate-
rnaticas.
DEL SOFTWARE. U N ENFOQUE PRACTICO
INGENIER~A
I
25.1.3. Conceptos de 10s metodos formales
El objetivo de esta seccion es presentar 10s conceptos
fundamentales implicados en la especificacion mate-
matica de sistema de software, sin abrumar a1 lector con
un excesivo nivel de detalle matemitico. Para lograr
esto, se utilizaran unos pocos ejemplos sencillos:
Ejemplo 1. Una tabla de simbolos. Para mantener Maxlds
una tabla de simbolos se utiliza un programa. Esta tabla
se utiliza frecuentemente en muchos tipos distintos de
aplicaciones. Consta de una coleccion de elementos sin
duplicacion. En la Figura 25.1 se muestra un ejemplo
de tabla tipica de simbolos en donde se representa una
tabla que utiliza un sistema operativo para que contie-
ne almacenados 10s nombres de 10s usuarios de un sis-
tema. Otros ejemplos de tablas incluirian por ejemplo FIGURA 25.1. U n a t a b l a d e sirnbolos q u e s e e r n p l e a
la coleccion de nombres del personal en un sistema de p a r a un s i s t e r n a o p e r a t i v o .
nomina, la coleccion de nombres de computadoras en
un sistema de comunicaciones de red y la coleccion de Otro concepto importante es el de estado. En el con-
destinos de un sistema que elabora horarios de trenes. texto de mktodos formales3,un estado es el dato alma-
Suponga que la tabla presentada en este ejemplo no cenado a1 cual accede el sistema y que es alterado por
consta de mas de Maxlds miembros de personal. Esta Cste. En el ejemplo del programa de la tabla de simbo-
afirmacion, que impone una restnccion sobre la tabla, es los, el estado es la tabla de simbolos.
un componente de una condici6n conocida corno inva- El concepto final es el de operacidn. Se trata de una
riante de datos --una idea importante a la cual volve- accion que tiene lugar en un sistema y que lee o escri-
remos en repetidas ocasiones a lo largo del capitulo-. be datos en un estado. Si el programa de tabla de sim-
bolos se ocupa de afiadir y eliminar nombres de personal
de la tabla de simbolos, entonces estari asociado a dos
operaciones: una operacion para ariadir un nombre espe-
cificado en la tabla de simbolos, y otra operacion para
Un invorionte de dotos es un coniunto de condiciones que eliminar un nombre existente de la tabla. Si el progra-
son verdoderas durante lo ejecucion del sisterno que ma proporciona la capacidad de comprobar si existe o
contiene uno coleccion de dotos. no un nombre concreto en la tabla, quiere decir que sera
necesaria una operaci6n que proporcione alguna indi-
Un invariante de datos es una condition verdadera cation de la existencia del nombre en la tabla.
a lo largo de la ejecuci6n del sistema que contiene una
coleccion de datos. El invanante de datos, que es vali-
do para la tabla de simbolos descrita anteriormente,
posee dos componentes: (1) que la tabla no contendri
m b de Maxlds nombres y ( 2 )que no existiran nombres
Lo ccprecondicibn)) define 10s circunstoncios en 10s que uno
duplicados en la tabla. En el caso del programa de tablas
operocibn en porticulor es valido. La ((postcondician))define
de simbolos descrito anteriormente, esto significa que, que ocurre cuando uno operacion ho finolizodo su occi6n.
independientemente del momento en que se examine la
tabla de simbolos durante la ejecuci6n del sistema, siem-
pre contendrh un maximo de Maxlds identificadores de Una operacion esta asociada a dos condiciones: las
personal y no contendra duplicados. precondiciones y las postcondiciones. Una precondi-
cidn define las circunstancias en que una operacion en
particular es vhlida. Por ejemplo, la precondition para
una operacicin que afiada un nombre a la tabla de sim-
bolos de identificadores de personal es valida s610 si el
En 10s mitodos formoles, un ccestodo~es un coniunto nombre que hay que aiiadir no esta almacenado en la
de datos olrnocenados o 10s que el sistemo accede tabla y existen menos de Maxlds identificadores de per-
y modifico. Uno ccaperoci6nr es uno acci6n que lee sonal en la tabla. La postcondicidn de una operacion
o escribe datos en un estodo. define lo que ocurre cuando la operacion ha finalizado
salida y que cada uno tiene asociada una cola. Tam- Todo archivo tiene asociado un tamaiio.
.biCn se supondri que cada uno de 10s dispositivos Toda cola asociada a un dispositivo de salida con-
esta asociado a un cierto limite de lineas por archi- tendri archivos que tengan un tamafio menor que el
vo que se pueden imprimir. Por ejemplo, un dispo- limite superior de este dispositivo de salida.
sitivo de salida que tenga un limite de 1.000 lineas No existiran mas de DispMax dispositivos de salida
de impresi6n estara asociado a una cola que conten- que sean administrados por este concentrador.
ga tan solo aquellos archivos que no posean mas de
1.000 lineas de texto. Los concentradores de impre-
si6n suelen imponer esta limitaci6n para evitar las
grandes tareas de impresibn, que podrian ocupar unos
dispositivos de impresi6n lentos durante periodos de 10s estodos y 10s operaciones en muchos ospectos
tiempo sumamente largos. En la Figura 25.3 se mues- son onblogos a lo definicibn de closes en 10s sistemos
tra una representaci6n esquemitica de un concen- orientados a obietos. 10s estados representon el dominio
trador de impresi6n. de 10s dotos (oributos) y 10s operaciones
son 10s procesas (mitodos) que manipulan 10s dotos.
Segun se muestra en la figura, el estado del concen-
trador consta de cuatro componentes: las colas de archi-
vos que esperan para ser impresos, en donde cada cola El concentrador puede tener asociado un cierto nume-
esta asociada a un dispositivo de salida en particular; la ro de operaciones. or
ejemplo:
colecci6n de dispositivos controlados por el concentra- Una operaci6n que afiada un dispositivo de salida
dor; la relaci6n entre dispositivos de salida y el tamafio nuevo a1 concentrador, junto con su limite de impre-
maxim0 de archivo que puede imprimir cada uno de si6n asociado.
ellos, y, por ultimo, la relaci6n entre 10s archivos que Una operaci6n que elimina un archivo de la cola aso-
esperan para ser impresos y su tamafio en lineas. Por ciada a un determinado dispositivo de salida.
ejemplo, en la Figura 25.3 se muestra el dispositivo de
Una operaci6n que afiada un archivo a la cola aso-
salida LP1, que con un limite de impresi6n de 750 lineas,
tiene dos archivos fimp y personas a la espera de impri- ciada a un dispositivo de salida en particular.
mirse, y con un tamaiio de 650 lineas y 700 lineas res- Una operaci6n que altere el limite superior de lineas
pectivamente. de impresi6n para un dispositivo de salida en par-
ticular.
Una operaci6n que traslade un archivo de una cola
Dispositivos de salida Colas
asociada a un dispositivo de salida a otra cola aso-
ciada a un segundo dispositivo de salida.
LP2 data nuevos Cada una de estas operaciones se corresponde con
una funci6n del concentrador. Por ejemplo, la primera
operaci6n se corresponderia con la notificaci6n a1 con-
centrador de un nuevo dispositivo conectado a1 orde-
nador que contiene el sistema operativo que a su vez
Limites Dimensiones administra a1 concentrador.
Tal como sucedia antes, cada operaci6n esti asocia-
da a una precondici6n y a una postcondici6n. Por ejem-
plo, la precondici6n para la primera operaci6n es que el
nombre del dispositivo de salida ya no existe y que exis-
tan en ese momento menos de DispMax dispositivos de
salida a efectos del concentrador. La postcondici6n es
que el nombre del dispositivo nuevo se aiiade a la colec-
FIGURA 25.3. Un c o n c e n t r a d o r d e i m p r e s i o n . ci6n de nombres de dispositivos ya existentes, form&
dose una nueva entrada para el dispositivo sin que esta
El estado del concentrador se representa mediante entrada tenga asociados archivos en su cola, y el dis-
10s cuatro componentes: colas, dispositivos de salida, positivo se asocia a su limite de impresi6n.
limites y dimensiones. El invariante de datos tiene cin- La precondici6n de la segunda operaci6n (la elimina-
co componentes: ci6n de un archivo de una cola asociada a un determina-
do dispositivo de sali&) es que el dispositivo sea conocido
Cada dispositivo de salida esta asociado a un limite para el concentrador y que exista al menos una entrada
superior de lineas de impresi6n. en la cola asociada a1 dispositivo. La postcondici6n es
Todo dispositivo de salida esta asociado a una cola que la cabeza de la cola asociada a1 dispositivo de salida
de archivos esperando impresibn, que posiblemente sea eliminada y se borre su entrada en la parte del con-
no esta vacia. centrador que siga la pista de 10s tamafios de archivos.
C A P ~ T U L 2O5 M ~ T O D O SF O R M A L E S
La precondici6n de la quinta operaci6n descrita ante- El tamaiio del archivo es menor o igual que el limite
. riormente (el traslado de un archivo de una cola aso- de impresi6n asociado a1 segundo dispositivo de salida.
ciada a un dispositivo de salida a la cola asociada a un
segundo dispositivo de salida) es: La postcondici6n es que el archivo sera eliminado
de una cola y afiadido a otra cola.
El primer dispositivo de salida es conocido para el
En cada uno de 10s ejemplos indicados en esta sec-
concentrador. ci6n, se han presentado 10s conceptos clave de la espe-
El segundo dispositivo de salida es conocido para el cificaci6n formal. Se ha hecho esto sin hacer hincapiC
concentrador. en las matematicas necesarias para hacer formal la espe-
La cola asociada a1 primer dispositivo contiene el cificacion. Consideraremos estas matematicas en la sec-
archivo que hay que trasladar. cion siguiente.
Para aplicar de forma eficiente 10s mCtodos formales, Las especificaciones constructivas de conjuntos resul-
el ingeniero del software debe de tener un conocimien- tan preferibles a las especificaciones enumeradas, por-
to razonable de la notaci6n matematica asociada a 10s que hacen posible definir de forma sucinta 10s conjuntos
conjuntos y a las sucesiones, y a la notaci6n logica que formados por muchos miembros. TambiCn se define
se emplea en el calculo de predicados. El objetivo de explicitamente la regla que se utiliza para construir el
esta secci6n es proporcionar una breve introducci6n a1 conjunto.
tema. Para una descripci6n mhs detallada del tema se Considere el siguiente ejemplo de especificacion
recomienda examinar 10s libros especializados en esta constructiva:
materia: por ejemplo, [WIL87], [GRI93] y [ROS95]. {n: N l n < 3 . n } ,
Esta especificaci6nposee tres componentes: una sig-
25.2.1. Conjuntos y especificacion constructiva natura, n : N , un predicado n < 3; y un tkrmino, n. La
Un conjunto es una colecci6n de objetos o elementos que signatura especifica el interval0 de valores que se con-
se utiliza como la piedra angular de 10s mCtodos forma- siderara cuando se forme el conjunto, el predicado (una
les. Los elementos de un conjunto son h i c o s (es decir, expresi6n Booleana) define la forma en que se debe de
no se permiten 10s duplicados). Forman un grupo peque- construir el conjunto y, por ultimo, el te'rmino ofrece la
iio de elementos dentro de llaves, separando mediante forma general del elemento del conjunto. En el ejem-
comas sus elementos. Por ejemplo, el conjunto plo anterior, N denota el conjunto de 10s numeros natu-
{C++,Pascal, Ada, Cobol, Java) rales; por tanto, es precis0 considerar 10s numeros
naturales, el predicado indica que solamente tienen que
contiene 10s nombres de cinco lenguajes de programa- incluir 10s numeros naturales menores que 3, y el tCr-
ci6n. mino especifica que todos 10s elementos del conjunto
El orden en que aparecen 10s elementos dentro de un sera de la forma n. Por tanto, la especificaci6n anterior
conjunto no es relevante. El numero de elementos del define un conjunto:
conjunto se conoce con el nombre de cardinalidad. El
operador # proporciona la cardinalidad de un conjunto. (0, 1721
Por ejemplo, la expresi6n Cuando la forma de 10s elementos del conjunto es
# { A , B, C, 0 )= 4 evidente, se puede omitir el tCrmino. Por ejemplo, el
indica que se ha aplicado el operador de cardinalidad a1 conjunto anterior se podria especificar en la forma:
conjunto mostrado, con un resultado que indica el nume-
ro de elementos que habia en el conjunto.
Los conjuntos que se han descrito anteriormente
iQue es una especificacion poseian todos ellos elementos que tienen objetos indi-
constructiva de coniuntos? viduales. TambiCn se pueden construir conjuntos for-
mados a partir de elementos que Sean pares, ternas, etc.
Por ejemplo, la especificaci6n de conjunto
Hay dos maneras de definir un conjunto. En primer
lugar, se puede definir por enumeraci6n de sus elemen- { x , y : N I x + y = l0.(x,y2) I
tos (esta es la forma en que se han definido 10s conjun- define el conjunto de parejas de numeros naturales con
tos indicados anteriormente). El segundo metodo la forma (x, y ~ y) en 10s cuales la suma de x e y es 10.
consiste en crear una especijicacidn constructiva de con- Se trata del conjunto
juntos. La forma general de 10s ndmeros de un conjun-
to se especifican empleando una expresi6n Booleana. {(1,81), (2,64), (3, 49),...I
I N G E N I E R ~ ADEL SOFTWARE. UN ENFOQUE PRACTICO
implica
nueva de bloques sera igual a la cola del viejo valor La postcondici6n es que el conjunto de bloques se
. de la cola de bloques, es decir, a todos 10s elementos aiiade a1 final de la cola de bloques y el conjunto de blo-
de la cola salvo el primero. Una segunda operaci6n ques libres y usados permanece invariable:
es la que se encarga de afiadir una cola de bloques ColaBloques' = ColaBloques A ( AB1ocks)A
BloquesA a la cola de bloques. La precondicih es usados' = usados A
que BloquesA sea en ese momento un conjunto de libres' = libres
bloques usados:
No cabe duda de que la especificacibn matemhtica
BloquesA c usados de la cola de bloques es considerablemente mhs rigu-
rosa que una narraci6n en lenguaje natural o un mode-
~ C O se~ pueden
O representar lo grhfico. Este rigor adicional requiere un cierto
las precondiciones y las esfuerzo, per0 10s beneficios ganados a partir de una
postcondiciones? mejora de la consistencia y de la completitud puedan
justificarse para muchos tipos de aplicaciones.
Un lenguaje de especificaci6n formal suele estar com- posible especificar el comportamiento del sistema. Por
puesto de tres componentes primarios: (1) una sinta- ejemplo, se puede desarrollar una sintaxis y una semhn-
xis que define la notacidn especifica con la cual se tica para especificar 10s estados y las transiciones entre
representa la especificaci6n; (2) una semhntica que estados, 10s sucesos y sus efectos en las transiciones de
ayuda a definir un a.miverso de objetosn [WIN901 que estados, o la sincronizacih y la temporizaci6n.
se utilizarh para describir el sistema; y (3) un conjun- Es posible utilizar distintas abstracciones semhnti-
to de relaciones que definen las reglas que indican cuh- cas para describir un mismo sistema de diferentes
les son 10s objetos que satisfacen correctamente la maneras. Eso se ha hecho de manera formal en 10s
especificaci6n. Capitulos 12 y 21. El flujo de datos y el procesamien-
El dominio sintcictico de un lenguaje de especifica- to correspondiente se describia utilizando el diagrama
ci6n formal suele estar basado en una sintaxis derivada de flujo de datos, y se representaba el comportamien-
de una notaci6n estindar de la teoria de conjuntos y del to del sistema mediante un diagrama de transici6n entre
chlculo de predicados. Por ejemplo, las variables tales estados. Se empleaba una notaci6n anhloga para des-
como x, y, y z describen un conjunto de objetos que estin cribir 10s sistemas orientados a objetos. Es posible uti-
relacionados a un problema (algunas a veces se deno- lizar una notaci6n de modelado diferente para
minan el dominio del discurso) y se utilizan junto con representar el mismo sistema. La semhntica de cada
10s operadores descritos en la Secci6n 25.2. Aunque la representacibn proporciona una visi6n complementa-
sintaxis suele ser simbblica, tambiCn se pueden utilizar ria del sistema. Para ilustrar este enfoque cuando se
iconos (simbolos grhficos como cuadros, flechas y cir- utilicen 10s mCtodos formales, sup6ngase que se utili-
culos) si no son ambiguos. za un lenguaje de especificaci6n formal para describir
El donzinio senzantico de un lenguaje de especifica- el conjunto de sucesos que dan lugar a que se produz-
ci6n indica la forma en que ese lenguaje representa 10s ca un cierto estado dentro de un sistema. Otra relaci6n
requisitos del sistema. Por ejemplo, un lenguaje de pro- formal representa todas aquellas funciones que se pro-
gramacidn posee un conjunto de semhnticas formales ducen dentro de un cierto estado. La intersecci6n de
que hace posible que el desarrollador de software espe- estas dos relaciones proporciona una indicacih de 10s
cifique algoritmos que transforman una entrada en una sucesos que darhn lugar que se produzcan funciones
salida. Una gramhtica formal (tal como BNF) se puede especificas.
utilizar para describir la sintaxis del lenguaje de pro- En la actualidad se utiliza toda una garna de lengua-
gramacibn. Sin embargo, un lenguaje de programaci6n jes formales de especificacibn: CSP [HIN95, HOR851,
no es un buen lenguaje de especificacih, porque sola- LARCH [GUT93], VDM [JON911 y Z [SPI88, SPI921
mente puede representar funciones computables. Un son lenguajes formales de especificacih representati-
lenguaje de especificacidn deberh poseer un dominio vos que muestran las caracteristicas indicadas anterior-
semhntico mhs amplio; esto es, el dominio semhntico mente. En este capitulo, se utiliza el lenguaje de
de un lenguaje de especificaci6n debe de ser capaz de especificacih Z a efectos de ilustracih. Z esth acom-
expresar ideas tales como <<Paratodo x de un conjunto pailado de una herramienta automatizada que almace-
infinito A, existe un y de un conjunto infinito B tal que na axiomas, reglas de inferencia y teoremas orientados
la propiedad P es vdida para x e yn [WIN90]. Otros len- a la aplicaci6n que dan lugar a pruebas de correcci6n
guajes de especificacih aplican una semintica que hace matem6ticas de la especificacidn.
I N G E N I E R ~ ADEL SOFTWARE. U N ENFOQUE PRACTICO
Las especificaciones en Z se estructuran como un con- En esta seccibn, se utiliza el lenguaje de especifica-
junto de esquemas - s o n estructuras parecidas a cuadros ci6n Z para modelar el ejemplo del gestor de bloques
que presentan variables y que especifican larelaci6n exis- que se presentaba en la Secci6n 25.1.3 y se trataba pos-
tente entre las variables-. Un esquema es, en esencia, teriormente en la Secci6n 25.3. En la Tabla 25.1 se pre-
una especificacidn formal aniloga a la subrutina o el pro- senta un resumen de la notaci6n del lenguaje Z. El
cedimiento de un lenguaje de programaci6n. Del mismo siguiente ejemplo de esquema describe el estado del
mod0 que 10s procedimientos y las subrutinas se utilizan gestor de bloques y del invariante de datos:
para estructurar un sistema, 10s esquemas se utilizan para
estructurar una especificaci6n formal.
La notacion Z esta basada en la teoria de conjuntos con tipos y en la Iogica de primer orden. Z proporcio-
na una estructura denominada esquema, para describir el estado y las operaciones de una especificacion.
Los esquemas agrupan las declaraciones de variables con una lista de predicados que limitan 10s posibles
valores de las variables. En Z el esquema X se define en la forma
declaraciones
predicados
predecibles
La declaracion proporciona el tip0 de la funcion o constante, mientras que el predicado proporciona su
valor. En esta tabla solamente se presenta un conjunto abreviado de simbolos de Z.
Conjuntos:
s:N X S se declara como un conjunto de X.
X€ S x es miembro de S.
Xiz S x no es miembro de S
SG T S es un subconjunto de T: Todo miembro de S esta tambien en T.
SU T La union de S y T: Contiene todos 10s miembros de S o T o ambos.
S nT La insercion de S y T: Contiene todos 10s miembros tanto de S como de T.
S\ T La diferencia de S y T: Contiene todos 10s miembros de Ssalvo 10s que estan tambien en T.
0 Conjunto vacio: No contiene miembros.
{XI Conjunto unitario: Solamente contiene a x.
N El conjunto de 10s numeros naturales 0, 1,2 ....
S: F X Se declara S como un conjunto finito de X.
max (S) El maximo del conjunto no vacio de numeros S.
Funciones:
f:X* Y Se declara como una inyeccion parcial de X e Y.
dom f El dominio de f Dicese del conjunto de valores de x para 10s cuales esta definido Ax).
ran f El rango de f El conjunto de valores que toma Ax) cuando x recorre el dominio de f.
f O ( x - y) Una funcion que coincide con f salvo que x se hace corresponder con y.
(XI5l f Una funcion igual que f, salvo que x s e ha eliminado de su dominio.
Logica:
PAQ P y Q: Es verdadero si tanto P como Q son verdaderos.
P a Q P implica Q: Es verdadero tanto si Q es verdadero como si P es falso.
0s' = 0 s Ningun componente del esquema S cambia en una operacion.
#ColaBloques > 0,
usados' = usados \ cabeza ColaBloques A
usados n libres = TodosBloques libres' = libres u cabeza ColaBloques A
V i: dom ColaBloques ColaBloques i c usados A ColaBloques' = cola ColaBloques
'd i, j: dom ColaBloques . i # j *
ColaBloques i n ColaBloques j = 0 La inclusi6n de AGestorBloques da como resultado
todas las variables que componen el estado disponible
en el esquema EliminarBloques, y asegura que el inva-
riante de datos se mantendri antes y despuCs de que se
2
Referencia Web
Informocibn detollada sobre el lenguoie Z en donde
se incluye FAQ se puede encontrar en
ejecute la operaci6n.
La segunda operacibn, que aiiade una colecci6n de
bloques a1 final de la cola, se representa de la manera
siguiente:
archive.comlab. ox.ac.uk/z.html
Afiadir Bloques
AGestorBloques
El esquema se compone de dos partes. La primera
BloquesA? : BLOQUES
esti por encima de la linea central representando las
variables del estado, mientras que la que se encuentra BloquesA? G usados
por debajo de la linea central describe un invariante de ColaBloques' = ColaBloques (BloquesA?)
10s datos. Cuando el esquema que representa el inva-
riante y el estado se utiliza en otro esquema, va prece- usados' = usados A
dido por el simbolo A. Por tanto, si se utiliza el esquema libres' = libres
anterior en uno que describa, por ejemplo, una opera-
ci6n, se representm'a mediante AGestorBloques. Como Por convenci6n en Z, toda variable que se lea y que
la afirmacidn anterior establece, 10s esquemas se pue- no forme parte del estado iri terminada mediante un sig-
den utilizar para describir operaciones. El ejemplo no de interrogaci6n. Consiguientemente, BloquesA?,
siguiente describe la operaci6n que elimina un elemen- que actua como parhetro de entrada, acaba con un sig-
to de una cola de bloques: no de interrogaci6n.
C A(tab1a)
objeto? : T
#tabla < MaxElem
[ tabla' = tabla u { objeto? }
Extraer -
tabla. Antes de definir este esquema se debe de utilizar
el esquema original de tabla de simbolos para incluir esta
informaci6n. En primer lugar necesitamos un miembro
diferenciado de la tabla que se conoce como FrecElem.
Este es el elemento que se utiliza con mhs frecuencia. La
definition de la tabla nueva es:
objeto? : T
obieto?~tabla TablaSimbolos[T]
I
tabla' = tabla \ l obieto? 1 FrecElem : T
7 nhmero - Encontrar
A( FrecElem)
aSerEncontrado? : T
estado! : {encontrado,noencontrado)
aSerEncontrado? = FrecElem v aSerEncontrado?
E tabla-
-
Estas son operaciones muy simples que conllevan estado! = encontrado A FrecElem ' = aSerEncon-
operaciones esthndar de conjuntos como u, y que trado?
siguen el formato mostrado en el ejemplo de colas. La aSerEncontrado? # FrecElem A aSerEncontrado?
operaci6n afiadir se definirh solo si la tabla tiene espa- E tabla
cio para el objeto que se va a aiiadir, y la operation
estado! = noEncontrado
extraer solo se define si el objeto que se va a extraer
esth dentro de la tabla de simbolos. La operaci6n nhme- Aqui todas las operaciones definidas para Tabla-
ro no afecta a1 estado, y de aqui que incluya el ele- Simbolos se heredan sin cambios como esth la variable
mento E(tab1a). de instancia tabla. La nueva operacidn encontrar utili-
Si queremos instanciar la tabla como una tabla de za una variable FrecElem que forma parte del nuevo
nombres de empleados del tipo EMPLEADO, se requie- esquema TablaDifde Object Z.
re todo lo siguiente: Esta operaci6n comprueba si el parhmetro de entrada
TabEmpleado == TablaSimholos[EMPLEADO] de encontrar es el mismo que el elemento frecuente que
[empltabla,emp?lobjeto?,emp!lobjeto! ] se esti recuperando varias veces o est6 dentro de la tabla.
donde la tabla se convierte en una tabla con objetos Si es asi, entonces el estado correct0 encontrado se devuel-
EMPLEADO y donde 10s parhmetros de entrada defi- ve y el elemento frecuente se actualiza. Si el elemento no
nidos de forma genCrica han sido sustituidos por pari- es el elemento frecuente y no esth dentro de la tabla enton-
metros especificos emp? y emp! ces se devuelve el estado noEncontrado.
A continuacidn se muestra el esquema Object Z que Este esquema se puede utilizar entonces dentro de
describe la nueva tabla de empleados mediante la ins- una aplicaci6n de empleados especificando:
tanciaci6n; simplemente involucra la redefinici6n de 10s TabEmpleadoFrec == TablaDiflEMPLEADO]
operadores que se acaban de definir. [empsltabla,emp?lobjeto?,emp! ,Empfi-eclObjetofrec]
e :TabEmpleados
A AadirEmp 4 e.aiiadir e :TabEmpleadoFrec
AfiadirEmpFrec P ~.A~?ADIR
ExtraerEmp P e.extraer
ExtraerEmpFrec B e.EXTRAER
InitEmp P e.INIT . InitEmpFrec P e.INIT
NLimeroEmp P e.nhmero NhmeroEmpFrec P e.NUMER0
I N G E N I E R ~ ADEL SOFTWARE. U N ENFOQUE PRACTICO
Esto es una introducci6n corta para mostrar la mane- ci6n anterior, para implementar las funciones para la ins-
ra de empezar a utilizar las notaciones formales para la tanciaci6n y la herencia. El trabajo en esta 6rea esti toda-
especificaci6n de sistemas orientados a objetos. La mayor via a nivel de investigacibn con pocas aplicaciones. Sin
parte del trabajo que se ha llevado a cab0 dentro de esta embargo, durante el penodo de vida de esta edici6n las
6rea ha empleado la noci6n Z y se ha intentado construir notaciones formales orientadas a objeto deberian expe-
basado en las ideas de estado, precondicibn, postcondi- rimentar el mismo nivel de penetraci6n industrial que
ci6n e invariante de datos, que se ha descrito en la sec- notaciones estindar tales como las notaciones Z.
Las dos secciones anteriores han descrito Z y la deri- tales como Z para acompafiar la concurrencia, no se
vacion orientada a objetos Object Z. El principal pro- ha hecho con mucho Cxito ya que nunca se diseiiaron
blema de estas especificaciones y de las notaciones realmente con esta idea en la cabeza. Donde si se ha
matematicas similares es que no tienen las funciones hecho con Cxito ha sido en el desarrollo de notacio-
para especificar 10s sistemas concurrentes: aquellos nes formales de prop6sito especial para concurrencia,
donde se ejecutan un serie de procesos a1 mismo tiem- y el prop6sito de esta secci6n es describir una de las
po -y frecuentemente con un grado elevado de comu- m i s conocidas: PSI (Procesos Secuenciales interco-
nicaci6n entre estos procesos-. Aunque se han municados) [CSP (Communicating Sequential Pro-
realizado muchos esfuerzos por modificar notaciones cesses)].
CAPfTULO 25 MeTODOS FORMALES
PSI fue desarrollado en Oxford por el cientifico toriamente. EJECUTAR es un proceso que puede encar-
informitico inglCs Tony Hoare. La idea principal que garse de cualquier suceso en su alfabeto. A1 igual que
respalda esta notaci6n es que se puede ver un siste- PARAR es un proceso no deseado e indica que ha habi-
ma como un conjunto de procesos secuenciales (pro- do un bloqueo.
gramas simples no concurrentes) que se ejecutan y Para poder hacernos una idea de la utilizaci6n de PSI
se comunican con otros procesos de manera aut6no- en la especificaci6n de procesos especificaremos algu-
ma. Hoare diseA6 PSI para describir tanto el desa- nos sistemas muy simples. El primer0 es un sistema que
rrollo de estas notaciones como la comunicaci6n que se compone de un proceso C. Una vez que se ha acti-
tiene lugar entre ellas. De la misma manera que desa- vado este proceso, la vilvula de un reactor quimico se
rroll6 esta notacibn, tambiCn desarroll6 una serie de cerrari y se parari.
leyes algebraicas que permiten llevar a cab0 un razo-
aC = { cerrar }
namiento: por ejemplo, sus leyes permiten a1 dise-
C= (cerrar + PARAR)
fiador demostrar que el proceso P,no se bloqueari
esperando la acci6n de otro proceso P,que esti a su La primera linea define el alfabeto del proceso como
vez esperando a que el proceso P, lleve a cab0 algu- un proceso que se compone de un suceso, y la segunda
na otra acci6n. linea establece que el proceso C se encargari de cerrar
La notaci6n PSI es muy simple en comparaci6n con y entonces parar.
una notaci6n Z u Object Z; depende del concept0 de un Esta es una especificaci6n muy simple y algo irreal.
suceso. Un suceso es algo que se puede observar, es at6- Definamos ahora otro proceso C, que abriri la vilvula,
mico e instantineo, lo que significa que un suceso, por la cerrari y que comenzh otra vez a comportarse enton-
ejemplo, no se puede intermmpir, sin0 que se comple- ces como C,.
tar& independientemente de lo que estC ocurriendo en aC, = { abrir, cerrar }
un sistema. La coleccih de sucesos asociados con alg6n
C,= (abrir + cerrar + C,)
proceso P se conoce como el alfabeto de P y se escribe
como aP. Ejemplos tipicos de sucesos son el encendi- Una definici6n alternativa donde se definan dos pro-
do de la vilvula de un controlador industrial, la actua- cesos seria
lizaci6n de una variable global de un programa o la aC, = { abrir }
transferencia de datos a otra computadora. Los proce- C, = (abrir + C,)
sos se definen recursivamente en funci6n de 10s suce-
sos. Por ejemplo
aC2= (cerrar)
C, = (cerrar + C,)
describe el hecho de que un proceso esti involucrado
en el suceso e dentro de a P y entonces se comporta Aqui, el primer proceso C, tiene el alfabeto {abrir},
como P. En PSI se pueden anidar definiciones de pro- se encarga de un solo suceso que aparece dentro del alfa-
cesos: por ejemplo, P se puede definir en funci6n de beto y que se comporta entonces como el proceso C,.
otro proceso P I como El C, tambiCn posee un alfabeto de un solo suceso, se
encarga de este suceso y se comporta entonces como
(e + (e, + PI)) C,. Un observador ajeno a1 tema que vea el sistema
en donde ocurre el suceso e, y el proceso se comporta expresado de esta forma veria la siguiente sucesi6n de
como el proceso P,. sucesos:
La funciones que se acaban de describir no son muy
abrir, cerrar, abrir, cerrar ....
6tiles, ya que no proporcionan ninguna opcibn, por ejem-
plo, para el hecho de que un proceso se pueda encargar Esta sucesi6n se conoce como rastreo del proceso.
de dos sucesos. El operador de opci6n I permite que las A continuaci61-1,se muestra otro ejemplo de especifica-
especificaciones PSI incluyan el elemento de determi- ci6n PSI. Esta representa un robot que se puede encar-
n i s m ~ Por
. ejemplo, la siguiente especificaci6n define gar de dos sucesos que se corresponden con un retroceso
un proceso P que permite una opci6n. o un avance en la linea. Se puede establecer la defini-
ci6n del camino infinito de un robot sin puntos finales
P = (el + P,I e,+ P,) en el recomdo de la siguiente manera
Aqui el proceso P se define como un proceso capaz
de encargarse de dos sucesos elo e,. Si se da el prime- aROBOT = { avance, retroceso }
ro, el proceso se comportari como P I , y si aparece el ROBOT = (avance +ROBOTI retroceso +ROB073
segundo, se comportari como P,. Aqui el robot se puede encargar de avanzar o retro-
En PSI existe una serie de procesos estindar. PARAR ceder y comportarse como un robot ,pudiendo avanzar
es el proceso que indica que el sistema ha terminado de y retroceder, y asi sucesivamente. Supongamos otra vez
manera anormal, en un estado no deseado como es el que la especificaci6n es real introduciendo algunas otras
bloqueo. SALTAR es un proceso que termina satisfac- funciones PSI. La complicaci6n es que la pista sobre la
INGENIERIA DEL SOFTWARE. UN ENFOQUE PRACTICO
que viaja el robot se compone de cientos de movimientos norma sobre la comunicaci6n y la sincronizaci6n es que
con avances y retrocesos que denotan este movimien- cuando dos procesos se e s t h ejecutando en paralelo, don-
to. Supongamos tambiCn que en esta pista el robot man- de tienen algunos sucesos en comun, deben de ejecutar
ca de la posici6n 1 . A continuacidn se muestra la ese suceso simultheamente. Tomemos como ejemplo un
definici6n de este ROBOT,: sistema bastante simple y real que enciende y apaga las
olROBOT, = ( avance,retroceso )
luces y que se basa en un ejemplo similar a1 de [HIN95].
ROBOT, = R, Las definiciones de 10s dos procesos de este sistema son:
Rl = (avance + R,) cLUZ, = { encendida, apagada )
R, = (avance + R,,, I retroceso + R,.,) LUZ, = (encendida -+encendida -+ PARAR
(i< 1 0 0 ~ i > 1) I apagada + apagada -+ PARAR)
RIm = (retroceso + h,) cLUZ, = ( encendida, apagada )
Aqui el robot representa un proceso con 10s mismos LUZ, = (encendida + apagada + LUZ,)
dos sucesos del alfabeto como el robot anterior. Sin Ambos procesos tienen el mismo alfabeto. El primer
embargo, la especificaci6n de su implicaci6n en estos proceso LUZ,, o bien enciende la luz y la vuelve a encen-
sucesos es mis compleja. La segunda linea establece que der de nuevo (hay que recordar que es posible que otros
el robot arrancarh en una posici6n inicial y se compor- procesos hayan apagado el sistema entre medias, y se
tar6 de la misma manera que con el proceso R , el cual ha averiado (PARAR es un estado no deseado), o bien
representa su posici6n en el primer recuadro. La terce- la apaga una vez, y una vez mis. El proceso LUZ,
ra linea establece que el proceso R, solo se puede encar- enciende la luz y la apaga, y a continuacion empieza a
gar del suceso de avance ya que se encuentra en el punto comportarse de nuevo como LUZ,. Los dos procesos en
final. La cuarta linea define la serie de procesos desde paralelo se denotan mediante:
R, a R,. Aqui se define el hecho de que en cualquier pun- LUZ, II LUZ,
to el robot se puede avanzar o retroceder. La linea final
especifica lo que sucede cuando el robot ha alcanzado iCuil es el efecto de ejecutar estos procesos en para-
el final del recorrido: solo puede retroceder. lelo? En una introduccidn como es esta no se puede
Esta es la manera en que funcionan 10s procesos en entrar en mucho detalle. Sin embargo, se puede dar una
PSI. En sistemas reales existiri una serie de procesos idea del razonamiento que se puede aplicar a dicha
ejecuthdose concurrentemente y comunicandose con expresi6n. Se recordara que cuando se introdujo PSI se
otros, como se muestra a continuacion mediante algu- afirm6 que no solo consiste en una notacion para espe-
nos ejemplos: cificar 10s procesos concurrentes, sino que tambikn con-
tiene una serie de normas que permiten razonar a cerca
En un sistema cliente/senidor, un solo senidor en de las expresiones de procesos complejos y, por ejem-
ejecuci6n como proceso estari en comunicaci6n con plo, determinar si cualquier suceso nefasto como un blo-
varios clientes que igualmente se ejecutarin como queo aparecera dentro del sistema especificado en PSI.
procesos. Para poder ver lo que ocurre merece la pena aplicar algu-
En sistemas de tiempo real, que controlan un reac- nas de las normas que desmoll6 Hoare para PSI. Recor-
tor quimico, existiran procesos de supervisi6n de la demos que se intenta averiguar c u d es el proceso que
temperatura de 10s reactores que se comunicarh con se ha definido mediante la ejecucidn en paralelo de 10s
10s procesos que abren y cierran las vhlvulas de estos procesos LUZ, y LUZ,. Esta expresi6n es equivalente a:
reactores. encendido + encendido + PARAR
En un sistema de control de trifico aereo, la funcio- apagado + apagado + PARAR)
nalidad del radar se podria implementar como pro-
cesos que se comunican con procesos que llevan a LUZ, = (encendidoj apagado + LUZ,)
cab0 las tareas de visualizar en pantalla las posicio- Una de las normas de Hoare establece que
nes de las aeronaves.
De aqui que exista la necesidad de representar en PSI Esto nos permite ampliar la expresi6n que involucra
la ejecuci6n en paralelo de 10s procesos. TambiCn exis- a LUZ, y LUZ, con
te la necesidad de algun medio con el que se produzca
la comunicaci6n y la sincronizaci6n entre estos proce- (encendido + ((encendido + PARAR) II (apagado +
sos. El operador que especifica la ejecuci6n en parale- LUZ,)))
lo en PSI es II. Por tanto, el proceso P que representa la Esta expresi6n se puede simplificar aun mas utili-
ejecuci6n en paralelo de 10s procesos de PI y P, se defi- zando otra de las normas de Hoare a la expresi6n
ne como (encendido + PARAR)
P = P , II P,
lo cual significa que la ejecuci6n en paralelo de 10s dos
La sincronizaci6nentre 10s procesos se logra median- procesos es equivalente a una luz que se enciende y
te procesos con algun solapamiento en sus alfabetos. La entonces se para en un estado de bloqueo no deseado.
CAP~TULO
25 M ~ T O D O SFORMALES
Hasta ahora, se han visto procesos que cooperan con ne el proceso PROD,, el cual equipara este proceso con
la sincronizaci6n mediante el hecho de que tienen alfa- A, sin entradas esperando. La segunda linea establece
betos similares o que se solapan. En 10s sistemas reales que cuando el proceso recibe un valor de entrada x se
tambiCn existiri la necesidad de que 10s procesos se comporta como el proceso con un valor x almacenado.
cornuniquen con datos. PSI es un mCtodo uniforme para La tercera linea establece que cuando un proceso con
la cornunicaci6n de datos: se trata simplemente como un valor almacenado recibe un valor y entonces se com-
un suceso en donde el suceso nomCanal.va1 indica que porta como un proceso con dos valores almacenados.
ha ocumdo un suceso que se corresponde con la comu- La liltima linea establece que un proceso con dos valo-
nicaci6n del valor val a travCs de un canal nomeanal. res almacenados emitiri el producto de estos valores,
PSI contiene un dispositivo notacional similar a1 de Z almacenarfi el lSlltimo valor y entonces se comportarfi
para distinguir entre la entrada y la salida; para distin- como A con ese valor almacenado, de manera que, por
guir la primera se introduce el signo de interrogacibn, ejemplo, si aparece otro valor se multiplicarfi por ese
mientras que para distinguir la segunda se utiliza el sig- valor y se emitirfi por el canal de salida. Asi pues, la
no de exclamaci6n. especificaci6n anterior se comporta como un proceso
A continuacih, se muestra un ejemplo basado en en donde se recibe una sucesi6n de enteros y lleva a
[HIN95], en donde se Eepresenta la especificaci6n de un cab0 la multiplicaci6n de 10s valores.
proceso que toma dos enteros y forma el producto. Se puede decir entonces que esta es una definici6n
breve de PSI -a1 igual que todos 10s mCtodos formales
PROD, = A. incluye tambiCn una notaci6n matemfitica y las normas
A. = (en? x + AJ
para el razonamiente. Aunque en las descripciones de
A ) = (en? Y + A(r.y,) Z y Object Z no se han examinado las normas y se ha
A+.y) = (fuera!(x * y) + A,,,) concentrado en el formalismo todavia contienen fun-
A primera vista esto parece muy complicado, por eso ciones sustanciales para razonar sobre las propiedades
merece la pena describirlo linea a linea. La primera defi- de un sistema.
La decisi6n de hacer uso de 10s mCtodos formales en el seguridad serfin nuestras primeras opciones, e irin
mundo real no debe de adoptarse a la ligera. Bowen y seguidos por aquellos componentes cuyo fa110 no
Hinchley [BOW951 han acuiiado 4 0 s diez manda- se pueda admitir (por razones de negocios).
mientos de 10s mCtodos formales>>,como guia para aque- IILEstimaras 10s costes. Los mCtodos formales tienen
110s que estCn a punto de embarcarse en este importante unos costes de arranque considerables. El entrena-
enfoque de la ingenieria del software5. miento del personal, la adquisici6n de herramien-
tas de apoyo y la utilizaci6n de asesores bajo
contrato dan lugar a unos costes elevados en la pri-
mera ocasi6n. Estos costes deben tenerse en cuenta
l o decisih de utilizor metodos formoles no deberh
cuando se estC considerando el beneficio obtenido
tomone o lo ligero. Sigo estos (cmondomientos)
y osegfirese de que todo el mundo hoya recibido
frente a esa inversi6n asociada a 10s mCtodos for-
lo formocibn odecuodo. males.
IV. Poseeras un experto en metodos formales a tu
I. Seleccionaras la notacion adecuada. Con objeto disposicion. El entrenarniento de expertos y la ase-
de seleccionar eficientemente dentro de la amplia soria continua son esenciales para el Cxito cuando
gama de lenguajes de especificaci6n formal exis- se utilizan 10s mCtodos formales por primera vez.
tente, el ingeniero del software deberfi considerar No abandonaras tus metodos formales de desa-
el vocabulario del lenguaje, el tip0 de aplicaci6n rrollo. Es posible, y en muchos casos resulta desea-
que haya que especificar y el grado de utilizaci6n ble, integrar 10s mCtodos formales con 10s mCtodos
del lenguaje. convencionales y/o con mCtodos orientados a obje-
11. Formalizaras, pero no de mas. En general, resulta tos (Capitulos 12 y 21). Cada uno de estos mttodos
necesario aplicar 10s mttodos formales a todos 10s posee sus ventajas y sus inconvenientes. Una com-
aspectos de 10s sistemas de cierta envergadura. binaci6n de ambos, aplicada de forma adecuada,
Aquellos componentes que Sean criticos para la puede producir excelentes resultados6.
Esta descripcion e s una version sumamente abreviada de [BOW95]. La ingenieria del software de la sala limpia (Capitulo 26) e s un ejem-
plo integrado que hace uso de 10s metodos formales y de una nota-
cion mas convencional para el desarrollo..
C A P ~ T U L O25 METODOS F O R M A L E S
diciones que son ciertas a lo largo de la ejecuci6n del Z, a1 igual que todos 10s lenguajes de especificacion
sistema que contiene una coleccion de datos-; (2) el formal, posee tanto un dominio semantic0 como un
estado -10s datos almacenados a 10s que accede el dominio sintiictico. El dominio sintactico utiliza una sim-
sistema y que son alterados por 61-; (3) la operation bologia que sigue estrechamente a la notacion de con-
-una acci6n que tiene lugar en un sistema y que lee juntos y a1 calculo de predicados. El dominio semantic0
o escribe datos en un estado-. Una operaci6n queda capacita a1 lenguaje para expresar requisitos de forma
asociada con dos condiciones: una precondici6n y una concisa. La estructura Z contiene esquemas, estructuras
postcondici6n. en forma de cuadro que presentan las variables y que
La matematica discreta -la notaci6n y practica aso- especifican las relaciones entre estas variables.
ciada a 10s conjuntos y a la especificaci6n constructiva, La decisi6n de utilizar mCtodos formales debe con-
a 10s operadores de conjuntos, a 10s operadores 16gicos siderar 10s costes de arranque, asi como 10s cambios pun-
y a las sucesiones- constituyen la base de 10s m6todos tuales asociados a una tecnologia radicalmente distinta.
formales. Estas matematicas estan implementadas en el En la mayoria de 10s casos, 10s mCtodos formales ofre-
context0 de un lenguaje de especificaci6n formal, tal cen 10s mayores beneficios para 10s sistemas de seguri-
como Z. dad y para 10s sistemas criticos para 10s negocios.
[BOW951 Bowan, J.P., y M.G. Hinchley, ..Ten Command- tions Techniques; eds.: N. Gehani y A.T. McKittrick, Addi-
ments of Formal Methods, Computer., vol. 28, n.",Abril son-Wesley, 1986, p. 3.
1995. [MAR941 Marcianiak, J.J. (ed.), Encyclopedia of Soft14,are
[GRI93] Gries, D., y F.B. Schneider, A Logical Approach to Engineering, Wiley, 1994.
Discrete Math, Springer-Verlag, 1993. [ROS95] Rosen, K.H., Discrete Mathematics and Its Appli-
[GUT931 Guttag, J.V., y J.J. Homing, Larch: Languages and cations, 3.%d., McGraw-Hill, 1995.
Tools for Formal Specifications, Springer-Verlag, 1993. [SPIXX] Spievy, J.M.. Understanding Z : A Specification Lun-
[HAL901 Hall, A., (<SevenMyths of Formal Methods,,, IEEE guuge and Its Formal Semantics, Cambridge University
Software, Septiembre 1990. Press, 1988.
[SPI92] Spievy, J.M., The Z Notation: A Reference Manual,
[HOR85] Hoare, C.A.R., Communicating Sequential Pro- Prentice-Hall, 1992.
cesses, Prentice-Hall International, 1985.
[WIL87] Witala, S.A., Discrete Mathematics: A Unified
[HIN95] Hinchley, M.G., y S.A. Jarvis, Concurrent Systems: Approach, McGraw-Hill, 1987.
Formal Development in CSP, McGraw-Hill, 1995.
[WIN901 Wing, J.M., <<ASpecifier's Introduction to Formal
[JON911 Jones, C.B., Systematic Development Using VDM, Methods,,, IEEE Computer, vol. 23, n." 9, Septiembre
2.%d., Prentice-Hall, 1991. 1990, pp. 8-24.
[LIS86] Liskov, B.H., y V. Berzins, <<AnAppraisal of Pro- [YOU941 Yourdon, E., <<FormalMethods)), Guerrilla Pro-
gram Specifications)), publicado en Software Specifica- grammer, Cutter Information Corp., Octubre 1994.
25.1. Revisar 10s tipos de deficiencias asociados a 10s enfo- a. el invariante de datos
ques menos formales de la ingenieria del software en la Sec-
ci6n 25.1.1. Proporcione tres ejemplos de cada uno de ellos, b. el estado
procedentes de su propia experiencia. c. las operaciones probables
25.2. Los beneficios de las matematicas como mecanismo de 25.4. Se le ha asignado un equipo de software que esta desa-
especificaci6n se han descrito con cierta extensi6n en este capi- rrollando software, denominado DuplicadosMemoria, y que
tulo. ~Existealglin aspect0 negativo? proporciona una mayor cantidad de memoria aparente para
25.3. Se le ha asignado un equipo de software que va a desa- un PC, en comparaci6n con la memoria fisica. Esto se logra
rrollar software para un fax m6dem. Su trabajo consiste en identificando, recogiendo y reasignando bloques de memo-
desarrollar el <<listintelef6nico)) de la aplicaci6n. La funci6n ria que hayan sido asignados a aplicaciones existentes per0
del listin telef6nico admite hasta MaxNombre nombres de no e s t h siendo utilizados. Los bloques no utilizados se rea-
direcciones que seran almacenados junto con 10s nombres de signan a aplicaciones que requieran memoria adicional. Efec-
la compaiiia, nlimeros de fax y otras informaciones relacio- tuando las suposiciones oportunas, y empleando el lenguaje
nadas. Empleando el lenguaje natural, defina: natural, defina:
I N G E N I E R ~ ADEL SOFTWARE. U N E N F O O U E PRACTICO
Ademas de 10s libros utilizados como referencia en este capi- Jacky, J., The Way of Z: Practical Programming With For-
tulo, se ha publicado un numero bastante grande de libros mal Methods, Cambridge University Press, 1997.
acerca de temas relacionados con 10s metodos formales a lo Lano, J., y Haughton (eds.), Object-Oriented Specifica-
largo de 10s ultimos afios. Se presenta a continuacidn un lis- tion Case Studies, Prentice-Hall, 1993.
tad0 de 10s ejemplos mas significativos: Rann, D., J. Turnery J. Whitworth, Z: A Beginner's Guide,
Bowan, J., Formal Specification and Documentation using Chapman & Hall, 1994.
Z : A Case study Approach, International Thomson Compu- Ratcliff, B., Introducing Specification Using Z: A Practi-
ter Press, 1996. cal Case Study Approach, McGraw-Hill, 1994.
Casey, C., A Programming Approach to Formal Methods, D. Sheppard, An Introduction to Formal Specification with
McGraw-Hill, 2000. Z and VDM, McGraw-Hill, 1995.
Cooper, D., y R. Barden, Z in Practice, Prentice-Hall, 1995. Los ejemplos de septiembre de 1990 de IEEE Transac-
Craigen, D., S. Gerhart y T. Raltson, Industrial Applica- tions on Software Engineering, IEEE Software e IEEE Com-
tion of Formal Methods to Model, Design, Diagnose andAna- puter estaban dedicados todos ellos a 10s metodos formales.
lise Computer Systems, Noyes Data Corp., Park Ridge, NJ, Siguen siendo una fuente excelente de informacion util.
1995. Schuman ha editado un libro que describe 10s mCtodos
Diller, A., Z.: An Introduction to Formal Methods, 2.%d., formales y las tccnologias orientadas a objetos (Formal
Wiley, 1994. Object-Oriented Development, Springer-Verlag, 1996). El
Harry, A., Formal Methods Fact File: VDM y Z , Wiley, libro ofrece lineas generales acerca de la utilization selecti-
1997 va de metodos formales y acerca de la forma en que estos
Hinchley, M., y J. Bowan, Applications ofFormal Methods, mktodos se pueden utilizar en conjuncion con enfoques 00.
Prentice-Hall, 1995. En Internet se encuentra una gran cantidad de informa-
Hinchley, M., y J. Bowan, Industrial Strength Formal cion acerca de 10s mCtodos formales y de otros temas rela-
Methods. Academic Press, 1997. cionados. En http://www.pressman5.com se puede encontrar
Hussmann, H., Formal Foundations for Software Engi- una lista de referencias actualizada relevante para 10s meto-
neering Methods, Springer-Verlag, 1997. dos formales.
Palabras c l a v e
certifizacion ...........461
*..I .*.
espetificaciones
de caia limpia.. ....... .464
"---A:.".:...."-
&UP er? iCu6ntas veces se ha ofdo decir (fallos informaticos) que s e cometen en s e analizan para permitir el c6lculo
*Halocorrectamentea la primeran? Esa el disefio y constmcci6n del software? matemaim de la fiabilidad proyectada
e s la filosofia primordial de la ingenie- Esto e s lo que promete la ingenieria del en el mmponente de software.
ria del software de sala limpia. un pro- software de sala limpia. gCu61 es el prodrcto obtenido? El
ceso que d a importancia a la verificacibn desarrollo d e especificaciones de caja
~Cualesson 10s pwos? Los modelos de
matemdrtica de lacorreccidn antes de que negra, de caja d e estado y d e caja lim-
analisis y disefio se crean utilizando la
comience la construccibn de un progra- pia. Y.ademas, el registro de 10s resul-
representaci6n de estructura de caja.
ma y de que la certificaci6nda la fiabili- iados d e las pruebas formales de
Una ncajan encapsula el sistema (o
dad deI software Iorme parts de la correccibn y las pruebas estadisticas
algun aspect0 del sistema) a un nivel
actividad de pruebas. Hacienda hinm- de utilization.
especiiico de abstraccidn. La verifica-
pie en ma lilosofia mas profunda, se tra-
ci6n de la correccidn se aplica una vez &Comopueda estar seguro de qre
taria de aquella que tiene indices de lallo
que s e ha completado el disefio de la lo he hecho correctamente? La
extremadamente bajos y que e s dificil o
estmctura de caja. Y la prueba estadis- prueba formal de correccibn s e aplica
imposible de lograr utilimndo metodos
tica de la utilizacih comienza una vez u la especilicacidn d e estructura d e
menos formales.
que s e ha verificado la correccibn en cajas. Lns pruebas estadisticas d e uti-
aQui6nla hace? Un ingeniero del soft- cada estmctura de caja. El software se lizacion ejercitan 10s escenarios de uti-
ware iormadopara esta e s p e c i a l i o n . pmeba definiendo un conjunto de esce- lizaci6n para asegurar que no s e
;POTqu8 es importante? h s errores narios, determinando la probabilidad revelen y se puedan corregir 10s erro-
conllevan doble trabajo. Trabajar el de utilimci6n de cada uno y definiendo res en la funcionalidad del usuario. Los
doble lleva m&s tiempo y e s mas caro. entonces las pruebas aleatorias que se datos d e prueba s e utilizan para pro-
iNo seria maravilloso poder reducir dra- ajustan a las probabilidades. Por ulti- porcionao una sefial de la fiabilidad del
mdticamente la cantidad d e errores mo. 10s registros de errores resultantes software.
Cuando el software falla en el mundo real, suelen abundar 10s peligros a largo plazo asi como
10s peligros inmediatos. Los peligros pueden estar relacionados con la seguridad humana, con
pkrdidas econ6micas o con el funcionamiento efectivo de una infraestructura social y de nego-
cios. La ingenieria del software de sala limpia es un modelo de proceso que elimina 10s defec-
tos antes de que puedan dar lugar a riesgos graves.
I N G E N I E R ~ ADEL SOFTWARE. U N ENFOQUE PRACTICO
I.1
La madurez de la industria de desarrollo del soft-
ware. El uso de procesos de sala limpia requiere
una aplicaci6n rigurosa de procesos definidos en
todas las fases del ciclo de vida. Dado que la mayor
parte de la industria funciona todavia en el nivel
ad hoc (segdn se ha definido por parte del Software
Engineering Institute Capability Maturity Model),
la industria no ha estado preparada para aplicar
estas tecnicas.
I S - lngenieria de sistemas G C - Generacion de codigo
Aun cuando existen ciertos indicios de verdad en RR - Recoleccion de requisitos IC - Inspection de codigo
todas las indicaciones expresadas anteriormente, 10s E E C - Especificacion de estructura C E U - Comprobacion estadistica
posibles beneficios de la ingenieria del software de sala de cajas de utilization
DF - DiseAo formal C - Certification
limpia compensan m8s que sobradamente la inversi6n V C - Verificacion de correccion PP - Planificacion de prueba
requerida para superar la resistencia cultural que se
encuentra en el ndcleo de estas objeciones. FIGURA 26.1. El modelo de proceso de sala limpia.
CAP~TULO
26 I N G E N I E R I A DEL S O F T W A R E DE S A L A L I M P I A
3
Referencia Web
Una fuente excelente de informocibn y de recursos
poro la ingenieria del software de solo limpio
de camprabacion.
Independientemente del mCtodo de analisis selecciona- Caja negra. Esta caja especifica el comportamien-
do, 10s principios de operaci6n presentados en el Capi- to del sistema, o de parte de un sistema. El sistema (o
tulo 11 siempre serin aplicables. Se modelan 10s datos, parte de 61) responde a estimulos especificos (sucesos)
las funciones y el comportamiento. Los modelos resul- mediante la aplicacidn de un conjunto de reglas de
tantes deben de ser descompuestos (refinados) para pro- transicidn que hacen corresponder el estimulo con la
porcionar un grado de detalle cada vez mas elevado. El respuesta.
objetivo global consiste en pasar de una especificacih Caja de estado. Esta caja encapsula 10s datos de
que captura la esencia de un problema, a una especifi- estados y de servicios (operaciones) de forma analo-
caci6n que proporciona una cantidad de detalle sustan- ga a 10s objetos. En esta vista de especificaci6n, se
cia1 para su implernentacion. representan las entradas de la caja de estados (10s esti-
La ingenieria del software de sala limpia satisface mulos) y sus salidas (las respuestas). La caja de esta-
10s principios de analisis operacional por cuanto emplea dos tambiCn representa la <<historiade estimulos>>de
un mCtodo denominado especificacidn de estructura de la caja negra, es decir, 10s datos encapsulados en la
caja. Una cccaja>>encapsula el sistema (o alglin aspec- caja de estado que deben ser mantenidos entre las tran-
to del sistema) con un cierto grado de detalle. Median- siciones implicadas
te un proceso de refinamiento progresivo, se van
refinando las cajas para formar una jerarquia en la cual Caja limpia. Las funciones de transici6n que esthn
cada caja tiene transparencia referential. Esto es, <<el implicadas en la caja de estado se definen en la caja
contenido de informaci6n de cada especificaci6n de caja limpia. Dicho literalmente, la caja limpia contiene el
basta para definir su refinamiento, sin depender de la disefio procedimental correspondiente a la caja de esta-
implementacidn de ninguna otra caja>>[LIN94]. Esto dos.
capacita a1 analista para desglosar jerkquicamente el
sistema, pasando de la representaci6n esencial situada i Como se Ileva a tab0
en la parte superior, hasta 10s detalles especificos de la el refinamiento como p r t e
implementaci6n situados en la parte inferior. Se utili- de la especificacion de estructura
zan tres tipos de cajas: de caja negra?
FIGURA 26.2. Refinamiento de la estructura de cajas. FIGURA 26.4. Una especificacion de caja de estado IMIL881.
463
INGENIER~ADEL SOFTWARE. UN ENFOQUE PRACTICO
Segun se muestra en la Figura 26.4, la caja de estado tituida por las estructuras de programaci6n estructura-
contiene una caja negra. El estimulo, S , que se introduce da que implementa g.
en la caja negra, procede de alguna fuente extema y de un
conjunto de estados intemos del sistema, T . Mills pro-
porciona una descripci6n matem5tica de la funcion,f, de El diseiio de procediiientosy la progromacibn
la caja negra contenida en el seno de la caja de estado: estructurado se describen en el Capltulo 16.
g: S* x T * + R X T
Como ejemplo, considkrese la caja limpia que se
donde g es una subfuncion que esta asociada a un esta- muestra en la Figura 26.5. La caja negra g, que se mues-
do especifico t. Cuando se consideran en su conjunto, tra en Figura 26.4 se ve sustituida por una sucesion de
las parejas de estados y subfunciones (t, g) definen la estructuras que contienen una estructura condicional.
funcion de caja negraf. Estas, a su vez, se pueden refinar para formar cajas trans-
parentes del interior a medida que vaya avanzando el
26.2.3. Especificaci6n d e caja limpia procedimiento de refinamiento progresivo.
La especificacion de caja limpia esta intimamente rela- Es importante tener en cuenta que la especificaci6n
cionada con el disefio de procedimientos y con la pro- de procedimientos descrita en la jerarquia de caja lim-
gramaci6n estructurada. En esencia, la subfunci6n g, pia se puede demostrar a efectos de correction. Este
que se encuentra dentro de la caja de estado, se ve sus- tema se considerara en la seccion siguiente.
El enfoque de diseiio que se utiliza en la ingenieria del per0 iquk pasa con el disefio de datos? En este aspec-
software de sala limpia hace mucho uso de la filosofia to, entra en juego un cierto numero de conceptos fun-
de la programaci6n estructurada. Pero, en este caso, la damentales de disefio (Capitulo 13). Los datos del
programaci6n estructurada se aplica de forma mucho programa se encapsulan como un conjunto de abstrac-
mas rigurosa. ciones a las cuales prestan servicio las subfunciones.
Los conceptos de encapsulamiento de datos, oculta-
miento de informaci6n y 10s tipos de datos se utilizan
entonces para crear el disefio de datos.
Raiz ci6n que utilice x . Por tanto, queda intacto. Dado que
la comprobaci6n de condiciones (v + 112 I .r tiene
que fallar para alcanzar la condici6n salida, se sigue
que (y + 112 I x. Ademas, la condici6n bucle debe
seguir siendo verdadera (esto es, < x). Consi-
guientemente, que 0,+ 1)2 > x e y!? I-x se pueden
combinar para satisfacer la condici6n de salida.
Ademas, es preciso asegurar que finalice el bucle.
Un examen de la condici6n del bucle indica que dado
que y se va incrementando y que x 2 0, el bucle final-
mente debe terminar.
Los cinco pasos indicados anteriormente son una
demostraci6n de la correcci6n del diseiio del algoritmo
FIGURA 26.8. Dernostracion de la correccion del disefio - 26.7. Ahora estamos seguros
indicado en la Figura - de
que el diseiio calculara, realmente, la parte entera de
una raiz cuadrada.
La condici6n comienzo exige que [x 2 0 e y = 01. Es posible utilizar un enfoque matematicamente mas
Basandose en 10s requisitos del problema, se supone riguroso de la verificaci6n del disefio. Sin embargo, un
que la condici6n de entrada es correcta3. Consi- debate sobre este tema iria mas alla del alcance de este
guientemente, se satisface la primera parte de la con- libro. Los lectores interesados pueden consultar [LIN79].
dici6n comienzo, x 2 0. En el diagrama de flujo, la
sentencia que precede inmediatamente a la condi- 26.3.2. Ventajas de la verificaci6n del diseiio4
ci6n comienzo hace que y = 0. Consiguientemente,
la segunda parte de la condicion comienzo tambiCn La verification de correccion rigurosa de cada uno de
se satisface. De aqui que comienzo sea verdadero. 10s refinamientos del disefio de caja limpia posee un
cierto numero de ventajas evidentes. Linger [LIN94]
La condici6n bucle se puede encontrar de dos mane- las describe de la siguiente manera:
ras: (1) directamente saliendo de comienzo (en este
caso, la condicion del hucle se satisface directamente) Se reduce la verificacidn a un proceso finito. La
o bien (2) a travCs del control de flujo que pasa por forma anidada y secuencial, en que se organizan las
la condicion cont. Dado que la condici6n cont es estructuras de control en una caja limpia, define de
idCntica a la condici6n bucle, bucle es verdadera inde- manera natural una jerarquia que revela las condi-
pendientemente de la rama de flujo que lleve a ella. ciones de correcci6n que es preciso verificar. Un
axioma de sustituci6n [LIN79] nos permite reem-
plazar las funciones objetivo por sus refinamientos
de estructura de control dentro de la jerarquia de sub-
demostraciones. Por ejemplo, la subdemostraci6n
Para demoshor la correccion de un diseio, primero para la funci6n final f l de la Figura 26.9 requiere que
se deben identificar todos las condiciones y demoshar la comprobaci6n de las operaciones g l y g2 con la
que coda una de ellas toma un valor Booleano. funci6n final f2 produzca sobre 10s datos el mismo
Esto es lo que se lama subdemostrocion.
efecto f 1. ObsCrvese que f2 reemplaza a todos 10s
detalles de su refinamiento dentro de la demostra-
Se llega a la condici6n cont unicamente despuCs de
ci6n. Esta sustitucion localiza el argument0 de
haber incrementado en 1 el valor de y. Ademas, la
demostraci6n en la estructura de control que se esta
ruta de flujo de control que lleva a cont solamente se
estudiando. De hecho, permite a1 ingeniero del soft-
puede invocar si la condici6n si tambiCn es verda-
ware realizar demostraciones en cualquier orden.
dera. Consiguientemente si 0,+ 1)2 I x, se sigue que
y2 I x. La condicion cont se satisface. i Que es lo que se gana
La condici6n si se comprueba en la logica condicio- realizando las demostraciones
nal que se muestra. Consiguientemente, la condici6n de correccion?
si debe de ser verdadera cuando el flujo de control
pase por la via mostrada. Es imposible asociar una importancia excesiva a1
La condici6n salida exige, en primer lugar, que x no efecto positivo que posee sohre la calidad la reduc-
haya cambiado. Un examen del disefio indica que x cidn de la verificaci6n a un proceso finito. Aun
no aparece en ningun lugar a la izquierda de un ope- cuando todos, salvo 10s programas mas triviales,
rador de asignaci6n. No hay ninguna llamada a fun- muestran un conjunto, que en esencia es infinito, de
Un valor negativo para una raiz cuadrada carece de significado en Esta seccion y las Figuras 26.7 hasta la 26.9 se han adaptado de
este contexto. [LIN94]. Se utilizan con permiso del autor.
466
CAP~TULO
26 I N G E N I E R ~ ADEL SOFTWARE DE S A L A LIMPIA
rutas de ejecucion, se pueden verificar en un numero de acuerdo en que cada condicion es correcta, por
finito de pasos. tanto, un error solamente es posible si todos y cada
uno de 10s miembros del equipo verifican incorrec-
tamente una condicion. El requisito de acuerdo una-
nime basada en las verificaciones individuales de
Aun cuondo en un progromo hay uno contidad
resultados da lugar a un software que posee pocos o
extremadomentegronde de formos de ejecucibn, ningun defect0 antes de su primera ejecucion.
10s posos poro demostror que un progromo Es escalable. Todo sistema de software, indepen-
es torrecto son muy pocos. dientemente de su tamaiio, posee unos procedi-
mientos de caja transparente del mas alto nivel
[fll f 1 = [DO g l ; 92; [ f 2 ] END] ? formados por estructuras de secuencia, alternancias
DO e iteraciones. Cada uno de estos invoca tipicamente
92 a un gran subsistema que posee miles de lineas de
If21 f2 = [WHILE p l DO If31 END] ? c6digo -cada uno de estos subsistemas posee su
WHILE propio nivel superior de funciones y procedimientos
P1
DO If31 f3 = [DO 93; [f41; 98 END] ? finales-. Por tanto, las condiciones de correcci6n
93 para estas estructuras de control de alto nivel se veri-
[f41 f4 = [IF p2; THEN [f51 ELSE [f61 END] ?
IF
fican de la misma forma en que se procede con las
~2 estructuras de bajo nivel. Las verificaciones de alto
THEN If51 f5 = [DO 94; 95 END1 ? nivel pueden requerir, y merecera la pena, una mayor
94 cantidad de tiempo, per0 no se necesita mas teoria.
Produce un cddigo mejor que la comprobacidn uni-
taria. La comprobacion unitaria solamente com-
END prueba 10s efectos de ejecutar vias de pruebas
g8 seleccionadas entre muchas vias posibles. A1 basar
END la verificacion en la teoria de funciones, el enfoque
END
de sala limpia puede verificar todos y cada uno de
FIGURA 26.9. Disefio con subdemostraciones [LIN94]. 10s posibles efectos sobre 10s datos, porque aun
cuando un programa pueda tener multiples vias de
Permite que 10s equipos de sala limpia verifiquen ejecucion, solamente posee una funcion. La verifi-
todas las lineas de diseiio y de cddigo. Los diseiios cation es, ademas, mas eficiente que la comproba-
pueden efectuar la verificacion mediante un analisis cion unitaria. La mayor de las condiciones de
y debate en grupo de las bases del teorema de correc- verificacion se pueden verificar en unos pocos minu-
cion y pueden producir pruebas escritas cuando se tos, per0 las comprobaciones unitarias requieren una
necesite una confianza adicional en algun sistema cantidad notable de tiempo para prepararlas, ejecu-
critic0 para vidas o misiones. tarlas y comprobarlas.
Da lugar a un nivel de defectos prdximo a cero. Es importante tener en cuenta que la verificacion de
Durante una revision en equipo, se verifica por tur- disefio debe de aplicarse en ultima instancia a1 c6digo
nos la correcci6n de todas y cada una de las estruc- fuente en si. En este contexto, suele denominarse veri-
turas de control. Cada miembro del equipo debe estar jicaci6n de correccidn.
La tactica y estrategia de la prueba de sala limpia es algo El comportamiento visible para el usuario de ese pro-
fundamentalmente distinto de 10s enfoques convencio- grama esta controlado por las entradas y sucesos que
nales de comprobaci6n. Los mCtodos convencionales suelen ser producidos por el usuario. Pero en casos com-
derivan de casos de prueba para descubrir errores de plejos, el espectro posible de entradas y sucesos (esto
diseiio y de codificacion. El objetivo de 10s casos de es, 10s casos practicos) pueden ser extremadamente
prueba de sala limpia es validar 10s requisitos del soft- variables. ~ C u aes
l el subconjunto de casos practicos
ware mediante la demostracion de que una muestra esta- que verifica adecuadamente el comportamiento del pro-
distica de casos practicos (Capitulo 11) se han ejecutado grama? ~ s t es
a la primera cuestion que aborda la prue-
con Cxito. ba estadistica de casos practicos.
La prueba estadistica de casos ccequivale a probar
el software en la forma en que 10s usuarios tienen
26.4.1. Prueba estadistica de casos practicos intencion de utilizarlov [LIN94]. Para lograr esto, 10s
El usuario de un programa de computadora no suele equipos de prueba de sala limpia (tambiCn llamados
necesitar comprender 10s detalles tCcnicos del diseiio. equipos de certificacidn) deben determinar la distri-
bucion de probabilidad de utilizacibn correspondien- el intervalo de distribucion que se muestra en la tabla
te a1 software. La especificacion (caja negra) de cada anterior:
incremento del software se analiza para definir un con- HD-P-HD-HD-HD-FZ
junto de estimulos (entradas o sucesos) que pueden P-HD-HD-HD-C-HD-HD
dar lugar a que el software modifique su comporta- HD-HD-FZ-P-P-HD
miento. Basandose en entrevistas con posibles usua-
rios, en la creaci6n de escenarios de utilizacion y en El equipo de prueba ejecuta 10s casos pricticos indi-
una comprensi6n general del dominio de la aplica- cados anteriormente (y otros mas) y verifica el compor-
cion, se asigna una probabilidad de utilizacion a cada tamiento del software frente a la especificacion del
uno de 10s estimulos. sistema. La temporizacion de las pruebas se registra, de
Los casos practicos se generan para cada uno de 10s mod0 que sea posible determinar 10s intervalos tempo-
estimulos5 de acuerdo con la distribucion de probabili- rales. Mediante el uso de intervalos temporales, el equi-
dad de utilizacion. Como ejemplo, considkrese el siste- po de certificacion puede calcular el tiempo-minimo-entre
ma de seguridad HogarSeguro descrito anteriormente fallos. Si se lleva a cab0 una larga sucesion de pruebas
en este libro. Se esta utilizando la ingenieria del soft- sin fallo, el TMEF es bajo, y se puede suponer que la fia-
ware de sala limpia para desarrollar un incremento del bilidad del software es elevada.
software que gestione la interaction del usuario con el
teclado del sistema de seguridad. Para este incremento 26.4.2. Certificacidn
se pueden identificar cinco estimulos. El anilisis indi- Las tCcnicas de verificacion y prueba descritas ante-
ca el porcentaje de probabilidad de cada estimulo. Para riormente en este capitulo dan lugar a componentes
hacer que sea mas sencilla la selection de casos de prue- de software (y a incrementos completos) que se pue-
ba, estas probabilidades se hacen corresponder con inter- den certificar. En el context0 del enfoque de la inge-
valos numerados entre 1 y 99 [LIN94], lo que se muestra nieria del software de sala limpia, la certificacibn
en la tabla siguiente: implica que la fiabilidad (medida por el tiempo mini-
mo de fallo, TMDF) podrh ser especificada para cada
Estimulos Probabilidad Intervalo componente.
del programa El posible impact0 de 10s componentes de software
certificables va mas all5 de un sencillo proyecto de sala
habilitarl limpia. Los componentes de software reutilizables se
deshabilitar (HD) 50% 1-49 pueden almacenar junto con sus escenarios de utiliza-
fijar zona (FZ) 15% 50-63 cion, con 10s estimulos del programa y con las corres-
consulta (C) 15% 64-78 pondientes distribuciones de probabilidad. Cada uno de
10s componentes dispondra de una fiabilidad certifica-
prueba (P) 15% 79-94 da dentro del escenario de utilizacion y dentro del rCgi-
alarma (A) 5% 95-99 men de comprobacion descrito. Esta informaci6n es
sumamente valiosa para otras personas que tengan inten-
Para generar una sucesion de casos de prueba de cion de utilizar estos componentes.
utilizacion que se ajuste a la distribucion de probabi- El enfoque de la certificacion implica cinco pasos
lidades de utilizacion, se genera una serie de nume- [WOH94]:
ros aleatorios entre 1 y 99. El numero aleatorio 1. Es precis0 crear escenarios de utilizacion.
corresponde a1 intervalo de distribucion de probabi- 2. Se especifica un perfil de utilizacion.
lidad anteriormente destacado. Consiguientemente, la
3. Se generan casos de prueba a partir del perfil.
sucesion de casos practicos se define aleatoriamente
per0 se corresponde con la probabilidad correspon- 4. Se ejecutan pruebas y 10s datos de 10s fallos se
diente de aparicion de ese estimulo. Por ejemplo, registran y se analizan.
suponga que se generan las siguientes sucesiones de 5. Se calcula y se certifica la fiabilidad.
numeros aleatorios
i Como se certifica un
componente de software?
La certificaci6n para la ingenieria del software de sala Modelo de certificacion. Se estima y certifica la fia-
limpia requiere la creaci6n de tres modelos [P0034]: bilidad global del sistema.
Modelo de muestreo. La comprobaci6n de softwa- A1 final de la prueba estadistica de utilizaci6n, el
re ejecuta m casos de prueba aleatorios, y queda certi- equipo de certificaci6n posee la informaci6n necesaria
ficada si no se produce ning6n fallo o si se produce un para proporcionar un software que tenga un TMEF cer-
n6mero de fallos inferior a1 especificado. El valor de m tificado que se habri calculado empleando todos estos
se deriva matemiticamente para asegurar que se alcan- modelos.
ce la fiabilidad necesaria. Una descripci6n detallada del cilculo de 10s mode-
Modelo de componentes. Es precis0 certificar un sis- 10s de muestreo, de. componentes y de certificaci6n va
tema compuesto por n componentes. El modelo de com- mis alli del alcance de este libro. El lector interesado
ponentes capacita a1 analista para deterrninar la probabilidad encontrari detalles adicionales en [MUS87], [CUR861
de que falle el componente i antes de finahzar el programa. y [P0093].
La ingenieria del software de sala limpia es un enfoque definen condiciones de salida para cada una de las sub-
formal para el desarrollo del software, que puede dar funciones y se aplica un conjunto de subpruebas. Si se
lugar a un software que posea una calidad notablemen- satisfacen todas y cada una de las condiciones de sali-
te alta. Emplea la especificaci6n de estructura de cajas da, entonces el diseiio debe ser correcto.
(0 mCtodos formales) para el modelado de anilisis y Una vez finalizada la verificaci6n de correcci6n,
diseiio, y hace hincapiC en la verificaci6n de la correc- comienza la prueba estadistica de utilizaci6n. A dife-
ci6n, mis que en las pruebas, como mecanismo funda- rencia de la comprobaci6n condicional, la ingenieria del
mental para hallar y eliminar errores. Se aplica una software de sala limpia no hace hincapiC en la prueba
prueba estadistica de utilizaci6n para desarrollar la infor- unitaria o de integraci6n. En su lugar, el software se
maci6n de tasa de fallos necesaria para certificar la fia- comprueba mediante la definici6n de un conjunto de
bilidad del software proporcionado. escenarios, mediante la determinaci6n de las probabi-
El enfoque de sala limpia comienza por unos modelos lidades de utilizaci6n de cada uno de esos escenarios y
de anAlisis y diseiio que hacen uso de una representaci6n mediante la aplicaci6n posterior de pruebas aleatorias
de estructura de cajas. Una cccajan encapsula el sistema (o que satisfagan estas probabilidades. Los registros de
alg6n aspect0 del sistema) en un determinado nivel de error resultantes se combinan con modelos de muestreo,
abstracci6n. Se utilizan cajas negras para representar el de componentes y de certificaci6n para hacer posible el
comportamiento observable extemamente de ese sistema. cilculo matemitico de la fiabilidad estimada de ese com-
Las cajas de estado encapsulan 10s datos y operaciones de ponente de software.
ese estado. Se utiliza una caja limpia para modelar el dise- La filosofia de sala limpia es un enfoque riguroso de
iio de procedimientos que esti implicado por 10s datos y la ingenieria del software. Se trata de un modelo de pro-
operaciones de la caja de estados. ceso del software que hace hincapiC en la verificaci6n
Se aplica la verificaci6n de correcci6n una vez que matemitica de la correcci6n y en la certificacibn de la
esti completo el diseiio de estructura de cajas. El dise- fiabilidad del software. El resultado final son unas tasas
iio de procedimientos para un componente de software de fallo extremadamente bajas, que seria dificil o impo-
se desglosari en una serie de subfunciones. Para demos- sible de conseguir empleando unos mCtodos menos for-
trar la correcci6n de cada una de estas subfunciones, se males.
[CUR861 Currit, P.A., M. Dyer y H.D. Mills, <<Certifyingthe [HEN951 Henderson, J., <<Whyisn't cleanroom the Univer-
Reliability of Softwarew, IEEE Trans. Sofiivare Enginee- sal Software Development Methodology?>>,Crosstalk, vol.
ring, vol. SE-12, n.", Enero de 1994. 8, n.", Mayo de 1995, pp. 11-14.
[DYE921 Dyer, M., The Cleanroom Approach to Quality Soft- [HEV93] Hevner, A.R., y H.D. Mills, <<BoxStructure Methods
ware Development, Wiley, 1992. for System Development with Objects>>, IBM Systems Jour-
[HAU94] Hausler, P.A., R. Linger y C. Trammel, <<Adopting nal, vol. 31, n.", ~ e b r e r ode 1993, pp. 232-251.
Cleanroom Software Engineering with a phased Appro- [LIN79] Linger, R. M., H. D. Mills y B.I. Witt, Structured
achn, IBM Systems Journal, vol. 33, n." 1, Enero de 1994, Programming: Theory and Practice, Addison-Wesley,
pp. 89-109. 1979.
I N G E N I E R ~ ADEL SOFTWARE. UN ENFOQUE P R A C T I C O
[LIN88] Linger, R. M., y H. D. Mills, {{ACase Study in Cle- [MUS87] Musa, J.D., A. Iannino y K. Okumoto, Engineering
anroom Software Engineering: The IBM COBOL Struc- and Managing Software with Reliability Measures,
turing Facility,,, Proc. COMPSAC '88, Chicago, Octubre McGraw-Hill, 1987.
de 1988. [PO0881 Poore, J. H., y H.D. Mills, {{Bringing Software
[LIN94] Linger, R., {{CleanroomProcess Model,,, IEEE Soft- Under Statistical Quality Control,,, Quality Progress,
ware, vol. 11, n.", Marzo de 1994, pp. 50-58. Noviembre de 1988, pp. 52-55.
[MIL871 Mills, H.D., M. Dyer y R. Linger, c(C1eanroom Soft- [PO0931 Poore, J. H., H.D. Mills y D. Mutchler, ((Planning
ware Engineering,,, IEEE Software, vol. 4, n . 9 , Sep- and Certifying Software System Reliability,,, IEEE Soft-
tiembre de 1987, pp. 19-24. ware, vol. 10, n.", Enero de 1993, pp. 88-99.
[MIL881 Mills, H.D., KStepwise Refinement and Verification [WOH94] Wohlin, C., y P. Runeson, {{Certificationof Soft-
in Box Structured Systems,,, Computer, vol. 2 1, n.", Junio ware Components,,, IEEE Trans, Sofmare Engineering,
de 1988, pp. 23-35. vol. 20, n.", Junio de 1994, pp. 494-499.
26.1. Si tuviera que seleccionar un aspect0 de la ingenieria del Descomponer el diseiio en subfunciones y definir un conjun-
software de sala limpia que la hiciera radicalmente distinta de to de condiciones que hagan posible demostrar que este algo-
10s enfoques convencionales u orientados a objetos de la inge- ritmo es correcto.
nieria del software, jcuil seria? 26.7. Documentar una demostraci6n de verificaci6n de correc-
26.2. iC6mo se combinan el modelo de proceso incremental cion para la ordenacidn por el mCtodo de la burbuja descrita
y el trabajo de certificaci6n para construir un software de ele- en el Problema 26.6.
vada calidad? 26.8. Seleccionar un componente de programa que se haya
26.3. Empleando la estructura de especificaci6n de cajas, desa- diseiiado en otro contexto (o bien asignado por el instruc-
rrollar un analisis de {{primerpasoz y unos modelos de dise- tor) y desarrollar para 61 una demostraci6n completa de
iio para el sistema HogarSeguro. correcci6n.
26.4. Desarrolle una especificacidn de estructura de cajas para 26.9. Seleccionar un programa que se utilice regularmente (por
una parte del sistema SSRB presentado en el Problema 12.13. ejemplo, un gestor de correo electr6nic0, un procesador de
26.5. Desarrolle una especificaci6n de estructura de cajas para texto, una hoja de c~lculo).Crear un conjunto de escenarios
el sistema de correo electr6nico en el Problema 21.14. de utilizaci6n para ese programa. Definir la probabilidad de
utilizaci6n de cada escenario y desarrollar entonces una tabla
26.6. Se define el algoritmo de ordenaci6n por el mCtodo de de estimulos del programa y de distribuci6n de probabilida-
las burbujas de la forma siguiente: des parecida a la que se muestra en la Seccidn 26.4.1.
procedure ordenburbuja;
26.10. Para la tabla de estimulos del programa y de distribu-
var i , t : integer;
ci6n de probabilidades desarrollada en el Problema 26.9, uti-
begin lizar un generador de ndmeros aleatorios con objeto de
repeat u n t i l t = a i l ] ; desarrollar un conjunto de casos de prueba para utilizarlo en
t:=a[ll una prueba estadistica de utilizacibn.
for j := 2 t o n do
i f a[j-11 > a [ j ] then begin 26.11. Con sus propias palabras, describa el objetivo de la cer-
t:= a[j-I]; tificacidn en el contexto de la ingenieria del software de sala
a [ ] - I ] : =a [ ] ]
limpia.
a [ j J := t ; 26.12. Escribir un pequefio trabajo que describa las matemi-
end ticas utilizadas para definir 10s modelos de certificaci6n des-
endrep critos brevemente en la Secci6n 26.4.2. Utilicense [MUS87],
end [CUR861 y [POP931 como punto de partida.
Prowell et al. (Cleanroom Software Engineering: Techno- excelente para aquellas personas que no estCn familiarizadas
logy and Process, Addison-Wesley, 1999) describe con con las pricticas de sala limpia.
profundidad todos 10s aspectos importantes del enfoque de The Cleanroom Panphlet (Software Technology Support
sala limpia. Estudios utiles sobre 10s temas de sala limpia Center, Hill AF Base, UT, abril 1995) contiene reimpresiones
han sido editados por Poore y Trammel1 (Cleanroom Soft- de varios articulos irnportantes. Linger [LIFT941 es una de las
ware: A Reader, Blackwell Publishing, 1996). Becker y mejores introducciones a este tema. Asset Source for Softwa-
Whittaker (Cleanroom Software Engineering Practices, re Engineering Technology, ASSET (Departamento de Defen-
Idea Group Publishing, 1996) presentan una visi6n general sa americano) ofrece un conjunto excelente de seis voldmenes
CAPfTULO 26 INGENIERfA DEL SOFTWARE DE S A L A LIMPIA
de Cleanroorn Engineering Handbooks. Se puede contactar Deck, M.D., <<UsingBox Structures to Link Cleanroom
con ASSET en [email protected]. Lockheed Martin ha and Object-Oriented Software Engineering,,, Technical Report
preparado la guia Guide to the Integration of Object-Orien- 94.01b, Cleanroom Software Engineering Inc., Boulder, CO,
ted Methods and Cleanroorn Sofnyare Engineering (1997) que 1994.
contiene un proceso genCrico de sala limpia para sistemas ope- Dyer, M. <<Designing Software for Provable Correctness:
rativos y estk disponible en: the direction for quality software)),Information and Softwa-
http://www.asset.com/stars/cleanroom/oo/guidhome.htm re Technology, vol. 30, n.", Julio/Agosto de 1988, pp. 331-
Linger y Trammel1 (Cleanroom Software Engineering 340.
Reference Model, SEI Technical Report CMUISEI-96-TR- Pruebas y Certificacion
022, 1996) han definido un conjunto de 14 procesos de sala Dyer, M., aAn Approach to Software Reliability Measu-
limpia y 20 productos de trabajos que forman la base del SEI rement,,, Information and Software Technology, vol. 29, n."
CMM para la ingenieria del software de sala limpia 8, Octubre de 1987, pp. 415-420.
(CMUISEI-96-TR-023). Head, G.E., <<Six-Sigma Software Using Cleanroom Soft-
Michael Deck, de Cleanroom Software Engineering, Inc., ware Engineering Techniques)), Hewlett-Packard Journal,
ha preparado una bibliografia sobre temas de sala limpia. Junio de 1994, pp. 40-50.
Entre las referencias se encuentran las siguientes: Oshana, R., <<QualitySoftware via a Cleanroom Metho-
Generales e Introductorias dology~,Embedded Systems Programming, Septiembre de
Deck, M.D., <<CleanroomSoftware Engineering Myths 1996, pp. 36-52.
and Realities,,, Quality Week 1997, San Francisco, CA, Mayo Whittaker, J.A., y Thomason, M.G., aA Markov Chain
de 1997. Model for Statistical Software Testing,,, IEEE Trans. on Soft-
Deck, M.D, y J.A. Whittaker, <<Lessons Learned from Fif- ware Engineering, Octubre de 1994, pp. 812-824.
teen Years of Cleanroom Testing,,, Sofnyare Testing,Analysis, Estudios de casos e informes experimentales
and Review (STAR) '97, San JosC, CA, 5-9 de Mayo de 1997.
Head, G.E., <<Six-Sigma Software Using Cleanroom Soft-
Lokan, C.J., <<The Cleanroom for Software Development,,,
ware Engineering Techniques,,, Hewlett-Packard Journal,
The Australian Computer Journal, vol. 25, n." 4, Noviembre
Junio de 1994, pp. 40-50.
de 1993.
Linger, Richard C., <<Cleanroom Software Engineering for Hevner, A.R., y H.D. Mills, <<Box-structured methods for
Zero-Defect Software,,, Proc. 15th International Conferen- systems development with objects,,, IBM systems Journal,
ce International on Software Engineering, Mayo de 1993. vol. 32, n." 2, 1993, pp. 232-251.
Keuffel, W., <<Clean Your Room: Formal Methods for the 2 Cleanroom,,, Proc. IS'Annual
Tann, L-G., ~ 0 S 3 and
9 0 ' s ~ Computer
, Language, Julio de 1992, pp. 39-46. European Industrial Symposium on Cleanroom Sofnyare Engi-
Hevner, A.R, S.A. Becker y L.B. Pedowitz, <<Integrated neering, Copenhagen, Denmark, 1993, pp. 1-40.
CASE for Cleanroom Development)), IEEE Software, Mar- Hausler, P.A., aA Recent Cleanroom Success Story: The
zo de 1992, pp. 69-76. Redwing Project)),Proc. I 71hAnnual Software Engineering
Cobb, R.H. y H.D. Mills, <<EngineeringSoftware under Workshop, NASA Goddard Space Flight Center, Diciembre
Statistical Quality Controlr, IEEE Software, Noviembre de de 1992.
1990, pp. 44-45. Trammel, C.J., Binder L.H. y Snyder, C.E., <<The Auto-
mated Production Control Documentation System: A Case
Practicas de Gestion Study in Cleanroom Software Engineering,,, ACM Trans. on
Becker, S.A., M.D. Deck y T. Janzon, crCleanroom and Orga- Software Engineering and Methodology, vol. 1, n." , Enero
nizational Change)),Proc. 141hPacific Northwest Sofnyare Qua- de 1992, pp. 8 1-94.
lity Conference, Portland, OR, 29-30 de Octubre de 1996. La verificacidn de diseiios mediante pruebas de correc-
Linger, R.C., <<CleanroomProcess Model,,, IEEE Soft- cidn se encuentra en el centro del enfoque de sala limpia. En
ware, marzo de 1994, pp. 50-58. 10s libros de Baber (Error-Free Software, Wiley, 1991) y
Linger, R.C. y Spangler, R.A., <<TheIBM Cleanroom Soft- Schulmeyer (Zero Defect Software, McGraw-Hill, 1990) se
ware Engineering Technology Transfer Program*, Sixth SEI estudia la prueba de correccidn de forma muy detallada.
Conference on Software Engineering Education, San Diego, En Internet se puede encontrar disponible mucha infor-
CA, Octubre de 1992. macidn variada sobre la ingenieria del software de sala lim-
Especificacion, Diseno y Revision pia y sobre temas relacionados. Para conseguir una lista
Deck, M.D., <<Cleanroomand Object-Oriented Software actualizada de referencias que sea relevante para la ingenie-
Engineering: A Unique Synergy)),1996 Software Technology ria del software de sala limpia se puede visitar http://www
Conference, Salt Lake City, UT, 24 de Abril de 1996. pressman5.com
adapiatibn ......... .479
dasificaciin ........ .482
composiciin ........ -480
turliicatiin ........ - 4 7 9
&Qu6es? Compre un equipo d e rnusica diciendo que 10ssistemas basados en en la arquitectura del sistema; (3)adap-
estereo y ll6veselo a casa. Cada com- componentes son mas firciles de ta 10scomponentes si s e deben hacer
ponente ha sido diseiiado para aco- ensarnblar y. por tanto, m6s caros de modificaciones para poderlos integrar
plarse en un estilo arquiteclbnico constmir a partirde piezas separadas. adecuadamente; (4) integra 10s compo-
especifico -1as conexiones son esttrn- Ademas, la ISBC hace hincapie en la nentes para formar subsistemas y la
dar y puede preestablecerse el protoco- utilizaci6n de palrones arquitectonicos aplicaci6n complela. Ademas, lo9 com-
lode comunicacidn-. El ensamblaje e s predecibles y en una infraestructura de ponentes personalizados s e han dise-
iCIcil porque eI sistema no tiene que software estandar, lo que lleva a un iiado para afrontar esos aspectos del
conshuirse a pcrrlir de piezas por sepa- resultado de calidad superior. sisterna que no pueden irnplementarse
rado. La ingenieria del software basa- utilizandocornponentes que ya existen.
;Cu&les s o n 10s pasor? La ISBC cIcom-
d a en componentes (ISBC) lucha por ;CuLI es el produclo obtenldo? El
pafia a dos octividades de ingenieria
conseguir lo mismo. Un conjuntode corn- producto de la ISBC es el software ope-
paralelas: la ingenieria del dominio y
ponentes de software preconstruidos y rational ensamblado utilizando 10s
el d e s a r r o h basado en componentes.
estandarizados estan disponibles para cornponentes de soitware existentes y
La ingenieria del dominio explora un
encajar en un estilo arquilect6nicoespe- 10s que s e acaban d e desarrollar.
dorninio d e aplicaciones con la inten-
cifico para a l g h dominiode aplicacion.
ci6n d e encontrar especificamente 10s iC6mo puedo estar segure de que
La aplicaci6n se ensambla entonces uti- lo he hecho correclamente?Utili-
componentes de datos funcionales y d e
liaandoestos componentes y no las =pie-
comportamiento candidates para Ia zando las mismas practicas SQA que
zas por separado- d e un Lenguaje de
reutilizaci6n. Estos componentes s e se nplican en todos 10s procesos de
programacibn' conventional.
encuentran en bibliotecas de reutiliza- ingenieria del software -1as revisio-
iQui4n lo hace ? Los ingenieros del ci6n. El desarrollo basado en cornpo- nes t k n i c a s iormales evaldan 10s
software. nentes obtiene 10srequisites del cliente modelos de anulisis y disefio-: las
~ P o qu6
r es tmportank? La instcda- y selecciona el eslilo arquitecl6nico revisiones especializadas tienen en
ci6n del equipo estereo solo lleva unos adecuado para cumplir 10s objetivos consideracih temas asociadoscon 10s
pocos minutos, porque 10s componen- del sistema que se va a construir, y a componentes adquiridos; y la compro-
tes estcin disefiados para integrarse continuaci6n: (1) selecciona posibles baci6n se aplica para descubrir errores
con facilidad. Aunque el software e s componentes para la reulilizaci6n: (2) e n el soitware nuevo y en componentes
considerablemente mtrs complejo que cualifica 10s componentes para asegu- reutilizables que se hayan integradoen
el sistema esiereo, se puede seguir rarse de que encajan adecuadarnente la arquitectura.
~NGEN~ER
DEL
~ ASOFTWARE. UN ENFOQUE P R A C T I C O
ai5adidos y asociados con la creaci6n de componentes de software reutilizables? iSe puede crear una biblioteca con 10s
componentes necesarios para llevar a cab0 la reutilizaci6n de manera accesible para aquellos que la necesitan?
Estas y otras preguntas siguen vivos en la comunidad de investigadores y de profesionales de la industria que
luchan por hacer que la reutilizacion de componentes de software sea el enfoque mas convencional de la ingenie-
ria del software. Algunas de estas preguntas se estudian en este capitulo.
componente- una parte reemplazable, casi indepen- cionalidad sino tambiCn el rendimiento, la fiabilidad y
diente y no trivial de un sistema que cumple una fun- otros factores de calidad (Capitulol9) encajan con 10s
ci6n clara en el contexto de una arquitectura bien requisitos del sistema/producto que se va a construir;
definida;
componente del software en ejecuci6n- un paquete
dinimico de uni6n de uno o mis programas gestio- l a certificacihn de companentes se puede realizor
nados como una unidad, a 10s que se accede a travCs con 10s mbtodos de sola limpim. Para obtener
mbs infarmocibn comulte el Capflulo 26.
de interfaces documentadas que se pueden descubrir
en la ejecuci6n;
componentes adaptados- adaptados para modificar
componente de software- una unidad de composi- (tarnbiCn llamados ccenmascaradosn o <<envoltoriosn)
ci6n que solo depende del contexto contractual de [BR096] las caracteristicas no deseadas.
forma especifica y explicita; componentes ensamblados- integrados en un estilo
componente de negocio- la implementaci6n de soft- arquitect6nico e interconectados con una infraes-
ware de un concept0 comercial ccaut6nomon o de un tructura de componentes adecuada que permite coor-
proceso comercial; dinar y gestionar 10s componentes de forma eficaz;
Ademis de las descripciones anteriores, 10s compo- componentes actualizados- el software actual se
nentes del software tambiCn se pueden caracterizar por el reemplaza a medida que se dispone de nuevas ver-
uso en el proceso ISBC. Adem& de 10s componentes CYD, siones de componentes;
el proceso ISBC produce 10s siguientes componentes: Dado que la ISBC es una disciplina en evoluci6n, no
componentes cualifificados- evaluados por 10s inge- es probable que en el futuro surja una definici6n unifi-
nieros de software para asegurar que no s610 la fun- cada.
En el Capitulo 2, se utiliz6 un emodelo de desarrollo El modelo de proceso para la ingenieria del softwa-
basado en componentes>>(Fig. 2.12) para ilustrar la for- re basada en componentes hace hincapiC en las pistas
ma en que se integra una biblioteca de ~componentes paralelas en las que aparece concurrentemente la inge-
candidatosn reutilizables en un modelo tipico de pro- nieria del dominio (Secci6n 27.3) con el desarrollo basa-
ceso evolutivo. Sin embargo, el proceso ISBC se debe do en componentes. La ingenieria del dominio realiza
caracterizar de forma que no s610 identifique 10s com- el trabajo que se requiere para establecer el conjunto de
ponentes candidatos sino que tarnbiCn cualifique la inter- componentes de software que el ingeniero del softwa-
faz de cada componente, que adapte 10s componentes re puede reutilizar. Estos componentes entonces se trans-
para extraer las faltas de coincidencias arquitect6nicas, fieren a travCs de un alimiten que separa la ingenieria
que ensamble 10s componentes en un estilo arquitect6- del dominio del desarrollo basado en componentes.
nico seleccionado y que actualice 10s componentes a
medida que cambian 10s requisitos del sistema [BR096].
lngenieria de dominio 3
Referencia Web
Lo pbgino de tecnologio de componentes proporciono
informoti6n irtil sobre ISBC:
www.odateam.com/cop/
Una descripci6n en profundidad de 10s mCtodos de 4. clararnente relevante, y si el software nuevo no posee
anfilisis del dominio va m 8 allfi del alcance de este libro. esta caracteristica, la reutilizaci6n sera ineficiente
Para mis informaci6n acerca del anfilisis del dominio, per0 quizfis siga siendo posible
vCase [PRI93]. 5. es claramente relevante, y si el software nuevo no
posee esta caracteristica, la reutilizaci6n sera inefi-
27.3.2. Funciones de caracterizaci6n ciente y la reutilizaci6n sin esta caracteristica no es
A veces resulta dificil determinar si un componente poten- recomendable.
cialmente reutilizable es realmente aplicable en una situa- Cuando se va a construir un software nuevo, w, den-
ci6n determinada. Para llevar a cab0 esta determinaci6n, tro del dominio de la aplicaci6n, se deriva para 61 un
es necesario definir un conjunto de caracteristicas del conjunto de caracteristicas del dominio. A continuacibn,
dominio que Sean compartidas por todo el software en el se efect6a una comparaci6n entre Dpi y D,,i, para deter-
sen0 del dominio. Una caracteristica del dominio define minar si el componente p se puede reutilizar eficazmente
alg6n atributo genCrico de todos 10s productos que exis- en la aplicaci6n w.
ten dentro del dominio. Por ejemplo, entre las caracte-
risticas genCricas se podria incluir: la importancia de la
seguridad y fiabilidad, el lenguaje de programacibn, la
concurrencia de procesamiento, y muchas mfis.
Un conjunto de caracteristicas de dominio de un com-
ponente reutilizable se puede representar como ( D p }en
3
Referencia Web
Para encontror referenciasvoliosos sobre
una tecnologio de obietos de direccionomiento
donde cada elemento Dpi del conjunto representa una de inforrnes, orquitecturosy on6lisis de dominios,
caracteristica especifica de dominio. El valor asignado se puede visitor a
l direccibn de Internet:
a D representa una escala ordinal como una indicacidn www.sei.cmu.edu/mbse/ wisr-report.html
fa
de relevancia de esa caracteristica para el componente
p. Una escala tipica [BAS941 podria ser: La Tabla 27.1 [BAS941 enumera las caracteristicas
1. no es relevante para que la reutilizaci6n sea o no ade- tipicas del dominio que pueden tener impact0 en la reu-
cuada. tilizaci6n del software. Estas caracteristicas del domi-
2. relevante s6lo en circunstancias poco comunes. nio deben de tenerse en cuenta con objeto de reutilizar
un componente de forrna eficiente.
3. relevante: el componente se puede modificar para
Aun cuando el software que se vaya a construir exis-
poder utilizarlo, a pesar de las diferencias.
ta claramente en el seno de un dominio de aplicaci61-1,
10s componentes reutilizables situados dentro de ese
Producto Proceso Personal dominio deberfin ser analizados con objeto de determi-
nar su aplicabilidad. En algunos casos (esperemos que
~p
ware modemo de este dominio tiene el mismo modelo un mecanismo de establecimiento de limites que per-
estructural). Por tanto, el modelo estructural es un esti- mite a1 usuario establecer limites sobre 10s parame-
lo arquitectonico (Capitulo 14) que puede y debe reuti- tros que hay que medir;
lizarse en aplicaciones pertenecientes a1 dominio. un mecanismo de gestihn de sensores que se comunica
McMahon [MCM95] describe un punto de estruc- con todos 10s sensores empleados en la monitorizacion;
tura como una ccestructura bien diferenciada dentro de un mecanismo de respuesta que reacciona frente a
un modelo estructural>>.Los puntos de estructura tienen las entradas proporcionadas por el sistema de ges-
tres caracteristicas bien claras: tion de sensores;
1. Un punto de estructura es una abstraccion que debe un mecanismo de control que capacita a1 usuario
de tener un ndmero limitado de instancias. Al replan- para controlar la forma en que se efectda la moni-
tear esta caracteristica en la jerga orientada a obje- torizaci6n.
tos (Capitulo 20), el tamaiio de la jerarquia de clases
debe ser pequeiio. Ademas, la abstracci6n debe repe-
tirse a lo largo de las aplicaciones del dominio. En
caso contrario, el esfuerzo requerido para verificar,
documentar y diseminar ese punto de estructura no Un punto de estruttura se puede ver tomo un potrbn
puede justificarse en tkrminos de coste. de diseiio que aparere repetidas vetes en oplitationes
dentro de un dominio especifito.
i Q u i es un ((punto
de estructuran y cuales Cada uno de estos puntos de estructura esta integra-
son sus caracteristicas? do en una arquitectura de dominio.
Es posible definir 10s puntos de estructura genkricos
2. La reglas que rigen la utilizaci6n del punto de estruc- que trascienden a un ndmero de dominios de aplicacio-
tura deben entenderse fhcilmente. Ademas, la inter- nes diferentes [STA94]:
faz con el punto de estructura debe ser relativamente Aplicaciones cliente. La IGU, que incluye todos 10s menus,
sencilla. paneles y capacidades de entrada y edici6n de 6rdenes.
3. El punto de estructura debe implementar el oculta- Bases de datos. El depcisito de todos 10s objetos relevantes
miento de infonnacibn aislando toda la complejidad para el dominio de la aplicacion
dentro del punto de estructura en si. Esto reduce la Motores de cdculo. Los modelos numkricos y no numkri-
complejidad percibida del sistema en su conjunto. cos que manipulan datos.
Como ejemplo de puntos de estructura como tramas Funcidn de reproduccidn de informes.La funci6n que pro-
arquitect6nicas para un sistema, considkrese el domi- duce salidas de todo tipo.
nio del software de sistemas de alarma. El dominio del Editor de aplicaciones. Mecanismo adecuado para perso-
sistema puede abarcar sistemas tan simples como nalizar la aplicacion ajusttindola a las necesidades de usuarios
HogarSeguro (descritos en capitulos anteriores) o tan especificos.
complejos como el sistema de alarma de un proceso Los puntos de estructura se han sugerido como alter-
industrial. Sin embargo, se encuentran un conjunto de nativa a las lineas de c6digo y a 10s puntos de funci6n
tramas estructurales predecibles: para la estimation del coste del software ([MCM95].
una interfaz que capacita a1 usuario para interactuar En la Secci6n 27.6.2 se presenta una description breve
con el sistema: del coste utilizando puntos de estructura.
El desarrollo basado en componentes es una actividad Una vez que se ha establecido la arquitectura, se debe
de la ISBC que tiene lugar en paralelo a la ingenieria popularizar mediante 10s componentes que (I) estan dis-
del dominio. La utilizacidn de mCtodos de diseiio arqui- ponibles en bibliotecas de reutilizacibn, y/o (2) se han
tect6nico y de analisis se ha descrito anteriormente en diseiiado para satisfacer las necesidades del cliente. De
otra secci6n de este texto, en donde el equipo del soft- aqui que el flujo de una tarea de desarrollo basada en
ware refina el estilo arquitectonico adecuado para el componentes tenga dos caminos posibles (Fig. 27.1).
modelo de analisis de la aplicacion que se va a cons- Cuando 10s componentes reutilizables estin disponibles
truir2. para una integracibn futura en la arquitectura, deben
478
estar cualificados y adaptados. Cuando se requieren com- Cada uno de 10s factores anteriores es relativamen-
ponentes nuevos, deben disefiarse. Los componentes te ficil de valorar cuando se proponen 10s componen-
resultantes entonces se cccomponen, (se integran) en m a tes reutilizables que se han desarrollado dentro de la
plantilla de arquitectura y se comprueban a conciencia. misma aplicacion. Si se han aplicado pricticas de inge-
nieria del software de buena calidad durante el desa-
27.4.1. Cualificaci6n. adaptaci6n y cornposicion rrollo, se pueden disefiar respuestas para las preguntas
relacionadas con la lista anterior. Sin embargo, es mucho
de componentes
mas dificil determinar el funcionamiento intemo de com-
Corno se acaba de ver, la ingenieria del dominio propor- ponentes CYD o de terceras partes, porque la unica
ciona la biblioteca de componentes reutilizables necesa- informacion disponible es posible que sea la misma
rios para la ingenieria del software basada en componentes. interfaz de especificaciones.
Algunos de estos componentes reutilizables se desarro-
llan dentro de ella misma, otros se pueden extraer de las Adaptacion de componentes
aplicaciones actuales y aun otros se pueden adquirir de Lo ideal seria que la ingenieria del dominio creara una
terceras partes. biblioteca de componentes que pudieran integrarse ficil-
Desgraciadamente, la existencia de componentes reu- mente en una arquitectura de aplicaciones. La implica-
tilizables no garantiza que estos componentes puedan cion de una ccintegracion f8cil>>es que: (1) se hayan
integrarse ficilmente, o de forma eficaz, en la arquitec- implementado 10s mCtodos consecuentes de la gesti6n de
tura elegida para una aplicacion nueva. Esta es la razon recursos para todos 10s componentes de la biblioteca; (2)
por la que se aplica una sucesion de actividades de desa- que existan actividades comunes, tales como la gestion
rrollo basada en componentes cuando se ha propuesto de datos para todos 10s componentes, y (3) que se hayan
que se utilice un componente. implementado interfaces dentro de la arquitectura y con
el entomo extemo de manera consecuente.
Cualificacion de componentes
La cua1ificacid.n de conzponentes asegura que un com-
ponente candidato llevari a cab0 la funci6n necesaria,
encajari ademis ccadecuadamente~en el estilo arqui-
tectonic0 especificado para el sistema y exhibiri las
caracteristicas de calidad (por ejemplo, rendimiento, fia-
bilidad, usabilidad) necesarias para la aplicacion.
La descripcion de la interfaz proporciona informa-
cion util sobre la operacion y utilizacion de 10s compo-
nentes del software, per0 no proporciona toda la En realidad, incluso despuCs de haber cualificado
informaci6n necesaria para determinar si un componente un componente para su utilizacion dentro de una arqui-
propuesto puede de hecho volver a reutilizarse de mane- tectura de aplicacion, es posible exhibir conflictos en
ra eficaz en una aplicacion nueva. A continuacion, se una o mis de las ireas anteriores. Para mitigar estos
muestran algunos factores de 10s muchos a tener en cuen- conflictos se suele utilizar una tCcnica de adaptacion
ta durante la cualificacion de 10s componentes [BR096]: llamada ccencubrimiento de componentes>>[BR096].
la interfaz de programacion de aplicaciones (API); Cuando un equipo de software tiene total acceso a1 dise-
las herramientas de desarrollo e integracion necesa- fio interno y a1 codigo de un componente (no suele ser
rias para el componente; el caso de 10s componentes CYD) se aplica el encu-
brimiento de caja blanca. A1 igual que su homologo en
requisitos de ejecucion, entre 10s que se incluyen la las pruebas del software (Capitulo 17), el encubrimiento
utilizacion de recursos (por ejemplo, memoria o alma- de caja blanca examina 10s detalles del procesamien-
cenamiento), tiempo o velocidad y protocolo de red; to intemo del componente y realiza las modificaciones
a nivel de c6digo para eliminar 10s conflictos. El encu-
iCuales son 10s factores
brimiento de caja gris se aplica cuando la biblioteca
a tener en cuenta durante
de componentes proporciona un lenguaje de extension
la cualificacion de componentes?
de componentes, o API, que hace posible eliminar o
requisitos de servicio, donde se incluyen las interfa- enmascarar 10s conflictos. El encubrinziento de caja
ces del sistema operativo y el soporte por parte de negra requiere la introducci6n de un preprocesamien-
otros componentes; to o postprocesamiento en la interfaz de componentes
para eliminar o enmascarar conflictos. El equipo de
funciones de seguridad, como controles de acceso y
software debe determinar si se justifica el esfuerzo
protocolo de autenticacion;
requerido para envolver adecuadamente un componente
supuestos de disefios embebidos, incluyendo la uti- o si por el contrario se deberia disefiar un componente
lizacion de algoritmos numCricos y no numCricos; personalizado (diseiiado para eliminar 10s conflictos
manipulacion de excepciones. que se encuentren).
I N G E N I E R ~ ADEL SOFTWARE. UN ENFOQUE PRACTICO
En [ORF96] y YOU^^] se presenta un estudio excelente sobre 10s ' En este contexto, un applet se puede considerar un componente
estandares de ((objetosdistribuidos.. simple.
C A P ~ T U L O27 I N G E N I E R ~ ADEL S O F T W A R E B A S A D A EN C O M P O N E N T E S
481
INGENlERfA DEL SOFTWARE. UN ENFOQUE P R A C T I C O
damentales que deben considerarse como base del dise- Una vez que se han establecido 10s datos estandar,
fio para la reutilizaci6n: las interfaces y las plantillas de programa, el disefiador
Datos estcindar. Es preciso investigar el dorninio de la apli- posee un marco de referencia en el cual puede crear el
cacibn, y es preciso identificar las estructuras de datos estih- disefio. Los componentes nuevos que se ajustan a este
dar globales (por ejemplo, las estructuras de archivos o toda marco de referencia tendran una mayor probabilidad de
una base de datos cornpleta). Entonces se pueden caracterizar ser posteriormente reutilizables.
todos 10s componentes de diseiio para uso de estas estructuras
de datos esthdar.
A1 igual que el diseiio, la construccion de compo-
nentes reutilizables se basa en metodos de la ingenieria
Protocolos de inte$az estcindar. Deberian establecerse tres del software que ya se han descrito en otras partes de
niveles de protocolo de interfaz: la naturaleza de las interfaces
intramodulares, el diseiio de interfaces ttcnicas extemas (no este libro. La construcci6n se puede efectuar emplean-
humanas) y la interfaz hombre-miquina. do lenguajes convencionales de programacion, de ter-
Plantillas de programa. El modelo de estructura (Seccibn cera generacion, lenguajes de cuarta generacion y
27.3.3) puede servir como plantilla para el diseiio arquitect6 generadores de codigo, tecnicas de programaci6n visual
nico de un nuevo programa. o herramientas mas avanzadas.
Considere una gran biblioteca universitaria. Para su El concepto de un componente de software es una
utilizacion tiene disponibles decenas de millares de ccdescripcion de lo que hace el componenten [WHI95].
libros, peri6dicos y otras fuentes de informacion. La interfaz con el componente se describe completa-
Ahora bien, para acceder a estos recursos es preciso mente y su semantics -representada dentro del con-
desarrollar algun sistema de clasificacih. Para reco- texto de pre y postcondiciones- se identifica tambien.
rrer este gran volumen de informacion, 10s bibliote- El concepto debe comunicar la intenci6n del compo-
carios han definido un esquema de clasificaci6n que nente.
incluye un c6digo de clasificacion de la biblioteca,
palabras reservadas, nombres de autor y otras entra-
das de indice. Todas ellas capacitan a1 usuario para
encontrar el recurso necesario de forma rapida y sen-
cilla. Para describir un componente reulizoble, se tendra
que describir su concepto, contenido y contexto.
operaciones ventana
visualizaci6n ~Cualesson las optiones
abrir disponiblespara tlasifitar
basados en menu' componentes?
ventanaAbierta
basados en sistemas Como ilustracion sencilla del uso de facetas en la clasifica-
ventanaSistema cion de componentes, considerese un esquema [LIA93] que
cerrar hace uso del siguiente descriptor de facetas:
a travgs de punter0 (funci6n. tip0 de objeto, tipo de sistema]
Cada una de las facetas del descriptorde facetas adopta uno
o mas valores que en general s e r h palabras reservadas des-
a trar& de 6rdenes criptivas. Por ejemplo, si funcion es una faceta de un compe
establecerTamVentana, redimensionadoEs- nente, entonces entre 10s valores tipicos que se asignan a esta
tandar, contraerventana faceta podriamos contar:
por arrastre funcicjtl = (copiar,desde) o bien (copiar,reemplazar.
arrastrarventana, est~rarVentana todo)
reordenaci6n de planos
La utilization de multiples valores de faceta hace posible
.... que la funcion primitiva copiar se refine m b exactamente.
desplazamiento
Las palabras resendas (valores)se asignan a1 conjunto de
.... facetas de cada componente de una cierta biblioteca de reutili-
cierre zacion. Cuando un ingeniero del software desea ocultar la biblio-
teca en busca de posibles componentes para un disefio, se
La estructura jerhquica de un esquema de clasificaci6n enu- especifica una lista de valores y se consulta la biblioteca en bus-
merado hace que sea sencillo comprenderlo y utilizarlo. Sin ca de posibles candidatos. Para incorporar una funci6n de dic-
embargo, antes de poder construir una jerarquia, es preciso Ile- cionario se pueden emplear herramientas automatizadas. Esto
var a c a b una ingenieria del dominio para que este disponible hace posible que la busqueda no so10 abarque las palabras reser-
una cantidad suficiente de conocimientos acerca de las entra- vadas especificadas por el ingeniero del software, sino tarnbitn
das correctas de esa jerarquia. otros sinonimos ttcnicos de esas mismas palabras resenadas.
Un esquema de clasificaci6npor facetas proporciona a1 inge- tos) que permite a la aplicaci6n cliente recuperar
niero del dominio una mayor flexibilidad a1 especificar des- 10s componentes y servicios del servidor de la
criptores complejos de 10s componentes [FRA94]. Dado que
biblioteca.
es posible aiiadir nuevos valores de facetas con facilidad, el
esquema de clasificaci6n por facetas es mis fgcil de extender unas herramientas CASE que prestan su apoyo a la
y de adaptar que el enfoque de enumeraci6n. integraci6n de componentes reutilizados en un nuevo
Clasificacion de atributos y valores. Para todos 10s com- disefio o implementaci6n.
ponentes de una cierta zona del dominio se define un conjun-
Cada una de estas funciones interactua con una
to de atributos. A continuaci6n, se asignan valores a estos
biblioteca de reutilizaci6n o bien se encuentra incorpo-
atributos de forma muy parecida a una clasificaci6n por face-
rada a esta ultima.
tas. De hecho, la clasificacionde atributos y valores es pareci-
La biblioteca de reutilizaci6n es un elemento de un
da a la clasificacion por facetas con las excepciones siguientes:
( I ) no hay limite para el nlimero de atributos que se pueden
repositorio CASE mhs extenso (Capitulo 3 1) y propor-
utilizar; (2) no se asignan prioridades a 10s atributos; y (3) no
ciona las posibilidades adecuadas para el almacena-
se utiliza la funcion diccionario.
miento de una amplia gama de elementos reutilizables
Bashdose en un estudio empirico de cada una de las (por ejemplo, especificaci611, disefio, casos de prueba,
tknicas anteriores de clasificaci6n, Frakes y Pole [FRA94] guias para el usuario). La biblioteca abarca una base de
indican que no existe una tCcnica que sea claramente <<la datos y las herramientas necesarias para consultar esa
mejorn y que ccningun mCtodo es mis que moderadamente base de datos y recuperar de ella componentes. Un
adecuado en lo tocante a efectividad de biisqueda.. ..>>. esquema de clasificaci6n de componentes (Secci6n
Parece entonces que es preciso realizar un trabajo mhs 27.5.1) servirh como base para consultas efectuadas a
extenso en el desarrollo de unos esquemas de clasifica- la biblioteca.
ci6n efectivos para las bibliotecas de reutilizaci6n. Las consultas suelen caracterizarse mediante el uso
del elemento de contexto del Modelo 3C que se descri-
27.5.2. El entorno de reutilizaci6n bia anteriormente. Si una consulta inicial da lugar a una
La reutilizaci6n de componentes de software debe de lista voluminosa de candidatos a componentes, enton-
estar apoyada por un entorno que abarque 10s elemen- ces se refina la consulta para limitar esa lista. A conti-
tos siguientes: nuacibn, se extraen las informaciones de concept0 y
una base de datos de componentes capaz de almace- contenido (despuCs de haber hallado 10s candidatos a
nar componentes de software, asi como la informaci6n componentes) para ayudar a1 desarrollador a que selec-
de clasificacion necesaria para recuperarlos. cione el componente adecuado.
Una descripci6n detallada de la estructura de biblio-
un sistema de gesti6n de bibliotecas que pro- tecas de reutilizaci6n y de las herramientas que las ges-
porciona acceso a la base de datos. tionan va mas all5 de 10s limites de este libro. El lector
un sistema de recuperaci6n de componentes de interesado deberia consultar [H0091] y [LIN95] para
software (por ejemplo, un distribuidor de obje- mis informaci6n.
La economia de la ingenieria del software basada en les indican que es posible obtener notables beneficios
componentes tiene un atractivo evidente. En teoria, de negocios mediante una reutilizaci6n agresiva del soft-
deberia proporcionar a las empresas de software unas ware. Se mejora tanto la calidad del producto, como la
ventajas notables en lo tocante a la calidad y a 10s tiem- productividad del desarrollador y 10s costes en general.
pos de realizaci6n. st as, a su vez, deberian traducirse
en ahorros de costes. existe en datos reales que presten
apoyo a nuestra intuicibn?
Para responder a esta pregunta primer0 es preciso ISBC no es un w n p e crismos))econdmico
comprender lo que se puede reutilizar en un contexto si 10s componentes disponibles son 10s correctos
de ingenieria del software, y cuiiles son 10s costes aso- poro el trobojo. Si lo reutilizocibn exige
personohzocidn, hoy que proceder con precoucidn.
ciados a la reutilizaci6n. Como consecuencia, sera posi-
ble desarrollar un anhlisis de costes y de beneficios para Calidad. En un entorno ideal, un componente del
la reutilizaci6n. software que se desarrolle para su reutilizaci6n estarh
verificado en lo tocante a su correcci6n (vCase el Capi-
27.6.1. Impacto en la calidad, productividady coste tulo 26) y no contendra defectos. En realidad, la verifi-
A lo largo de 10s filtimos afios, existen notables evi- caci6n formal no se lleva a cab0 de forma rutinaria, y
dencias procedentes de casos prhcticos en la industria 10s defectos pueden aparecer y aparecen. Sin embargo,
(por ejemplo, [HEN95], [MCM95] y [LIM94]), las cua- con cada reutilizaci6n, 10s defectos se van hallando y
CAPITULO 27 ~ N G E N I E R ~DEL
A SOFTWARE BASADA EN C O M P O N E N T E S
Se ha desarrollado toda una gama de mCtricas de soft- De lo que se deduce que a medida que aumenta
ware en un intento de medir 10s beneficios de la reuti- Raprovechado,
tambiCn aumenta Rb.
La ingenieria del software basada en componentes rrollo basado en componentes cualifica, adapta e inte-
proporciona unos beneficios inherentes en lo tocante a gra estos componentes para su reutilizacih en un siste-
calidad del software, productividad del desarrollador y ma nuevo. Ademis, el desarrollo basado en componentes
coste general del sistema. Sin embargo, es preciso ven- disefia componentes nuevos que se basan en 10s requi-
cer muchas dificultades antes de que el modelo de pro- sitos personalizados de un sistema nuevo.
ceso ISBC se utilice ampliamente en la industria. Las tCcnicas de anilisis y disefio de componentes
Ademis de 10s componentes del software, un inge- reutilizables se basan en 10s mismos principios y con-
niero del software puede adquirir toda una gama de ceptos que forman parte de las buenas pricticas de inge-
elementos reutilizables. Entre estos se cuentan las nieria del software. Los cdmponentes reutilizables
representaciones tCcnicas del software (por ejemplo, deberian de disefiarse en el sen0 de un entorno que esta-
especificacion, modelos de arquitectura, disefios y blezca unas estructuras de datos estindar, unos proto-
codigos), documentos, datos de prueba e incluso tare- colos de interfaz y unas arquitecturas de programa para
as relacionadas con 10s procesos (por ejemplo, tCcni- todos 10s dominios de aplicacion.
cas de inspeccion). La ingenieria del software basada en componentes
El proceso ISBC acompafia a dos subprocesos con- hace uso de un modelo de intercambio de datos, herra-
currentes --ingenieria del dominio y desarrollo basado mientas, almacenamiento estructurado y un modelo
en componentes-. El objetivo de la ingenieria del domi- objeto subyacente para construir aplicaciones. El mode-
nio es identificar, construir, catalogar y diseminar un lo de objetos suele ajustarse a uno o rn& estindares de
conjunto de componentes de software en un determi- componentes (por ejemplo, OMGICORBA) que defi-
nado dominio de aplicacion. A continuacion, el desa- nen la forma en que una aplicacion puede acceder a 10s
CAP~TULO
27 I N G E N I E R I A DEL S O F T W A R E B A S A D A EN C O M P O N E N T E S
objetos reutilizables. Los esquemas de clasificaci6n La economia de reutilizacion del software se abar-
capacitan a1 desarrollador para hallar y recuperar corn- ca con una linica pregunta: ~ E rentable
s construir
ponentes reutilizables y se ajustan a un modelo que iden- menos y reutilizar mAs? En general, la respuesta es
tifica conceptos, contenidos y contextos. La clasificacion {{si>>,
per0 un planificador de proyectos de software
enumerada, la clasificacion de facetas, y la clasifica- debe considerar 10s costes no triviales asociados a la
ci6n de valores de atributos son representativas de adaptation e integracion de 10s componentes reutili-
muchos esquemas de clasificacion de componentes. zables.
[ADL95] Adler, R.M., {{EngineeringStandards for Compo- [HUT881 Hutchinson, J.W., y P.G. Hindley, {{APreliminary
nent Software,,, Computer, vol. 28, n." 3, Marzo de 1995, Study of Large Scale Software Reuse)),Software Enginee-
pp. 68-77. , ring Journal, vol. 3, n.' 5, 1998, pp. 208-212.
[BAS941 Basili, V.R., L.C. Briand y W.M. Thomas, {{Domain [LIM94] Lim, W.C., {{Effectsof Reuse on Quality, Producti-
Analysis for the Reuse of Software Development Expe- IEEE Software, Septiembre de 1994,
vity, and Economics>>,
riences),, Proc. Of the 1 9 ' ~Annual Software Engineering pp. 23-30.
Workshop, NASAIGSFC, Greenbelt, MD, Diciembre de [LIA93] Liao, H., y F. Wang, {{SoftwareReuse Based on a
1994. Large Object-Oriented Library)),ACM Software Enginee-
[BEL95] Bellinzona, R., M.G. Gugini y B. Pernici, {{Reusing ring Notes, vol. 18, n." 1, Enero de 1993, pp. 74-80.
Specifications in 00 Applications>>,IEEE Software, Mar- [LIN95] Linthicum, D.S., {{ComponentDevelopment (a spe-
zo de 1995, pp. 65-75. cial feature),,, Application Development Trends, Junio de
[BIN931 Binder, R., <<Designfor Reuse is for Real>>,
Ameri- 1995, pp. 57-78.
can Programmer, vol. 6, n." 8, Agosto de 1993, pp. 33- [MCM95] McMahon, P.E., <<Pattern-Based
Architecture: Brid-
37. ging Software Reuse and Cost Management,,, Crosstalk,
[BR096] Brown, A.W., y K.C. Wallnau, <{Engineeringof vol. 8,n."3,Marzode 1995,pp. 10-16.
Component Based Systems),, Component-Based Soft- [ORF96] Orfali, R., D. Harkey y J. Edwards, The Essential
ware Engineering, IEEE Computer Society Press, 1996, Distributed Objects Survival Guide, Wiley, 1996.
pp. 7-15.
[PRI87] Prieto-Diaz, R., {{DomainAnalysis for Reusabi-
[CHR95] Christensen, S.R., <<SoftwareReuse Initiatives at lity>>,Proc. COMPSAC '87, Tokyo, Octubre de 1987,
Lockheed>>,Crosstalk, vol. 8, n." 5, Mayo de 1995, pp. 26- pp. 23-29.
31. [PRI93] Prieto-Diaz, R., {{Issuesand Experiences in Software
[CLE95] Clemens, P.C., <<FromSubroutines to Subsystems: Reuse>>,American Programmer, vol. 6, n." 8, Agosto de
Component-Based Software Development>>, American 1993, pp. 10-18.
Programmer, vol. 8, n.' 11, Noviembre de 1995. [POL941 Pollak, W., y M. Rissman, c<StructuralModels and
[DEV95] Devanbu, P. et al., {{Analyticaland Empirical Eva- Patterned Architectures>>,Computer, vol. 27, n.' 8, Agos-
luation of Software Reuse Metrics,,, Technical Report, to de 1994, pp. 67-68.
Computer Science Department, University of Maryland, [STA94] Staringer,W., {{ConstructingApplications from Reu-
Agosto de 1995. sable Components>>, IEEE Software, Septiembre de 1994,
[FRA94] Frakes, W.B., y T.P. Pole, <{AnEmpirical Study of pp. 61-68.
Representation Methods for Reusable Software Compo- [TRA90] Tracz, W., <<WhereDoes Reuse Start?,,, Proc. Rea-
IEEE Trans. Software Engineering, vol. 20, n.' 8,
nents>>, lities ofReuse Workshop, Syracuse University CASE Cen-
Agosto de 1994, pp. 617-630. ter, Enero de 1990.
[HAR98] Harmon, P., {{Navigatingthe Distributed Compo- [TRA95] Tracz, W., {{ThirdInternational Conference on Soft-
nents Landscape,,, Cutter IT Journal, vol. 11, n." 2, ware Reuse-Summary>>, ACM Software Engineering Notes,
Diciembre de 1998, pp. 4-1 1. vol. 20, n." 2, Abril de 1995, pp. 21-22.
[HEN951 Henry, E., y B. Faller, <<LargeScale Industrial [WHI95] Whittle, B., <<Modelsand Languages for Compo-
Reuse to Reduce Cost and Cycle Time)),IEEE Software, nent Description and Reuse>>,ACM Software Engineering
Septiembre de 1995, pp. 47-53. Notes, vol. 20, n.' 2, Abril de 1995, pp. 76-89.
[H0091] Hooper, J.W., y R.O. Chester, Software Reuse: Gui- [YOU981 Yourdon, E. (ed.), {<DistributedObjects,,, Cutter IT
delines and Methods, Plenum Press, 1991. Journal, vol. 11, n."2, Diciembre de 1998.
INGENIERIA DEL SOFTWARE. UN ENFOQUE P R A C T I C O
27.1. Uno de 10s obsticulos principales de la reutilizaci6n con- 27.7. Desarrolle un modelo estructural sencillo para un domi-
siste en hacer que 10s desarrolladores de software consideren la nio de aplicaci6n que le asigne su instructor, o bien uno con el
reutilizaci6n de componentes ya existentes, en lugar de volver c u d este familiarizado.
a inventar otros nuevos. (jDespuCs de todo, es divertido cons-
truir cosas!) Sugiera tres o cuatro formas distintas en que una 27.8. ~ Q u Ces un punto de estructura?
organizaci6n de software pueda proporcionar incentivos para 27.9. Obtenga informaci6n de 10s esthdares m k recientes de
que 10s ingenieros de software utilicen la reutilizaci6n. ~ Q u C CORBA, COM o de JavaBeans y prepare un trabajo de 3 a 5
tecnologias deberian de estar implantadas para apoyar ese esfuer- paginas que trate 10s puntos m8s destacables. Obtenga infor-
zo de reutilizacibn? macion de una herramienta de distribuci6n de solicitudes de
27.2. Aunque 10s componentes de software son 10s ccelemen- objetos e ilustre en que esa herramienta se ajusta a1 estindar.
tom reutilizables m k obvios, se pueden reutilizar muchas otras 27.10. Desarrolle una clasificaci6n enumerada para un dominio
entidades producidas como p a t e de la ingenieria del software. de aplicaci6n que le asigne su instructor o para uno con el cual
Tenga en consideraci6n 10s planes de proyecto y las estimacio- est6 familiarizado.
nes de costes. iC6m0 se pueden reutilizar y c u d es el benefi-
cio de hacerlo? 27.11. Desarrolle un esquema de clasificaci6n por facetas para
27.3. Lleve a cabo una pequeiia investigaci6n acerca de la inge- un dominio de aplicaci6n que le asigne su instructor o bien para
niena de dominios, y detalle algo mks el modelo de procesos uno con el cual estC familiarizado.
esbozado en la Figura 27.1. Identifique las tareas necesarias para 27.12. Investigue en la literatura para conseguir datos recientes
el andisis de dominios y para el desarrollo de arquitecturas de de calidad y productividad que apoyen la utilization. Presente
software. esos datos a1 resto de la clase.
27.4. iEn quC sentido son iguales las funciones de caracteriza-
cion para 10s dominios de aplicaciones y 10s esquemas de cla- 27.13. Se estima que un sistema orientado a objetos requiere
sificaci6n de componentes? iEn que sentido son distintas? 320 objetos para su finalization. Ademk, se estima que es posi-
ble adquirir 190 objetos procedentes de un dep6sito ya exis-
27.5. Desarrolle un conjunto de caracteristicas del dominio para tente. i C u d es el aprovechamiento de reutilizaci6n? Suponga
sistemas de informacion que Sean relevantes para el procesa- que 10s objetos nuevos cuestan 260.000 pts., y que se necesitan
miento de datos de alumnos de una Universidad. 156.000 pts. para adaptar un objeto y 104.000 pts. para inte-
27.6. Desarrolle un conjunto de caracteristicasdel dominio que grarlo. ~ C U esA el coste estimado del sistema? iCu81 es el valor
Sean relevantes para el software de publication y autoedici6n. de Rb?
Durante 10s dltimos aiios se han ~ublicadolibros sobre el de mktodos cuantitativos para valorar 10s beneficios de la reu-
desarrollo basado en componentes y la reutilizacion de com- tilizaci6n del software.
ponentes. Allen, Frost y Yourdon (Component-Based Develop- Durante 10s liltimos aiios se han publicado docenas de libros
ment for Enterprise Systems: Applying the Select Perspective, que describen 10s mismos estindares basados en componentes
Cambridge University Press, 1998) abarca todo el proceso de de la industria, per0 tambiCn tienen en consideraci6n muchos
ISBC mediante el uso de UML (Capitulos 21 y 22) bashdose topicos importantes de la ISBC. A continuation se muestra un
en el enfoque del modelado. Los libros de Lim (Managing Sof- muestreo del estudio de 10s tres esthdares:
ware Reuse: A Comprehensive Guide to Strategically Reengi-
CORBA
neering the Organization for Reusable Components,
Prentice-Hall, 1998), Coulange (Software Reuse, Spriger Ver- Doss, G.M., CORBA Networking Java, Wordware
lag, 1998), Reifer (Practical Software Reuse, Wiley, 1997), Publishing, 1999.
Jacobson, Griss y Jonsson (Software Reuse: Architecture Pro- Hoque, R., CORBA for Real Programmers, Academic
cess and Organizationfor Business Success, Addison-Wesley, Press/Morgan Kaufmann, 1999.
1997) afronta muchos temas de ISBC. Fowler (Analysis Pat- Siegel, J., CORBA 3 Fundamentals and Programming,
terns: Reusable Object Models, Addison-Wesley, 1996) consi- Wiley, 1999.
dera la aplicaci6n de patrones arquitect6nicosdentro del proceso Slama, D., J. Garbis y P. Russell, Enterprise CORBA, Pren-
de ISBC y proporciona muchos ejemplos litiles. Tracz (Con- tice-Hall, 1999.
fessions of a Used Program Salesman: Institutionalizing Soft- COM
ware Reuse, Addison-Wesley, 1995) presenta un estudio algunas
veces desenfadado y muy util de 10s temas asociados con la cre- Box, D.K., T. Ewald y C. Sells, Effective Ways to Impro-
acidn de una cultura de reutilizaci6n. ve Your COM and MTS-Based Applications, Addison-Wes-
Leach (Software Reuse: Methods, Models and Costs, ley, 1999.
McGraw-Hill, 1997) proporciona un anilisis detallado de 10s Kirtland, M., Designing Component-Based Applications,
estudios de costes asociados con la ISBC y con la reutilizaci6n. Microsoft Press, 1999.
Poulin (Measuring Software Reuse: Principles, Practices, and Muchas compaiiias aplican una combinacion de esthdares
Economic Models, Addison-Wesley, 1996) sugiere un numero de componentes. Los libros de Geraghty et al. (COM-CORBA
CAPfTULO 27 INGENIER~ADEL SOFTWARE BASADA EN COMPONENTES
Interoperability, Prentice-Hall, 1999), Pritchard (COM and Valesky, T.C., Enterprise JavaBeans: Developing Com-
CORBA Side by Side: Architectures, Strategies, and Imple- ponent-Based Distributed Applications, Addison-Wesley, 1999.
mentations, Addsion-Wesley, 1999) y Rosen et al. (Integrating Vogel, A., y M. Rangarao, Programming with Enterprise
CORBA and COMApplications, Wiley, 1999) tienen en consi- JavaBeans, JTS and OTS, Wiley, 1999.
deracidn 10s temas asociados con la utilizaci6n de CORBA y En Internet esta disponible una gran variedad de fuentes
COM como base para el desarrollo basado en componentes. de informaci6n sobre la ingenieria del software basada en
JavaBeans componentes. Una lista actualizada de referencias en la red
Asbury, S., y S.R. Weiner, Developing Java Enterprise que son relevantes para la ISBC se puede encontrar en la direc-
Applications, Wiley, 1999. ci6n http://www.pressman5.com
INGENIER~A DEL SOFTWARE
DEL COMERCIO ELECTR~NICO
CLIENTE/SERVIDOR
Palabras c l a v e
A
finales de siglo, el desarrollo de una nueva generaci6n de mriquinas herramientas capa-
arquitedura ces de soportar fuertes tolerancias dieron poder a 10s ingenieros que disefiaban un pro-
estratificada ........496 ceso nuevo de fabricaci6n llamado producci6n en masa. Antes de la llegada de esta
clientes y servidores .492 tecnologia avanzada de mhquinas herramientas, no se podian soportar fuertes tolerancias. Pero
comercio eledrhico.. 499 con esta tecnologia se podian construir piezas intercambiables y fricilmente ensamblables -
componentes.. ......509 la piedra angular de la producci6n en masa-.
CORBA .............511 Cuando se va a desarrollar un sistema basado en computadora, un ingeniero de software se
ve restringido por las limitaciones de las tecnologias existentes y potenciado cuando las tec-
diseiio arquitect6nico. 51 3
nologias nuevas proporcionan capacidades que no estaban disponibles para las generaciones
diseiio debaser anteriores de ingenieros. La evolution de las arquitecturas distribuidas de computadora ha capa-
de datos. .......... .51 4 citado a 10s ingenieros de sistemas y del software para desarrollar nuevos enfoques sobre c6mo
distniuciin de datos .515 se estructura el trabajo y c6mo se procesa la informaci6n dentro de una empresa.
distribuci6n Las nuevas estructuras de las organizaciones y 10s nuevos enfoques de proceso de informaci6n
de funciones ........510 (por ejemplo: tecnologias intranet e Internet, sistemas de apoyo a las decisiones, software de gru-
opciones de po, e imigenes) representan una salida radical de las primeras tecnologias basadas en minicom-
configuration. ...... .509 putadoras o en mainframes. Las nuevas arquitecturas de computadora han proporcionado la tecnologia
ORB ...............511 que ha hecho posible que las empresas vuelvan a disefiar sus procesos de negocio (Capitulo 30).
prototolo.. .........497 En este capitulo, examinaremos una arquitectura dominante para el proceso de informaci6n
prueba .............516 -10s sistemas cliente/servidor (CIS) dentro del context0 de 10s sistemas de comercio e l e c t 6
dstemas distniuidos. 492 nico-. Los sistemas cliente/servidor han evolucionado junto con 10s avances de la informliti-
ca personal, en la ingenieria del software basada en componentes, con las nuevas tecnologias
rof tware intermedio
(middleware) .......494
de almacenaniiento, comunicaci6n mejorada a travCs de redes, y tecnologia de bases de datos
mejoradas. El objetivo de este capitulo' es presentar una visi6n global y breve de 10s sistemas
cliente/servidor con un Cnfasis especial en 10s temas de la ingenieria del software que deben de
afrontarse cuando se analizan, disefian, prueban y se da soporte a dichos sistemas CIS.
;Qu6 es? Las arquitecturas clientelservi- dominante. Puestoque 10s avances t e e lidad del cliente y del servidor dentrodel
dor (US)dominan el horizonte de los sis- nol&jcos (porejemplo,descmollob a a - contextode 10sestimdcnesde integ~aci6n
iemas basados e n computadora. Todo do en componentes,agentes de solicitud de componentesy de la tuquitectura CIS.
existe: desde redes de cajeros autom6- d e objetos, Java) cambian la forma de ;Cud1 es el product0 obtenido? Un
ticos hasta Internet, y esto e s debido a construir 10s sistemas CIS. en su cons- sistema CIS d e alta calidad e s el pro-
que el software que reside en una com- truccibn se debe d e aplicar un proceso ducto de la ingenieria del software C1S.
putadora --el cliente- solicita servi- de ingenieria del software sdlido. Tambibn se producen otros productos
cios ylo datos de otra computadora -1 &Cu&les son 10s pasos? Los pasos que de trabajo de software (tratados ante-
sewidor-. La ingenieria del software 6e siguen en la ingenieria de 10ssiste- riormente en este mismo libro).
clientelservidorcombina principim con- mas CIS son similares a 10sque s e apli- &=ma puedo estm segwo de que lo
vencionales, conceptos y metodos Ira- can durante la ingenierla del software he hecho correctamente? Utili-
tados unieriormente en este libro, con basada en componentes y 00.El mode- mndo las mismas practicas SQA que s e
elementos de la ingenieria del softwa- lo de proceso e s evolutivo, comenzan- aplican en todos 10s procesos de inge-
re basada en componentes y orientada do por la obtencibn de 10srequisites. nierfa del software -]as revisiones t k -
a objetw para crear sistemas CIS.
La hncionalidad se usigna a los subsis- nicas formales evaluan 10s modelos de
LQuienlo hace? Los ingenieros de s d t - temas de componentesque se van ausig- m&lisisy disefi-; las revisiones espe-
ware llevan a cabo el andisis, diseiio, nar despues o Lien a1 clienteo aI servidor cializadas consideran 10s ternas aso-
implementacibn y prueba de estos sis- de la arquitectura US. El diseiio se cen- ciados a la integracibn decomponentes
temas. Ira en la integraci6nde loscomponentes y a1 software intermedio (middleware),
;Por q u b es importanfe? El impact0 de existentes y en la creacibn d e compo- y las pruebas se aplican para desvelar
los sistemas CIS en 10s negocios, el nentes nuevos. La implementacibn y las errores a1 nivel d e componentes, sub-
comercio, el gobierno y la ciencia e s pruebas luchan por ejercitar la funciona- sistema, cliente y servidor.
I Parte d e este capitulo se ha adaptado a partir del material de cursos desarrollado porJohn Porter para el Client/Server Curri-
culum ofrecido e n la Facultad d e Ingenieria BE1 d e la Univenidad d e Fairfield. Se ha obtenido permiso para sit utilizacih
491
I N G E N I E R ~ ADEL SOFTWARE. U N E N F O Q U E PRACTICO
Los ultimos diez aiios han sido testigos de avances masi- datos que contienen las computadoras que componen el
vos en las ireas de computacibn. La primera es que el sistema. En lugar de tener que reproducir 10s datos en
hardware se ha ido abaratando cada vez mis, y a su vez todas las computadoras se pueden distribuir por un
se ha ido haciendo mis potente: las computadoras de pequefio numero de computadoras. Un sistema distribuido
sobremesa hoy en dia tienen la potencia que poseian 10s tambiCn proporciona acceso a servicios especializados
mainframes hace algunos aiios. La segunda Area es la de que quizb no se requieran muy frecuentemente, y que se
las comunicaciones; avances tales como 10s sistemas de puedan centralizar en una computadora del sistema.
comunicaci6n via satklite y 10s sistemas de telCfonos digi-
tales significa que ahora es posible conectar econ6mica-
mente y eficientemente con otros sistemas informiticos
separados fisicamente. Esto ha llevado al concept0 de un
sistema de computaci6n distribuido. Dicho sistema con-
siste en un ndmero de computadoras que e s t h conecta-
das y que llevan a cab0 diferentes funciones. Existen
muchas razones por las que tales sistemas se han hecho
populares :
Tolerancia a fallos. Un sistema distribuido se puede
Rendimiento. El rendimiento de muchos tipos de disefiar de forma que tolere 10s fallos tanto del hardware
sistemas distribuidos se puede incrementar afiadiendo como del software. Por ejemplo, se pueden utilizar varias
simplemente mis computadoras. Normalmente esta es computadoras que lleven a cab0 la misma tarea en un
una opci6n rnis sencilla y rnis barata que mejorar un sistema distribuido. Si una de las computadoras fun-
procesador en un mainframe. Los sistemas tipicos en cionaba mal, entonces una de sus hermanas puede
donde se puede lograr este increment0 en el rendimiento hacerse cargo de su trabajo. Una base de datos de una
son aquellos en donde las computadoras distribuidas computadora se puede reproducir en otras computado-
llevan a cab0 mucho proceso, y en donde la relaci6n tra- ras de forma que si la computadora original tiene un ma1
bajo de comunicaciones y proceso es bajo. funcionamiento, 10s usuarios que solicitan la base de
Comparticion de recursos. Un sistema distribuido datos son capaces de acceder a las bases de datos repro-
permite a sus usuarios acceder a grandes cantidades de ducidas.
28.2.1. Clientes y servidores poca potencia para comunicarse con el central. Los dos
El prop6sito de esta secci6n es introducir tanto la idea - problemas mis serios son la dificultad de mejorar y de
de cliente como la de servidor. Estos son 10s bloques copiar con interfaces IGU modemas. A medida que las
basicos de construcci6n de un sistema distribuido y, de aplicaciones van siendo m b grandes, la carga de una main-
esta manera, cuando se describa el diseiio y el desarro- frame comun llega al punto en que tarnbikn necesita mejo-
110 de dichos sistemas, sera necesario tener conocimiento rar y normalrnente con hardware de procesarniento nuevo,
de sus funciones y de su capacidad. memoria o almacenarniento de archivos. Mejorar dichas
Un servidor es una computadora que lleva a cab0 computadoras es m b ficil que antes; sin embargo, pue-
un servicio que normalmente requiere mucha poten- de resultar un proceso moderadarnente dificil y car0 - e s
cia de procesamiento. Un cliente es una computadora ciertamente rnis car0 y rnis dificil que aiiadir un servidor
que solicita 10s servicios que proporciona uno o mis nuevo basado en PC a un conjunto de computadoras con-
servidores y que tambiCn lleva a cab0 algdn tip0 de figuradas como clientes y servidores-. El segundo pro-
procesamiento por si mismo. Esta forma de organiza- blema es hacerse con interfaces IGU modemas. Para
ci6n de computadoras es totalmente diferente a 10s dos ordenar a una computadora que visualice incluso una pan-
modelos que dominaron 10s aiios ochenta y principios talla relativamente primitiva relacionada, digamos, con
de 10s noventa. unos cuantos botones y una barra de desplazamiento de
El primer modelo se conoce como procesarniento cen- la misma, conlleva tanto trifico en las lineas de comuni-
tral (host).En este modelo de organizaci6n todo el pro- caci6n que un sistema podria colapsarse ficilmente con
cesamiento que se necesitaba para una organizaci6n se 10s datos que se utilizan para configurar y mantener una
llevaba a cab0 por una computadora grande -normal- serie de interfaces basadas en IGUs.
mente una mainframe- mientras que 10s usuarios El segundo modelo de computation es en donde hay
emplean sencillas terminales informiticas o PCs de muy un grupo de computadoras actuando como servidores,
CAPfTULO 28 I N G E N I E R I A DEL S O F T W A R E D E L C O M E R C I O E L E C T R ~ N I C OC L I E N T E I S E R V I D O R
per0 poseen poco procesamiento que llevar a cabo. Nor- bre de cuenta, nombre del titular de la cuenta, saldo
malmente estos terminales poco inteligentes actuarian actual de la cuenta y limite de descubierto de la cuenta.
como servidores de archivos o servidores de impresi6n Una de las caracteristicas de las bases de datos que inva-
para un nlimero de PCs potentes o minicomputadoras lidan la utilizaci6n de 10s servidores de archivos es que
que llevarian a cab0 el procesamiento y estarian conec- 10s archivos que se crean son enormes y ralentizan el
tados a una red de k e a local. Las computadoras clien- trafico si se transfirieran en bloque a1 cliente. Afortu-
te solicitarian servicios a gran escala, como es obtener nadamente, para la gran mayoria de aplicaciones no se
un archivo, llevando a cab0 entonces el procesamiento requiere dicha transferencia; por ejemplo en una apli-
de dicho archivo. De nuevo, esto conduce a problemas caci6n bancaria las consultas tipicas que se realizarian
con el trafico en donde, por ejemplo, la transmisi6n de en una base de datos bancaria serian las siguientes:
archivos grandes a un numero de clientes que requie- Encontrar las cuentas de 10s clientes que tienen un
ren simultineamente estos archivos hace que el tiempo descubierto mayor de 2.000 pts.
de respuesta de la red vaya tan lento como una tortuga.
Encontrar el saldo de todas las cuentas del titular
tQue es la informitica John Smith.
cliente/servidor? Encontrar todas las 6rdenes regulares del cliente Jean
La computaci6n cliente/servidor es un intento de equi- Smith.
librar el proceso de una red hasta que se comparta la Encontrar el total de las transacciones que se reali-
potencia de procesamiento entre computadoras que lle- zaron ayer en la sucursal de Manchester Picadilly.
van a cab0 servicios especializados tales como acceder Actualmente una base de datos bancaria tipica ten-
a bases de datos (servidores), y aquellos que llevan a cab0 d r i millones de registros, sin embargo, las consultas
tareas tales como la visualizaci6n IGU que es mis ade- anteriores conllevarian transferir datos a un cliente que
cuado para el punto final dentro de la red. Por ejemplo, seria solamente una fraccion muy pequeiia del tamaiio.
permite que las computadoras se ajusten a tareas espe- En un entorno de bases de datos cliente/servidor 10s
cializadas tales como el procesamiento debases de datos clientes envian las consultas a la base de datos, nor-
en donde se utilizan hardware y software de prop6sito malmente utilizando alguna IGU. Estas consultas se
especial para proporcionar un procesamiento ripido de envian a1 servidor en un lenguaje llamado SQL (Len-
la base de datos comparado con el hardware que se guaje de Consultas Estructurado). El servidor de bases
encuentra en las mainframes que tienen que enfrentarse de datos lee el c6digo SQL, lo interpreta y, a continua-
con una gran gama de aplicaciones. ci6n, lo visualiza en alglin objeto HCI tal como una caja
de texto. El punto clave aqui es que el servidor de bases
28.2.2. Categorias d e servidores de datos lleva a cab0 todo el procesamiento, donde el
cliente lleva a cab0 10s procesos de extraer una consul-
Ya se ha desarrollado una gran variedad de servidores. ta de alglin objeto de entrada, tal como un campo de tex-
La siguiente lista ampliada se ha extraido de [ORF99]: to, enviar la consulta y visualizar la respuesta del
Servidores de archivos. Un servidor de archivos pro- servidor de la base de datos en alglin objeto de salida,
porciona archivos para clientes. Estos servidores se utili- tal como un cuadro de desplazamiento.
zan todavia en algunas aplicaciones donde 10s clientes Servidores de software de grupo. Software de
requieren un procesamiento complicado fuera del rango grupo es el tirmino que se utiliza para describir el soft-
normal de procesamiento que se puede encontrar en bases ware que organiza el trabajo de un grupo de trabajado-
de datos comerciales. Por ejemplo, una aplicaci6n que res. Un sistema de software de grupo normalmente
requiera el almacenamiento y acceso a dibujos ticnicos, ofrece las siguientes funciones:
digamos que para una empresa de fabricaci61-1,utilizaria
un servidor de archivos para almacenar y proporcionar Gestionar la agenda de 10s individuos de un equipo
10s dibujos a 10s clientes. Tales clientes, por ejemplo, serian de trabajo.
utilizados por ingenieros quienes llevarian a cab0 opera- Gestionar las reuniones para un equipo, por ejem-
ciones con dibujos, operaciones que serian demasiado plo, asegurar que todos 10s miembros de un equipo
caras de soportar, utilizando una computadora central que tienen que asistir a una reuni6n estin libres
potente. Si 10s archivos solicitados no fueran demasiado cuando se vaya a celebrar.
grandes y no estuvieran compartidos por un nlimero tan Gestionar el flujo de trabajo, donde las tareas se dis-
grande de usuarios, un servidor de archivos seria una forma tribuyen a 10s miembros del equipo y el sistema de
excelente de almacenar y procesar archivos. software de grupo proporciona informaci6n sobre la
Servidores de bases de datos. Los servidores de finalizaci6n de la tarea y envia un recordatorio al per-
bases de datos son computadoras que almacenan gran- sonal que lleva a cab0 las tareas.
des colecciones de datos estructurados. Por ejemplo, un Gestionar el correo electr6nic0, por ejemplo, organi-
banco utilizaria un servidor de bases de datos para alma- zar el envio de un correo especifico a 10s miembros
cenar registros de clientes que contienen datos del nom- de un equipo una vez terminada una tarea especifica.
I N G E N I E R ~ ADEL SOFTWARE. U N ENFOQUE PRACTICO
Un semidor de software de grupo guarda 10s datos informar a las computadoras cliente que ya ha finali-
que dan soporte a estas tareas, por ejemplo, almacena zado una petici6n de impresi6n en particular.
las listas de correos electr6nicos y permite que 10s usua- Servidores de aplicaciones. Un semidor de aplica-
rios del sistema de software de grupo se comuniquen ciones se dedica a una aplicaci6n 6nica. Tales semidores
con 61, notifichndoles, por ejemplo, que se terminado suelen escribirse utilizando un lenguaje tal como Java o
una tarea o proporcionandoles una fecha de reuni6n en C++. Un ejemplo tipico del semidor que se utiliza en el
la que ciertos empleados puedan acudir. dibujo de un fabricante de aviones que gestionaba las ver-
siones diferentes de dibujos producidos por el personal
iQue es un servidor Web? tCcnico iria dirigido a algun proceso de fabricaci6n.
Servidor
-
Web
rios. Para este semicio normalmente se utiliza un PC de
e-
rango medio. Existen varios protocolos para el correo
La pagina Web La pagina
-
electr6nico. Un semidor de correo estar6 especializado es devuelta es enviada
en utilizar solo uno de ellos. al navegador al software
interrnedio
Servidores de objetos. Uno de 10s desarrollos mhs por el servido
excitantes en la informatics distribuida durante 10s 6lti-
mos cinco afios ha sido el avance realizado, tanto por FIGURA 28.7. Software intermedio y servidor Web.
parte de 10s desarrolladores, como por parte de 10s inves-
tigadores, para proporcionar objetos distribuidos. Estos Aqui el software intermedio que se encuentra entre
son objetos que se pueden almacenar en una computa- el semidor Web y el cliente que ejecuta el navegador
dora, normalmente un semidor, con clientes capaces de Web intercepta las peticiones que proceden del nave-
activar la funcionalidad del objeto enviando mensajes gador. Si se hace una petici6n para una pagina Web
a1 objeto, 10s cuales se corresponden con mCtodos defi- entonces determina la localizaci6n del documento
nidos por la clase de objeto. Esta tecnologia liberarh Web y envia una petici6n para esa pagina. El semidor
finalmente a 10s programadores de la programaci6n de responde a la petici6n y devuelve la phgina a1 software
bajo nivel basada en protocolos requerida para acceder intermedio, quien la dirige a1 navegador que la visuali-
a otras computadoras de una red. En efecto, esto per- zara en la pantalla del monitor que utiliza el cliente.
mite que el programador trate a 10s objetos a distancia Existen dos categonas de software intermedio: el soft-
como si estuvieran en su computadora local. Un semi- ware intermedio general y el software intermedio de
dor que contiene objetos que pueden accederse a dis- semicios. El primer0 es el que esth asociado a 10s ser-
tancia se conoce como semidor de objetos. vicios generales que requieren todos 10s clientes y ser-
vidores. El software tipico que se utiliza como tal es:
Servidores de impresion. Los semidores de impre-
si6n dan semicio a las solicitudes de un cliente remoto. El software para llevar a cab0 comunicaciones utili-
Estos semidores tienden a basarse en PCs bastante bara- zando el protocolo TCPDP y otros protocolos de red.
tos, y llevan a cab0 las funciones limitadas de poner en El software del sistema operativo que, por ejemplo,
cola de espera las peticiones de impresibn, ordenar a la mantiene un almacenamiento distribuido de archi-
impresora que lleve a cab0 el proceso de impresi6n e vos. Este es una colecci6n de archivos que se espar-
El prop6sito de esta secci6n es explorar la idea de una ~ E relativamente
s esthtica la base de datos en lo que
arquitectura estratificada para una aplicaci6n clientelser- se refiere a predecir un crecimiento pequeiio de
vidor y se limita a describir las arquitecturas populares tamafio y estructura?
de dos y de tres capas. Una arquitectura de dos capas de ~ E esthtica
s la base del usuario?
una aplicaci6n clientelservidor consiste en una capa de existe en requisitos fijos o no hay muchas posibili-
16gica y presentacihn, y otra capa de bases de datos. La dades de cambio durante la vida del sistema?
primera tiene que ver con presentar a1 usuario conjuntos
~Necesitarael sistema un mantenimiento minimo?
de objetos visuales y llevar a cab0 el procesamiento que
requieren 10s datos producidos por el usuario y 10s devuel- Aunque algunas de estas cuestiones van enlazadas
tos por el servidor. Por ejemplo, esta capa contendria el (10s cambios en 10s requisitos dan lugar a las tareas de
c6digo que monitoriza las acciones de pulsar botones, el mantenimiento), se trata de un cantidad bien amplia de
envio de datos a1 servidor, y cualquier chlculo local nece- preguntas que deberian de tenerse en cuenta antes de
sario para la aplicaci6n. Estos datos se pueden almace- adoptar una arquitectura de dos capas.
nar en una base de datos convencional, en un archivo
simple o pueden ser incluso 10s datos que esthn en la
memoria. Esta capa reside en el servidor.
Normalmente las arquitecturas de dos capas se uti-
lizan cuando se requiere mucho procesamiento de datos. Cuando una aplicodon implica un procesamiento
La arquitectura del servidor Web de navegador es un considerable el enfoque de dos capos cado vez
buen ejemplo de una arquitectura de dos capas. El nave- es mds difkil de implementar.
gador del cliente reside en la capa de 16gica y presen-
taci6n mientras que 10s datos del servidor Web-las Cuando una aplicaci6n implica un procesamiento con-
phginas Web- residen en las capa de la base de datos. siderable, entonces comienzan a surgir problemas con
Otro ejemplo de aplicaci6n en donde se emplearia nor- la arquitectura de dos capas, particularmente aquellas
malmente una arquitectura de dos capas es una aplica- aplicaciones que experimentan cambios de funcionali-
ci6n simple de entrada de datos, donde las funciones dad a medida que se van utilizando. TambiCn, una arqui-
principales que ejercitan 10s usuarios es introducir 10s tectura de dos capas, donde no hay muchas partes de
datos de formas muy diversas en una base de datos c6digo de procesamiento unidas a acciones tales como
remota; por ejemplo, una aplicaci6n de entrada de datos pulsaci6n de botones o introducci6n de texto en un cam-
de un sistema bancario, donde las cuentas de usuarios po de texto, esth altamente orientada a sucesos especifi-
nuevos se teclean en una base de datos central de cuen- cos y no a 10s datos subyacentes de una aplicacibn, y de
tas. El cliente de esta aplicacion residirh en la capa 16gi- aqui que la reutilizaci6n sea algo complicado.
ca y de presentaci6n mientras que la base de datos de
Capa , Capa del servidor , Capa de bases
cuentas residiria en la capa de base de datos. la aplicacion de datos
Las dos aplicaciones descritas anteriormente mues-
tran la caracteristica principal que distingue a las apli-
1 -0
caciones de capas de otras aplicaciones que emplean
mhs capas por el hecho de que la cantidad de procesa-
miento necesario es muy pequeiia. Por ejemplo, en la Objetos
aplicaci6n de validaci6n de datos, el unico procesa- negocios
t
caci6n y la capa de procesamiento es la responsable del tra el servidor de 10s clientes. La localizaci6n de esta
procesamiento que tiene lugar en la aplicaci6n. Por ejem- capa no le resta valor a las ventajas que proporciona una
plo, en una aplicaci6n bancaria el c6digo de la capa de arquitectura de tres capas:
presentaci6n se relacionaria simplemente con la moni- En primer lugar, la arquitectura de tres capas permite
torizaci6n de sucesos y con el envio de datos a la capa aislar a la tecnologia que implementa la base de datos,
de procesamiento. Esta capa intermedia contendria 10s de forma que sea ficil cambiar esta tecnologia. Por
objetos que se corresponden con las entidades de la apli- ejemplo, una aplicacidn podria utilizar en primer
caci6n; por ejemplo, en una aplicaci6n bancaria 10s obje- lugar la tecnologia relacional para la capa de base de
tos tipicos serian 10s bancos, el cliente, las cuentas y las datos; si una base de datos basada en objetos fun-
transacciones. ciona tan eficientemente como la tecnologia rela-
La capa final seria la capa de la base de datos. ~ s t a cional que se pudiera entonces integrar fhcilmente,
estaria compuesta de 10s archivos que contienen 10s todo lo que se necesitaria cambiar serian 10s mCto-
datos de la aplicaci6n. La capa intermedia es la que dos para comunicarse con la base de datos.
conlleva capacidad de mantenimiento y de reutiliza- Utiliza mucho c6digo lejos del cliente. Los clien-
ci6n. Contendri objetos definidos por clases reutili- tes que contienen mucho c6digo se conocen como
zables que se pueden utilizar una y otra vez en otras clientes pesados (gruesos). En un entorno en donde
aplicaciones. Estos objetos se suelen llamar objetos de se suele necesitar alg6n cambio, estos clientes
negocios y son 10s que contienen la gama normal de pesados pueden convertirse en una pesadilla de
constructores, mCtodos para establecer y obtener varia- mantenimiento. Cada vez que se requiere un cam-
bles, mCtodos que llevan a cab0 cilculos y mCtodos, bio la organizaci6n tiene que asegurarse de que se
normalmente privados, en comunicaci6n con la capa ha descargado el c6digo correct0 a cada cliente.
de la base de datos. La capa de presentaci6n enviari Con una capa intermedia una gran parte del c6digo
mensajes a 10s objetos de esta capa intermedia, la cual de una aplicaci6n clientelservidor reside en un lugar
o bien responder5 entonces directamente o mantendri (o en un nGmero reducido pequeiio de lugares si se
un diilogo con la capa de la base de datos, la cual pro- utilizan servidores de copias de seguridad) y 10s
porcionari 10s datos que se mandarian como respues- cambios de mantenimiento ocurren de forma cen-
ta a la capa de presentaci6n. tralizada.
El lugar donde va a residir la capa intermedia depen- La idea de las tres capas encaja con las pricticas
de de la decisi6n sobre el diseiio. Podria residir en el
orientadas a objetos de hoy en dia: todo el procesa-
servidor, que contiene la capa de base de datos; por otro
miento tiene lugar por medio de 10s mensajes que se
lado, podna residir en un servidor separado. La deci-
envian a 10s objetos y no mediante trozos de c6digo
si6n sobre d6nde colocar esta capa dependeri de las
asociados a cada objeto en la capa de presentaci6n
decisiones sobre disefio que se apliquen, dependiendo
que se esti ejecutando.
de factores tales como la cantidad de carga que tiene un
servidor en particular y la distancia a la que se encuen-
Parametros
- Lo que merece la pena destacar, llegado este pun-
to, es que existe una diferencia entre la capa inter-
Datos media del servidor de la aplicaci6n y el software
-
intermedio (middleware). Mientras que el primer0 des-
cribe el software de la aplicaci6n que media entre el
cliente y el servidor, el segundo se reserva para el soft-
FIGURA 28.4. El forrnato del protocolo ICMP. ware de sistemas.
no protocol0 sin proporcionar realmente mucho deta- Con objeto de describir 10 que es exactamente un pro-
lle. El prop6sito de esta seccidn es proporcionar este tocol~,utilizarC un pequeiio ejemplo: el de un cliente
detalle. que proporciona servicios bancarios para casa, permi-
I N G E N ~ E R ~DEL
A SOFTWARE. UN ENFOQUE PRACTICO
tiendo, por ejemplo, que un cliente consulte una cuen- 28.4.2. IP e ICMP
.ta cuyos datos residen en el servidor. Supongamos que IP,el protocolo que ejecuta Internet es un protocolo muy
el cliente se comunica con el servidor que utiliza una complicado, y una description completa estaria fuera
serie de mensajes que distinguen las funciones requeri- del ambit0 de este libro, ya que la descnpcih de este
das por el cliente, y que tambiCn se comunica con otros protocolo necesitaria un libro entero que le hiciera jus-
datos requeridos por el servidor. ticia. Debido a esto me centrarC en una parte pequefia
Por ejemplo, el cliente puede ejercer la funci6n de del protocolo, aunque importante, conocida como ICMP
consultar un saldo de cuenta tecleando un n6mero de (Internet Control Message Protocol). Protocolo de men-
cuenta en un cuadro de texto y pulsando el b o t h del sajes de control de Internet que se utiliza para monito-
rat6n el cual enviarh el mensaje a1 servidor. Este men- rizar 10s errores y problemas de la red que utiliza IP. En
saje podria ser de la forma la Figura 28.4 se muestra el formato de 10s mensajes
que forman parte del protocolo.
El campo Tipo especifica el tip0 de error que ha ocu-
donde CS (Consulta del Saldo) especifica que el usua- rrido. Por ejemplo, este campo indicaria que el desti-
no ha consultado una cuenta para obtener el saldo con no de un mensaje era inalcanzable. El campo C6digo
el numero de cuenta que identifica la cuenta. El servi- contiene la information secundaria que se utiliza para
dor entonces recibira este mensaje y devolver6 el sal- proporcionar una interpretacih mas detallada del cam-
do; el mensaje que el servidor envia podria tener el po Tipo. El campo de Suma de verijicacibn es utiliza-
formato do por el software para comprobar que la transmision
S*<Cantidad del Saldo> del mensaje ICMP se ha llevado a cab0 correctamen-
te. Los dos campos restantes contienen 10s datos que
El cliente interpretarh este mensaje y visualizara el permitiran a1 software de comprobacion localizar el
saldo en algun elemento de salida. problema originado.
Si el cliente quisiera consultar 10s numeros de cuen- ICPM es utilizado por IP para llevar a cab0 el pro-
tas de todas las cuentas con las que 61 o ella esti aso- cesamiento basico de errores y tambiCn para incremen-
ciado, el mensaje entonces podria ser de la forma tar la eficacia de la red. Por ejemplo, se podria utilizar
para llevar a cab0 el cambio de direccion del mensaje
si una computadora, que se encontrara en el camino ini-
donde CC (Consulta de Cuenta) solicita las cuentas, y cia1 del mensaje, descubriera una ruta mejor.
en cuya funcion ya no se requieren mas datos. El ser-
vidor podria responder con un mensaje que comenza-
ra con (Informacion de Cuenta) y que estuviera 28.4.3. POP3
formado por numeros terminados con asteriscos. Por POP3 ( Post Office Protocol version 3) (Protocolo de
ejemplo, Oficina de Correos version 3) se utiliza para el envio y
la recepcion de correo electronico. Es un protocolo sen-
cillo y es ampliamente utilizado. En esta seccion reali-
10s mensajes que he descrito forman un protocolo sen- zarC un estudio de algunas de sus caracteristicas.
cillo que comunica funcionalidad y datos entre dos enti-
dades (un cliente y un servidor) en la red.
~ Q u es
L un protocolo? POP3 es un protocolo robusto y muy sencillo.
Uti1;celo todo lo posible m6s que o m protocolos.
Un punto importante acerca de 10s protocolos es que Existen varios protocolos de correo, entre 10s que se
siempre que se utiliza un mecanismo para la comuni- incluyen SMTP, IMAP y diferentes versiones de POP.
caci6n en una red existe un protocolo. Por ejemplo, 10s Probablemente el mas complicado de estos sea IMAP,
objetos distribuidos son objetos que se encuentran en el cual incluye funciones secundarias y un conjunto de
localizaciones remotas en una red, y es mediante la uti- mensajes mas rico que POP.
lizacidn de un protocolo la manera en que se envian 10s El propdsito de POP es posibilitar a 10s usuarios
mensajes, aunque la programacion de estos objetos estC acceder a1 correo remoto y consta de una serie de
a un nivel superior por debajo de la programaci6n y comandos que permiten a 10s programas de usuario
oculta a1 programador. interactuar con un servidor de correo POP. El esthn-
El protocolo que he descrito se asemeja a un jugue- dar POP3 describe un grupo de mensajes posibles que
te y tambiCn a un protocolo de aplicaciones. Merece pueden enviarse a1 servidor de correo POP3 y el for-
la pena entrar en el estudio de algunos protocolos mas mato de 10s mensajes es devuelto por el servidor. La
reales que estCn asociados a 10s servicios de nivel de Tabla 28.1 muestra un subconjunto pequeiio del pro-
sistema. t o c o l ~POP3.
C A P ~ T U L O28 I N G E N I E R I A DEL S O F T W A R E D E L C O M E R C I O E L E C T R ~ N I C OC L I E N T E I S E R V I D O R
Sistemas de publicidad. Muchos de 10s ingresos del realiza el pedido de un libro, a continuation se le
. comercio electr6nico proceden de la publicidad en solicitan 10s datos de la tarjeta de crCdito. Algunos
linea. Muchas piginas Web asociadas a las aplica- sistemas de pedidos suelen quedarse con 10s datos
ciones de comercio electr6nico contendrin peque- de las tarjetas de forma permanente de manera que
iios espacios publicitarios conocidos como banners. no se requiere que el cliente proporcione 10s datos
Estos anuncios se pueden <<pinchar,,,conduciendo cada vez que haga un pedido.
asi a1 usuario del navegador a un sitio Web el cual La provisidn de servicios de seguimiento. Estos ser-
normalmente vende algun producto o sewicio. Los vicios posibilitaran a1 cliente seguir con el proceso
sistemas de publicidad son una forma particular de de una compra utilizando su navegador. Las piginas
sistemas de comercio electrdnico que llevan a cab0 Web personalizadas para el cliente describirhn el
funciones tales como vender un banner (espacio desarrollo de un pedido: si ya se ha enviado, si esta
publicitario), monitorizando el Cxito de estos anun- esperando porque el libro no esta en stock, y cuil es
cios y la administraci6n del pago de 10s honorarios la fecha en la que se espera enviar el pedido.
de publicidad.
El procesamiento de revisiones. Un sewicio ofrecido
Estas forman un conjunto tipico de aplicaciones por 10s sitios de ventas de libros mhs sofisticados y
que estin bajo el <<banner*del comercio electr6nico. es el que proporciona el medio por el que 10s clien-
En la parte restante de esta secci6n observaremos una tes pueden escribir revisiones de 10s libros a com-
aplicaci6n tipica de comercio electr6nico que admi- prar. Estas revisiones se pueden comunicar a1
nistra la venta de un articulo. Esto es lo que piensa vendedor o bien por correo electr6nico o por una
cualquier persona de una aplicaci6n de comercio pigina Web especializada.
electrdnico, aunque espero que despuCs de leer este
La provisidn de un servicio de conferencia. Un ser-
preambulo este sistema se considerari s610 como un
vicio de conferencia capacita a un grupo de clientes
tip0 de sistema.
para interactuar entre ellos enviando mensajes a una
conferencia, entendiendo por conferencia algo dedi-
cad0 a un tema especifico tal como, por ejemplo, la
CLAVE liltima novela de Robert Goddard o el estado de la
Elcomercio electrbnico no es solamente ficci6n criminal. Tales servicios no proporcionan
un comercio minorista de red. ingresos directarnente a un vendedor de libros en red.
Sin embargo, si pueden proporcionar informaci6n
28.5.2. Un sistema tipico de comercio electronico util sobre las tendencias en las compras de libros de
las que el personal de ventas de una librena pueden
Con objeto de entender la naturaleza de 10s sistemas sacar provecho.
clientelservidor, merece la pena examinar un ejemplo La provisidn de noticias o boletines para clientes.
de una de las keas del comercio electr6nico. Es un sis- Un servicio popular que se encuentra en muchos
tema para administrar las ventas de una gran libreria sitios de comercio electr6nico dedicados a la venta
que tenga una funcionalidad similar a la que exhiben de un producto es el de proporcionar informaci6n
grandes librerias como Blackwells o la filial britinica por medio del correo electr6nico. Para el sitio de ven-
de Amazon. Las funciones tipicas que un sistema como tas de libros que se esta describiendo en esta secci6n
Cste proporciona son las siguientes: se incluirian mensajes tal como textos de revisiones,
La provisidn de servicios de Catdlogo. Cada libro ofertas especiales o mensajes relacionados con un
que venda una compaiiia estari en catilogo y la pedido especifico, tal como el hecho de haberse des-
pagina Web proporcionari la descripci6n de ese libro. pachado.
La informaci6n tipica que se proporciona sobre un Control y administracidn del stock. Este es un con-
libro es el nombre, autor, editorial y precio. junto de funciones que estin ocultas para el usuario
La provisidn de servicios de bhqueda. El usuario de del sistema de ventas de libros per0 que son vitales
dicho sistema necesitari navegar por el cathlogo para para el sistema. Estas funciones se asocian a las acti-
decidir si va a comprar un libro. Esta navegaci6n se vidades mundanas, tales como hacer pedidos de
podna realizar de muchas maneras diferentes: desde libros, hacer el seguimiento de 10s stocks y reorde-
navegar secuencialmente desde el primer libro que nar y proporcionar informaci6n de ventas a1 perso-
aparece, hasta navegar utilizando consultas de blis- nal responsable de 10s pedidos.
queda tal como el titulo de un libro o su ISBN. Informes financieros. Estos son de nuevo un con-
La provisidn de servicios de pedidos. Cuando un junto de funciones que e s t h ocultas ante 10s ojos del
cliente de un sitio de comercio electr6nico quiere usuario del sistema de ventas de libros per0 que son
comprar un libro, el sistema le proporcionari algun vitales. Proporcionan la informaci6n para la gesti6n
servicio para poderlo hacer y, normalrnente, mediante financiera de la compaiiia que ejecuta el sistema y
tarjetas de crCdito. Generalmente cuando el cliente proporciona la informaci6n de datos tales como las
CAPfTULO 28 I N G E N l E R f A D E L S O F T W A R E DEL C O M E R C I O E L E C T R 6 N I C O C L I E N T E I S E R V I D O R
la red, puesto que les permite publicar las listas de dor Web frontal que se comunica con un sistema ser-
10s libros mhs vendidos junto con las ofertas espe- vidor no cliente. Este sistema sewidor no cliente es
ciales de esos libros. En muchos sistemas de comer- el que lleva existiendo ya desde hace alglin tiempo
cio electrhico estas bases de datos son imple- y se utilizaba para un procesamiento mis conven-
mentadas en varios servidores de bases de datos cional como es el de tomar pedidos por telCfono.
especializados que son duplicados: tales bases de Los servidores de bases de datos se mantendran
datos son vitales para el funcionamiento de una com- actualizados por medio de un software de sistemas
pafiia de comercio electronico: si el sewidor de bases que detecta cuando se va a aplicar una transaccion
de datos funcionaba ma1 y no existen servidores a una base de datos: primer0 aplica la transacci6n a
duplicados, ocurria algo muy serio, ya que no ten- la base de datos que se esti utilizando en ese
drian ingresos y 10s vendedores en red obtendrian momento y, a continuacion, la aplica a todas las
una reputacih muy pobre. Un punto importante a bases de datos duplicadas.
tener en cuenta sobre esta parte del sistema es que Un servidor de nzonitorizaci6n. Este es el servidor
no hay razon para que una tecnologia anterior, tal que se utiliza para monitorizar la ejecucion del sis-
como un mainfranze que ejecuta una monitorizacion tema. Es utilizado por un administrador del sistema
de transacciones se pueda utilizar para funciones de para comprobar el funcionamiento correct0 del sis-
bases de datos; en realidad muchos de 10s sistemas tema y tambiCn para ajustar el sistema de manera que
de comercio electr6nico se componen de un sewi- se archive un rendimiento optimo.
Existen varias tecnologias basadas en red que se utili- te de comunicar datos en un sistema distribuido que eje-
zan para las aplicaciones de comercio electronico. Antes cuta el protocolo TCP/IP.
de describirlas merece la pena decir que muchas tecno-
logias antiguas todavia se utilizan para este tip0 de apli- 28.6.2. Objetos distribuidos
cacion; el mejor ejemplo es el uso de la tecnologia de
bases de datos relacionales para proporcionar almace- iQue es un objeto
nes de datos a gran escala. distribuido?
CORBA. Esta es la tecnologia de objetos distribui- el formulario, y lleva a cab0 la funcionalidad asociada
dos mas sofisticada. Fue desarrollada por un con- a1 formulario; por ejemplo, recuperando 10s datos soli-
sorcio de compafiias informaticas, clientes y citados en el formulario. La programacion CGI se pue-
compafiias de software. La caracteristica mas impor- de llevar a cab0 en varios lenguajes de programacion,
tante del enfoque CORBA es que es multilenguaje, aunque el lenguaje seleccionado ha sido Perl, lenguaje
donde 10s programadores pueden utilizar diferentes de procesamiento de cadenas, existen otros entre 10s que
lenguajes de programacion para enviar mensajes a se incluyen, por ejemplo, Java y C++, que contienen 10s
objetos CORBA: las interfaces CORBA existen para servicios para el procesamiento CGI. Recientemente 10s
lenguajes tales como Java, FORTRAN, LISP, Ada y que desarrollan Java han proporcionado a 10s progra-
Smalltalk. CORBA esta a1 principio de su desarro- madores el servicio de utilizar Java para este tip0 de
110, sin embargo, amenaza con convertirse en la tec- programacion que utiliza la tecnologia conocida como
nologia dominante para objetos distribuidos. servlets. Estos trozos pequefios de codigo Java son inser-
La principal ventaja de 10s objetos distribuidos sobre tados en un servidor de Web y se ejecutan cuando ocu-
la de 10s sockets es el hecho de que como abarca ente- rre un suceso, como enviar un formulario. Los servlets
ramente el paradigma de orientacion a objetos se pue- ofrecen un alto grado de portabilidad sobre otros len-
de emplear 10s mismos mCtodos de analisis y disefio que guajes de programacion.
se utilizan para la tecnologia de objetos convencional.
28.6.5. Contenido ejecutable
28.6.3. Espacios Este es el tCrmino que se aplica a la inclusion en una pigi-
Esta es una tecnologia que se encuentra en un nivel de na Web de un programa que se ejecuta cuando la pagina
abstraction incluso mas alto que 10s objetos distribui- es recuperada por un navegador. Este programa puede
dos. Fue desarrollada por David Gelemter, un profesor llevar a cab0 un numero diverso de funciones entre las
de la Universidad de Yale. La tecnologia de espacios que se incluyen la animation y la presentacion de un for-
concibe un sistema distribuido en base a un gran alma- mulario a1 usuario para insertar datos. Existen varias tec-
cCn de datos persistentes donde las computadoras de un nologias que proporcionan servicios para insertar
sistema distribuido puede leer o escribir. No concibe el contenido ejecutable en una pagina Web. Aqui se inclu-
sistema distribuido como una serie de programas que yen applets, Active X y Javascript. Un applet es un pro-
pasan mensajes a 10s demas utilizando un mecanismo grams escrito en Java que interachia con una pigina Web.
como 10s sockets, o como una serie de objetos distri- Lo importante a sefialar de esta tecnologia es que es por-
buidos que se comunican utilizando mCtodos. Por el tatil: el cddigo Java se puede mover facilmente desde un
contrario, la tecnologia de espacios conlleva procesos sistema operativo a otro, per0 es potencialmente insegu-
como escribir, leer o copiar datos a partir de un alma- ro. La raz6n de por quC 10s applets son inseguros es que
cCn persistente. Un programador que utiliza esta tecno- se pueden utilizar como medio de transmision de virus y
logia no se preocupa por detalles como donde estan otros mecanismos de acceso a una computadora. Cuan-
almacenados 10s datos, quC proceso va a recoger 10s do una pagina de navegador que contiene un applet es
datos y cuando 10s va a recoger. descargada por un navegador, es lo mismo que cargar un
Esta tecnologia se encuentra solo a1 principio, aun- programa en la computadora cliente que ejecuta el nave-
que las implementaciones llevan ya disponibles duran- gador. Afortunadamente 10s disefiadores de Java desa-
te algun tiempo para lenguajes como C y C++; sin rrollaron el lenguaje de tal manera que es inmensamente
embargo, la irnplementacion de la tecnologia dentro de dificil escribir applets que provoquen violaciones en la
Java como Javaspaces deberia asegurar que cada vez se seguridad. Desafortunadamente la solucion que se adop-
utilizara mas para las aplicaciones principales. t6 evita acceder a 10s recursos de una computadora clien-
te o ejecutar otro programa en la computadora. Aunque
se han hecho muchas mejoras en 10s applets que permi-
28.6.4. CGI ten un acceso limitado, el modelo principal del uso de
applets esta restringido a este mod0 de ejecucion.
iPara que se utiliza CGI? Active X es otra tecnologia de contenido ejecutable
que fue desarrollada por Microsoft. De nuevo se trata
El tCrmino CGI (Common Gateway Interface) signifi- de un codigo de programa insertado en una pagina Web;
ca Interfaz comun de pasarela. Es la interfaz con el ser- la diferencia principal entre esta tecnologia y 10s applets
vidor Web a1 cual se puede acceder mediante 10s es el hecho de que estos trozos de codigo se pueden
programas que se ejecutan en el servidor. Gran parte de escribir en diferentes lenguajes como Visual Basic y
la interactividad asociada a las paginas Web se imple- C++. Esta forma de contenido ejecutable tambien sufre
menta programando el acceso a la CGI. Por ejemplo, de posibles problemas de seguridad.
cuando el usuario de un navegador accede a una pigi- Javascript es un lenguaje de programacion interpre-
na que contiene un formulario, Cste lo rellena y lo envia tad0 y sencillo que se inserta directamente en una pagi-
a1 servidor Web, programa que accede a1 CGI, procesa na Web. Se diferencia de las soluciones de Active X y
503
I N G E N I E R ~ ADEL SOFTWARE. UN ENFOQUE PRACTICO
applets en que el c6digo fuente de cualquier programa Paquetes de seguridad. Estos son paquetes que moni-
de guiones de Java se integra en una pigina Web en vez torizan el trhfico dentro de un sistema distribuido y
de en el c6digo de objetos como ocurre con 10s applets avisan a1 administrador de sistemas de la aparici6n
y Active X . Javascript es un lenguaje sencillo que se de cualquier violaci6n posible en la seguridad. Por
utiliza para una programaci6n relativamente a bajo nivel. ejemplo, el hecho de que alguien intente entrar en un
sistema con una contrasefia sin reconocer.
28.6.6. Paquetes clientelservidor
Monitores de transacciones. Estos son paquetes de
Este tCrmino describe las colecciones de software que software que administran las transacciones que tie-
normalmente llevan a cab0 alg6n tip0 de procesamien- nen lugar dentro de un sistema distribuido y ase-
to de sistemas. A continuaci6n, se muestra un grupo de guran que se devuelvan 10s datos correctos como
ejemplos tipicos de paquetes de software: resultado de una transacci6n y en el orden correcto.
Paquetes de reproduccibn de datos. Este tip0 de soft- Muchas de las funciones de estos monitores tienen
ware realiza una transacci6n en la base de datos y la que ver con asegurar que 10s resultados correctos
aplica a un numero de bases de datos reproducidas, se devuelvan incluso en el entorno en donde
evitando asi acceder a estas bases de datos hasta que podrian aparecer errores de hardware o de trans-
estCn todas en sincronizaci6n. misi6n.
Antes de observar algunos de 10s principios del disefio ripidos (y caros). El proceso de asignar tales medios
que se utilizan en el desarrollo de sistemas distribuidos, normalmente tiene lugar despuCs de haber tomado deci-
particularmente de sistemas de comercio electr6nic0, siones sobre la potencia de procesamiento de distribu-
merece la pena reiterar lo que se ha sefialado anterior- ci6n en un sistema y, algunas veces, conlleva unas ligeras
mente: a nivel de anhlisis hay poca diferencia entre un iteraciones a1 final de la fase de diseiio.
sistema distribuido y un sistema local, y se basa en que
el modelo de anhlisis de un sistema no contendrh nin- 28.7.2. Mantenimiento de 10s datos mas usados
g6n dato de diseiio como el hecho de que tres compu- en un almacenamiento rapido
tadoras, y no una solo, estin llevando a cab0 alg6n
Este principio tambiCn es obvio. Requiere que el dise-
procesamiento. Esto significa que el desarrollador de
iiador examine 10s patrones de datos en un sistema y
un sistema distribuido se enfrentarh normalmente con
asegure que 10s datos a 10s que se accede frecuentemente
un modelo de objetos o un modelo funcional similar a1
se guarden en alg6n medio de almacenamiento rfipido.
que se mostr6 en las primeras partes de este libro; esta
descripci6n irh acompafiada de algunos de 10s tipos de En muchos sistemas tales datos pueden constituir no
mis del5 por 100 de 10s datos originales almacenados
computadoras y de hardware de redes que se van a uti-
en el sistema, y de esta manera permite utilizar con fre-
lizar. El proceso de diseiio implica transformar el mode-
cuencia las estrategias que conllevan el almacenamien-
lo de anilisis en alg6n modelo fisico que se implementa
to de estos datos dentro de la memoria principal.
en 10s elementos de hardware del sistema.
28.7.3. Mantenimiento de 10s datos cerca
de donde se utilizan
Este principio de disefio intenta reducir el tiempo que
Recuerde que durante el anblisis existe poca diferencia pasan 10s datos en medios lentos de transmisi6n. Muchos
entre una aplicacibn de comercio electrbnico de estos sistemas son en donde 10s usuarios acceden con
y una convencionol. frecuencia a un subconjunto de datos. Por ejemplo, un
sistema distribuido usado en una aplicaci6n bancaria
Es necesario que el disefiador de sistemas distribui- contendria bases de datos con datos de las cuentas de 10s
dos conozca una serie de principios de disefio. El resto clientes, en donde la mayor parte de las consultas a las
de esta secci6n muestra un esquema de 10s mismos. bases de datos de las sucursales las realizarh 10s clien-
tes de esa sucursal; entonces, si 10s datos de un sistema
bancario se distribuyen a 10s servidores de las sucursa-
28.7.1. Correspondencia del volumen de trans- les, y 10s datos asociados a 10s clientes de esa sucursal
misidn con 10s medios de transmisidn e s t h en esa sucursal, el resto de 10s datos podrian estar
Este es uno de 10s principios mis obvios. Esto signifi- en otros servidores con otras ubicaciones, y cualquier
ca que para un trhfico denso de datos en un sistema dis- consulta que se originara sobre 10s datos se tendria que
tribuido. se deberian utilizar medios de transmisi6n comunicar a travCs de lineas lentas de transmisi6n.
individuales de vacaciones deberian de estar cerca de buido y otro componente. El 6nico gasto que se requie-
10s datos que describen las reservas actuales de ese re para utilizar esta tCcnica es tiempo del procesador y
paquete. Ubicar por separado 10s datos en diferentes ser- la memoria necesaria para llevar a cab0 la compresi6n
vidores asegura que 10s medios de baja transmisi6n y en la computadora del emisor y la descompresi6n en la
muy cargados se cargaran incluso m8s. El disefiador de computadora del receptor.
un sistema distribuido debe asegurarse de que 10s datos
relacionados gracias a1 hecho de que se suelen recupe- 28.7.12. Diseiio para el fallo
rar juntos tendrin que residir lo mis cerca posible, pre-
feriblemente en el mismo servidor, o si no, y no de
manera tan preferible, en servidores conectados a tra- iPor que puede ser
vCs de medios de transmisi6n rapidos tales como 10s catastrofico un fallo de
hardware en un sistema de
medios utilizados en una red de Area local.
comerdo electronico?
es que una estrategia puede militar contra otra, mini- de datos duplicadas incrementa la latencia de un siste-
mizar la latencia y duplicar bases de datos pueden ser ma; como consecuencia, el diseiio de sistemas distri-
dos estrategias opuestas: incrementar el numero de bases buidos, mas que otra cosa, es un arte.
El increment0 masivo en la utilization publica de sis- Estas son entonces algunas de las intrusiones que pue-
temas distribuidos ha dado lugar a algunos problemas den tener lugar dentro de un sistema distribuido; estas
graves con la seguridad. Los sistemas distribuidos ante- intrusiones cada vez son mas frecuentes, ya que gran
riores se suelen localizar en un lugar fisico utilizando parte de la transmisi6n en 10s sistemas de comercio elec-
tecnologias tales como redes de area local. Dichos sis- tr6nico ocurren en una Internet publicamente accesible
temas estaban fisicamente aislados de 10s usuarios exter- que utiliza protocolos publicamente disponibles.
nos y como consecuencia la seguridad, aunque es un Una de las tareas mhs importantes del diseiiador de
problema, no era un problema enorme como lo es aho- sistemas distribuidos es diseiiar un sistema con el pro-
ra para 10s sistemas de comercio electr6nico a 10s que p6sito de minimizar la posibilidad de Cxito de las ins-
pueden acceder miembros de usuarios que emplean un trucciones de alto riesgo. Para poder llevarlo a cab0 se
navegador. necesita utilizar una serie de tecnologias. En la siguien-
A continuaci6n, se detallan algunas de las intrusio- te secci6n se hace una relaci6n detallada de estas tec-
nes tipicas en la seguridad que pueden ocurrir: nologias.
Un intruso monitoriza el trhfico de una linea de trans-
misi6n y recoge la informaci6n confidencial que
genera un usuario. Por ejemplo, el intruso podria leer
el nlimero, la fecha de caducidad y el nombre del iQue es la entriptation y
titular de una tarjeta de crCdito. Y, a continuaci61-1, por que es util?
puede utilizar esta informaci6n para realizar pedidos Encriptaci6n es el tCrmino que se utiliza para referirse
en Internet. a1 proceso de transformar datos o texto (texto en claro)
Un intruso podria entrar en un sistema distribuido, para ser ilegible; ademis, deberia resultar virtualmente
acceder a la base de datos y cambiar la informaci6n imposible que un intruso pueda descifrarlo. A conti-
de la misma. Por ejemplo, podria cambiar el balance nuacibn, se detalla el proceso de utilizaci6n de esta tec-
de una cuenta en un sistema bancario en la red. nologia:
1. La computadora emisora transforma el texto en
alguna forma ilegible; este proceso se conoce como
encriptaci6n.
Ahoro que Internet ya se est6 utilizando 2. Los datos encriptados entonces se envian a travCs de
para muchas mas oplicociones, la seguridod lineas de transmisi6n insegura.
se convierte en un problerno importonte.
3. La computadora receptora procesa el texto encrip-
tad0 y lo transforma a su forma original. Este pro-
Un intruso podria leer una transacci6n que pasa por ceso se conoce como desencriptaci6n.
alguna linea de transmisi6n y alterar 10s datos den- Se utilizan dos formas de encriptaci6n. La primera
tro de ella en beneficio propio. Por ejemplo, podria es la encriptaci6n simCtrica, donde un mensaje se trans-
alterar la instrucci6n de un cliente de un sistema ban- forma en una forma encriptada utilizando una cadena
cario en red para transferir 10s datos de una cuenta a conocida como clave: se aplica alguna transformaci6n
otra para que la cuenta del intruso sea la que tiene en el mensaje utilizando la clave. Entonces la clave se
lugar en la transferencia. comunica a1 receptor a travCs de algun medio seguro y
Un ex empleado contrariado de una compaiiia envia es utilizado por el receptor para llevar a cab0 la desen-
un programa a1 sistema distribuido de la compaiiia criptaci6n.
monopolizando el tiempo del procesador del sistema, La encriptaci6n simCtrica es eficiente per0 padece
pasando gradualmente de sewidor a sewidor hasta un problema importante: si un intruso descubre la cla-
que el sistema queda exhausto y acaba parandose. ve, podria descubrir facilmente el mensaje encripta-
Esta es una forma de ataque conocido como dene- do. La encriptaci6n de clave ptiblica es una soluci6n
gacion de ataque a1 sewicio. a este problema, donde se utilizan dos claves de
Un empleado contrariado de una compaiiia envia un encriptaci6n: una conocida como clave publica y otra
programa a un sistema distribuido el cual borra 10s como clave privada. Un usuario que desea recibir men-
archivos importantes del sistema. sajes encriptados publicara su clave publica. Otros
INGENIERIA DEL SOFTWARE. UN ENFOQUE PRACTICO
usuarios que deseen comunicarse con el usuario uti- es la que se utiliza normalmente para esto. Conside-
lizarhn esta clave para encriptar cualquier mensaje; remos una forma de llevar a cab0 este proceso: dos
10s mensajes entonces son desencriptados mediante usuarios de computadoras A y B quieren comunicar-
la clave privada cuando 10s recibe el usuario original. se, y A quiere asegurarse de que se est6 comunicando
Esta forma de encriptaci6n tiene la ventaja principal con B. Para poder hacer esto, B necesita tener una cla-
de que la gesti6n de claves es sencilla: la clave pri- ve p6blica y una privada, y tener conocimiento de cu61
vada nunca se envia a nadie. Un intruso que monito- es la clave p6blica. A envia un mensaje a B con un tex-
riza 10s datos encriptados que viajan por alg6n medio to en el que A pide a B una encriptaci6n utilizando su
de transmisi6n es incapaz de decodificar ning6n men- clave privada. Este texto entonces es encriptado por B
saje puesto que no tienen acceso posible a la clave y devuelto a A quien lo descifra utilizando la clave
privada. El inconveniente principal de esta forma de p6blica que B le ha proporcionado. Si el mensaje es el
encriptaci6n es que se necesita una gran cantidad de mismo que el que se envi6, B es entonces quien dice
recursos para llevar a cab0 el proceso de desencrip- que es, pero, si no lo es, B entonces no ha demostra-
taci6n. Debido a esta clave p6blica, 10s sistemas nor- do su identidad. Este esquema comparte todas las ven-
malmente se limitan a envios cortos de texto o a un tajas de cualquier mCtodo de clave p6blica en donde
texto pensado para ser altamente seguro. TambiCn se la clave privada es segura; sin embargo, puede ser ata-
utiliza para la autenticacibn, la cual utiliza una tCcni- cad0 por cualquiera que desee establecer falta de con-
ca conocida como firmas digitales, que se describen fianza entre un emisor y un receptor. Esto se puede
en la secci6n siguiente. hacer alterando el mensaje encriptado que se ha devuel-
La tecnologia principal que se utiliza en Internet to a1 emisor.
para la encriptaci6n simktrica es la capa de sockets
seguros (SSL). Esta es una tecnologia que se utiliza
para encriptar datos confidenciales tales como 10s 28.8.4. Certificaciones digitales
n6meros de las tarjetas de crkdito que viajan desde el
navegador a un servidor Web, o desde una aplicacidn Una certificaci6n digital es un documento electr6nico
a otra. que proporciona a1 usuario un alto de grado de confianza
con una organizaci6n o persona con la que estCn tra-
tando. Se pueden utilizar cuatro tipos de certificacio-
nes:
28.8.2. Funciones d e compendio d e mensajes
Certificaciones de una autoridad de certificacih
Una funci6n de compendio de mensajes es un algorit- Una autoridad de certificaci6n es una organizaci6n
mo que genera un numero grande -normalmente entre que proporciona certificados digitales, tales como
128 y 256 bits de longitud- que representa un com- estas dos organizaciones: Canada Post Corporation
pendio o resumen de 10s caracteres de un mensaje. Tie- y 10s senicios postales de US.
ne la propiedad de que si el mensaje cambia y se vuelve
a aplicar el algoritrno, el numero entonces cambia. Exis- Certificaciones del servidor. Estas certificaciones
ten muchas utilizaciones de las funciones de compen- contienen datos tales como la clave p6blica del ser-
dio de mensajes. Un uso corntin es detectar 10s cambios vidor, el nombre de la organizaci6n que posee el ser-
en un mensaje, por ejemplo, el hecho de que una tran- vidor y la direcci6n del senidor en Internet.
sacci6n financiera se haya modificado en la transmisi6n Certificaciones personales. Estas son las certifica-
con objeto de favorecer a1 que modifica. Antes de enviar ciones asociadas a un individuo. Contendrh infor-
un mensaje se aplica la funci6n de compendio de men- maci6n fisica tal como la direcci6n del individuo
saje y se forma un ncmero grande. El mensaje enton- junto con la informaci6n relacionada con la compu-
ces se envia con el numero aiiadido a1 final. La funci6n tadora como la clave pcblica y la direcci6n de correo
de compendio de mensaje se aplica en el receptor y el electr6nico de la persona.
n6mero resultante se compara con el que se envi6. Si Certijicaciones del editor de software. Estos son cer-
10s dos son iguales el mensaje entonces no se ha modi-
tificados que proporcionan confianza en que el soft-
ficado: si no son iguales el mensaje ha sido modificado
ware ha sido producido por una compafiia de
durante la transmisi6n.
software especifica.
Como ejemplo para el funcionamiento de estas cer-
tificaciones tomemos el de las certificaciones del seni-
28.8.3. Firmas digitales
dor. Un senidor que utiliza la capa de sockets seguros
Una firma digital, como su propio nombre sugiere, es (SSL) debe de tener un certificado SSL. Este certifica-
una forma de que el emisor de un mensaje se pueda do contiene una clave pliblica. Cuando un navegador se
identificar con el receptor de tal manera que el recep- conecta con el senidor se utiliza entonces esta clave
tor pueda confiar en que el mensaje fue enviado real- publica para codificar la interaction inicial entre el ser-
mente por el emisor. La encriptacibn de clave p6blica vidor y el navegador.
CAPfTULO 28 INGENIERIA DEL S O F T W A R E DEL C O M E R C I O E L E C T R 6 N I C O CLIENTEISERVIDOR
capacidades del semidor no tuvieran necesidad de ver- el objeto a1 cual se habia destinado el mensaje, para invo-
se aumentadas. car su mCtodo, para pasar a1 objeto 10s datos adecuados,
Habria que tener en cuenta que a medida que madu- y para transferir 10s datos resultantes de vuelta a1 obje-
ra el uso de la arquitectura cliente/semidor, la tenden- to que generase el mensaje inicialmente.
cia es a ubicar la 16gica de la aplicacion volBtil en el
semidor. Esto simplifica la implantacidn de actualiza-
ciones de software cuando se hacen cambios en la 16gi-
ca de la aplicaci6n [PAU95]. Un ORB capacito o un objeto que resida en un cliente
para enviar un rnensaje o un rnetodo que estk
28.9.4. Enlazado de componentes de software CIS encopsulodo en otro objeto que resido en un servidor.
Se utiliza toda una gama de mecanismos distintos para En el Capitulo 27 se estudiaron 10s tres estindares
enlazar 10s distintos componentes de la arquitectura mBs utilizados que implementan una filosofia de redis-
clientelsemidor. Estos mecanismos estin incluidos en tribuci6n de objetos: CORBA, COM y JavaBeans. COR-
la estructura de la red y del sistema operativo, y resul- BA se utilizari para ilustrar la utilizaci6n del software
tan transparentes para el usuario final situado en el cen- intermedio ORB.
tro cliente. Los tipos mis comunes de mecanismos de
enlazado son:
Tuberias (pipes): se utilizan mucho en 10s sistemas
basados en UNIX; las tuberias permiten la mensaje-
ria entre distintas mBquinas que funcionen con dis- Lo inforrnocibn m 4 ociuolizoda sobre estandores de
tintos sistemas operativos. componentes se puede encontror en lo pagina
Llamadas a procedimientos remotos: permiten que www.omg.com, www.microsoft.com/C0M, y
java.sun.com/beans
un proceso invoque la ejecuci6n de otro proceso o
mddulo que resida en una miquina distinta. En la Figura 28.6 se muestra la estructura bisica de
una arquitectura CORBA. Cuando se implementa COR-
iCu6les son las opciones BA en un sistema cliente/semidor, 10s objetos y las cla-
disponibles para vincular ses de objetos (Capitulo 20) tanto en el cliente como en
componentes? el servidor se definen utilizando un lenguaje de des-
cripci6n de interfaces (LDI'), un lenguaje declarative
Inreraccidn SQL clienrelse~vidor:se utiliza para pasar que permite que el ingeniero del software defina obje-
solicitudes SQL y datos asociados de un componente tos, atributos, mCtodos y 10s mensajes que se requieren
(tipicamente situado en el cliente) a otro componente para invocarlos. Con objeto de admitir una solicitud para
(tipicamenteel SGBD del servidor).Este mecanismo un mCtodo residente en el servidor procedente de un
estB limitado linicamente a las aplicaciones SGBDR. objeto residente en el cliente, se crean stubs LDI en el
Conexiones (sockets), se tratan en la Secci6n 28.6. cliente y en el semidor. Estos stubs proporcionan la pasa-
rela a travCs de la cual se admiten las solicitudes de obje-
AdemBs, las implementaciones orientadas a objetos
tos a travCs del sistema CIS.
de componentes de software CIS dan lugar a una win-
Dado que las solicitudes de objetos a travCs de la red
culaci6n~que haga uso de un distribuidor de solicitu-
se producen en el momento de la ejecucion, es preciso
des de objetos. Este enfoque se describiri en la secci6n
establecer un mecanismo para almacenar una descrip-
siguiente.
ci6n del objeto de tal mod0 que la informacidn perti-
nente acerca del objeto y de su ubicaci6n estC disponible
28.9.5. Software intermedio (middleware) cuando sea necesario. El repositorio de interfaz hace
y arquitecturas de agente de solicitud precisamente esto.
de objetos
Los componentes de software CIS descritos en las sec-
ciones anteriores estin implementadas mediante obje-
tos que deben de ser capaces de interactuar entre si en
el seno de una sola miquina (bien sea cliente o semidor)
o a travCs de la red. Un agente de distribuci6n de obje-
tos (ORB) es un componente de software intermedio que
capacita a un objeto que resida en un cliente para enviar Cuando una aplicaci6n cliente necesita invocar un
un mensaje a un mCtodo que estC encapsulado en otro mCtodo contenido en el seno de un objeto residente en
objeto que resida en un servidor. En esencia, el ORB alguna otra parte del sistema, CORBA utiliza una invo-
intercepta el mensaje y maneja todas las actividades de
comunicaci6n y de coordinaci6n necesarias para hallar En ingles IDL (Interface Description Language).
511
I N G E N I E R ~ ADEL SOFTWARE. UN ENFOQUE P R A C T I C O
cacion dinamica para (I) obtener la informaci6n perti- dentes del cliente, y lleva a cab0 otras muchas tareas
.nente acerca del objeto deseado a partir del dep6sito de de gesti6n de objetos [ORF99]. En el servidor unos
interfaz; (2) crear una estructura de datos con parime- stubs LDI, similares a 10s definidos en la maquina clien-
tros que habra que pasar a1 objeto; (3) crear una solici- te, se emplean como interfaz con la implementaci6n
tud para el objeto; y (4) invocar la solicitud. A del objeto real que reside en la ubicaci6n del servidor.
continuaci6n, se pasa la solicitud a1 nucleo ORB -una El desarrollo del software para sistemas CIS moder-
parte dependiente de implementaci6n del sistema ope- nos esta orientado a objetos. Empleando la arquitectu-
rativo en red que gestione las solicitudes- y, a conti- ra CORBA descrita brevemente en esta seccibn, 10s
nuaci611, se satisface la solicitud. desarrolladores de software pueden crear un entorno en
La solicitud se pasa a travCs del ndcleo y es proce- el cual se pueden reutilizar 10s objetos a lo largo y ancho
sada por el servidor. En la ubicaci6n del servidor, un de una red muy amplia. Para mas informaci6n acerca
adaptador de objetos almacena la informaci6n de cla- de CORBA y de su impacto general sobre la ingenieria
ses y de objetos en un dep6sito de interfaz residente en del software para sistemas CIS, el lector interesado pue-
el servidor, admite y gestiona las solicitudes proce- de consultar [HOQ99] y [SIE99].
y de desarrollo propio.
Los sistemas cliente servidor se desarrollan emplean-
do las actividades de ingenieria del software clasicas
-el analisis, diseiio, construcci6n y depuraci6n- a
medida que evoluciona el sistema a partir de un con-
junto de requisitos de negocios generales para llegar a
ser una colecci6n de componentes de software ya vali-
dados que han sido implementados en maquinas clien-
te y servidor. FIGURA 28.6. La arquitectura basica CORBA.
La actividad de modelado de requisitos para 10s sistemas Dado que el modelado de analisis evita la especi-
CIS difiere poco de 10s mCtodos de modelado de andisis ficaci6n de detalles de implementacibn, s61o cuando
que se aplicaban para la arquitectura de computadoras m b se haga la transici6n a1 disefio se consideraran 10s
convencionales. Consiguientemente, 10s principios bisi- problemas asociados a la asignaci6n de software a1
cos de andisis descritos en el Capitulo 11 y 10s mCtodos cliente y a1 servidor? Sin embargo, dado que se apli-
de modelado de andisis presentados en 10s Capitulos 12 ca un enfoque evolutivo de la ingenieria del softwa-
y 2 1 son igualmente aplicables a1 software CIS. Se debe- re para 10s sistemas CIS, las decisiones de imple-
ria destacar, sin embargo, que dado que muchos sistemas mentacion acerca del enfoque CIS global (por ejem-
CIS modernos hacen uso de componentes reutilizables, plo, cliente pesado frente a servidor pesado) se podran
tambiCn se aplican las actividades de cualificaci6n aso- hacer durante las primeras iteraciones de analisis y
ciadas a la ISBC (Capitulo 27). diseiio.
Cuando se esta desarrollando un software para su imple- n'sticas. Sin embargo, tambien se pueden adoptar meto-
mentaci6n empleando una arquitectura de computado- dos convencionales (Capitulos 12 y 16).
ras concreta, el enfoque de disefio debe de considerar
el entorno especifico de construcci6n. En esencia, el 28.12.1. Diseiio arquitect6nico para sistemas
disefio deberia de personalizarse para adecuarlo a la
clientelservidor
arquitectura del hardware.
Cuando se disefia software para su implementaci6n El disefio arquitectonico de un sistema cliente senidor
empleando una arquitectura cliente/senidor, el enfoque se suele caracterizar como un estilo de comunicaci6n
de disefio debe de ser ccpersonalizado>> para adecuarlo de procesos. Bass y sus colegas [BAS981 describe esta
a 10s problemas siguientes: arquitectura de la siguiente manera:
El disefio de datos (Capitulol4) domina el proceso El objetivo es lograr la calidad de la escalabilidad. Un ser-
vidor existe para proporcionar datos para uno o m8s clientes,
de disefio. Para utilizar efectivarnente las capacida- que suelen estar distribuidos en una red. El cliente origina una
des de un sistema de gestion de bases de datos rela- llamada a1 servidor, el cual trabaja sincronamente o asincro-
cional (SGBDR) o un sistema de gesti6n de bases de namente, para servir a la solicitud del cliente. Si el servidor
datos orientado a objetos (SGBDOO) el disefio de funciona sincronamente, devuelve el control a1 cliente a1 mis-
10s datos pasa a ser todavia mis significativo que en mo tiempo que devuelve 10s datos. Si el servidor trabaja asin-
cronamente, devuelve solo 10s datos a1 cliente (el que tiene su
las aplicaciones convencionales. propio hilo de control).
Para adrnitir 10s componentes CYD proporcionados por tos de negocios se lleva a cab0 empleando 10s meto-
proveedores diferentes y componentes de desarrollo pro- dos de ingenieria de la informaci6n descritos en el
pio que pueden haber sido implementadosutilizando dife- Capitulo 10. La notaci6n de modelado del analisis
rentes tecnologias, se debe disefiar la arquitectura ORB convencional (Capitulo 12), tal como DER, se podra
para lograr interoperabilidad entres componentes. Para utilizar para definir objetos de negocios, per0 es pre-
poderlo llevar a cab0 CORBA utiliza un concept0 puente. ciso establecer un dep6sito de base de datos para cap-
Supongamos que un cliente se haya implementado turar la informaci6n adicional que no se puede
utilizando un protocolo ORB X y que el servidor se haya documentar por completo empleando una notaci6n
implementado utilizando el protocolo ORB Y. Ambos grafica tal como un DER.
protocolos son conforme CORBA, per0 debido a las En este dep6sit0, se define un objeto de negocio como
diferencias de implementation intemas, se deben comu- una information que es visible para 10s compradores y
nicar con un ccpuente,, que proporcione un mecanismo usuarios del sistema, per0 no para quienes lo imple-
para la traducci6n entre protocolos internos [BAS98]. mentan, por ejemplo, un libro en el caso de estudio de
El puente traduce mensajes de manera que el cliente y ventas de libros. Esta informaci6n que se implementa
el servidor se puedan comunicar suavemente. utilizando una base de datos relacional, se puede man-
tener en un dep6sito de disefio. La siguiente informa-
28.12.2. Enfoques de diseiio convencionales para ci6n de disefio se recoge para la base de datos
clientelservidor [POR94]:
software de aplicaciones
En 10s sistemas clientelservidor, 10s diagramas de flujo Entidades: se identifican en el DER del nuevo sis-
(Capitulos 12 y 14) se pueden utilizar para establecer tema.
el Bmbito del sistema, para identificar las funciones de Archives: que implementan las entidades identifica-
nivel superior y las Areas de datos tematicas (almace- das en el DER.
nes de datos), y para permitir la descomposici6n de fun- Relacidn entre campo y archivo: establece la dispo-
ciones de nivel superior. Apartandose del enfoque DFD sici6n de 10s archivos a1 identificar 10s campos que
tradicional, sin embargo, la descomposici6n se detiene estan incluidos en cada archivo.
en el nivel de un proceso de negocio elemental, en lugar Campos: define 10s campos del diseiio (el dicciona-
de proseguir hasta el nivel de procesos at6micos. rio de datos).
En el context0 CIS, se puede definir un proceso ele-
mental de negocios (PEN) como un cierto conjunto de Relaciones entre archivos: identifican 10s archivos
tareas que se llevan a cab0 sin interrupci6n por parte relacionados que se pueden unir para crear vistas
de un usuario en 10s centros cliente. Estas tareas o bien 16gicas o consultas.
se realizan en su totalidad, o bien no se realizan en Validacidn de relaciones: identifica el tip0 de rela-
absoluto. ciones entre archivos o entre archivos y campos que
El diagrama entidad relacion adopta tambiCn un se utilicen par la validaci6n.
papel miis importante. Sigue utilizandose para des- Tipos de campo: se utiliza para permitir la herencia
componer las areas de datos tematicas (de almacenes de caracteristicasde campos procedentes de superen-
de datos) de 10s DFD con objeto de establecer una laces del campo (por ejemplo, fecha, texto, numero,
visi6n de alto nivel de la base de datos que haya que valor, precio).
implementar empleando un SGBDR. Su nuevo papel
consiste en proporcionar la estructura para definir obje-
Tipo de datos: las caracteristicas de 10s datos conte-
nidos en el campo.
tos de negocios de alto nivel (Secci6n 28.4.3).
En lugar de servir como herramientas para una des- Tipo de archivo: se utiliza para identificar cualquiera
composici6n funcional, el diagrama de estructuras se de las ubicaciones del archivo.
utiliza ahora como diagrama de ensamblaje, con obje- Funcidn del campo: clave, clave extema, atributo,
to de mostrar 10s componentes implicados en la solu- campo virtual, campo derivado, etc.
ci6n de algun procedimiento de negocios elemental. Valorespermitidos: identifica 10s valores permitidos
Estos componentes, que constan de objetos de inter- para 10s campos de tip0 de estado.
faz, objetos de aplicacion y objetos de bases de datos,
establecen la forma en la que se van a procesar 10s Reglas de negocios: reglas para editar, calcular carn-
datos. pos derivados, etc.
A medida que las arquitecturas CIS se han ido hacien- que van mas all6 del alcance de este libro. El lector inte-
do mas frecuentes, la tendencia hacia una gesti6n de resado puede consultar [BR091], [BER92], [VAS93] y
datos distribuida se ha visto acelerada. En 10s sistemas [ORF99] para una descripci6n m6s extensa.
CIS que implementan este enfoque, el componente de
gesti6n de datos reside tanto en el cliente como en el ser-
vidor. En el context0 del diseiio de bases de datos, un interfaz
problema fundamental es la distribuci6n de datos. Esto (Componentes)
es, jc6m0 se distribuyen 10s datos entre el cliente y el
servidor y c6mo se dispersan entre 10s nudos de la red? Asociacion
Un sistema de gestion de bases de datos relacional
(SGBDR) hace facil el acceso a datos distribuidos median-
I
te el uso del lenguaje de consulta estructurado (SQL). La Objetos de
ventaja de SQL en una estructura CIS es que ccno requie- base d e datos
re navegar,, [BER92]. En un SGBDR, 10s tipos de datos (Componentes)
se especifican empleando SQL, per0 no se requiere infor-
macion de navegaci6n. Por supuesto, la implication de
esto es que SGBDR debe ser suficientemente sofisticado FIGURA 28.7. Notacion de diagrama de estructura
para mantener la ubicacion de todos 10s datos y tiene que para componentes CIS.
ser capaz de definir la mejor ruta hasta ella. En sistemas
de bases de datos menos sofisticados, una solicitud de 28.12.4. Visidn general d e un enfoque d e disefio
datos debe indicar a quC hay que acceder y donde se
encuentra. Si el software de aplicaci6n debe mantener la Porter [POR95] sugiere un conjunto de pasos para dise-
informaci6n de navegacibn, entonces la gestion de datos iiar un proceso elemental de negocio que combine ele-
se vuelve mucho mas complicada por 10s sistemas CIS. mentos de diseiio convencional con elementos de
diseiio orientado a objetos. Se supone que se ha desa-
~ Q u optiones
e existen para rrollado un modelo de requisitos que defina 10s obje-
distribuir datos dentro de un tos de negocio, y que se ha refinado ya antes de
sistema CIS? comenzar el diseiio de 10s procesos elementales de
negocio. Entonces, se utilizan 10s pasos siguientes para
Es preciso tener en cuenta que tambiCn estan dispo- derivar el diseiio:
nibles para el diseiiador [BER92] otras tCcnicas para la
distribuci6n y gesti6n de datos: 1. Para cada proceso elemental de negocio, se identifi-
can 10s archivos creados, actualizados, borrados o
Extraccion manual. Se permite a1 usuario copiar referenciados
manualmente 10s datos adecuados de un servidor a un 2. Se utilizan 10s archivos identificados en el paso 1
cliente. Este enfoque resulta util cuando el usuario como base para definir componentes u objetos.
requiere unos datos estaticos y cuando se puede dejar 3. Para cada componente, se recuperan las reglas de
el control de la estaci6n en manos del usuario. negocio y otra informaci6n de objetos de negocio
Instantanea. Esta tecnica automatiza la extracci6n que se haya determinado para el archivo relevante.
manual a1 especificar una ccinstantanean de 10s datos que 4. Se determinan las reglas que son relevantes para el
deberan de transferirse desde un cliente hasta un servi- proceso y se descomponen las reglas hasta llegar a1
dor a intervalos predefinidos. Este enfoque es util para nivel de mCtodos.
distribuir unos datos relativamente estaticos que sola-
mente requieran actualizaciones infrecuentes. 5. Segun sea necesario, se definen 10s componentes
adicionales que se requieren para implementar 10s
Duplicacion. Se puede utilizar esta tecnica cuando mCtodos.
es preciso mantener multiples copias de 10s datos en dis-
tintos lugares (por ejemplo, servidores distintos o clien- Porter [POR95] sugiere una notacion especializada
tes y servidores). En este caso, el nivel de complejidad de diagramas de estructura (Fig. 28.7) para representar
se incrementa porque la consistencia de 10s datos, las la estructura de componentes de un proceso elemental
actualizaciones, la seguridad y el procesamiento deben de negocio. Sin embargo, se utiliza una simbologia dife-
de coordinarse entre 10s multiples lugares. rente para que el diagrama se ajuste a la naturaleza orien-
Fragrnentacion. En este enfoque, la base de datos tada a objetos del software CIS. En la figura, se
del sistema se fragmenta entre multiples maquinas. Aun- encuentran cinco simbolos distintos:
que resulta intrigante en teoria, la fragmentaci6n es Objeto de interfaz. Este tipo de componente, que
excepcionalmente dificil de implementar y hasta el tambiCn se denomina componente de interaccidnlpre-
momento no es frecuente encontrarla. sentacidn con el usuario, se construye tipicamente en
El diseiio de bases de datos, y mas especificamente, un 6nico archivo o bien otros archivos relacionados que
el diseiio de bases de datos para sistemas CIS son temas se hayan unido mediante una consulta. Incluye mCto-
I N G E N I E R ~ ADEL SOFTWARE. UN ENFOQUE PRACTICO
dos para dar formato a la interfaz IGU y tambiCn la Asociacion de datos. Cuando un objeto invoca a otro
16gica de aplicaci6n residente en el cliente, junto con objeto independiente, se pasa un mensaje entre dos obje-
10s controles de la interfaz. TambiCn incluye sentencias tos. El simbolo de asociaci6n de datos se utiliza para
incrustadas de SQL, que especifican el procesamiento denotar este hecho.
de la base de datos efectuado en el archivo primario con Asociacion de control. Cuando un objeto invoca a
respecto a1 cual se haya construido la interfaz. Si la otro objeto independiente y no se pasan entre 10s dos
16gica de aplicaci6n asociada normalmente a un objeto objetos, se utiliza un simbolo de asociaci6n de control.
de interfaz se implementa en un sewidor, tipicamente
mediante el uso de herramientas de software interme-
dio, entonces la 16gica de aplicaci6n que funcione en el 28.12.5. Iteracion d e l disefio de procesos
servidor debera de identificarse como un objeto de apli- El repositorio de disefio (Secci6n 28.4.3), que se utili-
caci6n por separado. za para representar objetos de negocio, se emplea tam-
Objeto de base de datos. Este tip0 de componentes biCn para representar objetos de interfaz, de aplicacidn
se utiliza para identificar el procesamiento de bases de y de base de datos. Obs6wese que se han identificado
datos tal como la creacion o selecci6n de registros que las entidades siguientes:
estC basada en un archivo distinto del archivo primario Me'todos: describen c6mo hay que implementar una
en el cual se haya construido el objeto de interfaz. Es regla de negocio.
preciso tener en cuenta que si el archivo primario con Procesos elementales:definen 10s procesos elementa-
respecto a1 cual se construye el objeto de interfaz se pro- les de negocio identificados en el modelo de andisis.
cesa de manera distinta, entonces se puede utilizar un Enlace procesolcomponente: identifica a 10s com-
segundo conjunto de sentencias SQL para recuperar un
ponentes que forman la solucion de un proceso ele-
archivo en una secuencia alternativa. La tCcnica de pro-
cesamiento del segundo archivo deberia identificarse mental de negocio.
por separado en el diagrama de estructura, en forma de Componentes: describe 10s componentes mostrados
un objeto de base de datos por separado. en el diagrama de estructura.
Objeto de aplicacion. Es utilizado por un objeto de Enlace regla de negocios/componente: identifican a
interfaz, bien por un objeto de base de datos, y este com- 10s componentes que son significativos para la imple-
ponente sera invocado bien por un activador de una base mentaci6n de una determinada regla de negocio.
de datos, o por una llamada a procedimientos remotos. Si se implementa un repositorio utilizando un
TambiCn se puede emplear para identificar la 16gica de SGBDR, el diseiiador tendra acceso a una herramienta
negocios que normalmente se asocia a1 procesamiento de disefio muy fitil que proporciona informes que sir-
de interfaz que ha sido trasladado a1 servidor para su ven de ayuda tanto para la construcci6n como para el
funcionamiento. futuro mantenimiento del sistema CIS.
Aun cuando 10s sistemas cliente/semidor pueden adop- Las arquitecturas de agente de solicitud de objetos
tar uno o mas de 10s modelos de procesos de software simen de apoyo para 10s diseiios CIS en 10s cuales 10s
y muchos de 10s mCtodos de analisis, diseiio y com- objetos cliente envian mensajes a 10s objetos semidor.
probaci6n descritos anteriormente en este libro, las El estfindar CORBA hace uso de un lenguaje de defini-
caracteristicas de arquitecturas especiales de CIS requie- ci6n de interfaz, y 10s repositories de interfaz gestionan
ren una personalizaci6n del software de ingenieria del las solicitudes de objetos independientemente de su ubi-
software. En general, el modelo de proceso del software caci6n dentro de la red.
que se aplica a 10s sistemas CIS tiene una naturaleza evo- El analisis y el diseiio de sistemas clientelservidor
lutiva, y 10s mCtodos tkcnicos suelen tender a enfoques hacen uso de diagramas de flujo de datos y de enti-
orientados a objetos. El desarrolladordebe describir aque- dades y relaciones, diagramas de estructura modifi-
Uos objetos que se produzcan en la implementaci6n de 10s cados, y otras notaciones que se encuentran en el
componentes de interacci6n lrepresentaci6n con el usua- desarrollo de aplicaciones convencionales. Es preci-
rio, de base de datos y de aplicaci6n. Los objetos defi- so modificar las estrategias de comprobaci6n para ade-
nidos para estos componentes deberian asignarse bien cuarlas a las comprobaciones que examinan la
a la maquina, o bien a la mfiquina semidor, y se pue- comunicaci6n a travCs de la red y el juego entre el
den vincular a travCs de un distribuidor de solicitudes software que reside en el cliente y aquel que reside en
de objetos. el semidor.
CAP~TULO
28 I N G E N I E R I A DEL S O F T W A R E DEL C O M E R C I O E L E C T R ~ N I C OC L I E N T E I S E R V I D O R
[BAS981 Bass, L., P. Clemens y R. Kazman, Software Archi- [MOS99] Mosley, D., Client Server Software Testing on the
tecture in Practice, Addison-Wesley, 1998. Desk Top and the Web, Prentice-Hall, 1999.
[BER92] Berson, A., ClientlSenvr Architecture, McGraw- [MUS93] Musa, J., <<OperationalProfiles in Software Relia-
Hill, 1992. bility Engineering,,, IEEE Sofhvare, Marzo de 1993, pp.
14-32.
[BIN921 Binder, R., <<ACASE-based Systems Engineering
Approach to Client-Server Developmentr, CASE Trends, [ORF99] Orfali, R., D. Harkey y J. Edwards, Essential
1992. ClientlServer Survival Guide, 3.%d., Wiley, 1999.
[PAU95] L. G. Paul, c<Client/ServerDeployment,,, Compu-
[BIN951 Binder, R., <<Scenario-BasedTesting for Client Ser- terworld, 18 de Diciembre, 1995.
ver systems,,, Sofhvare Development, vo]. 3, n." 8, Agos-
to de 1995, pp. 43-49. [POR94] Porter, J., 0 - D E S Design Manual, Fairfield Uni-
versity, 1994.
[BR091] Brown, A.W., Object-Oriented Databases, [POR95] Porter, J., Synon Developer's Guide, McGraw-Hill,
McGraw-Hill, 199 1. 1995.
[FAR931 Farley, K.J., <<SoftwareTesting For Windows Deve- [REE97] Reece, G., JBDC and Java, O'Reilly, 1997.
lopers,,, Data Based Advisor, Noviembre de 1993, pp. 45- [SIE99] Siegel, J., CORBA 3 Fundamentals and Program-
46, 50-52. ming, Wiley, 1999.
[HOQ99] Hoque, R., CORBA for Real Programmers, Aca- [VAS93] Vaskevitch, D., ClientlServer Strategies, IDG
demic Press/Morgan Kaufmann, 1999. Books. 1993.
28.1. Empleando publicaciones comerciales o recursos e Inter- Wide Web, y se pueden hacer pedidos a travCs de correo elec-
net de informaci6n de fondo, defina un conjunto de criterios trbnico, mediante el sitio Web y tarnbiCn por telCfono o fax.
para evaluar herramientas para la ingenieria del software CIS. Se construiri un sistema cliente/servidor para prestar su apo-
28.2. Sugiera cinco aplicaciones en las cuales un servidor pesa- yo a1 procesamiento de pedidos en el sitio de la compaiiia.
do parezca una estrategia de diseiio adecuada. Defina un conjunto de objetos de alto nivel que fueran nece-
sarios para el sistema de procesamiento de pedidos, y organi-
28.3. Sugiera cinco aplicaciones en las cuales un cliente pesa- ce estos objetos en tres categorias de componentes: la
do parezca ser una estrategia de diseiio adecuada. presentaci6n con el usuario, la base de datos y la aplicaci6n.
28.4. Efechie una investigacidn sobre 10s dltimos delitos come- 28.8. Formule reglas de negocio para establecer c u h d o se pue-
tidos en Internet y describa cdmo la tecnologia de seguridad de efectuar un envio si el pago se efechia mediante tarjeta de
apuntada en este capitulo podria haberla evitado. crCdito, con respecto al sistema descrito en el Problema 28.7.
28.5. Describa cdmo se podria estructurar un sistema de reser- Aiiada reglas adicionales si el pago se efechia mediante cheque.
vas en unas lineas aCreas como un sistema clientelservidor. 28.9. Desarrolle un diagrarna de transici6n de estados (Capi-
28.6. Investigue 10s dltimos avances en software para traba- tulo 12) que defina 10s sucesos y estados que resultan'an visi-
jo en grupo y desarrolle una breve presentaci6n para la clase. b l e ~para un dependiente de entrada de pedidos que trabajase
El profesor puede asignar una funci6n especifica a 10s distin- en un PC cliente en la divisi6n de ventas por catilogo (Pro-
tos participantes. blema 28.7).
28.7. Una compaiiia va a establecer una nueva divisi6n de 28.10.0frezca ejemplos de tres o cuatro mensajes que pudie-
ventas por catilogo para vender mercancias de uso frecuente ran dar lugar a una solicitud de un mCtodo de cliente mante-
y en exteriores. El cadogo electrbnico se publicari en la World nido en el servidor.
Aun cuando 10s mCtodos bisicos de anilisis y diseiio para nahan (Developing Client-Server Applications, IDG Books
sistemas cliente/servidor son bastante parecidos a 10s siste- Worldwide, 1999) abarca un amplio abanico de temas CIS.
mas 00 convencionales, se requieren tCcnicas y conoci- A un nivel m i s sofisticado, Orfali y sus colaboradores
mientos especializados. Lowe y Helda han escrito unas [ORF99], y Linthicum (Guide to ClientlServer and Intranet
introducciones valiosas a 10s conceptos bdsicos (ClientlSer- Development, Wiley, 1997) proporcionan las lineas genera-
ver Computing for Dummies, 3.%d., IDG Books Worldwide, les detalladas para aplicaciones CIS. Berson (ClientlServer
1999), al igual que Zantinge y Adriaans (Managing ClientlSer- Architecture, 2.+d., McGraw-Hill, 1996) trata temas de arqui-
ver, Addison-Wesley, 1997). En un nivel intermedio, McCla- tectura y componentes.
I N G E N I E R ~ ADEL SOFTWARE. UN ENFOQUE P R ~ C T I C O
En 10s ultimos aiios las computadoras de redes se han con- dimiento del software y 10s aplican a la arquitectura y al dise-
vertido en un tema tecnol6gico candente (y una estrategia anies- fio de los sistemas distribuidos. Heinckiens y Loomies (Buil-
gada de negocios). Sinclair y Merkow (Thin Clients Clearly ding Scalable Database Applications: Object-Oriented
Explained, Morgan Kaufmann Publishers, 1999), Friedrichs y Design, Architectures, and Implementations, Addison-Wes-
Jubin (Java Thin-Client Programming for a Network Compu- ley, 1998) dan importancia a1 disefio de bases de datos en su
ting Environment, Prentice-Hall, 1999), Dewire (Thin Clients, guia para construir aplicaciones clientelservidor. Ligon
McGraw-Hill, 1998) y Kanter (Understanding Thin-ClientlSer- (ClientlServer Communications Services: A Guide for the
ver Computing, Microsoft Press, 1998) proporcionan una guia Applications Developer, McGraw-Hill, 1997) tiene en cuen-
valiosa de c6mo disefiar, construir, hacer uso y apoyar siste- ta una gran variedad de temas de comunicacih relacionados
mas cliente ligeros (delgados). entre 10s que se incluyen TCP/IP, ATM, EDI, CORBA, men-
Empezando con el modelado de sucesos de negocios, sajes y encriptacion. Schneberger (ClientlSer-ver Software
Ruble (Practical Analysis and Design for ClientlServer and Maintenance, McGraw-Hill, 1997) presenta un marco de tra-
GUI Systems, 1997) proporciona un estudio en profundidad bajo para controlar 10s costes de mantenimiento de software
de las tCcnicas para el analisis y diseiio de sistemas CIS. Los CIS y para optimizar el apoyo a1 usuario.
libros de Goldman, Rawles y Mariga (ClientlSener Infor- Literalmente cientos de libros abarcan el desarrollo de sis-
mation Systems: A Business-Oriented Approach, Wiley, 1999), temas CIS especificos del vendedor. La siguiente relacidn
Shan, Earle y Lenzi (Enterprise Computing With Objects: representa un pequefio muestreo:
From ClientlServer Environments to the Internet, Addison- Anderson, G.W., Client/Server Database Design With
Wesley, 1997) y Gold-Berstein y Marca (Designing Enter- Sybase: A High-Performance and Fine-Tuning Guide,
prise ClientlServer Systems, Prentice-Hall, 1997) tienen en McGraw-Hill, 1997.
consideracion 10s sistemas CIS en un contexto mas amplio Barlotta, M. J., Distributed Application Development With
de empresa. Powerbuilder 6, Manning Publications Company, 1998.
Existe un grupo de libros que estudian la seguridad en Bates, R.J., Hands-on ClientIServer Internetworking,
redes; a continuacion se proporciona una muestra: McGraw-Hill, 1997.
Stallings, W., Cryptology and Network Security, Prenti- Mahmoud, Q.H., Distributed Programming with java,
ce-Hall, 1998. Manning Publications Company, 1998.
Gralla, P., The Complete Idiots Guide to Protecting Your- Orfali, R., y Harkey, ClientIServer Programming with
self Online, Que, 1999. JavaBeans, Wiley, 1999.
Ghosh, A. K., E-commerce Security: Weak Links, Best Sankar, K., Building Internet Client/Server Systems,
Defenses, John Wiley, 1998. McGraw-Hill, 1999.
Atkins, D. T., Shelden y T. Petru, Internet Security: Pro- Mosley [MOS99] y Bourne (Testing ClientlServer Sys-
fessional Reference, New Riders Publishing, 1997. tems, McGraw-Hill, 1997) han escrito libros de guia detalla-
Bemstein, T., A.B. Bhimani, E. Schultz y C. Siegel, Inter- dos para pruebas CIS. Arnbos autores proporcionan un estudio
net Security for Business, John Wiley, 1998. en profundidad de las estrategias de comprobacion, tacticas
Garfinkel, S., y G. Spafford, Web Security and Commer- y herramientas.
ce, 0 . Reilly, 1997. Una gran variedad de fuentes de information sobre inge-
nieria del software cliente/servidor esth disponible en Inter-
Tiwana, A., Web Security, Digital Press, 1999.
net. Una lista actualizada de referencias a sitios (paginas) web
Loosely y Douglas (High-Performance ClientlServer, que son relevantes para sistemas CIS se pueden encontrar en
Wiley, 1997) explican 10s principios de la ingenieria de ren- http:l/www.pressman5.com.
A World Wide Web e Internet han introducido a la poblaci6n en general en el mundo de
la inforn~itica.Compramos fondos de inversi6n colectivos y acciones, descargamos
1mlisica, vemos peliculas, obtenemos asesoramiento mkdico, hacemos reservas de habi-
.
de ralidad., . . ...525524 5ones en hoteles, vendemos articulos personales, planificamos vuelos en lineas aCreas, cono-
atributos mos gente, hacemos gestiones bancarias, recibimos cursos universitarios, hacemos la compra
de WebbApps.. .. ..522
.. . .. e s decir, en el mundo virtual se puede hacer todo lo que se necesite-. Se puede decir que
. . ternet y la Web son 10s avances m8s importantes en la historia de la informitica. Estas tec-
dogias informiticas nos han llevado a todos nosotros a la era de la informitica (con otros
illones de personas quienes finalmente entrardn tambih). Durante 10s primeros aTios del siglo
:intiuno estas tecnologias han llegado casi a formar parte de nuestra vida diaria.
Para todos nosotros que recordamos un mundo sin Web, el crecimiento ca6tico de la tecno-
gia tiene su origen en otra era -10s primeros dias del software-. Eran tiempos de poca dis-
plina, pero de enorme entusiasmo y creatividad. Eran tiempos en que 10s programadores a
enudo entraban en otros sistemas, algunas veces con buena intenci6n y otras con mala inten-
diseiio 6n. La actitud que prevalecia parecia ser la de <<Hazlorripidamente, y entra en el campo, que
de la interla1 ........531 )sotros lo limpiaremos (y mejor seria que entendieras lo que realmente queremos construir)
land0 actuemos>>.i L e suena familiar?
En una mesa redonda virtual publicada en IEEE Software [PRE98], mantuve en firme mi
)stura en relaci6n con la ingenieria de Web:
Me parece que cualquier producto o sistema importante es merecedor de recibir una ingenieria. Antes
krmulacion. .........526 de comenzar it construirlas. lo mejor es entender el problema, diseiiar una soluci6n viable, implementarla
gestion de proyectos. .534 de una manera s6lida y comprobarla en profundidad. Probablemente tambiCn se deberian controlar 10s
,.,,,,, A IW-I. c9c cambios a medida que el trabnjo vaya avanzando, y disponer de mecanismos para asegurar la calidad del
resultado finill. Muchos de 10s que desarrollan Webs no dicen lo mismo: ellos piensan que su mundo es
realmente diferente, y que simplernente no se van a aplicar 10s enfoques de ingenieria del software con-
vencionales.
6QuC es? Los sistemas y aplicaciones iiias (por ejemplo, comercio electroni- bas. Dado que las WebApps estdrn e n
(WebApps)basados en Web hacen posi- c ~ )y, cada vea e s mas importante la constante evoluci6n. deben d e esta-
ble que una poblacibn extensa de usua- necesidad do construir sistemas fia- blecerse 10s mecanismos para el con-
rios finales dispongan de una gran bles, utilizables y adaptables. Esta e s trol d e conliguraciones, garantia d e
variedad d e contenido y Iuncionalidad. la razbn por la que e s necesario un calidad y soporte continuado.
La ingenieria Web noes un cl6nico per- enfoque disciplinado para el desorro- 4 Cud es el producto obtenldo? La
fecto de Ia ingenieria del software, per0 110 de WebApps. elaboraci6n d e una gran variedad d e
toma prestado muchos de 10sconcep- 2Cuales san 10s pasos a segub ? Al productos de tralwjode ingenieria Web
tos y principios Msicos d e la ingenie- igual que cualquier disciplina de inge- (por ejemplo. modelos de an6lisis.
ria del software, dando importancia a nieria, la ingenieria Web aplica un modelos de diseilo, procedimientos de
laa mismas actiridades tbcnicas y d e enfoque generic0 que s e suaviza con pruebas). Y como producto final la
gesti6n. Existen diferencias sutiles e n estrategias, tacticas y m6todos espe- WebApp operativa.
la forma en pue se llevan a cabo estas cializados. El proceso d e ingenieria C6mo puedo eslar seguro de que
actividades, per0 la filosofia primordial Web comienza con una formulaciondel lo he hecho correctamenle?Apli-
e s ld6ntica dado que dicta un enfoque problema que pasa a resolverse con cando las mismas practicas SQAque se
disciplinado para el desarrollo de un las WebApps. Se planifica el proyecto aplican en todos 10s procesos d e inge-
sistema basado en computadora. y s e analizan 10s requisitos d e la nieria del software -las revisiones t&-
~Qui8n lo hace? Los ingenieros Web y WebApp, entonces se lleva a c a b el nicas formales valoran 10smodelos de
10s desarrolladores d e contenido no diseiio de interlaces arquitectbnico y analisis y d i s e i i e ; las revisiones espe-
t6cnicos crean las WebApps. del navegador. El sistema s e imple- cializadas tienen en consideraci6n la
&Porqu6 e s Cmportante? A medida menta utilizando lenguajes y herra- usabilidad; y la comprobaci6n se apli-
que las WebApps s e integran cada vez mientas especializados asociados con ca para descubrir errores en el conteni-
m&s e n grandes y pequeiias compa- la Web, y entonces comienzan las prue- do, funcionalidad y compatibilidad.
I N G E N ~ E R ~DEL
A SOFTWARE. UN ENFOQUE PRACTICO
No hay mucho que decir con respecto a1 hecho de que el mundo). De forma alternativa, una aplicaci6n se pue-
10s sistemas y las aplicaciones' basados en Web (nos de ubicar en una Intranet (implementando la comuni-
referiremos a estas como WebApps) son muy diferentes caci6n a travCs de redes de una organizaci6n) o una
de las otras categorias de software informatico que se Extranet (comunicaci6n entre redes).
tratan en el Capitulo 1. Powell resume las diferencias
basicas cuando afirma que 10s sistemas basados en Web
ccimplican una mezcla de publicaci6n impresa y desa-
rrollo de software, de marketing e informatica, de comu-
nicaciones internas y relaciones externas, y de arte y Los WebApps son intensivas de red, controlodos
tecnologia>>[POW98]. Los atributos siguientes se van por el contenido y en continuo evolucibn. Estos otributos
tienen un profundo impocto dentro de la formo
a encontrar en la gran mayoria de las ~ e b ~ ~ ~ s ~ :
en w e se llevo o cobo lo IWeb.
Intensivas de Red. Por su propia naturaleza, una
WebApp es intensiva de red. Reside en una red y debe Controlada por el contenido. En muchos casos, la
dar servicio alas necesidades de una comunidad diver- funci6n primaria de una WebApp es utilizar hiperme-
sa de clientes. Una WebApp puede residir en Internet dia para presentar a1 usuario el contenido de textos, gra-
(haciendo posible asi una comunicaci6n abierta por todo ficos, sonido y video.
En esta categoria se incluyen unos sitios Web cornpletos, funcio- En el context0 de este capitulo el terrn~no~~aplicacion Web))abar-
nalidad especializada dentro de 10s sitios Web y aplicaciones de pro- card todo, desde una pagina Web simple que podria ayudar a un con-
ceso de inforrnacion que residen en Internet, en una lntranet o en surnidor a calcular el pago de un alquiler de un coche hasta un sitio
una Extranet. Web cornpleto que proporcione 10s sewicios cornpletos para viajes
de negocios y de vacaciones.
CAPiTULO 29 INGENIERfA WEB
Evolucibn continua. A diferencia del software de apli- medidas de seguridad en toda la infraestructura que apo-
caciones convencional, que evoluciona con una sene de ya una WebApp y dentro de la misma aplicacion.
versiones planificadas y cronologicamente espaciadas, Este'tica. Una parte innegable del atractivo de una
las aplicaciones Web estin en constante evolucion. No WebApp es su apariencia e interaccion. Cuando se ha
es inusual que algunas WebApps (especificamente, su disefiado una aplicaci6n con el fin de comercializarse o
contenido) se actualicen cada hora. vender productos o ideas, la estktica puede tener mucho
Algunos argumentan que la evolucion continua de que ver con el Cxito del disefio tCcnico.
las WebApps hace que el trabajo realizado en ellas sea Las caracteristicas generales destacadas anterior-
similar a la jardineria. Lowe [LOW991 trata este tema mente se aplican a todas las WebApps, per0 con un gra-
con el siguiente escrito: do diferente de influencia. Las categorias de aplicaciones
La ingenieria esta a punto de adoptar un enfoque cienti- que se enumeran a continuation son las m8s frecuentes
fico y consecuente, suavizado por un context0 especifico y en el trabajo de la Web [DAR99]:
practico, para el desarrollo y el comisionado de sistemas y
aplicaciones. El desarrollo de 10s sitios Web suele estar des- informativa: se proporciona un contenido solo de lec-
tinado a crear una infraestructura (sembrar el jardin) y enton- tura con navegacion y enlaces simples;
ces ccocuparse,, de la informaci6n que crece y brota dentro descarga: un usuario descarga la informaci6n desde
del jardin. DespuCs de un tiempo, el jardin (es decir, el sitio
Web) continuara evolucionando, cambiando y creciendo. el servidor apropiado;
Una buena arquitectura inicial deberi permitir que este cre-
cimiento ocurra de forma controlada y consecuente.. .podri- ~ C O se~ pueden
O
amos hacer que cctres cirujanosn podaran 10s .arboles>>(es categorizar las WebApps?
decir, las secciones del sitio Web) dentro del jardin (el sitio
en si) a la vez se asegura la integridad de las referencias cru-
zadas. Podriamos disfrutar de ccguarderias de jardinr donde personalizable: el usuario personaliza el contenido
ccse cultiven,, las plantas j6venes (es decir, las configuracio- a sus necesidades especificas;
nes de diseiio para sitios Web). Acabemos con esta analogia, interaccidn: la comunicacion entre una comunidad
no vaya a ser que vayamos demasiado lejos.
de usuarios ocurre mediante un espacio chat (charla),
Un cuidado y una alimentaci6n continua permite que tablones de anuncios o mensajeria instantinea;
un sitio Web crezca (en robustez y en importancia). Pero entrada del usuario: la entrada basada en formula-
a diferencia de un jardin, las aplicaciones Web deben rios es el mecanismo primario de la necesidad de
de servir (y adaptarse a) las necesidades de mis de un comunicaci6n;
jardinero. Las siguientes caracteristicas de WebApps
orientada a transacciones: el usuario hace una soli-
son las que conducen el proceso:
citud (por ejemplo, la realization un pedido) que es
Inmediatez. Las aplicaciones basadas en Web tienen cumplimentado por la WebApp;
una inmediatez [NOR991 que no se encuentra en otros
tipos de software. Es decir, el tiempo que se tarda en orientado a servicios: la aplicacion proporciona un
comercializar un sitio Web completo puede ser cuestion servicio a1 usuario, por ejemplo, ayuda a1 usuario a
de dias o semanas'. Los desarrolladores deberin utili- determinar un pago de hipoteca;
zar 10s mCtodos de planificacion, anilisis, disefio, imple- portal: la aplicacion canaliza a1 usuario llevindolo
mentaci6n y comprobaci6n que se hayan adaptado a a otros contenidos o servicios Web fuera del domi-
planificaciones apretadas en tiempo para el desarrollo nio de la aplicacion del portal;
de WebApps. acceso a bases de datos: el usuario consulta en una
base de datos grande y extrae information;
almacenes de datos: el usuario hace una consulta en
una colecci6n de bases de datos grande y extrae infor-
No hay dudo de que lo inmediotez o menudo prevolece
en el desorrollo de 10s WebApps, pero hay que tener
maci6n.
cuidodo, porque el hecho de hocer alga rapidomente Las caracteristicas y las categorias destacadas ante-
no significa tener el privilegio de hocer un trobojo riormente en esta section, y las categorias de aplica-
de ingenierio pobre. Lo rapido y erroneo roros veces ciones representan 10s hechos reales para 10s ingenieros
tiene un resultado oceptoble. de la Web. La clave es vivir dentro de las restricciones
impuestas por las caracteristicas anteriores y aun asi
Seguridad. Dado que las WebApps estin disponibles tener Cxito en la elaboration de la WebApp.
a travCs del acceso por red, es dificil, si no imposible,
limitar la poblacion de usuarios finales que pueden acce-
der a la aplicaci6n. Con objeto de proteger el conteni- 29.1.1. Atributos de calidad
do confidencial y de proporcionar formas seguras de Todas las personas que hayan navegado alguna vez por la
transmisi6n de datos, deberin implementarse fuertes Web o hayan utilizado una intranet de una c o m p ~ ' apue-
IWEB
A medida que la evolution de las WebApps pasa de uti- tos tCcnicos para la WebApp e identifica 10s elementos
lizar recursos estaticos de informacidn controlada por del contenido que se van a incorporar. TambiCn se defi-
el contenido a utilizar entornos de aplicaciones din& nen 10s requisitos del diseiio grafico (estCtica).
micos controlados por el usuario, cada vez es mas impor- La actividad de ingenieria incorpora dos tareas para-
tante la necesidad de aplicar una gestion s6lida y unos lelas, como se muestra a la derecha en la Figura 29.2. El
principios de ingenieria. Para conseguir esto, es nece- disefio del contenido y la produccibn son tareas lleva-
sario desarrollar un marco de trabajo IWeb que acom- das a cab0 por personas no tCcnicas del equipo IWeb. El
paiie a un modelo de proceso eficaz, popularizado por objetivo de estas tareas es diseiiar, producir, y/o adqui-
las actividades4 del marco de trabajo y por las tareas de rir todo el contenido de texto, grafico y video que se
ingenieria. En la Figura 29.2 se sugiere un modelo de vayan a integrar en la WebApp. A1 mismo tiempo, se lle-
proceso para IWeb. va a cab0 un conjunto de tareas de diseiio (Seccion 29.5)
El proceso IWeb comienza con laformulacibn -acti- La generacibn de pciginas es una actividad de cons-
vidad que identifica las metas y 10s objetivos de la WebApp truccidn que hace mucho uso de las herramientas auto-
y establece el imbito del primer increment-. matizadas para la creaci6n de la WebApp. El contenido
definido en la actividad de ingenieria se fusiona con 10s
diseiios arquitectonicos,de navegacidn y de la interfaz para
elaborar paginas Web ejecutables en HTML, XML y otros
lenguajes orientados a procesos (por ejemplo, Java). Duran-
te esta actividad tambiCn se lleva a cab0 la integracidn con
el software intermedio (middleware) de componentes (es
decir, CORBA, DCOM o JavaBeans). Las pruebas ejer-
citan la navegacion, intentan descubrir 10s errores de las
applets, guiones y formularies, y ayuda a asegurar que la
la interfaz WebApp funcionara correctamente en diferentes entomos
(por ejemplo, con diferentes navegadores).
La formulacion y el anilisis de sistemas y aplicaciones en zonas geogrhficas en donde actualmente no tenemos alma-
basados en Web representan una sucesi6n de activida- cenes de ventas.
des de ingenieria Web que comienza con la identifica- Finalmente, la compaiiia define la demografia para
ci6n de metas globales para la WebApp, y termina con la WebApp: ccLos usuarios potenciales de HogarSegu-
el desarrollo de un modelo de anilisis o especificaci6n roInc.com son propietarios de casas y de negocios
de 10s requisitos para el sistema. La formulaci6n per- pequeiios.>>
mite que el cliente o diseiiador establezca un conjunto Las respuestas que se han establecido anteriormen-
c o m ~ nde metas y objetivos para la construcci6n de la te implican metas especificas para el sitio Web Hogar-
WebApp. TambiCn identifica el fimbito de esfuerzo en SeguroInc.com. En general, se identifican dos categonas
el desarrollo y proporciona un medio para determinar [GNA99]:
un resultado satisfactorio. El anhlisis es una actividad Meras informativas: indican la intencion de propor-
tecnica que identifica 10s datos y requisitos funcionales
cionar el contenido y/o informaci6n especificos para
y de comportamiento para la WebApp. el usuario final.
Metas aplicables: indican la habilidad de realizar
Powell [POW981 sugiere una serie de preguntas que algunas tareas dentro de la WebApp.
deberh formularse y responderse a1 comienzo de la eta-
pa de formulaci6n:
~ C u ies
l la motivaci6n principal para la WebApp?
LPor quC es necesaria la WebApp? Para todo WebApp deberbn definirse metos
~QuiCnva a utilizar la WebApp? informotivos y oplitobles.
i Q ~ preguntas
e En el contenido de la Web HogarSeguroInc.com,una
se deberian hater meta informativa podria ser la siguiente:
para formular el problema?
El sitio proporcionara a 10s usuarios especificaciones de un
producto detallado,como descripcibn tttcnica, instruccionesde
La respuesta a estas preguntas deberh ser de lo mhs instalaci6n e informaci6n de precios.
sucinto posible. Por ejemplo, supongamos que el fabri-
cante de sistemas de seguridad en el hogar ha decidido El examen de las respuestas anteriores llevari a
poderse aplicar la afirmaci6n de meta siguiente:
establecer un sitio Web de comercio electr6nico para
vender sus productos directamente a 10s consumidores. HogarSeguroInc.com consultar6 a1 cliente sobre la ins-
Una frase que describiera la motivaci6n de la WebApp talaci6n (es decir, sobre la casa, oficina/almacttn minoris-
ta) que se va a proteger, y dara recomendaciones per-
podna ser la siguiente: sonalizadas sobre el producto y la configuraci6n que se va
HogarSegurolnc.com5permitira a 10s consumidores confi- utilizar.
gurar y comprar todos 10s componentes necesarios para insta-
lar un sistema de seguridad en casa o en su comercio. Una vez que han identificado todas las metas apli-
Es importante destacar que en esta frase no se ha pro- cables e informativas se desarrolla el perfil del cliente.
porcionado n i n g ~ ndetalle. El objetivo es delimitar la El perfil del usuario recoge cclas caracteristicas rele-
intenci6n global del sitio Web. vantes de 10s usuarios potenciales incluyendo antece-
DespuCs de discutir con otros propietarios de Hogar- dentes, conocimiento, preferencias e incluso m i s s
Seguro Inc., la segunda pregunta se podna contestar de [GNA99]. En el caso de HogarSeguroInc.com, el per-
la siguiente manera: fil de usuario identificarfi las caracteristicas de un com-
prador tipico de sistemas de seguridad (esta informaci6n
HogarSeguroInc.com nos permitiri vender directamente a
10s consumidores,eliminando por tanto 10s costes de interme- sena proporcionada por el departamento de marketing
diarios, y mejorando de esta manera 10s mirgenes de benefi- de HogarSeguroInc.com).
cios. TambiCn nos permitira aumentar las ventas en un 25 por Una vez que se han desarrollado las metas y 10s per-
100 por encima de las ventas anuales y nos permitira penetrar files de usuarios, la actividad de formulaci6n se centra en
29.4.2. Analisis
Los conceptos y principios que se trataron para el ani- de procesamiento. Aqui se realiza una descripci6n deta-
lisis de 10s requisitos del software (Capitulo 11) se apli- llada de todas las funciones y operaciones.
can sin revision en la actividad de analisis de ingenieria Analisis de la configuration. Se efect6a una des-
Web. Para crear un modelo de analisis completo para la cripci6n detallada del entorno y de la infraestructura en
WebApp se elabora el ambit0 definido durante la acti- donde reside la WebApp. La WebApp puede residir en
vidad de formulacion. Durante la IWeb se realizan cua- Internet, en una intranet o en una Extranet. Ademas, se
tro tipos de analisis diferentes: debera identificar la infraestructura (es decir, la infra-
Analisis del contenido. Se trata de la identificacion estructura de 10s componentes y el grado de utilizaci6n
del espectro completo de contenido que se va a pro- de la base de datos para generar el contenido) de la
porcionar. En el contenido se incluyen datos de texto, WebApp.
grificos, imagenes, video y sonido. Para identificar y Aun cuando se recomienda una especificacidn
describir cada uno de 10s objetos de datos que se van a detallada de 10s requisitos para WebApps grandes y
utilizar dentro de la WebApp se puede utilizar el mode- complejas, tales documentos no son 10s usuales. Se
lado de datos (Capitulo 12). puede decir que la continua evolucion de 10s requisi-
tos de la WebApp puede hacer que cualquier docu-
Analisis de la interaccion. Se trata de la descrip- mento se quede obsoleto antes de finalizarse. Aunque
cion detallada de la interaccion del usuario y la se puede decir que esto sucede de verdad, es necesa-
WebApp. Para proporcionar descripciones detalladas rio definir un modelo de analisis que pueda funcio-
de esta interaccion se pueden desarrollar casos pricti- nar como fundamento de la siguiente actividad de
cos (Capitulo 11). diseiio. Como minimo, la informacion recogida duran-
Analisis funcional. Los escenarios de utilizacion te las cuatro tareas de analisis anteriores debera ser
(casos de uso) creados como parte del analisis de inte- revisada, modificada a peticion, y organizada para
raccidn definen las operaciones que se aplicarhn en el formar un documento que pueda pasarse a 10s dise-
contenido de la WebApp e implicarh otras funciones Aadores de WebApps
La naturaleza de inrnediatez de las aplicaciones basadas en Con objeto de realizar un diseAo eficaz basado en
Web unida a la presidn de evolucionar continuamente obli- Web, el ingeniero deberfi trabajar reutilizando cuatro
ga a que un ingeniero establezca un disefio que resuelva el elementos tCcnicos [NAN98]:
p b l e m a comercial inmediato, mientras que a1mismo tiem- Principios y mktodos de diseno. Es importante des-
po obliga a definir una arquitectura de aplicacidn que ten- tacar que 10s conceptos y principios del disefio estu-
ga la habilidad de evolucionar ripidamente con el tiempo. diados en el Capitulo 13 se aplican a todas las WebApps.
El problema, desde luego, es que resolver (rapidamente) el La modularidad eficaz (exhibida con una cohesidn alta
problema inrnediato puede dar como resultado compromi- y con un acoplamiento bajo), la elaboracidn paso a paso,
sos que afectan a la habilidad que tiene la aplicacion de e v e y cualquier otra heuristica de disefio del software con-
lucionar con el paso del tiempo. ducira a sistemas y aplicaciones basados en Web mas
3
Referencia Web
Uno fuente volioso de linens generoles prbclicos
poro el diseiio de sitios Web se puede encontror en
ficiles de adaptar, mejorar, probar y utilizar.
Cuando se crean aplicaciones Web se pueden reutili-
zar 10s mktodos de diseiio que se utilizan para 10s siste-
mas orientados a objetos estudiados anteriormente en
este libro. La hipermedia define ccobjetos>>que interac-
www.ibm.com/ibm/eosy /design/lower/ t6an mediante un protocolo de comunicacidn algo simi-
f060100.html lar a la mensajena. De hecho, la notacidn de diagramas
I N G E N I E R ~ ADEL SOFTWARE. U N ENFOQUE PRACTICO
propuesta por UML (Capitulos 21 y 22) puede adaptar- Una vez que se ha especificado una plantilla, cualquier par-
. se y utilizarse durante las actividades de diseiio de las te de una estructura hipermedia que se acopla a esta plantilla
se podra generar o actualizar automiticamente llarnando sola-
WebApps. Ademhs, se han propuesto otros hipermedios mente a la plantilla con datos relevantes [para dar cuerpo a1
de metodos de diseiio (por ejemplo, [ISA95], [SCH96]). esquema]. La utilizaci6n de plantillas constructivas depende
irnplicitamente del contenido separado de 10s documentos hiper-
media, de la especificaci6ny de su presentaci6n: 10s datos fuen-
te se organizan en la estructura del hipertexto tal y como se
cspecifica en la plantilla
las estructuras que se muestran en la Figura 29.3 son las del extremo izquierdo de la jerarquia puede tener enlaces
adecuadas. A medida que el contenido y el procesa- de hipertexto que lleven a1 contenido que existe en medio
miento crecen en complication, el flujo puramente line- de la rarna derecha de la estructura. Sin embargo, deberia
al que se muestra a la derecha da como resultado de destacarse que aunque dicha rarna permita una nave-
estructuras lineales mas sofisticadas en las que se pue- gaci6n rapida por el contenido de la WebApp, puede ori-
de invocar el contenido alternative, o en donde tiene ginar tambi~nconfusi6npor parte del usuGo.
lugar una desviacion para adquirir un contenido com-
plementario (la estructura se muestra a la derecha en la
Fig. 29.3).
El acop/omientoes un temo engarioso para
lo orquitecturo de 10s WebApps. Por un lodo, focilito
lo novegocian. Pero, par a h , tombien puede hocer
que el usuorio ((se pierdo). No rehogo canexiones
horizontoles dentro de uno jerorquio.
turas compuestas. La arquitectura global de una WebApp Tamiz: una configuracion que va guiando a1 usuario
puede ser jerhrquica, per0 parte de la estructura puede a travCs de una serie de opciones (decisiones) con el
exhibir caracten'sticas lineales, mientras que otra parte de fin de llevar a1 usuario a un contenido especifico e
la arquitectura puede confeccionarse en red. La meta del indicado por la sucesion de opciones elegidas o deci-
diseiiador arquitectonico es hacer corresponder la estruc- siones tomadas.
tura de la WebApp con el contenido que se va a presen- Vecindario: una configuracion que abarca un marco
tar y con el procesamiento que se va a llevar a cabo. de navegacion uniforme por todas la paginas Web
Patrones de diseno para permitir que un usuario tenga una guia de nave-
Como se ha destacado anteriormente en este mismo gacion consecuente independientemente de la loca-
libro, 10s patrones de disefio son un buen mktodo para lizaci6n de la WebApp.
resolver pequeiios problemas que pueden adaptarse a Las configuraciones de diseiio de hipertexto que se
una variedad mucho mas amplia de problemas especi- han descrito anteriormente se pueden reutilizar a medi-
ficos. En el context0 de 10s sistemas y aplicaciones basa- da que el contenido va adquiriendo el formato que per-
dos en Web, 10s patrones de diseiio pueden aplicarse en mitira la navegacion a travts de una WebApp.
el nivel jerarquico, nivel de componentes y nivel de
hipertexto (de navegacion).
29.5.2. Disefio de navegacion
Una vez establecida una arquitectura de WebApp, una
En 10s Capitulos 14 y 22 se puede enconhar m6s vez identificados 10s componentes (paginas, guiones,
informaci6n sabre las configurociones de diseiio. applets y otras funciones de proceso) de la arquitectu-
ra, el disefiador deberi definir las rutas de navegacion
Cuando dentro de una WebApp se requiere la fun- que permitan a1 usuario acceder a1 contenido y a 10s ser-
cionalidad del proceso de datos, pueden aplicarse 10s vicios de la WebApp. Para que el diseiiador pueda lle-
patrones de disefio arquitect6nicas a nivel de compo- varlo a cabo, debe (1) identificar la semantics de la
nentes propuestas por [BUS96], [GAM95] y otros. Los navegacion para diferentes usuarios del sitio; y (2) defi-
patrones de disefio a nivel de hipertexto se centran en nir la mecanica (sintaxis) para lograr la navegacion.
el diseiio de las caracteristicas de navegacion que per- Generalmente una WebApp grande tendra una varie-
miten a1 usuario moverse por el contenido de la WebApp dad de roles de usuarios diferentes. Por ejemplo, 10s
ficilmente. Entre muchos de 10s patrones de disefio de roles podrian ser el de x~isitante,cliente registrado o
hipertexto propuestos en literatura sobre este tema se cliente privilegiado. Cada uno de estos roles se pueden
encuentran 10s siguientes [BER98]: asociar a diferentes niveles de acceso a1 contenido y de
Ciclo: una configuracion que devuelve a1 usuario a1 servicios diferentes. Un xisitante puede tener acceso
nodo de contenido visitado anteriormente. s610 a un contenido limitado, mientras que un cliente
registrado puede tener acceso a una variedad mucho
miis amplia de informacion y de servicios. La semin-
tica de la navegacion de cada uno de estos roles seria
diferente.
El disefiador de WebApps crea una unidad semanti-
ca de navegacidn (USN) para cada una de las metas aso-
ciadas a cada uno de 10s roles de usuario [GNA99]. Por
ejemplo, un cliente registrado puede tener seis metas
diferentes, todas ellas con un acceso a informacion y
Anillo de Web: una configuracion que implementa sewicios diferentes. Para cada meta se crea una USN.
un ccgran ciclo que enlaza hipertextos enteros via- Gnaho y Larcher [GNA99] describen la USN de la
jando por un terns,) [BER98]. siguiente manera:
Contorno: un patr6n que aparece cuando varios ciclos La estructura de una USN se compone de un conjunto de
inciden en otro, permitiendo navegar por rutas defi- subeshucturasde navegaci6n que Ilamamos,formas de nave-
nidas por 10s ciclos. gacidn [WON (Ways of navigating)]. Una WON representa
Contrapunto: un patron que aiiade comentarios de la mejor forma de navegaci6n o ruta para que usuarios con
hipertexto interrumpiendo la narrativa del contenido ciertos perfiles logren su meta o submeta deseada. Por tan-
to, el concepto de WON se asocia a1 concepto de Perfil de
para proporcionar mas informacion o mas indagacion. Usuario.
Mundo de espejo: el contenido se presenta utilizando
diferentes hilos narrativos, cada uno con un punto de La estructura de una WON se compone de un conjunto de
nodos de na,.egacidn (NN) relevantes conectados a enlaces
vista o perspectiva diferente. Por ejemplo, el conte- de navegacidn, entre 10s que algunas veces se incluyen las
nido que describe una computadora personal podria USNs. Eso significa que las USNs pueden agregarse para
permitir a1 usuario seleccionar una narrativa crtkc- formar una USN de nivel superior, o anidarse en cualquier
nica>>o <<notCcnica)) que describa la maquina. nivel de profundidad.
C A P ~ T U L O29 I N G E N I E R h WEB
Una interfaz bien diseiiada mejora la percepci6n de las interfaces WebApp de usuario esta fuera
del contenido o de 10s servicios del usuario que pro- del imbito de este libro. Los lectores interesados
porciona el sitio Web. No tiene que ser necesaria- pueden consultar [SAN96], [FLE98], [ROS98], o
mente deslumbrante, per0 debera estar siempre bien [LYN99] entre 10s cientos de ofertas que existen
estructurada y ergonomica. Un estudio completo como guia.
28.6 P R R D
E
LN WEB
A
S
En el Capitulo 17, se destac6 que las pruebas son el pro- ces de navegaci6n (Secci6n 29.5.2) son revisados
ceso de ejercitar el software con la intention de encon- para asegurar su correspondencia con 10s especifi-
trar (y por ultimo corregir) 10s errores. Esta filosofia cados en cada USN del rol de usuario.
fundamental no se cambiari para el caso de las WebApps. 3. Se aplican pruebas de unidad a 10s componentes de
De hecho, dado que 10s sistemas y aplicaciones basados proceso seleccionados y las pbginas Web. Cuando
en Web residen en una red e interoperan con muchos sis- lo que se tiene en consideration es el tema de las
temas operativos diferentes,navegadores, plataformas de WebApps el concept0 de unidad cambia. Cada una
hardware, y protocolos de comunicaci6n, la busqueda de de las paginas Web encapsular5 el contenido, 10s enla-
errores representa un reto significative para 10s ingenie- ces de navegacion y 10s elementos de procesamiento
ros Web. (formularios, guiones, applets). No siempre es posi-
iQue pasos hay que seguir ble o practico comprobar cada una de las caracteris-
para la comprobacib de una ticas individualmente. En muchos casos, la unidad
WebApp? comprobable mas pequeiia es la pagina Web. A dife-
rencia de la comprobacion de unidades de software
convencional, que tiende a centrarse en el detalle
El enfoque de las pruebas de las WebApps adopta 10s algoritmico de un m6dulo y 10s datos que fluyen por
principios bisicos de todas las pruebas del software (Capi- la interfaz del m6dul0, la comprobacion por paginas
tulo 17) y aplica estrategias y tacticas que ya han sido se controla mediante el contenido, proceso y enla-
recomendadas para 10s sistemas orientados a objetos (Capi- ces encapsulados por la pagina Web.
tulo 23). Este enfoque se resume en 10s pasos siguientes:
1. El modelo de contenido de la WebApp es revisadopara
descubrir errores. Esta actividad de c<prueba>> se ase- los estrutegias de integration se abarcon
meja en muchos aspectos a la de un corrector orto- en 10s Copltulos 18 y 23.
grifico de un documento escrito. De hecho, un sitio
Web grande tendra la capacidad de construir un lis-
4. Se construye la arquitectura, se realizan las pruebas
tad0 de 10s servicios de correctores profesionales para
de integracibn. La estrategia para la prueba de inte-
descubrir errores tipograficos, errores gramaticales,
graci6n depende de la arquitecturaque se haya elegido
errores en la consistencia del contenido, errores en
para la WebApp. Si la WebApp se ha diseiiado con una
representaciones graficas y de referencias cruzadas.
estructurajerkquica lineal, reticular o sencilla, es posi-
ble integrar paginas Web de una manera muy similar
a como se integran 10s m6dulos del software conven-
cional. Sin embargo, si se utiliza una jerarquia mez-
para 10s que clada o una arquitectura de red (Web), la prueba de
se sabe q u i integraci6n es similar a1 enfoque utilizado para 10s sis-
parh'cular, temas 0 0 . La comprobaci6n basada en hilos (Capi-
P P ~ v, se tulo 23) se puede utilizar para integrar un conjunto de
paginas Web (se puede utilizar una USN para definir
el conjunto adecuado) que se requiere para responder
a un suceso de usuario. Cada hilo se integra y se prueba
2. El modelo de diseiio para la WebApp es revisado individualrnente. La prueba de regresi6n se aplica para
para descubrir errores de navegacidn. Los casos asegurar que no haya efectos secundarios. La com-
practices derivados como parte de la actividad de probaci6n de agrupamientos integra un conjunto de
analisis pemite que un ingeniero Web ejercite cada paginas colaborativas (deteminadas examinando 10s
escenario de utilizaci6n frente a1 diseiio arquitect6- casos pricticos y la USN). Los casos de prueba se deri-
nico y de navegacion. En esencia, estas pruebas no van para descubrir errores en las colaboraciones.
ejecutables ayudan a descubrir errores en la nave- 5. La WebApp ensamblada se prueba para conseguir
gaci6n (por ejemplo, un caso en donde el usuario no una funcionalidad global y un contenido. A1 igual
pueda leer un nodo de navegaci6n). Ademas, 10s enla- que la validation convencional, la validaci6n de 10s
CAP~TULO
29 INGENIERIA WEB
sistemas y aplicaciones basados en Web se centra en cubrir 10s errores asociados con todas y cada una de
acciones visibles del usuario y en salidas reconoci- las configuraciones posibles.
bles para el usuario que procedan del sistema. Para 7. La WebApp se comprueba con una poblacidn de usua-
ayudar en la derivation de las pruebas de validation, riosfinales controlada y monitorizada. Se selecciona
las pruebas deberan basarse en casos prkticos. El un grupo de usuarios que abarque todos 10s roles posi-
caso prfictico proporciona un escenario con una pro- bles de usuarios. La WebApp se pone en prktica con
babilidad alta de descubrir errores en 10s requisitos estos usuarios y se evaluan 10s resultados de su inte-
de interaction del usuario. racci6n con el sistema para ver 10s errores de conte-
6. La WebApp se implementa en una variedad de con- nido y de navegacion, 10s intereses en usabilidad,
figuraciones diferentes de entornos y comprobar asi compatibilidad, fiabhdad y rendmiento de la WebApp.
la compatibilidad con cada configuracidn. Se crea Dado que muchas WebApps e s t b en constante evo-
una matriz de referencias cruzadas que define todos lucion, el proceso de comprobaci6n es una actividad
10s sistemas operativos probables, plataformas de continua, dirigida por un personal de apoyo a la Web
hardware para navegadores7 y protocolos de comu- que utiliza pruebas de regresi6n derivadas de pruebas
nicaci6n. Entonces se llevan a cab0 pruebas para des- desarrolladas cuando se cre6 la WebApp.
Dada la inmediatez de las WebApps, seria razonable ciplinas.. .>> Aun cuando 10s autores e s t b absolutamente
preguntarse: jnecesito realmente invertir tiempo esfor- en lo cierto, 10s ccrenacentistaw no disponen de muchas
zhndome con la WebApp? jno deberia dejarse que la provisiones, y dado las exigencias asociadas a 10s pro-
WebApp evolucionara de forma natural, con poca o nin- yectos importantes de desarrollo de WebApps, el conjun-
guna gesti6n explicita? Muchos diseiiadores de Webs to de conocimientos diversos necesario podri distribuirse
optarian por gestionar poco o nada, pero eso no hace incluso mejor dentro del equipo de IWeb.
que estCn en lo cierto.
La ingenieria Web es una actividad tCcnica com-
plicada. Hay muchas personas implicadas, y a menu-
do trabajando en paralelo. La combinaci6n de tareas
tCcnicas y no tCcnicas que deben de tener lugar (a tiem-
po y dentro del presupuesto) para producir una
WebApp de alta calidad representa un reto para cual-
quier grupo de profesionales. Con el fin de evitar cual- Los equipos de IWeb pueden organizarse de forma
quier confusi6n, frustraci6n y fallo, se debera poner muy similar a como se organizan 10s equipos de softwa-
en acci6n una planificaci6n, tener en cuenta 10s ries- re del Capitulo 3. Sin embargo, pueden existir diferen-
gos, establecer y rastrear una planificacidn temporal cias entre 10s participantes y sus roles. Entre 10s muchos
y definir 10s controles. Estas son las actividades clave conocimientos que deben distribuirse por 10s miembros
que constituyen lo que se conoce como gesti6n de pro- del equipo W e b se encuentran 10s siguientes: ingeniena
yectos. del software basada en componentes,realizacidn de redes,
disefio arquitect6nicoy de navegacibn, lenguajes y estAn-
dares de Internet, diseiio de interfaces para personas, dise-
10s acfividades asaciadas con la gestibn de proyectos fio grifico, disposici6n del contenido y pruebas de las
de software se estudiin en lo Parte Segunda WebApps. Los roles8siguientes deberb ser distribuidos
de este libro.
entre 10s miembros del equipo N e b :
LOSnavegadores son excelentes para implementar sus propias inter- Estos roles se han adaptado de Harsen y sus colaboradores [HAN99].
pretaciones lcestandar))ligeramente diferentes de HTML y Javascript.
Para un estudio de temas de compatibilidad, vease www.browser-
caps.com.
I N G E N I E R ~ ADEL SOFTWARE. UN ENFOQUE PRACTICO
do. Retomando la idea de que el contenido abarca un el desarrollo e implementaci6n de normas para el
amplio abanico de objetos de datos, 10s diseiiadores y funcionamiento de la WebApp;
proveedores del contenido pueden proceder de diver- el establecimiento de 10s procedimientos de soporte
sos planos de fondo (no de software). Por ejemplo, el y realimentaci61-1;
personal de ventas o de marketing puede proporcionar 10s derechos de acceso y seguridad de la implemen-
informaci6n de productos e imageries gr8ficas: 10s pro- taci6n;
ductores de medios pueden proporcionar imagen y soni-
la medici6n y analisis del trafico del sitio Web;
do; 10s diseiiadores graficos pueden proporcionar diseiios
para composiciones graficas y contenidos estCticos; 10s la coordinaci6n de 10s procedimientos de control de
redactores publicitarios pueden proporcionar conteni- cambios (Secci6n 29.7.3);
do basado en texto. AdemAs, existe la posibilidad de la coordinaci6n con especialistas de soporte.
necesitar personal de investigacih que encuentre y dC El administrador tambiCn puede estar involucrado
formato a1 contenido externo y lo ubique y referencie en las actividades tCcnicas realizadas por 10s ingenie-
dentro de la WebApp. ros de Web y por 10s especialistas de soporte.
Editores de Web. El contenido tan diverso generado
por 10s desarrolladores y proveedores de contenido debe- 29.7.2. Gesti6n del proyecto
r i organizarse e incluirse dentro de la WebApp. Ademas, En la Parte Segunda de este libro se tuvieron en consi-
alguien debera actuar como conexion entre el personal deraci6n todas y cada una de las actividades global-
ticnico que disefia la WebApp y 10s diseiiadores y pro- mente llamadas gesti6n de proyectos9. Las metricas de
veedores del contenido. Esta funci6n la lleva a cab0 el procesos y proyectos, la planificaci6n de proyectos (y
editor de Web, quien debera entender la tecnologia tan- estimacibn), el anilisis y gestion de riesgos, la planifi-
to del contenido como de la WebApp en donde se inclu- caci6n temporal y el rastreo, SQA y CGS, se estudia-
ye el lenguaje HTML (o ampliaciones de generaciones ron en detalle. En teoria, la mayoria de las actividades
posteriores, tal como XML), la funcionalidad de bases de gesti6n de proyectos, si no todas, estudiadas en capi-
de datos y guiones, y la navegaci6n global del sitio Web. tulos anteriores, se aplican a 10s proyectos de Web. Pero
Ingeniero de Web. Un ingeniero Web cada vez se en la practica, el enfoque de IWeb para la gestion de
involucra mAs con la gran cantidad de actividades del proyectos es considerablemente diferente.
desarrollo de una WebApp entre las que se incluyen la En primer lugar, se subcontrata un porcentaje sus-
obtencion de requisitos, modelado de an6lisis, diseiio tancial1° de WebApps a proveedores que (supuesta-
arquitectdnico, de navegaci6n y de interfaces, imple- mente) son especialistas en el desarrollo de sistemas y
mentaci6n de la WebApp y pruebas. El ingeniero de Web aplicaciones basados en Web. En tales casos, un nego-
tambiCn debera conocer a fondo las tecnologias de com- cio (el cliente) solicita un precio fijo para el desarrollo
ponentes, las arquitecturas cliente/servidor, HTMLKML, de una WebApp a uno o mas proveedores, evallia 10s
y las tecnologias de bases de datos; y debera tener cono- precios de 10s candidatos y selecciona un proveedor para
cimiento del trabajo con conceptos de multimedia, pla- hacer el trabajo. Pero, es lo que busca la organi-
taformas de hardwarelsoftware, seguridad de redes y zacion contratista?, jc6m0 se determina la competen-
temas de soporte a 10s sitios Web. cia de un proveedor de WebApps?, jc6m0 se puede
saber si un precio es razonable?, jquC grado de planifi-
Especialistas de soporte. Este papel se asigna a la per- cacih, programacion temporal, y valoraci6n de riesgos
sona (personas) que tiene la responsabilidad de continuar se puede esperar a medida que una organizaci6n (y su
dando soporte a la WebApp. Dado que las WebApps eskh subconstratista) se va embarcando en un desarrollo
en constante evoluci6n, el especialista de soporte es el res- importante de WebApps'?
ponsable de las correcciones, adaptaciones y mejoras del En segundo lugar, el desarrollo de WebApps es una
sitio Web, donde se incluyen actualizaciones del conteni- Area de aplicaci6n relativamente nueva por tanto se pue-
do, implementaci6n de productos y formularies nuevos, den utilizar pocos datos para la estimaci6n. Hasta la
y cambios del patr6n de navegaci6n. fecha, no se ha publicado virtualmente ninguna mCtri-
Administrador. Se suele llamar Web master, y es el ca de IWeb. De hecho, tampoco han surgido muchos
responsable del funcionamiento diario de la WebApp, estudios sobre lo que esas metricas podrian ser. Por tan-
en donde se incluye: to, la estimaci6n es puramente cualitativa -basada en
9 Se recornienda que lectores no farniliarizados con 10s conceptos l o Aun cuando 10s datos de industria fiables son dificiles de encon-
basicos de gestion de proyectos revisen en este rnomento el Capi- trar, es seguro deck que este porcentaje es considerablernente mayor
tulo 3 . que el que s e encuentra en el trabajo del software convencional.
CAP~TULO
29 I N G E N I E R ~ AWEB
experiencias anteriores con proyectos similares-. Pero una WebApp con Cxito. Esta informacion debera de
casi todas las WebApps tienen que ser innovadoras documentarse en una especificaci6n del producto.
4 f r e c i e n d o algo nuevo y diferente a aquellos que la Se deberci desarrollar internamente un diseiio apro-
utilizan-. De aqui que la estimaci6n experimental, aun- ximado de la WebApp. Obviamente una persona
que sea 6ti1, esth abierta a errores considerables. Por experta en el desarrollo de WebApps crearh un disefio
consiguiente, jc6m0 se derivan estimaciones fiables?, completo, per0 puede ahorrar tiempo y dinero iden-
icon quC grado de seguridad pueden cumplirse 10s pro- tificando el aspect0 e interacci6n general de la
gramas temporales definidos? WebApp para el proveedor de subcontrataci6n (esto
En tercer lugar, el analisis de riesgos y la programa- siempre puede modificarse durante las etapas preli-
ci6n temporal se predican bajo un entendimiento claro minares del proyecto). El disefio deberi incluir la in&-
del Ambito del proyecto. Y sin embargo, la caracteristi- caci6n del proceso interactivo que se va a llevar a
ca de ccevoluci6n continuan tratada en la Secci6n 29.1 cab0 (por ejemplo, formularios, entrada de pedidos).
sugiere que el Ambito de la WebApp sea fluido. iC6m0 Se deberci desarrollar una planificacidn temporal apro-
pueden controlar 10s costes la organization contratista
ximada del proyecto, incluyendo no solo las fechas
y el proveedor subcontratado?, y jc6m0 pueden plani- finales de entrega. sino tambie'n lasfechas hito (signi-
ficar el momento en que es probable que 10s requisitos ficativas). Los hitos deberhn adjuntarse alas versiones
cambien drtisticamente a lo largo del proyecto?, jc6m0 de entrega posibles a medida que avanza el proyecto.
se puede controlar el cambio del Ambito?, y lo que es
mas importante, dado su naturaleza ideberan contro- Se dehera identificar el grado de supervisidn e itzte-
larse 10s sistemas y aplicaciones basados en Web ? raccidn del contratista con el proveedor. Deberti
Llegado a este punto de gesti6n de proyectos para incluirse el nombre del contacto del proveedor y la
WebApps, las preguntas que se han formulado por las identificaci6n de la responsabilidad y autoridad del
diferencias destacadas anteriormente no son fhciles de contacto, la definici6n de 10s puntos de revision de
responder. Sin embargo, merece la pena tener en con- calidad a medida que el desarrollo va avanzando, y
sideraci6n una serie de lineas generales. la responsabilidad de 10s proveedores en relaci6n con
la comunicaci6n entre organizaciones.
Inicio de un proyecto. Aun cuando la subcontrata-
Toda la informacion desarrollada en 10s pasos ante-
ci6n sea la estrategia elegida para el desarrollo de
riores debera de organizarse en una solicitud de opcio-
WebApps, una organizaci6n debera realizar una serie
tzes que se transmite a 10s proveedores candidatos".
de tareas antes de buscar el proveedor de subcontrata-
ci6n para hacer el trabajo.
I . Muchas de las actividades de ancilisis tratadas en la
Seccidn 29.3 se debercin realizar internamente. Se
identifica el piiblico de la WebApp; se confecciona un
listado de aquellos con intereses internos en la
WebApp; y se definen y revisan las metas globales de
la WebApp; se especifica tanto la informaci6n como Selection entre 10s proveedores de subcontrata-
10s servicios que se van a proporcionar en la WebApp; cion candidatos. En 10s 6ltimos afios han surgido miles
se destacan 10s sitios Web rivales, y se definen las de compaiiias de d s e f i o Webn para ayudar a las empre-
<<medidas>> cuantitativas y cualitativas para obtener sas a establecer una presencia y/o implicacidn Web en
el comercio electr6nico. Muchas han llegado a tener
adicci6n por el proceso Web, mientras que otras muchas
se asemejan a 10s intrusos informhticos (hackers). Con
objeto de seleccionar el desarrollador de Web candida-
to, el contratista debera llevar a cab0 una diligencia obli-
gada: (1) entrevistar a 10s clientes antiguos para
determinar la profesionalidad del proveedor de Web, la
habilidad de cumplir 10s compromisos de horarios y cos-
tes, y la habilidad de comunicarse eficazmente; (2) deter-
minx el nombre del ingeniero jefe de Web del proveedor
de proyectos anterior con Cxito (y despuCs cerciorarse
de que esta persona se vea obligada mediante contrato
a su implicaci6n en el proyecto), y (3) examinar cuida-
dosamente las muestras de trabajo del proveedor simi-
cada objeto y la longevidad proyectada (por ejemplo, en las actividades de gestidn y control asociadas con la
existencia temporal y fija, o un objeto permanente) son IWeb. En algunos casos 10s disefiadores de WebApps
ejemplos de las propiedades necesarias para establecer se encuentran fuera de la organizaci6n TI, dificultando
un enfoque GCS eficaz. Por ejemplo, si se cambia un posiblemente la comunicaci6n. Para ayudar a entender
objeto de contenido cada hora, se dice que tiene una lon- la politica asociada a IWeb, Dart [DAR99] sugiere las
gevidad temporal. Los mecanismos de control de este siguientes preguntas: iquiCn asume la responsabilidad
objeto serhn diferentes (menos formales) de 10s que se de la informaci6n en el sitio Web? iquiCn asegura que
aplican a un componente de formularios (objeto perma- 10s procesos de control de calidad se han llevado a cab0
nente). antes de publicar la informaci6n en el sitio Web? iquiCn
es el responsable de hacer 10s cambios? iquiCn asume
el coste del cambio? Las respuestas ayudarhn a deter-
minx quC personas dentro de la organizaci6n deberhn
Es esenciol controlor el combio duronte 10s proyectos adoptar un proceso de gesti6n de configuraci6n para las
IWeb, oun cuondo puede hocerse de formo exogerodo. WebApps.
Empiece por 10s procedimientos de control de combio La gesti6n de configuration para la IWeb esth toda-
de relotivo informolidad (Copik~lo9). l a meta iniciol sera
via en su infancia. Un proceso convencional de GCS
evitar 10s efectas de trinquete en cambios incontrolados.
puede resultar demasiado pesado y torpe. La gran mayo-
Personas. Dado que un porcentaje significativo del ria de las herramientas GCS no tienen las caracteristi-
desanollo de las WebApps continua realizindose depen- cas que permiten adaptarse fhcilmente a la IWeb. Entre
diendo del caso, cualquier persona que estC implicada 10s temas que quedan por tratar se encuentran 10s
en la WebApp puede (y a menudo lo hace) crear el con- siguientes [DAR99]:
tenido. Muchos creadores de contenido no tienen ante- creaci6n de un proceso de gesti6n de configuraci6n
cedentes en ingenieria del software y no tienen ningun que sea lo suficientemente hhbil como para aceptar la
conocimiento de la necesidad de una gesti6n de confi- inmediatez y la evoluci6n continua de las WebApps;
guraci6n. La aplicaci6n crece y cambia de forma incon- aplicaci6n de mejores conceptos y herramientas de
trolada.
gesti6n de configuraci6n para aquellos que desarro-
Escalabilidad. Las tCcnicas y controles aplicados a llan y no e s t h familiarizados con la tecnologia;
una WebApp pequefia no tienen buena escalabilidad. suministro del soporte a 10s equipos de desarrollo de
No es muy comun que una WebApp sencilla crezca sig- WebApps distribuidos;
nificativamente cuando se implementan las intercone-
suministro de control en un entorno de cuasipubli-
xiones que existen dentro de 10s sistemas de
informaci6n, bases de datos, almacenes de datos y pasa- cacibn, donde el contenido cambia de forma casi con-
relas de portales. A medida que crece el tamafio y la tinua;
complejidad, 10s pequefios cambios pueden tener efec- consecuci6n de la granularidad necesaria para con-
tos inalcanzables y no intencionados que pueden ser trolar una gran cantidad de objetos de configuraci6n;
problemhticos. Por tanto, el rigor de 10s mecanismos de incorporaci6n de la funcionalidad de gestidn de con-
control de la configuraci6n deberin ser directamente figuraci6n en las herramientas IWeb existentes;
proporcionales a la escalabilidad de la aplicaci6n. gestion de cambios en objetos que contienen enla-
Politics. iQuiCn es el propietario de una WebApp? ces con otros objetos.
Esta pregunta se argumenta en compafiias grandes y Estos y otros temas deberhn afrontarse antes de que se
pequefias, y la respuesta tiene un impacto significativo disponga m a gesti6n de configuraci6n eficaz para la IWeb.
Se puede argumentar que el impacto de 10s sistemas y nadas por el contenido y e s t h en continua evolution. La
aplicaciones basados en Web es el acontecimiento mhs inmediatez que conduce a su desanollo, la necesidad pri-
significativo en la historia de la informhtica. A medida mordial de seguridad a1 funcionar, y la demanda de est&
que las WebApps crecen en importancia, el enfoque de tica y la entrega del contenido funcional son otros factores
ingenieria de Web disciplinado ha empezado a evolu- diferenciadores. Durante el desarrollo de la WebApp hay
cionar -basado en principios, conceptos, procesos y tres tecnologias que se integran con otras de ingenieria
mCtodos que se han desarrollado para la ingenieria del del software convencional; desarrollo basado en compo-
software-. nentes, seguridad y lenguajes de notas esthndar.
Las WebApps son diferentes de otras categorias de El proceso de ingenieria de Web comienza con la for-
software informhtico. Son intensivas de red, e s t h gober- mulaci6n -una actividad que identifica las metas y 10s
I N G E N I E R ~ ADEL SOFTWARE. UN ENFOQUE P R ~ c T ~ C O
[ATK97] Atkins, D., et al., Internet Security: Professional [MUR99] Murugesan, S., WebE Home Page, http://fist-
Reference, New Riders Publishing, 2.%d., 1997. Julio de 1999.
se~.macarthur.uws.edu.au./san/WebHome,
[BER98] Bernstein, M., <<Patternsin Hypertext)), Proc. 91h [NAN981 Nanard, M., y P. Kahn, <<PushingReuse in Hyper-
ACM Conf. Hypertext, ACM Press, 1998, pp. 21-29. media Design: Golden Rules, Design patterns and cons-
tructive Templates)), Proc. 91hACM conf. On Hypertext
[BRA971 Bradley, N., The Concise SGML Companion, Addi-
and Hypermedia, ACM Press, 1998, pp. 11-20.
son-Wesley, 1997.
[NIE96] Nielsen, J., y A. Wagner, <<UserInterface Design for
[BRE99] Brenton, C., Mastering Network Security, Sybex,
the WWWD,Proc. CHI' 96 conference on Human Factors
Inc., 1999.
in Computing systems, ACM, Press, 1996, pp. 330-331.
[BUS961 Buschmann, F. et al., Pattern-Oriented Software
[NOR991 Norton, K., <<ApplyingCross Functional Metho-
Architecture, Wiley, 1996.
dologies to Web Development)>,Proc. IS' ICSE Works-
[DAR99] Dart, S., <<Containingthe Web Crisis Configura- hop on Web Engineering. ACM, Los Angeles, Mayo de
tion Management)), P ~ o cIS'
. ICSE Workshop on Web engi- 1995.
neering, ACM, Los Angeles, Mayo de 1999".
[OSL99] Olsina, L. et al., <<SpecifyingQuality Characteris-
[DIN981 Dinucci, D., M. Giudice y L. Stiles, Elements of tics and Attributes for Web Sites,), Proc. I"' Workshop on
Web Design: The Designer's Guide to a New Medium, 2." Web Engineering. ACM, Los Angeles, Mayo de 1995.
ed., Peachpit Press, 1998.
[PAR991 Pardi, W.J., XML in Action, Microsoft Press, 1999.
[GAM95] Gamma, E. et al., DesignPatterm, Addison-Wes-
[POW981 Powell, T.A., Web Site engineering, Prentice-Hall,
ley, 1998.
1998.
[GNA99] Gnaho, C., y F. Larcher, (<AUser Centered Me-
[PRE98] Pressman, R.S. (moderador), <<CanInternet-Based
thodology for Complex and Customimizable Web Appli-
Applications be Engineered?)), IEEE Software, Septiem-
cations engineering*, Proc. 1st ICSE Workshop on Web
bre de 1998, pp. 104- 1 10.
engineering, ACM, Los Angeles, Mayo de 1999.
[ROS98] Rosenfeld, L., y P. Morville, Information Architec-
[HAN99] Hansen, S., Y. Deshpande y S. Murgusan, <<A
Skills
ture for the World Wide Web, O'Reilly &Associates, 1998.
Hierarchy for Web Information system Development)>,
Proc. Is' lCSE Workshop on Web Engineering, ACM, Los [SAN96] Sano, D., Designing Large-Scale Web Sites: A
Angeles, Mayo de 1999. Visual Design Methodology, Wiley 1996.
[ISA95] Isakowitz, T. et al., <tRMM:A Methodology for [SCH96] Schwabe, D., G. Rossi y S. Barbosa, <<Systematic
Structured Hypermedia Design)), CACM, vol. 38, n." 8, Hypermedia Application Design with OOHDMD,Proc.
Agosto de 1995, pp. 43-44. Hypertext ' 96, pp. 116-128.
[KAE99] Kaeo, M., Designing Network Security, Cisco [SP098] Spool, J.M., et al., Web Site Usability: A Desig-
Press, 1999. ner's Guide, Morgan Kaufmann Publishers, 1998.
[LOW991 Lowe, D., <<Web Engineering or Web Gardening?,), [STL99] St. Laurent, S., y E. Cerami, Building XMLAppli-
WebNet Journal, vol. 1, n . 9 , Enero-Marzo de 1999. cations, McGraw-Hill, 1999.
[LYN99] Lynch, P.J., y S. Horton, Web Style Guide: Basic [TIL99] Tilley, S., y S. Huang, <<Onthe emergence of the
Design Principles for Creating Web Sites, Yale University Renaissance Software engineer,, Proc. IS' ICSE Workshop
Press, 1999. on the WebEngineering, ACM, Los Angeles, Mayo de 1999.
'*
Los procedimientos del Primer Taller ICSE sobre Ingenieria del SoR-
ware se publican en la red en http://fistserv.marcarthur.
uws.edu.au/san/icse99-WebE/ICSE99-Web-E-~/defa~t.h~
C A P ~ T U L O29 I N G E N I E R I A WEB
29.1. existe en otros atributos genCricos que diferencien a las 29.10. Realice un analisis del contenido para HogarSegu-
WebApps de otras aplicaciones de software? Enumere 2 6 3. roInc.com o para un sitio Web asignado por su profesor.
29.2. ~ C d m ose juzga la calidad de un sitio Web? Confeccio- 29.11. Sugiera tres ~reglasde ore), que serviran como guia en
ne una lista de 10 atributos de calidad prioritarios que consi- el disefio de WebApps.
dere mas importantes. 29.12. iEn quC difiere una configuracidn de disefio WebApp
29.3. Realice una pequeiia investigacion y realice un trabajo de una plantilla?
de 2 6 3 paginas que resuma una de las tres tecnologias que 29.13. Seleccione un sitio Web con el que estC familiarizado
se destacaron en la Seccidn 29.1.2. y desarrolle un disefio arquitectonico razonablemente com-
29.4. Utilizando un sitio Web real como ejemplo, ilustre las pleto para el sitio. ~ Q u Cestructura arquitectdnica selecciond
diferentes manifestaciones del cccontenidos de la WebApp. el diseiiador del sitio?
29.5. Responda a las tres preguntas de formulacidn para un 29.14. Haga una investigacion breve y escriba 2 6 3 paginas
sitio Web con el que estC familiarizado. Desarrolle una afir- que resuman el trabajo actual en las configuraciones de dise-
macidn de ambito para el sitio Web. fio de las WebApps.
2916. Desarrolle un conjunto de perfiles para HogarSegu- 29.15. Desarrolle un disefio arquitectdnico para HogarSegu-
roInc.com o un sitio Web asignado por su profesor. roInc.com o para un sitio Web asignado por su instructor.
29.7. Desarrolle una lista completa de metas informativas y 29.16. Utilizando un sitio Web real como ejemplo, desarrolle
aplicables para HogarSeguroInc.com o un sitio Web asigna- una critica de su interfaz de usuario y haga una recomenda-
do por su profesor. cidn que lo mejore.
29.8. Elabore un conjunto de casos de uso para HogarSegu- 29.17. Describa la manera en que una gestidn de proyecto para
roInc.com o un sitio Web asignado por su profesor. sistemas y aplicaciones basados en Web difieren de la gestidn
29.9. iEn quC difiere el analisis del contenido del analisis fun- de proyecto para el software convencional. iEn quC se ase-
cional y de interaccidn? meja?
Durante los ultimos aiios se han publicado cientos de libros Menasce y Almeida (Capacity Planning for Web Perfor-
que tratan uno o mas temas de ingenieria de Web, aunque mance: Metrics, Models, and Methods, Prentice-Hall, 1998)
relativamente pocos tratan todos los aspectos. Lowe y Hall tratan la valoracion cuantitativa del rendimiento de las
(Hypertext and the Web: An Engineering Approach, Wiley, WepApps. Amoroso (Intrusion Detection: An Introduction to
1999), y Powell [POW981 abarcan razonablemente estos Internet Surveillance, Correlation, Trace Back, Traps, and
temas. Norris, West y Warson (Media Engineering: A Quide Response, 1ntrusion.Net Books, 1999) proporciona una guia
to Developing Information Products, Wiley, 1997). Navarro detallada para los ingenieros de Web que estan especializa-
y Khan (Effective Web Desrgn: Master the Essentials, Sybex, dos en temas de seguridad. Umar (Application (Re)Enginee-
1998), Fleming y Koman (Web Navigation: Designing the ring: Building Web-Based Applications and Dealing With
User Experience, O'Reilly & Associates, 1998), y Sano Legacies, Prentice-Hall, 1997) estudia estrategias para la trans-
[SAN96] tambiCn abarcan aspectos importantes del proceso formacidn (reingenieria) de sistemas anteriores en aplicacio-
de ingenieria. nes basadas en Web. Mosley (Client Server Software Testing
Ademas de [LYN99], [DIN981 y [SP098], los siguientes on the Desk Top and the Web, Prentice-Hall, 1999) ha escri-
libros proporcionan una guia util para 10s aspectos del dise- to uno de 10s mejores libros que estudian 10s temas de com-
iio de WebApps tanto tecnicos como no: probacidn asociados con WebApps.
Baumgardt, M., Creative Web Design: Tips and Tricks Haggard (Survival Guide to Web Site Development,
Step by Step, Springer Verlag, 1998. Microsoft Press, 1998) y Siege1 (Secrets of Successful Web
Donnelly, D. et al., Cutting Edge Design: The Next Gene- Sites: Project Management on the World Wide Web, Hay-
ration, Rockport Publishing, 1998. den Books, 1997) proporcionan una guia para el gestor que
Holzschlag, M.E., Web by Design: The Complete Guide, debe de controlar y hacer un seguimiento del desarrollo de
Sybex, 1998. WebApps.
Niederst, J., y R. Koman, Web Design in a Nutshell: A Una amplia variedad de fuentes de informacidn sobre inge-
Desktop Quick Reference, O'Reilly & Associates, 1998. nieria de Web esta disponible en Internet. Una lista amplia y
Weinman, L., y R. Prirouz, Click Here: Web Communi- actualizada de referencias en sitios (piginas) web se puede
cation Design, New Riders Publishing, 1997. obtener en http:/www.pressman5.com.
estruttura de dator . . .549
lngenleria avanzada.. ,551
ingenieria inversa.. ...547
nivel de ahstratdin . . - 5 4 7
&Qules? Tenga en consideracidn cual- ;Por qu6 es 'mportante? Vivimos en un 10sprogramas exisfentes que exhiben
quier producto de 'lecnologia que hcrya mundoenwnstante cambia lasdeman- una mantenibilidad de mayor calidad.
adquirido. Lo ve con regularidad, p r o d a s de funciones de negccios y de tec- ;Cual es el produelo obtenldo? Son
est6 envejeciendo. Se rompe con fre- nologia de informaci6nque las soportan varios 10s productos que s e elaboran
cuencia, tarda e n repararse y ya n o e s t h cambiando a un titmo que impo- (por ejemplo, modelos cm&lisis,modebs
representa la dltima tecnologia. $ 2 ~ 6 ne mucha pesi6n competitiva en todas de diseiio, procedimienfos de pruebas).
s e puede hacer? Si el producto es de las organizaciones comerciales. Tanto El resultado final e s un prcceso de rein-
hardware, probablemente lo tirara y se 10s negocios coma el softwareque sopor- genieria de negccios y/o el software de
comprara uno nuevo. Pero si es un soft- tan (o es) el negccio debenin diseiiarse reingenieria que lo soporla.
ware personalizado. no dispondrh la una vez mas pcna mantener el ritmo. kC6mo puedo e s t a seguro
~ de que lo
opci6n d e tirarlo. Necesitara recons- ~Cuirlesson lor pmas?L a reingenieda he hecho wrrectamente? Utilizun-
truirlo. CrearCE un producto con una lun- de procesos de negocios (RPN)define las do las mismas practicas que se aplican
cionalidad nueva, un mejor rendimiento metas comerciales, identifica y evalua en todos 10s prccesos de ingenieria del
y fiabilidad, y un mantenimiento mejo- 10s procesos de negccios existentes, y software -las revisiones tecnicas for-
rado. Em es lo a u e llamamos reinae- ----------- -----:A,-.- --..L-A---.- ".-I,.- -...-.I.+.-- 1-- -,.A-l-- d- .-."Al:":-
tCcnicas de modelado que se asocian normalmente a las dos por la evidencia empirica. Para muchas compaiiias parece
actividades de ingenieria de la informaci6n tales como la que la bala de plata no da en el blanco.
planificaci6n de estrategias de informaci6n y el anili- Para otras, sin embargo, el nuevo esfuerzo de la reingenie-
sis de ireas de negocios (Capitulo 10). ria ha tenido evidentemente su fruto...
La RPN puede funcionar, si es aplicada por personas
30.1.4. Advertencias motivadas y formadas, que reconozcan que el proceso de
Es muy frecuente que se exagere la importancia de un reingenieria es una actividad continua. Si la RPN se lle-
nuevo enfoque de negocio -en este caso, la RPN- va a cab0 de forma efectiva, 10s sistemas de informaci6n
como si fuese la panacea, para despuCs criticarla con se integran mejor con 10s procesos de negocios. Dentro
tanta severidad que pase a ser un desecho. A lo largo de del context0 de una estrategia mis amplia de negocios se
10s ultimos afios, se ha debatido de forma exagerada puede examinar la reingenieria de aplicaciones mis anti-
acerca de la eficacia de la RPN (por ejemplo: [BLE93] guas, y tambiCn se pueden establecer de forma inteligente
y [DIC95]). En un resumen excelente del caso a favor las prioridades de reingenieria del software.
y en contra de la RPN, Weisz (WEI95) expone su argu- Aunque la reingenieria de negocio sea una estrate-
mento de la manera siguiente: gia rechazada por una compafiia, la reingenieria del soft-
ware es algo que debe hacerse. Existen decenas de
Resulta tentador atacar a la RPN como si se tratase de otra
reencarnacion de la famosa bala de plata. Desde varios puntos
millares de sistemas heredados -aplicaciones crucia-
de vista -pensamiento de sistemas, tratamiento de personal, les para el Cxito de negocios grandes y pequefios- que
simple historia- habria que predecir unos indices de fallos se ven afectados por una enorme necesidad de ser
elevados para el concepto, indices que parecen ser confirma- reconstruidos o rehechos en su totalidad.
Este escenario resulta sumamente conocido: Una apli- debajo de la superficie. A principios de 10s afios 70, el
caci6n ha dado servicio y ha cubierto las necesidades iceberg de mantenimiento era lo suficientemente gran-
del negocio de una compaiiia durante diez o quince aiios. de como para hundir un portaaviones. En la actualidad
A lo largo de este tiempo, ha sido corregida, adaptada podria hundir toda la Armada.
y mejorada muchas veces. Las personas se dedicaban a El mantenimiento del software existente puede dar
esta tarea con la mejor de sus intenciones, per0 las pric- cuenta de mis del60 por 100 de las inversiones efec-
ticas de ingenieria del software buenas siempre se echa- tuadas por una organizaci6n de desarrollo, y ese por-
ban a un lado (por la urgencia de otros problemas). centaje sigue ascendiendo a medida que se produce mis
Ahora la aplicaci6n se ha vuelto inestable. Sigue fun- software [HAN93]. Los lectores que tengan menos
cionando, per0 cada vez que intenta efectuar un cam- conocimientos en estos temas podrian preguntarse por
bio se producen efectos colaterales graves e inesperados. quC se necesita tanto mantenimiento, y por quC se invier-
~ Q u Cse puede hacer? te tanto esfuerzo. Osborne y Chifosky [OSB90] ofre-
La imposibilidad de mantener el software no es un cen una respuesta parcial:
problema nuevo. De hecho, el gran inter& por la rein- Gran parte del software del que dependemos en la actua-
genieria del software ha sido generado por un <<iceberg>> lidad tiene por tCrmino medio entre diez y quince afios de
de mantenimiento de software que lleva creciendo des- antigiiedad. Aun cuando estos programas se crearon emple-
de hace mis de treinta afios. ando las mejores tCcnicas de diseiio y codificaci6n conoci-
das en su Cpoca (y la mayoria no lo fueron), se crearon
cuando el tamaiio de 10s programas y el espacio de alma-
cenamiento eran las preocupaciones principales. A conti-
nuacibn, se trasladaron a las nuevas plataformas, se ajustaron
La ingenieria inversa invoca una imagen de eranura La completitud de un proceso de ingenieria inversa
mhgica,,. Se inserta un listado de c6digo no estructura- alude a1 nivel de detalle que se proporciona en un deter-
do y no documentado por la ranura, y por el otro lado minado nivel de abstraccion. En la mayoria de 10s casos,
sale la documentaci6n completa del programa de com- la completitud decrece a medida que aumenta el nivel
putadora. Lamentablemente, la ranura mhgica no exis- de abstracci6n. Por ejemplo, dado un listado del codi-
te. La ingenieria inversa puede extraer informacion de go fuente, es relativamente sencillo desarrollar una repre-
diseiio del codigo fuente, per0 el nivel de abstraccibn, sentacion de diseiio de procedimientos completa.
la completitud de la documentaci6n, el grado con el cual TambiCn se pueden derivar representaciones sencillas
trabajan a1 mismo tiempo las herramientas y el analis- del flujo de datos, per0 es mucho rnhs dificil desarrollar
ta humano, y la direccionalidad del proceso son suma- un conjunto completo de diagramas de flujo de datos o
mente variables [CAS88]. un diagrama de transition de estados.
El nilvl de abstraccidn de un proceso de ingenieria
inversa y las herramientas que se utilizan para realizarlo
aluden a la sofisticaci6n de la informacidn de diseiio que
se puede extraer del c6digo fuente. El nivel de abstracci6n
ideal deberh ser lo rnhs alto posible. Esto es, el proceso de Se deben ofrontar tres enfoques de ingenieria inverso:
ingenieria inversa deberh ser capaz de derivar sus repre- nivel de abstroccion, compleh'tud y direccionalidod.
sentaciones de diseiio de procediientos (con un bajo nivel
de abstracci6n); y la informaci6n de las eshucturas de datos La completitud mejora en proportion directa a la can-
y de programas (un nivel de abstracci6n ligeramente m& tidad de anhlisis efectuado por la persona que esth efec-
elevado); modelos de flujo de datos y de control (un nivel tuando la ingenieria inversa. La interactividad alude a1
de abstracci6n relativamente alto); y modelos de entida- grado con el cual el ser humano se ~cintegra),con las
des y de relaciones (un elevado nivel de abstracci6n). A herramientas automatizadas para crear un proceso de
medida que crece el nivel de abstracci6n se proporciona ingenieria inversa efectivo. En la mayona de 10s casos,
al ingeniero del software informaci6n que le perrnitir6 com- a medida que crece el nivel de abstraccion, la interacti-
prender m& fhcilmente estos programas. vidad deberh incrementarse, o sino la completitud se
verh reducida.
Si la direccionalidad del proceso de ingenieria inver-
sa es monodireccional, toda la informaci6n extraida del
c6digo fuente se proporcionarh a la ingenieria del soft-
ware que podra entonces utilizarla durante la actividad
Por ejemplo, suele producirse una verificaci6n de 10s Para toda variable (dentro de un programa) que repre-
datos y una comprobaci6n de 10s limites dentro de la sente una matriz o archivo, la construcci6n de un lis-
secci6n de c6digo que prepara 10s datos para su proce- tad0 de todas las variables que tengan una relaci6n
samiento. ldgica con ella.
Para 10s sistemas grandes, la ingenieria inversa sue-
le efectuarse mediante el uso de un enfoque semiauto-
matizado. Las herramientas CASE se utilizan para
ccanalizarn la semintica del c6digo existente. La salida En 10s proximos oiios 10s mmpromisos relativomente
de este proceso se pasa entonces a unas herramientas significotivos en 10s estructvras de datos pueden conducir
de reestructuraci6n y de ingenieria directa que comple- a tener problemas patencialmente catastraficos. Fijese
por ejemplo en el efecto del oiio 2000.
tartin el proceso de reingenieria.
Estos pasos hacen posible que el ingeniero del soft-
30.3.2. Ingenieria inversa para comprender ware identifique las clases del programa que interactd-
10s datos an con las estructuras de datos globales.
La ingenieria inversa de datos suele producirse a dife- Estructuras de bases de datos. Independientemen-
rentes niveles de abstracci6n. En el nivel de programa, te de su organizaci6n 16gica y de su estructura fisica,
es frecuente que sea precis0 realizar una ingenieria inver- las bases de datos permiten definir objetos de datos, y
sa de las estructuras de datos internas del programa, apoyan 10s mCtodos de establecer relaciones entre obje-
como parte del esfuerzo general de la reingenieria. En tos. Por tanto, la reingenieria de un esquema de bases
el nivel del sistema, es frecuente que se efectde una rein- de datos para formar otro exige comprender 10s objetos
genieria de las estructuras globales de datos (por ejem- ya existentes y sus relaciones.
plo: archivos, bases de datos) para ajustarlas a 10s
paradigmas nuevos de gesti6n de bases de datos (por ~Cualesson 10s pasos que
ejemplo, la transferencia de archivos planos a unos sis- se pueden aplicar para aplicar
temas de bases de datos relacionales u orientados a obje- la ingenieria inversa en una estructura
tos). La ingenieria inversa de las estructuras de datos de bases de datos existente?
globales actuales establecen el escenario para la intro-
ducci6n de una nueva base de datos que abarque todo Para definir el modelo de datos existente como pre-
el sistema. cursor para una reingenieria que produciri un nuevo
Estructuras de datos internas. Las tCcnicas de inge- modelo de base de datos se pueden emplear 10s pasos
nieria inversa para datos de programa internos se cen- siguientes [PRE94] :
tran en la definici6n de clases de objetoss. Esto se logra Construccibn de un modelo de objetos inicial. Las
examinando el c6digo del programa en un intento de claves definidas como parte del modelo se podrin
agrupar variables de programa que estCn relacionadas. conseguir mediante la revisi6n de registros de una
En muchos casos, la organizaci6n de datos en el sen0 base de datos de archivos planos o de tablas de un
del c6digo identifica 10s tipos abstractos de datos. Por esquema relacional. Los elementos de esos registros
ejemplo, las estructuras de registros, 10s archivos, las o tablas pasarin a ser atributos de una clase.
listas y otras estructuras de datos que suelen propor- Determinacibn de 10s candidatos a claves. Los atribu-
cionar una indicaci6n inicial de las clases. tos se examinan para determinar si se van a utilizar o
Para la ingenieria inversa de clases, Breuer y Lano no para sefialar a otro registro o tabla. Aquellos que sir-
[BRE9 11 sugieren el enfoque siguiente: van como punteros pasarb a ser candidatos a claves.
Identificaci6n de 10s indicadores y estructuras de Refinamiento de las clases provisionales. Se deter-
datos locales dentro del programa que registran infor- mina si ciertas clases similares pueden o no combi-
maci6n importante acerca de las estructuras de datos narse dentro de una 6nica clase.
globales (por ejemplo, archivos o bases de datos). Definicibn de las generalizaciones. Para determinar
Definici6n de la relacidn entre indicadores y estruc- si se debe o no construir una jerarquia de clases con
turas de datos locales y las estructuras de datos glo- una clase de generalizaci6n como precursor de todos
bales. Por ejemplo, se podrh activar un indicador sus descendentes se examinan las clases que pueden
cuando un archivo estC vacio; una estructura de tener muchos atributos similares.
datos local podri servir como memoria intermedia Descubrimiento de las asociaciones. Mediante el uso
de 10s cien 6ltimos registros recogidos para una de tCcnicas anilogas a1 enfoque de CRC (Capi-
base de datos central. tulo 21) se establecen las asociaciones entre clases.
Una vez que se conoce la informaci6n definida en 10s iCuAles son las acciones bhsicas que debera proce-
pasos anteriores, se pueden aplicar una serie de trans- sar la interfaz, por ejemplo, acciones de teclado y
formaciones [PRE94] para hacer corresponder la estruc- clics de rat6n?
tura de la vieja base de datos con una nueva estructura iCuAl es la descripci6n compacta de la respuesta de
de base de datos. comportamiento del sistema a estas acciones?
iQuk queremos decir con ccsustituci6n~,o mas exac-
30.3.3. Ingenieria inversa d e interfaces tamente, q u t concept0 de equivalencia de interfaces
d e usuario es relevante en este caso?
Las IGUs sofisticadas se van volviendo de rigor para La notaci6n de modelado de comportamiento (Capi-
10s productos basados en computadoras y para 10s sis- tulo 12) puede proporcionar una forma de desarrollar las
temas de todo tipo. Por tanto el nuevo desarrollo de respuestas de las dos primeras preguntas indicadas ante-
interfaces de usuario ha pasado a ser uno de 10s tipos riormente. Gran parte de la informaci6n necesaria para
mas comunes de las actividades de reingenieria. Aho- crear un modelo de comportamiento se puede obtener
ra bien, antes de que se pueda reconstruir una interfaz mediante la obsenaci6n de la manifestation externa de
de usuario, debera tener lugar una actividad de inge- la interfaz existente. Ahora bien, es preciso extraer del
nieria inversa. c6digo la informacidn adicional necesaria para crear el
modelo de comportamiento.
~Comopuedo entender Es importante indicar que una IGU de sustitucion
el funcionamiento de la puede que no refleje la interfaz antigua de forma exac-
interfaz de usuario existente? ta (de hecho, puede ser totalmente diferente). Con fre-
cuencia, merece la pena desarrollar metaforas de
Para comprender totalmente una interfaz de usuario interacci6n nuevas. Por ejemplo, una solicitud de IU
ya existente (IU), es preciso especificar la estructura y antigua en la que un usuario proporcione un factor
comportamiento de la interfaz. Merlo y sus colabora- superior (del 1 a 10) para encoger o agrandar una ima-
dores [MER93] sugieren tres preguntas bhsicas a las gen grhfica. Es posible que una IGU diseiiada utilice
cuales hay que responder cuando comienza la ingenie- una barra de imageries y un rat6n para realizar la mis-
ria inversa de la IU: ma funci6n.
La reestructuraci6n del software modifica el c6digo Reduce la frustration entre ingenieros del software
fuente y/o 10s datos en un intento de adecuarlo a futu- que deban trabajar con el programa, mejorando por
ros cambios. En general, la reestructuraci6n no modifi- tanto la productividad y haciendo mas sencillo el
ca la arquitectura global del programa. Tiende a centrarse aprendizaje.
en 10s detalles de diseiio de m6dulos individuales y en Reduce el esfuerzo requerido para llevar a cab0 las
estructuras de datos locales definidas dentro de 10s actividades de mantenimiento.
modulos. Si el esfuerzo de la reestructuracion se extien- Hace que el software sea mas sencillo de comprobar
de mas alla de 10s limites de 10s m6dulos y abarca la y de depurar.
arquitectura del software, la reestructuraci6n pasa a ser La reestructuraci6n se produce cuando la arquitectura
ingenieria directa (Secci6n 30.5). basica de la aplicaci6n es sblida, aun cuando sus interio-
ridades tkcnicas necesiten un retoque. Comienza cuando
~ Q u beneficios
e se derivan existen partes considerables del software que son 6tiles
de la reestructuracibn? todavia, y solamente existe un subconjunto de todos 10s
m6dulos y datos que requieren una extensa modificaci6n6.
Arnold [ARN89] define un cierto numero de bene-
ficios que se pueden lograr cuando se reestructura el 30.4.1. Reestructuracion del codigo
software: La reestructuracidn del cddigo se lleva a cab0 para con-
Programas de mayor calidad -con mejor docu- seguir un diseiio que produzca la misma funci6n per0 con
mentaci6n y menos complejidad, y ajustados a las mayor calidad que el programa original. En general, las
prhcticas y estandares de la ingenieria del software ttcnicas de reestructuraci6n del c6digo (por ejemplo, las
moderna-. ttcnicas de simplificacibn Mgica de Warnier [WAR74])
Un programa que posea flujo de control es el equivalente caciones, aplicando un enfoque de ingenieria del soft-
grhfico de un plato de espaguetis con ccm6dulos>>,es decir ware a todos 10s segmentos revisados.
con 2.000 sentencias de longitud; con pocas lineas de 4. La posibilidad de redisefiar, recodificar y comprobar
comentario utiles en 290.000 sentencias de c6digo fuente, el programa en su totalidad, utilizando herramientas
y sin ninguna otra documentaci6n que se deba modificar CASE (herramientas de reingenieria) que serviran
para ajustarle a 10s requisitos de cambios del usuario. Se para comprender el disefio actual.
puede decir que disponemos de las opciones siguientes:
1. La posibilidad de esforzarse por efectuar una modi- No existe una unica opcion cccorrecta>>.
Las circuns-
ficacion tras otra, luchando con el disefio implicit0 tancias pueden imponer la primera opcibn, aun cuando
y con el codigo fuente para implementar 10s cambios las otras Sean las preferidas.
necesarios. En lugar de esperar a que se reciba una solicitud
2. La posibilidad de intentar comprender el funciona- de mantenimiento, la organizaci6n de desarrollo o
rniento intemo m h amplio del programa, en un esfuerzo de soporte utilizara 10s resultados del analisis de
por hacer que las modificaciones Sean mas efectivas. inventario para seleccionar el prograrna ( 1 ) que con-
tinue utilizandose durante un numero determinado
de afios, (2) que se estC utilizando con Cxito en la
iQue optiones existen
tuando nos enfrentamos
actualidad, y (3) que tenga probabilidades de sufrir
ton un programa de diseiio
grandes modificaciones o mejoras en un futuro pr6-
e implementation pobres?
ximo. Entonces, se aplicardn las opciones 2, 3 6 4
anteriores.
Este enfoque de mantenimiento preventivo fue intro-
3. La posibilidad de redisefiar, recodificar y comprobar ducido por Miller [MIL811 con el nombre de ccreajuste
aquellas partes del software que requieran modifi- estructuradou. Definia este concept0 como ccla aplica-
I N G E N I E R ~ ADEL SOFTWARE. UN ENFOQUE PRACTICO
ci6n de las metodologias de hoy a 10s sistemas de ayer 30.5.1. Ingenieria directa para arquitecturas
,para prestar apoyo a 10s requisitos del maiiana>>. clientelservidor
A primera vista, la sugerencia de volver a desarro- A lo largo de la ultima dCcada, muchas aplicaciones de
llar un gran programa cuando ya existe una versi6n ope- grandes computadoras han sufrido un proceso de rein-
rativa puede parecer mas bien extravagante. Sin genieria para adaptarlas a arquitecturas clientelservidor
embargo, antes de pasar a emitir un juicio, considCren- (CIS). En esencia, 10s recursos de computaci6n centra-
lizados (incluyendo el software) se distribuyen entre
El coste de mantener una linea de c6digo fuente muchas plataformas cliente. Aunque se puede diseiiar
puede estar entre veinte y cuarenta veces por encima toda una garna de entomos distribuidos distintos, la apli-
del coste del desarrollo inicial de esa linea. caci6n tipica de computadora central que sufre un pro-
El rediseiio de la arquitectura del software (del pro- ceso de reingenieria para adoptar una arquitectura
grama y/o de las estructuras de datos) empleando clientelservidor posee las caracteristicas siguientes:
conceptos de diseiio modemos puede facilitar mucho la funcionalidad de la aplicaci6n migra hacia todas
el mantenimiento futuro. las computadoras cliente;
Dado que ya existe un prototipo del software, la pro- se implementan nuevas interfaces IGU en 10s cen-
ductividad de desarrollo debera ser mucho m& ele- tros clientes;
vada que la media. las funciones de bases de datos se le asignan a1 ser-
En la actualidad, el usuario ya tiene experiencia con vidor;
el software. Por tanto, 10s nuevos requisitos y la direc- la funcionalidad especializada (por ejemplo, 10s an&
ci6n dei cambio se podran estimarse con rnucha mas lisis de computaci6n intensiva) pueden permanecer
facilidad. en el centro del servidor; y
Las herramientas CASE para la reingenieria auto- 10s nuevos requisitos de comunicaciones, seguridad,
matizaran algunas partes del trabajo. archivado y control deberan establecerse tanto en el
Cuando finalice el mantenimiento preventivo, se dis- centro cliente, como en el centro servidor.
pondra de una configuraci6n completa del software
(documentos, programas y datos).
Lo reingenierio es muy similar ol hecho de lovone Es importante tener en cuenta que la migration des-
10s dientes. Se puede pensor en mil rozones de computadoras centrales a un proceso CIS requiere
y tordor en lovbnelos, dejbndolo poro mbs torde. tanto una reingenieria del negocio como una reinge-
Pero, 01 fino/, estos tbcticos de reirasor 10s cosos nieria del software. Ademhs, es precis0 establecer una
siempre volverbn o rondornos. ccinfraestructura de red de empress>>. [JAY941
Cuando una organizaci6n de desarrollo de software
vende el software como un producto, el mantenimien-
to preventivo se ve como ctnuevas versionesn del pro- En olgunos cosos, 10s sistemos t/S o 10s sistemos 00
grama. Un gran desarrollador de software local (por disedodos para reemplozor uno oplicocibn ontiguo deberon
ejemplo, un grupo de desarrollo de software de siste- enfocorse como un proyecto nuevo de desorrollo.
mas para una compaiiia de productos de un consumidor Lo reingenierio entro en iuego solo cuondo 10s elementos
de un sistemo ontiguo se van o integror mn lo nueva
de gran volumen) puede tener entre 500 y 2.000 pro-
orquitectum. €n olgunos cosos, quiz$ es meior no acepeptor
gramas de produccion dentro de su dominio de respon- lo viejo y creor uno funcionolidod nuevo e idintica.
sabilidad. Se podran asignar prioridades a estos
programas segun su importancia, y a continuaci6n se La reingenieria de aplicaciones CIS comienza con
revisaran esos programas como 10s candidatos para el un analisis exhaustivo del entomo de negocios que abar-
mantenimiento preventivo. ca la computadora central existente. Se pueden identi-
El proceso de ingenieria del software aplica prin- ficar tres capas de abstracci6n (Fig. 30.4). La base de
cipios, conceptos y mCtodos de ingenieria del softwa- datos se encuentra en 10s cimientos de la arquitectura
re para volver a crear las aplicaciones existentes. En clientelservidor, y gestiona las transacciones y consul-
la mayoria de 10s casos, la ingenieria directa no se limi- tas que proceden de las aplicaciones de servidor. Sin
ta a crear un equivalente modemo de un programa ante- embargo, estas transacciones y consultas tienen que ser
rior, sino que mas bien se integran 10s nuevos requisitos controladas en el context0 de un conjunto de reglas de
y las nuevas tecnologias en ese esfuerzo de volver a negocio (definidas por un proceso de negocio ya exis-
aplicar reingenieria. El programa que se ha vuelto a tente o que ha experimentado una reingenieria). Las
desarrollar amplia las capacidades de la aplicaci6n aplicaciones de cliente proporcionan la funcionalidad
anterior. deseada para la comunidad de usuarios.
Las funciones del sistema de gestion de bases de Un estudio cornpleto sobre el disefio y reingenieria
datos ya existente y la arquitectura de datos de la base de software clientelservidor es mhs adecuado para otros
de datos existente deberan sufrir un proceso de inge- libros especializados en este materia. El lector intere-
nieria inversa como precedente para el redisefio de la sad0 debera consultar [VAS93], [INMW [ y [BER92].
capa de fundamento de la base de datos. En algunos
casos, se crea un nuevo modelo de datos (Capitulo 12). 30.5.2. Ingenieria directa para arquitecturas
En todos 10s casos, la base de datos CIS sufre un pro-
ceso de reingenieria para asegurar que las transaccio- orientadas a objetos
nes se ejecutan consistentemente; para asegurar que La ingenieria del software orientada a objetos se ha trans-
todas las actualizaciones se efectuen dnicamente por formado en el paradigma opcional de desarrollo para
usuarios autorizados; para asegurar que se impongan muchas organizaciones de software. Sin embargo, iquC
las reglas de negocios fundarnentales (por ejemplo, antes sucede con las aplicaciones existentes que se desarro-
de borrar el registro de un proveedor, el servidor se ase- llaron empleando mktodos convencionales? En algunos
gura de que no exista ningun registro pendiente, con- casos, la respuesta consiste en dejar estas aplicaciones
trato o comunicaci6n para ese proveedor); para asegurar tal y como eran. Pero en otros casos, es preciso aplicar
que se puedan admitir las consultas de forma eficaz; y una reingenieria a las viejas aplicaciones para que se
para asegurar que se ha establecido una capacidad com- puedan integrar facilmente en grandes sistemas orienta-
pleta de archivado. dos a objetos.
La reingenieria del software convencional para pro-
ducir una implementation orientada a objetos hace uso
Interfaz: IGU de muchas de las mismas tCcnicas descritas en la Cuar-
ta Parte de este libro. En primer lugar, se hace una inge-
nieria inversa del software existente para que sea posible
Aplicaciones cliente
crear 10s modelos adecuados de datos, funcional y de
comportamiento. Si el sistema que se aplica a la reinge-
nieria extiende la funcionalidad o comportamiento de la
I aplicaci6n original, se crean casos prkticos (Capitulos
Interfaz: solicitudes de proceso 11 y 21). Los modelos de datos creados durante la inge-
nieria inversa se utilizan entonces junto con un modela-
do CRC (Capitulo 21) para establecer la base para la
definicidn de clases. Las jerarquias de clases, 10s mode-
10s de relaciones entre objetos, 10s modelos de compor-
tamiento de objetos, y 10s subsistemas se definen a
continuation, y comienza el disefio orientado a objetos.
I Interfaz: transacciones y consultas A medida que la ingenieria directa orientada a objetos
pasa del anhlisis hasta el disefio, se podra invocar el mode-
lo de proceso de ISBC (Capitulo 27). Si la aplicaci6n exis-
tente se encuentra con un dorninio ya ha sido popularizada
por muchas aplicaciones orientadas a objetos, es proba-
ble que exista una biblioteca robusta de componentes y
FIGURA 30.4. Proceso de reingenieria de aplicaciones que se pueda utilizar durante la ingenieria directa.
de cornputadores centrales a clientelservidor. Para aquellas clases que sea preciso construir partiendo
de cero, quiz6 sea posible reutilizar algoritmos y estruc-
La capa de reglas de negocios representa el software turas de datos procedentes de la aplicaci6n convencional
residente tanto en el cliente como en el servidor. Este ya existente. Si embargo, es preciso volver a disefiarlos
software lleva a cab0 las tareas de control y coordina- para ajustarse a la arquitectura orientada a objetos.
ci6n para asegurar que las transacciones y consultas
entre la aplicaci6n cliente y la base de datos se ajusten
a 10s procesos de negocios establecidos. 30.5.3. Ingenieria directa para interfaces
La capa de aplicaci6n del cliente implementa las fun- de usuario
ciones de negocios requeridas por grupos especificos de Cuando las aplicacionesrnigran desde la computadora cen-
usuarios finales. En muchos casos, se segrnenta una apli- tral a la computadora de sobremesa, 10s usuarios ya no
caci6n de computadora central en un cierto numero de estih dispuestos a adrnitir unas interfaces de usuarios arca-
aplicaciones miis pequefias, sometidas a reingenieria, y nas basadas en caracteres. De hecho, una parte significa-
adecuadas para su funcionamiento de sobremesa. La tiva de todos 10s esfuerzos invertidos en la transicidn desde
comunicaci6n entre aplicaciones de sobremesa (cuando la computaci6n de computadora central hash la arquitec-
es necesaria) sera controlada por la capa de reglas de tura clientelservidor se pueden reinvertir en la reingenie-
negocios. ria de las interfaces de usuario de la aplicaci6n cliente.
I N G E N ~ E R ~DEL
A SOFTWARE. U N ENFOQUE PRACTICO
[ARN89] Arnold, R. S., <<SoftwareRestructuring)), Proc. [DEM95] DeMarco, T., <<Leanand Mean,,, IEEE Softwczre,
IEEE, vol. 77, n." 4, Abril de 1989, pp. 607-617. Noviembre de 1995, pp. 101-102.
[BER92] Berson, A., ClientlServer Architecture, McGraw- [DIC95] Dickinson, B., Strategic Business Reengineering,
Hill, 1992. LC1 Press, 1995.
[BLE93] Bleakley. F.R.. <<The Best Plans: Many Companies [HAM901 Hammer, M., <<Reengineer Work: Don't Automa-
Try Management Fads, Only to See Them Flop)),The Wall te, Obliterate,,, Harvard Business Review, Julio-Agosto
Street Journal, 6 de Julio de 1993, p. 1. de 1990, pp. 104-112.
[BRE911 Breuer, P.T., y K. Lano, <<CreatingSpecification [HAN93] Hanna, M., <<MaintenanceBurden Begging for a
From Code: Reverse-Engineering Techniques,,, Journal Remedy,), Datamation, Abril de 1993, pp. 53-63.
of Software Maintenance: Research and Practice, vol. 3,
Wiley, 1991, pp. 145-162. [INM93] Inmon, W.H., Developing Client Server Applica-
tions, QED Publishing, 1993.
[CAN721 Canning, R., <<TheMaintenance "Iceberg",,, EDP
Analyzer, vol. 10, n." 10, Octubre de 1972. [JAY941 Jaychandra, Y., Re-engineering the Networked Enter-
prise,,, McGraw-Hill, 1994.
[CAS88] <<Case Tools for Reverse Engineering,,, CASE Out-
look, CASE Consulting Group, Lake Oswego, OR, vol. 2, [MAR941 Markosian, L. et al., <<Usingan Enabling Techno-
n." 2, 1988, pp. 1-15. logy to Reengineer Legacy Systems, CACM, vol. 37, n." 5,
Mayo de 1994, pp. 58-70.
[CHI901 Chifofsky, E.J., y J.H. Cross, 11, <<ReverseEnginee-
ring and Design Recovery: A Taxonomy,,, IEEE Software, [MER93] Merlo, E. et al., <<ReverseEngineering of User
Enero de 1990, pp. 13-17. Interfaces,,, Proc. Working Conference on Reverse Engi-
neering, IEEE, Baltimore, MD, Mayo de 1993, pp. 171-
[DAV90] Davenport, T.H., y J.E. Young, <<TheNew Indus- 178.
trial Engineering: Information Technology and Business
Process Redesign,,, Sloan Management Review, Summer [MER95] Merlo, E. et al., <<Reengineering
User Interfaces)),
1990, pp. 11-27. IEEE Software, Enero de 1995, pp. 64-73.
~ N G E N ~ E RDEL
~ A SOFTWARE. UN ENFOQUE P R A C T ~ C O
[MIL8 1 ] Miller, J., Techniques of Program and System Main- [STE93] Steward, T.A., ctReengineering: The Hot New Mana-
tenance (G. Parikh, ed.), Winthrop Publishers, 1981. ging Tool)), Fortune, 23 de Agosto de 1993, pp. 41-48.
[OSB90] Osbome, W.M., y E.J. Chifofsky, ((Fitting Pieces to [SWA76] Swanson, E.B., <The Dimensions of Maintenan-
the Maintenance Puzzle)),IEEE Software, Enero de 1990, ce)), Proc. 2nd Intl. Conf. Software Engineering. IEEE,
pp. 10-11. Octubre de 1976, pp. 492-497.
[PRE94] Premerlani, W.J., y M.R. Blaha, ((An Approach for [VAS93] Vaskevitch, D., ClientlServer Strategies, IDG Books,
Reverse Engineering of Relational Databases)), CACM, San Mateo, CA, 1993.
vol. 37, n." 5, Mayo de 1994, pp. 42-49. [WAR741 Wamier, J.D., Logical Construction of Programs,
[RIC89] Ricketts, J.A., J.C. DelMonaco y M.W. Weeks, ((Data VanNostrand Reinhold, 1974.
Reengineering for Application Systems)),Proc. Conf. Soft- [WE1951 Weisz, M., <<BPRis Like Teenage Sex)),American
ware Maintenance-1 989, IEEE, 1989, pp. 174-179. Programmer, vol. 8, n." 6, Junio de 1995, pp. 9-15.
30.1. Considere cualquier trabajo que haya desempeiiado en 30.5. Sugiera alternativas para el papel y el lapiz o para la
10s dltimos cinco aiios. Describa el proceso de negocios en documentaci6n electronica convencional que puedan semir
que haya desempefiado su funcion. Utilice el modelo RPN como base para la reestructuraci6n de documentos. [Pista:
descrito en la Secci6n 30.1.3 para recomendar cambios en el Piense en las nuevas tecnologias descriptivas que se podrian
proceso con la intencidn de hacerlo mas eficiente. utilizar para comunicar el objetivo del software.]
30.2. Realice una investigacion acerca de la eficacia de la rein- 30.6. Algunas personas creen que las tCcnicas de inteligencia
genieria de procesos de negocios. Presente argumentos a favor artificial incrementaran el nivel de abstraccion de 10s proce-
y en contra de este enfoque. sos de ingenieria inversa. Efectde una investigacidn sobre este
30.3. Su profesor seleccionara uno de 10s programas que haya tema (esto es, el uso de la IA para ingenieria inversa) y escri-
desarrollado alguien de la clase durante el curso. Intercambie ba un articulo breve que se decante por este tema.
su programa aleatoriamente con cualquier otra persona de la 30.7. iPor quC es mas dificil lograr la completitud a medida
clase. No le explique ni revise el programa. A continuacibn, que el nivel de abstraccion crece?
implemente una mejora (especificada por el instructor) en el 30.8. iPor quC tiene que incrementarse la interactividad si es
programa que haya recibido. precis0 incrementarse la completitud?
a. Lleve a cab0 todas las tareas de ingenieria del software
incluyendo una breve revision (pero no con el autor del 30.9. Obtenga literatura de productos correspondientes a tres
programa). herramientas de ingenieria inversa y presente sus caractens-
ticas en clase.
b. Lleve la cuenta cuidadosamente de todos 10s errores encon-
trados durante la comprobacion. 30.10. Existe una diferencia sutil entre la reestructuraci6n y
c. Describa su experiencia en clase. la ingenieria directa. iEn quC consiste?
30.4. Explore la lista de comprobaci6n del anilisis de inventa- 30.11. Investigue en la literatura para hallar uno o dos articu-
n o presentada en el sitio Web SEPA e intente desarrollar un sis- 10s que describan casos practicos de reingenieria de grandes
tema de evaluation cuantitativo del software que se pueda aplicar computadoras para producir una arquitectura cliente/semidor.
a 10s programas existentes en un esfuerzo de seleccionar 10s pro- Presente un resumen.
gramas candidatos para su reingenieria. Su sistema debera ir 30.12. iC6m0 se determinarian 10s valores de P4 a P7 en el
mas all5 del anilisis economico presentado en la Seccion 30.6. modelo de costes y beneficios presentado en la Secci6n 30.6?
A1 igual que muchos tdpicos candentes dentro de la comuni- 1997), Hunt (ProcessMapping: How to Reengineer Your Busi-
dad de negocios, el bombo publicitario de la reingenieria de ness Processes, Wiley 1996), y Carr y Johanson (Best Prac-
procesos de negocios ha dado pie a una vision mas pragmAti- tices in Reengineering: What Works and What Doesn't in the
ca del tema. Hammer y Champy (Reengineering the Corpo- Reengineering Process, McGraw-Hill, 1995) presentan casos
ration, HarperCollins, 1993) anticiparon gran inter& por el practicos y lineas generales detalladas para RPN.
tema con su best seller. ~osteriormente,Hammer (Beyond Feldmann (The Practical Guide to Business Process Reen-
Reengineering: How the Processed-Centered Organization is gineering Using IDEFO, Dorset House, 1998) estudia una
Changing Our Work and Our Lives, Harper-Collins, 1997) refi- notaci6n modelada que ayuda en la RPN. Berztiss (Software
no su vision centrimdose en temas cccentrados en procesos)). Methods for Business Reengineering, Springer, 1996) y Spurr
Los libros de Andersen (Business Process Improvement y colaboradores (Software Assistance for Business Reengi-
Toolbox, American Society for Quality, 1999), Harrington et neering, Wiley, 1994) estudian las herramientas y tCcnicas
al. (Business Process Improvement Workbook, McGraw-Hill, que facilitan la RPN.
Relativamente pocos libros se han dedicado a la reingenie- mation Architectures: Reengineering Information Systems,
ria del software. Rada (Reengineering Software: How to Reu- Prentice Hall, 1996) estudia el puente que existe entre RPN
se Programming to Build New, State-Of-The-Art Software, y la tecnologia de informacidn. Aiken (Data Reverse Engi-
Fitzroy Dearborn Publishers, 1999) se centra en la reinge- neering, McGraw-Hill, 1996) estudia cdmo reclamar, reor-
nieria a un nivel tCcnico. Miller (Reengineering Legacy Soft- ganizar y reutilizar 10s datos de la organizacih. Arnold
ware Systems, Digital Press, 1998) ccproporciona un marco (Software Reengineering, IEEE Compute; Society Press,
de trabajo para mantener 10s sistemas de aplicaciones sin- 1993) ha publicado una antologia excelente de 10s primeros
cronizados con las estrategias de negocios y con 10s cambios trabajos sobre las tecnologias de reingenieria del software.
tecnologicos>>.Umar (Application (Re)Engineering: Building En Intemet se disponen de gran variedad fuentes de infor-
Web-BasedApplications and Dealing With Legacies, Prentice macidn sobre la reingenieria de procesos de negocios y la
Hall, 1997) proporciona una guia valiosa para aquellas orga- reingenieria del software. Una lista actualizada de referen-
nizaciones que quieren transformar 10s sistemas antiguos en cias a sitios (paginas) web se puede encontrar en la direccidn
un entomo basado en Web. Cook (Building Enterprise Infor- http:/www.pressman5.com.
funciones
del reposiforio .... .561-8
I --.*.*P r,,
iQu6 es? Las herramlentas CASE ayu- de trabajo o para rwlizar algirn hito tie- niero del software en la producci6n de
dan a los gestores y practicantes d e la ne un beneficio sustancial. Pero hay resultados de alta calidad. Ademas,
ingenieria del software en todas l a s algo incluso mas importante. Lus hena- disponer d e automatizacidn permite
actividades asociadas a 10s procesos mientas pueden proporcionar nuevas que el usuario de CASE elabore resul-
d e software. Automatizan las activida- formas de obsewar la iniormaci6n de la tados adicionales y personalizados
des de gestion de proyectos, gestionan Ingenieria del software -formas que que no serdn fdrciles ni pr6rcticos d e
todos 10s productos de 10s trabajos ela- mejoran la perspicacia del ingeniero producir sin el soporte de l a s herra-
borados a travbs del proceso. y ayudan que realiza el trabaj-. Esto conduce a mientas.
a 10s ingenieros en el trabajo de anali- tomar mejores decisiones y conseguir LCdmo pueda estar seguro de que
sis, diseiio y codificaci6n. Lus herra- una wlidad mejor del software. lo he hecho correctamente? Uti-
mientas CASE s e pueden integrar ~ C u i l e son
s 10s pasos? CASE se utili- lice las herramientas como comple-
dentro de un entomo sofisticado. za junto con el modelo de procesog que mento d e las prdrcticas d e ingenleria
lQul6n lo hace? Los gestores d e pm- s e haya elegido. Si se dispone d e un del software -no como sustitutivcr-.
yectos y 10singenieros del software. juego completo de herramientas. se uti- Antes de poder utilizar las herramien-
@or qu6 es importante?La ingenieria lizar&CASEa lo largo de casi todos 10s tas eficazmente, deber6n aprenderse
del software e s dificil. Lus herramientas pasos del proceso d e software. 10sconceplos y mbtodos de la ingenie-
que reducen la cantidad de esfuem que &Cat51es el producto obtenido?Las ria del software. Solo entonces CASE
s e requiere para producir un producto herramientas CASE ayudan a1 inge- proporcionardr algrin beneiicio.
INGENIERIA DEL SOFTWARE. UN ENFOQUE P R ~ C T I C O
El mejor taller de un artesano -sea mecinico, carpin- El taller de ingenieria del software se denomina un
tero o ingeniero del software- tiene tres caracteristi- entorno de apoyo integ~wdoa proyecfos (que se des-
cas fundamentales: (1) una colecci6n de herramientas cribirri posteriormente en este capitulo), y el conjunto
utiles que le ayudalin en todos 10s pasos de la cons- de herramientas que llena ese taller se denomina inge-
truccion de un producto; (2) una disposition organiza- nieri'u del software asisfida por computadora (CASE).
da que permitirri hallar ripidamente las herramientas y CASE proporciona a1 ingeniero la posibilidad de
utilizarlas con eficacia; y (3) un artesano cualificado que automatizar actividades manuales y de mejorar su visi6n
entienda la forma de utilizar las herramientas de mane- general de la ingenieria. A1 igual que las herramientas
ra eficaz. Ahora es cuando 10s ingenieros del software de ingenieria y de diseiio asistidos por computadora que
reconocen que necesitan m;is herramientas y m b varia- utilizan 10s ingenieros de otras disciplinas, las herra-
das junto con un taller eficiente y organizado en el que mientas CASE ayudan a garantizar que la calidad se
puedan ubicarlas. diseiie antes de llegar a construir el producto.
La ingenieria del software asistida por computadora permiten a cada una de las herramientas comunicarse
puede ser tan sencilla ccmo una dnica herramienta que entre si, para crear una base de datos clel proyecto, y
preste su apoyo para una unica actividad de ingenieria para mostrar el mismo aspecto a1 usuario final (el inge-
clel software, o tan compleja como todo un entorno que niero del software). Los servicios de portabilidad per-
abarque ccherramientasu, una base de datos, personas, miten que las herramientas CASE y su marco de
hardware, una red, sistemas operativos, estrindares, y integraci6n migren entre distintas plataformas del hard-
otros mil componentes mris. Los bloques de construc- ware y sistemas operativos sin un mantenimiento adap-
ci6n de CASE se ilustran en la Figura 3 1.1. Cada blo- tativo significative.
que de construcci6n forma el fundamento del siguiente,
estando las herramientas situadas en la parte superior
del m o n t h . Es interesante tener en cuenta que el fun-
damento de 10s entornos CASE efectivos tiene relati-
Herramientas CASE
h
vamente poco que ver con las herramientas de ingenieria
del software en sf. Miis bien, 10s entomos para la inge- I Marco de lntegracidn
h
nieria del software se construyen con Cxito sobre una
arquitectura de entornos que abarca un hardware y un
software de sistemas adecuados. Ademis, la arquitec-
I Servicios de portabilidad
k
tura del entorno deberh tener en cuenta 10s patrones de Sistema operativo 1
trabajo humano que se aplicarrin durante el proceso de -
ingenieria del software. Plataforma hardware
h
Arqubcmra de entorno
1
que contribuyen can informacibn en el procesa de FIGURA 31.1. Bloques de construccion CASE.
desarrallo.
Robert Dixan Los bloques de construcci6n representados en la
Figura 3 1.1 representan un fundamento completo para
la integraci6n de herramientas CASE. Sin embargo, la
Las arquitecturas del entomo, que constan de una pla- mayor parte de las herramientas CASE que se utilizan
taforma hardware y de un soporte de sistema operativo en la actualidad no han sido construidas empleando
(incluyendo software de red, gesti6n de la base de datos todos 10s bloques de construcci6n anteriormente des-
y servicios de gesti6n de objetos), establece 10s cimien- critos. De hecho, algunas herramientas siguen siendo
tos para un entorno CASE. Pero el entorno CASE en si las ccsoluciones puntuales>>.Esto es, una herramienta se
requiere otros bloques de construcci6n. Existe un con- utiliza para prestar apoyo en una actividad de ingenie-
junto de servicios de portahiliclad que proporciona un ria del software concreta (por ejemplo, modelado de
puente entre las herramientas CASE, su marco de inte- anfilisis), pero esta herramienta no se comunica direc-
graci6n y la arquitectura del entorno. El marc0 de inre- tamente con otras, no esth unida a una base de datos del
~ r a c i b ne s un grupo de programas especializados que proyecto, y no forma parte de un entorno integrado
CASE (I-CASE). Aunque esta situaci6n no es la ideal, puente entre herramientas (por ejemplo, una herramienta
se puede utilizar una herramienta CASE bastante efi- de anhlisis y diseiio que se enlaza con un generador de
ciente, aunque se trate de una solicitud puntual. codigo). Mediante la utilizaci6n de este enfoque, la siner-
gia entre herramientas puede producir unos resultados
finales que senan dificiles de crear empleando cada una
Herramienta individual
0 (solucion puntual)
de las herramientas por separado. La integracibn de
fuente zinica se produce cuando un dnico vendedor de
herramientas CASE integra una cierta cantidad de herra-
Fuente unica mientas distintas y las vende en forma de paquete. Aun-
lntercambio de datos que este enfoque es bastante eficiente, la arquitectura
cerrada de la mayoria de 10s entomos de fuente dnica
puentes y asociaciones
entre herramientas ???? evita aiiadir fhcilmente herramientas procedentes de
otros fabricantes.
Existe un cierto ndmero de riesgos que son inherentes nistradores o personal tCcnico, por su utilizaci6n en 10s
siempre que se intenta efectuar una categorizacidn de distintos pasos del proceso de ingenieria del software,
las herramientas CASE. Existe una sutil implicaci6n que por la arquitectura del entomo (hardware y software)
consiste en que para crear un entomo CASE efectivo se que les presta su apoyo, o incluso por su origen o cos-
deberh implement= todas las categonas de h e m i e n t a s te [QED89]. La taxonomia que se presenta a continua-
-+st0 no es ni sencillo, ni ciert-. Cuando hay perso- ci6n utiliza como criterio principal la funci6n.
nas que creen que una herramienta pertenece a una cate-
goria, se puede crear cierta confusi6n (o contradicci6n)
a1 ubicar una herramienta especifica dentro de otra cate-
gona. Es posible que algunos lectores piensen que se ha
omitido una categoria completa --eliminando por tan-
to un conjunto de herramientas completo e incluirlo asi
en el entomo CASE global-. Ademhs, una categoriza- Herramientas CASE
ci6n sencilla tiende a ser plana --esto es, no se muestra Herramientas de ingenieria de procesos de nego-
la interaction jerarquica de las herramientas o las rela- cio. A1 modelar 10s requisitos de informaci6n estratC-
ciones que existen entre ellas-. A pesar de estos ries- gica de una organization, las herramientas de ingenieria
gos, es necesario crear una taxonomia de herramientas de procesos de negocios proporcionan un ccmetamo-
CASE -para comprender mejor la amplitud de CASE delon del cual se derivan sistemas de informaci6n espe-
y para apreciar mejor en donde se pueden aplicar estas cificos. En lugar de centrarse en 10s requisitos de una
herramientas dentro del proceso del software-. aplicaci6n especifica, estas herramientas CASE mode-
Las herramientas CASE se pueden clasificar por su lan la informaci6n de negocio cuando Csta se transfiere
funcibn, por su papel como instrumentos para admi- entre distintas entidades organizativas en el sen0 de una
I N G E N I E R ~ ADEL SOFTWARE. U N ENFOQUE P R A C T I C O
Un equipo de ingenieria del software utiliza herra- ra 3 1.3. se muestra un modelo sencillo del marco de
mientas CASE, 10s mCtodos correspondientes y un referencia que representa unicamente 10s componen-
marco de referencia de proceso con objeto de crear tes indicados anteriormente.
un conjunto de informaciones de ingenieria del soft-
ware. El marco de referencia de integracion facilita
la transferencia de informaci6n desde y hacia ese con-
junto de informaciones. Para lograr esto, deberan
existir 10s componentes de arquitectura siguientes: la
creacidn de una base de datos (para almacenar la
informaci6n); la construcci6n de un sistema de ges- Uno listo de todos 10s elernentos de informacion
tion de objetos (para gestionar 10s cambios efectua- de la ingenierio del software puede encontrorse
dos en la informaci6n); la construcci6n de un boio 10s ECs.
mecanismo de control de herramientas (para coordi-
nar la utilizaci6n de herramientas CASE), y una inter- La capa de interfaz del usuario (Figura 3 1.1) incor-
faz de usuario que proporcione una ruta consecuente pora un conjunto de herramientas de interfaz estanda-
entre las acciones efectuadas por el usuario y las rizado, con un protocolo de presentaci6n comun. El kit
herramientas que estan dentro del entorno. La mayo- de herramientas de interfaz contiene software para la
ria de 10s modelos (por ejemplo, [FOR90], [SHA95] gestidn de la interfaz hombre-mhquina, y una bibliote-
del marco de referencia de integracion representan a ca de objetos de visualizaci6n. Ambos proporcionan un
estos componentes como si fueran capas. En la Figu- mecanismo consecuente para la comunicaci6n entre la
CAPfTULO 3 1 INGENlERfA DEL SOFTWARE ASISTIDA P O R C O M P U T A D O R A
interfaz y las herramientas CASE individuales. El pro- multitarea, coordina el flujo de informaci6n desde el
t o c o l ~de presentacidn es el conjunto de lineas gene- repositorio y el sistema de gesti6n de objetos a las
rales que proporciona un mismo aspect0 a todas las herramientas, realiza las funciones de seguridad y audi-
herramientas CASE. Las convenciones del disefio de toria y recoge mktricas acerca de la utilizaci6n de herra-
pantalla, nombres y organizaci6n del menu, iconos, mientas.
nombres de 10s objetos, utilizaci6n del teclado y del
rat6n, y el mecanismo para acceder a las herramientas
se definen todos ellos como parte del protocolo de pre-
sentaci6n.
10srecunas para la integracibnde herramientasCASE
Capa de interfaz de usuario y para 10s Entornos de lntegracionde lngenierio
Kit de herramientas de interfaz
Protocolo de presentacidn
del software se pueden obtener en:
see.cs.flinders.edu.au/sewcb/ti/
I Servicios de gestidn de herramientas 1 La capa de gestidn de objetos (CGO) lleva a cab0
I II I I n
I
El Diccionario Websterdefine la palabra repositorio como del software) es interactuar con el repositorio empleando
cctodo objeto o persona considerado centro de acumula- herramientas CASE integradas con 61.
ci6n o almacenamiento>>. Durante las primeras fases de la En este libro, se utiliza un determinado numero de
historia del desarrollo del software, el repositorio era en tCrminos distintos para hacer alusi6n a1 lugar de alma-
realidad una persona --el programador que tenia que recor- cenamiento de la informaci6n de la ingenierfa del soft-
dar la ubicaci6n de toda la informaci6n relevante para un ware: base de datos CASE, base de datos del proyecto,
determinado proyecto de software, que tenia que recordar base de datos de entorno de apoyo integrado a proyec-
informaci6n que nunca se habia escrito y que tenia que to ( E m ) ,diccionario de requisitos (una base de datos
reconstruir la informaci6n que se habia perdid*. Triste- limitada) y repositorio. Aunque existen sutiles diferen-
mente, la utilizaci6n de una persona como cccentro de acu- cias entre algunos de estos tkrminos todos ellos hacen
mulaci6n y almacenamiento>> (aunque corresponda con la referencia a1 centro de acumulaci6n y almacenamiento.
definici6n del diccionario) no funciona demasiado bien.
En la actualidad, el repositorio es una cccosa>>-una base
de datos que actua como centro tanto para la acumulaci6n 31.6.1. El papel del repositorio en I-CASE
como para el alrnacenamientode informacidn de ingenie- El repositorio de un entomo I-CASE es el conjunto de
I ria del software--. El papel de la persona (del ingeniero mecanismos y de estructuras de datos que consiguen la
I N G E N I E R ~ ADEL SOFTWARE. UN ENFOQUE PRACTICO
Las herramientas de ingenieria del software asistida por por parte de fabricantes que trabajan a la vez, o bien se
computadora abarcan todas las actividades del proceso puede lograr mediante un software de gesti6n que se
del software y tambiCn aquellas actividades generales proporcione como parte del repositorio.
que se aplican a lo largo de todo el proceso. CASE com- La integraci6n entre hombre y computadora se logra
bina un conjunto de bloques de construcci6n que mediante esthndares de interfaz que se estin volviendo
comienzan en el nivel del hardware y del software de cada vez mas comunes a lo largo y ancho de toda la
sistema operativo y finalizan en las herramientas indi- industria. Para facilitar la integration de 10s usuarios
viduales. con las herramientas, de las herramientas entre si, de las
En este capitulo se ha tenido en consideration una herramientas con 10s datos y de 10s datos con otros datos
taxonomia de herramientas CASE. Las categonas abar- se disefia una arquitectura de integraci6n.
can tanto las actividades de gesti6n como las tCcnicas, Se ha aludido a1 repositorio CASE con el nombre de
e incluyen la mayor parte de las ireas de aplicaci6n del <<busde software>>. La informacion pasa por 61, y va cir-
software. Todas las categorias de herramientas se han culando de herramienta en herramienta a medida que
considerado ccsoluciones puntuales>>. progresa el proceso de software. Pero el repositorio es
El entorno I-CASE combina mecanismos de inte- mucho mis que un <<bus>>. TambiCn se trata de un lugar
graci6n para datos, herramientas e interacci6n hombre- de almacenamiento que combina sofisticados mecanis-
computadora. La integraci6n de datos se puede conseguir mos para integrar herramientas CASE mejorando con-
mediante el intercambio direct0 de informaci6n, median- siguientemente el proceso mediante el cual se desarrolla
te estructuras de archivos comunes, mediante datos com- el software. El repositorio es una base de datos relacio-
partidos o interoperabilidad, o a travCs de la utilizaci6n nal u orientada a objetos que es <<elcentro de acumula-
de un repositorio I-CASE completo. La integraci6n de ci6n y almacenamiento>> de la informacion de ingenieria
herramientas se puede disefiar de forma personalizada del software.
[FOR89a] Forte, G., <<InSearch of the Integrated Environ- [QED89] CASE: The Potential and the Pitfalls, QED Infor-
ment)), CASE Outlook, MarzoIAbril de 1989, pp. 5-12. mation Sciences, Inc., Wellsley, MA, 1989.
[FOR89b] Forte, G., <<RallyRound the Repository)), CASE [SHA95] Sharon, D., y R. Bell, <<Toolsthat Bind: Creating
Outlook, Diciembre de 1989, pp. 5-27. Integrated Environments)),IEEE Software, Marzo de 1995,
[FOR901 Forte, G., <(IntegratedCASE: A Definition)),Proc. pp. 76-85.
3'* Annual TEAMWORKERS Inti. User's Group Confe-
rence, Cadre Technologies, Providence, IR, Marzo de 1990. [SQE95] Testing Tools Reference Guide, Software Quality
Engineering, Jacksonville, FL, 1995.
[GRI95] Griffen, J., <<Repositories:Data Dictionary Descen-
dant Can Extend Legacy Code Investment),, Application [WEL89] Welke, R.J. c<MetaSystems on Meta Models)),
Development Trends, Abril de 1995, pp. 65-71. CASE Outlook, Diciembre de 1989, pp. 35-45.
lNGENlERfA DEL SOFTWARE. UN ENFOQUE P R ~ C T ~ C O
31.1. Haga una lista de todas las herramientas de desarrollo 31.6. /,Existen situaciones en las cuales las herramientas de
de software que utilice. Organicelas de acuerdo con la taxo- comprobacion dinamicas sean ccla unica forma posible~?De
nomia presentada en este capitulo. ser asi, jcuiles son?
31.2. Empleando las ideas introducidas en 10s Capitulos 14 y 31.7. Describa otras actividades humanas en las cuales la inte-
16, ic6m0 Cree usted que debenan de construirse 10s sewicios graci6n de un conjunto de herramientas haya proporcionado
de portabilidad? un mayor beneficio que la utilizacih de cada una de esas herra-
31.3. Construye un prototipo en papel para una herramienta mientas de forma individual. No utilice ejemplos de compu-
de gesti6n de proyectos que abarque las categonas indicadas tacion.
en la Seccion 31.3. Utilice la Segunda Parte de este libro para 31.8. Describa lo que quiere decir la integration entre herra-
obtener informacion adicional. mientas y datos con sus propias palabras.
31.4. Lleve a cab0 una investigacion acerca de 10s sistema de 31.9. En diferentes lugares de este capitulo se utilizan 10s tCr-
gestion de bases de datos orientados a objetos. Estudie por quC minos metamodelos y metadatos. Describa lo que significan
un SGBDOO sena ideal para herramientas GCS. estos terminos empleando sus propias palabras.
31.5. Recoja la informaci6n de productos de a1 menos tres 31.10.iSe le ocurre algun elemento de configuraci6n adicio-
herramientas CASE en una categona especificada por su pro- nal que pudiera incluirse entre 10s elementos del repositorio
fesor. Desarrolle una matriz que compare las caractensticas. mostrados en la Tabla 3 1. l ? Haga una lista.
En 10s aiios ochenta y principios de 10s noventa se publica- entornos de desarrollo de software. Muller y sus colaborado-
ron varios libros sobre CASE en un esfuerzo de sacar provecho res (ComputerAided Sojhare Engineering, Kluwer Academic
del alto grado de inter& de la industria en ese momento. Entre Publishers, 1996) han editado una coleccion de descripciones
las primeras ofertas que todavia disfrutan de valor se encuentran: de investigacion CASE a mediados de 10s noventa. La mejo-
Bergin, T. et al., Computer-Aided Software Engineering: res fuentes de informacion actual sobre herramientas CASE se
Issues and Trends for the 1990s and Beyond, Idea Group encuentran en Internet, en publicaciones ticnicas periaicas y
Publishing, 1993. en boletines informativos de industria.
Braithwaite, K.S., Application Development Using CASE El estfindar 1209 IEEE (Evaluation and Selection of CASE
Tools, Academic Press, 1990. Tools) presenta un conjunto de lineas generales para evaluar
Brown, A. W., D.J. Carney y E.J. Morris, Principles of las herramientas CASE para 10s ccprocesos de gestion de pro-
CASE Tool Integration, Oxford University Press, 1994. yectos, procesos de predesarrollo, procesos de desarrollo, pro-
Clegg, D., y R. Barker, CASE Method Fast-Track: A RAD cesos de postdesarrollo y procesos integralew. Un informe
Approach, Addison Wesley, 1994. detallado de Wallnau y Feiler (Tool Integration and Envi-
Lewis, T.G., Computer-Aided Software Engineering, Van ronment Architectures, Software Engineering Institute,
Nostrand-Reinhold, 1990. CMU/SEI-91-TR-11, Mayo de 1991), aunque este fechado,
Mylls, R., Information Engineering; CASE Practices and sigue siendo uno de 10s mejores tratamientos sobre entomos
Techniques, Wiley, 1993. CASE ficilmente disponibles.
Una amplia variedad de fuentes de informaci6n sobre
En la antologia de Chifofsky (Computer-Aided Software CASE esta disponible en Internet. Una amplia lista actuali-
Engineering, IEEE Computer Society, 2 . W . , 1992) se encuen- zada de referencias a sitios (pfiginas) web se puede obtener
tra una colecci6n util de 10s primeros trabajos sobre CASE y en http:/www.pressman5.com.
Pulabras c l a v e
rn
imbiio del ccanbio.. .574
comentaria final ....578
imporfancia
E
PERSPECTIVAS FUTURAS
~ Q ues?
i El futuro nunca e s i&cild e pre- Lpor qu6 10s grandes empresas multi- &Cude s e l products obtenido?
decir: los entendidos y expertos d e la nacionales contratan a otras empresas Una visibn del t6rmino futuro q u e
industria nose resisten. El iuturo esta- asesoms y a grandes pensadores para pueda o no ser correcta.
ba plagado d e carcasas de tecnologi- prepaxar 10s pron6sticos?, jpor qu6 un ~Cdnropuedo ester segaro de que
as nuevas y exciiantes que realmente gran porcentaje de lectores est6n pen- lo he hccho correctemente?
nunca llegaron a ser eso (a pesar del dientes de los hor6scopos? Queremos Predecir el futuro e s un arte, no una
b o m b que tuvieron), y que adquirie- saber lo que v a a ocurrir para estar ciencia. De hecho, e s bastante extra-
ron forma con tecnologias m6s rnoder- preprados. iio cuando s e ha hecho una predic-
nas que de alguna manera rnodificaron acutiles son 10s pesos? No hay una cidn seria, q u e Bsta s e a absolu-
su direccidn y exlensidn. Por lo tanto f6rmula para predecir e l futuro. Lo tamente verdadera o inequfvoca-
no pretendemos predecir el futuro sino hemos intentado recogiendo datos y mente err6nea (con l a e x c e p c i h .
que estudiaremos algunos temas que organiz6ndolos con el fin Be propor- afortunadamente, d e l a s prediccio-
hay que tener en cuenta para entender cionar una informacibn 6111; exami- nes sobre el fin del mundo). Se bus-
10s wmbios futuros d e la ingenierla del nando Ius asociaciones sutiles para can tendencias y se intenta extra-
software y del mismo software. extraer el conocimiento y. u purtir d e polarlas a1 futuro. Solarnente s e pue-
&Qui&n la hece? Todos. h t e , sugerir posibles uparlciones d e evaluar l a correccibn d e e s t a
~ P o quti
r es importante?~ P oqu6 r 10s que predecirbn c6mo ser6 todo e n el extrapolacibn u medida que pasa el
reyes antiguos contrataban adivinos?, futuro. tiempo.
En este capitulo se examinan las tendencias futuras. Nuestro intento noes explorar todas las
Areas de investigaci6n que resulten prometedoras. Tampoco lo es mirar en una <<bolade cris-
t a b y pronosticar el futuro, mds bien se intentar%explorar el Ambito del carnbio y la forma en
que el carnbio en si va a afectar a1 proceso del software en 10s afios venideros.
I N G E N I E R ~ ADEL SOFTWARE. UN ENFOQUE P R ~ C T I C O
La importancia del software de computadora se puede de una corporacih. El software es crucial para casi todos 10s
enunciar de muchas formas. En el Capitulo 1, el soft- aspectos del negocio. Pero de muchas maneras, el software es
ware se caracterizaba como diferenciador. La funcion tambiin una tecnologia oculta. Encontramos el software (fre-
cuentemente, sin darnos cuenta) cuando nos desplazamos has-
proporcionada por el software es lo que diferencia a 10s ta nuestro trabajo, cuando efectuamos cualquier compra, cuando
productos, sistemas y servicios, y proporciona una ven- nos detenemos en el banco, cuando hacemos una llamada tele-
taja competitiva en el mercado. Sin embargo, el soft- fonica, cuando visitamos a1 mtdico o cuando realizamos cual-
ware es mas que un diferenciador. Los programas, quiera de 10s cientos de actividades diarias que reflejan la vida
documentos y datos que constituyen el software ayu- modema.
dan a generar la mercancia mas importante que pueda El software esti en todas partes y, sin embargo, hay muchas
adquirir cualquier individuo, negocio o gobiemo -la personas en puestos de responsabilidad que tienen pma o nin-
guna comprension de lo que realmente es, como se conshuye,
informaci6n-. Pressman y Herron [PRE91] describen ode lo que significa para las instituciones que lo controlan (y a
el software de la forma siguiente: las que controla). Y, lo que es mas importante,tienen muy poca
El software de computadora es una de las pocas tecnologi- idea de 10s peligros y oportunidades que este software ofrece.
as clave que tendrh un impacto significativo en 10s aiios 90. La omnipresencia del software nos lleva a una con-
Se trata de un mecanismo para automatizar negocios, indus- clusion sencilla: siempre que una tecnologia tiene un
trias y gobiemos, un medio para transferir nuevas tecnologias, impacto amplio -un impacto que puede salvar vidas o
un mitodo para adquirir experiencia valiosa que otras perso-
nas puedan utilizar, un medio para diferenciar 10s productos de ponerlas en peligro, construir negocios o destruirlos,
una compaiiia de 10s productos de 10s de sus competidores, y informar a 10s jefes de gobiemo o confundirlos-, es
una ventana que permite examinar el conmimiento colectivo precis0 ccmanejarla con cuidado>>.
Los cambios en la informitica durante 10s liltimos 50 Es posible que la influencia de las ciencias no expe-
aiios han sido controlados por 10s avances en las cccien- rimentales ayude a moldear la direction de la investi-
cias experimentales duras-fisica, quimica, ciencia de gacion informitica en las ciencias experimentales. Por
materiales e ingenieria-. Durante las proximas dCca- ejemplo, el diseiio del las cccomputadoras futuraw pue-
das, 10s avances revolucionarios en la informitica serfin de que sea dirigido mas por un entendimiento de la psi-
dirigidos por las ccciencias no experimentales waves>> cologia del cerebro que por el entendimiento de la
-psicologia humana, biologia, neurofisiologia, socio- microelectronica convencional.
logia, filosofia y otras-. El period0 de gestation de las Los cambios que afectarhn a la ingenieria del soft-
tecnologias informiticas que se puede derivar de estas ware durante la proxima dCcada se verin influenciados
disciplinas es muy dificil de predecir. por cuatro fuentes simultheas: (1) las personas que rea-
lizan el trabajo; (2) el proceso que aplican; (3) la natu-
raleza de la information, y (4) la tecnologia informitica
subyacente. En las secciones siguientes, cada uno de
estos componentes -personas, proceso, informaci61-1y
tecnologia- se estudiarh detalladamente.
El software necesario para 10s sistemas de alta tecnologia ware, es posible que la productividad global del grupo
cada vez son mhs dificiles a medida que van pasando 10s sufra. Un mCtodo para resolver este problema es crear
aiios y el tarnaiio de 10s programas resultantes incremen- un n6mero de equipos de ingenieria del software, por
ta de manera proportional. El crecirniento rhpido del tama- el que se compartimentalicen las personas en grupos de
iio del programa ccpromediou nos presentarh unos cuantos trabajo individuales. Sin embargo, a medida que el
problemas si no fuera por el simple hecho de que: a medi- ndmero de equipos de ingenieria del software aumen-
da que el programa aumenta, el nlimero de personas que ta, la comunicacion entre ellos es tan dificil y larga como
deben trabajar en 61 tambiCn aumenta. la comunicaci6n entre individuos. Es alin peor, la comu-
La experiencia indica que a medida que aumenta el nicacidn (entre individuos o equipos) -es decir, es
nlimero de personas de un equipo de proyecto de soft- demasiado tiempo el que se pasa transfiriendo poco con-
CAPfTULO 32 PERSPECTIVAS FUTURAS
tenido de informaci6n, y toda esta informaci6n impor- (o en continentes diferentes) se ccencuentren,, regular-
tante suele ccperderse entre las grietas-. mente. Pero el video tambiCn proporciona otra ventaja:
Si la comunidad de ingenieria del software va a tra- se puede utilizar con10 dep6sito para conocimiento sobre
tar el dilema de la comunicaci6n de manera eficaz, el el software y para 10s reciCn llegados a un proyecto.
futuro de 10s ingenieros deberh experimentar cambios La evoluci6n de 10s agentes inteligentes tambiCn
radicales en la forma en que 10s individuos y 10s equi- cambiarh 10s patrones de trabajo de un ingeniero del
pos se comunican entre si. El correo electr6nic0, 10s software ampliando dramhticamente las herramientas
tablones de anuncios y 10s sistemas de videoconferen- del software. Los agentes inteligentes mejorarh la habi-
cia son 10s lugares comunes como mecanismos de cone- lidad de 10s ingenieros mediante la comprobaci6n de
xi6n entre muchas personas de una red de informaci6n. 10s productos del trabajo utilizando el conocimiento '
La importancia de estas herramientas en el context0 del especifico del dominio, realizando tareas administrati-
trabajo de la ingenieria del software no se puede sobre- vas, llevando a cab0 una investigaci6n dirigida y coor-
valorar. Con un sistema de correo electr6nico o de tabl6n dinando la comunicaci6n entre personas.
de anuncios eficaz, el problema que se encuentra un Finalmente, la adquisici6n de conocimiento esth cam-
ingeniero del software en la ciudad de Nueva York, se biando profundamente. En Internet, un ingeniero del soft-
puede resolver con la ayuda de un compaiiero en Tokio. ware puede subscribirse a un grupo de noticias centrado
En realidad, 10s tablones de anuncios y 10s grupos de en Areas de tecnologia de inmediata preocupaci6n. Una
noticias especializados se convierten en 10s dep6sitos pregunta enviada a un grupo de noticias provoca res-
de conocimiento que permiten recoger un conocimien- puestas de otras partes interesadas desde cualquier lugar
to colectivo de un grupo grande de tkcnicos para resol- del globo. La World Wide Web proporciona a1 ingenie-
ver un problema tCcnico o un asunto de gesti6n. ro del software la biblioteca mhs grande del mundo de
trabajos e informes de investigaci61-1,manuales, comen-
tarios y referencias de la ingenieria del software'.
Si la historia pasada se puede considerar un indicio,
es justo decir que las mismas personas no van a cam-
biar. Sin embargo, las formas en que se comunican, el
entomo en el que trabajan, la forma en que adquieren
el conocimiento, 10s mCtodos y herrarnientas que utili-
zan, la disciplina que aplican, y por tanto, la cultura
El video personaliza la comunicaci6n. Y lo mejor es general del desarrollo del software si cambiarh signi-
que hace posible que compaiieros en lugares diferentes ficativa y profundamente.
. .
32.4.EL <( NUEVO w P R Q C ~ O F T W
,. . ~
Es razonable caracterizar las dos primeras dCcadas de del marco de tiempo asignado. Los modelos evolutivos
la prhctica de ingenieria del software como la era del hacen hincapiC en la necesidad de productos de trabajo
ccpensamiento lineal),. Impulsado por el modelo de ciclo incrementales,anhlisis de riesgos, planificaci6n y revisi6n
vital clhsico, la ingenieria del software se ha enfocado de planes, y realimentaci6n que provenga del cliente.
como una actividad en la cud se podian aplicar una serie
de pasos secuenciales en un esfuerzo por resolver pro-
blemas complejos. Sin embargo, 10s enfoques lineales
del desarrollo del software van en contra de la forma en
que se construyen realmente la mayoria de 10s sistemas.
En realidad, 10s sistemas complejos evolucionan de for-
ma iterativa, e incluso incremental. Por esta raz6n, un
gran segment0 de la comunidad de la ingenieria del soft- ~ Q u Cactividades deberhn de poblar el proceso evo-
ware se esth desplazando hacia modelos evolutivos para lutivo? A lo largo de la dCcada pasada, el Modelo de
el desarrollo del software. madurez de capacidad desarrollado por el Software
Los modelos de proceso evolutivos reconocen que la Engineering Institute (SEI) [PAU93] ha tenido un irnpac-
incertidumbredomina la mayoria de 10s proyectos; que las to apreciable sobre 10s esfuerzos por mejorar las prhc-
lineas temporales suelen ser imposibles y cortas; y que la ticas de ingenieria del software. El MMC ha dado lugar
iteraci6n proporciona la habilidad de dar una soluci6n par- a muchos debates (por ejemplo, [BOL91] y [GIL96]),
cial, aunque un product0 completo no es posible dentro y sin embargo proporciona una buena indicaci6n de 10s
' El sitio Web SEPA puede proporcionar enlaces electronicos con las
materias mas importantes que se presentan en este libro.
atributos que deben existir cuando se pone en practica El crecimiento rfipido de las aplicaciones basadas en
una buena ingenieria del software. Web (WebApps) esta cambiando tanto en el proceso de
Las tecnologias de objetos, junto con la ingenieria del la ingenieria del software como en sus participantes. De
software (Capitulo 27) son un brote de la tendencia hacia nuevo, nos encontramos con un paradigma incrernen-
10s modelos de proceso evolutivos. Ambos tendran un tal y evolutivo. Pero en el caso de las WebApps, la inme-
irnpacto profundo sobre la productividad de desarrollo del diatez, seguridad y estCtica se estan convirtiendo en las
software y sobre la calidad del producto. La reutilizacion preocupaciones dominantes. Un equipo de ingenieria
de componentes proporciona beneficios inmediatos y con- de Web mezcla tCcnicos con especialistas de contenido
vincentes. Cuando la reutilizaci6n se une a las herramientas (por ejemplo, artistas, musicos, videografos) para cons-
CASE para 10s prototipos de una aplicacion, 10s incre- truir una fuente de informaci6n para una comunidad de
mentos del programa se pueden construir mucho m b ripi- usuarios grande e irnpredecible. El software que ha sur-
damente que mediante la utilizacih de enfoques gido del trabajo de la ingenieria de Web ya ha dado como
convencionales. La construcci6n de prototipos arrastran resultado un carnbio radical tanto econ6mico como cul-
a1 cliente a1 proceso. Por tanto es probable que clientes y tural. Aunque 10s conceptos y principios bfisicos trata-
usuarios se impliquen mis en el desarrollo del software. dos en este libro son invariables, el proceso de ingenieria
Esto, a su vez, puede llevar a una satisfacci6n mayor del del software debera adaptarse para llegar a acoplarse a
usuario final y a una calidad mejor del software global. la Web.
combinarlas de mod0 que nos proporcione algun bene- durante la pr6xima dkcada, el numero de alumnos que
ficio definido. cursarhn estudios primarios y secundarios, o la pre-
si6n habida sobre 10s politicos para reducir 10s impues-
tos y limitar por tanto 10s aumentos de sueldo para 10s
profesores.
Todos estos elementos de informaci6n se pueden
combinar para formular una representacidn del conoci-
miento -existirh una presidn significativa sobre el sis-
tema de educaci6n de 10s Estados Unidos a principios
del siglo veintiuno y esta presion proseguirh durante
Para ilustrar la progresi6n desde 10s datos a1 cono- rnhs de una dkcada-. Mediante este conocimiento,pue-
cimiento, consideraremos 10s datos del censo que indi- de aparecer la oportunidad de un negocio. Quizh exis-
can que el n6mero de nacimientos en 10s Estados tan oportunidades significativaspara desarrollar nuevos
Unidos en 1996 fue de 4,9 millones. Este numero modelos de aprendizaje que sean rnhs efectivas y menos
representa un valor de datos. A1 relacionar este dato costosas que 10s enfoques actuales.
con 10s nacimientos de 10s cuarenta afios anteriores se El futuro del software conduce a sistemas que pro-
puede extraer un elemento de informacion util: aque- cesan el conocimiento. Se ha estado procesando datos
llas personas que tuvieron muchos hijos en 10s afios durante cincuenta aiios y extrayendo informaci6n duran-
50 y a principios de 10s 60, esthn efectuando un ulti- te casi tres dkcadas. Uno de 10s desafios rnhs significa-
mo esfuerzo por tener niiios antes de llegar a1 final de tivos a 10s que se enfrenta la comunidad de la ingenieria
sus afios fkrtiles. Esta informaci6n se puede conectar del software consiste en construir sistemas que den el
entonces con otros elementos de informaci6n aparen- siguiente paso en el espectro: sistemas que extraigan el
temente no relacionados, por ejemplo, el n6mero actual conocimiento de 10s datos y de la informaci6n para que
de profesores de escuelas primarias que se retirarhn sea prhctica y beneficiosa.
Las personas que construyen y utilizan software, el pro- les) pueden dar lugar a cambios radicales en la clase
ceso de ingenieria del software que se aplica, y la infor- de software que se puede construir y tambikn a cam-
maci6n que se produce se ven afectados todos ellos por bios fundamentales en nuestro enfoque de la ingenie-
10s avances en la tecnologia del hardware y software. ria del software. Dado que estos enfoques no tradicio-
Hist61icamente, el hardware ha servido como impulsor nales siguen estando en el primer segment0 del ciclo
de la tecnologia de la computaci6n. Una nueva tecno- de quince afios, resulta dificil predecir la forma en que
logia de hardware proporciona un potencial. Entonces el mundo del software se modificarh para adaptarse a
10s constructores de software reaccionan frente a las ellas.
solicitudes de 10s clientes en un intento de aprovechar Las tendencias futuras de la ingenieria del softwa-
ese potencial. re se verhn impulsadas por las tecnologias de softwa-
Las tendencias futuras de la tecnologia del hardware re. La reutilizaci6n y la ingenieria del software basada
tienen probabilidades de progresar en dos rutas parale- en componentes (tecnologias que todavia no esthn
las. En una de las rutas, las tecnologias de hardware maduras) ofrecen la mejor oportunidad en cuanto a
seguirh evolucionando rhpidamente. Mediante la mayor mejoras de gran magnitud en la calidad de 10s siste-
capacidad que proporcionan las tecnologias de hard- mas y se encuentran en el momento de comerciali-
ware tradicionales, las demandas efectuadas a 10s inge- zarse. De hecho, a medida que pasa el tiempo, el
nieros de software seguirhn creciendo. negocio del software puede empezar a tener un aspec-
to muy parecido a1 que tiene el negocio del hardwa-
re en la actualidad. Quizh existan fabricantes que
construyan dispositivos diferentes (componentes de
software reutilizables), otros fabricantes que cons-
truyan componentes de sistemas (por ejemplo, un con-
junto de herramientas para la interacci6n hombre-
. Pero 10s cambios verdaderos de la tecnologia de mhquina) e integradores de sistemas que proporcio-
hardware se pueden producir en otra direcci6n. El nen soluciones para el usuario final.
desarrollo de arquitecturas de hardware no tradicio- La ingenieria del software va a cambiar -de eso
nales (por ejemplo, mfiquinas masivamente paralelas, podemos estar seguros-. Pero independientemente de
procesadores 6pticos y mhquinas de redes neurona- lo radicales que sean 10s cambios, podemos estar segu-
INGENlERfA DEL SOFTWARE. U N E N F O Q U E PRACTICO
ros de que la calidad nunca perdera su importancia, y probacion competente siempre tendran su lugar en el
de que un analisis y disefio efectivos junto con una com- desarrollo de sistemas basados en computadoras.
Ya han pasado 20 aios desde que se escribio la prime- 10s cuales parecen estar preparados a repetir 10s errores
ra edici6n de este libro. Y todavia me acuerdo de cuan- del pasado.
do era un joven profesor sentado en mi mesa y Para facilitar la transicion necesitamos muchas cosas
escribiendo (a mano) el manuscrito de un libro sobre un -un proceso de software adaptable y sensible, mCtodos
tema que no preocupaba a muchas personas y que aun mas eficaces, herramientas mas potentes y una acepta-
menos entendian realmente. Recuerdo la cartas de 10s ci6n mejor de sus partidarios y soporte de 10s directores,
editores rechazando el libro y argumentando (de forma y una dosis no pequeiia de education y <<publicidad)+.
educada, per0 contundente) que nunca habria mercado La ingenieria del software no ha disfrutado de una gran
para un libro sobre ccingenieria del softwaren. Afortu- publicidad, per0 a medida que va pasando el tiempo el
nadamente, McGraw-Hill decidio intentarlo3, y el res- concept0 se vende solo. De alguna manera, este libro es
to ya es historia. un ccanuncio,, para la tecnologia.
Durante 10s 6ltimos veinte afios, este libro ha cam- Es posible no estar de acuerdo con todos 10s enfo-
biado espectacularmente +n Ambito, tamafio, estilo y ques descritos en este libro. Algunas de las tCcnicas y
contenid-. A1 igual que la ingenieria del software mis- opiniones son polCmicas; otras deberan ajustarse para
ma, el libro tambiCn ha crecido, y por suerte tambiCn ha trabajar en diferentes entomos de desarrollo de softwa-
madurado durante 10s ultimos afios. re. Sin embargo, mi sincera esperanza es que Ingenie-
Hoy en dia un enfoque de ingenieria en el desarro- ria del Software: U n enfoque practico haya dibujado
Ilo del software de computadora es una sabiduria 10s problemas con 10s que nos enfrentarnos; haya demos-
convencional. Aunque continlie el debate sobre el ccpara- trado las ventajas de 10s conceptos de la ingenieria del
digma adecuado,,, el grado de automatizacion y 10s software, y haya proporcionado un marco de trabajo de
mCtodos mas efectivos, hoy en dia 10s principios sub- mCtodos y herramientas.
yacentes de la ingenieria del software se aceptan a tra- Como empieza un nuevo milenio, el software se
vCs de la industria. Entonces, ipor quC solo hace muy ha convertido en el product0 mas importante de la
poco tiempo que estamos siendo testigos de su gran industria y tambitn mas importante a nivel mundial.
adoption? Su impact0 e importancia han recomdo un largo cami-
La respuesta, creo yo, radica en la dificultad de la no. Y, sin embargo, una nueva generation de desa-
transicion de la tecnologia y el cambio cultural que la rrolladores de software deberan encontrarse con
acompafia. Aunque la mayoria de nosotros apreciamos muchos de 10s mismos retos con 10s que se enfrenta-
la necesidad de una disciplina de ingenieria para el soft- ron generaciones anteriores. Esperemos que aquellas
ware, luchamos contra la inercia de la practica anterior personas que se encuentren con el reto 4 n g e n i e r o s
y nos enfrentamos con nuevos dominios de aplicacio- del software- tengan la sabiduria de desarrollar sis-
nes (y 10s que disefian que son quienes trabajan en ellos) temas que mejoren la condition humana.
[BOL91] Bollinger, T., y C. McGowen, ccA Critical Look at [HOP901 Hopper, M.D., <<RattlingSABRE, New Ways to
Software Capability Evaluations,)) IEEE Software, Julio Compete on Information,), Harvard Business Review,
de 1991, pp. 25-41. Mayo-Junio de 1990.
[GIL96] Gilg, T., <<Whatis level Six?,,, IEEE Software, Ene- IPAU931 P a u k M. et a]., Capability Maturity Model for
ro de 1996, pp. 97-98 y 103 Somare, Software Engineering Institute, Camegie Mellon
University, Pittsburgh, PA, 1993.
32.1 Consiga una copia de las mejores revistas de negocios y 32.4 Revise el estudio de 10s modelos de proceso evolutivo
de noticias de esta semana (por ejemplo: Newsweek, Time, Busi- del Capitulo 2. Haga una investigaci6n y recoja articulos
ness Week).Haga una lista de todos 10s articulos o noticias que recientes sobre este tema. Resuma las ventajas e inconvenientes
se puedan utilizar para ilustrar la importancia del software. de 10s paradigmas evolutivos basados en las experiencias indi-
32.2 Uno de 10s dominios de aplicaciones de software mas cadas en 10s articulos.
candentes son 10s sistemas y las aplicaciones basados en Web 32.5 Intente desarrollar un ejemplo que comience con la
(Capitulo 29). Estudie la forma en que las personas, comuni- recolecci6n de datos puros y dC lugar a la adquisicion de
cacidn y proceso tienen que evolucionar para adoptar el desa- informaci6n, despuCs del conocimiento, y finalmente de sabi-
rrollo de WebApps de ccpr6xima generation,,. duria.
32.3 Escriba una breve descripcih del entomo de desarrollo
ideal de un ingeniero del software hacia el aiio 2010. Descri- 32.6 Seleccione una tecnologia de actualidad <<candenten(no
ba 10s elementos del entomo (hardware, software y tecnolo- necesita ser una tecnologia de software) que se estC estudian-
gias de comunicaci6n) y su impacto en la calidad y el tiempo do en 10s medios populares y describa la forma en que el soft-
de comercializaci6n. ware posibilita su evoluci6n e impacto.
Los libros que estudian las tendencias futuras del software tution Press, 1999) han publicado una coleccion de articulos
y de la computacion abarcan una amplia gama de temas tec- y ensayos sobre el impacto de la tecnologia en las estructu-
nicos cientificos, economicos, politicos y sociales. Robertson ras sociales, de negocios y economicas. Para aquellos que
(The New Renaissance: Computers and The Next Level of estCn interesados en estos temas tCcnicos, Luryi, Xu y Zas-
Civilization, Oxford University Press, 1998), argumenta que lavsky (Future Trends in Microelectronics, Wiley, 1999) han
la revolucion informatica puede que sea el unico avance mas publicado una colecci6n de articulos sobre las direcciones
significative en la historia de la civilization. Dertrouzos y probables del hardware de computadora. Hayzelden y Big-
Gates (What Will Be: How The New World of Information ham (Software Agents for Future Communication Systems,
Will Change Our Lives, Harperbusiness, 1998) proporcionan Springer Verlag, 1999) han editado una coleccion que estu-
un profundo estudio de algunas de las direcciones que las tec- dia las tendencias del desarrollo de 10s agentes de software
nologias de la informacidn pueden seguir en las primeras inteligentes.
dCcadas de este siglo. Barnatt (Valueware: Technology,Huma- Kurzweil (The Age of Spiritual Machines, When Compu-
nity and Organization, Praeger Publishing, 1999) presenta un ters Exceed Human Intelligence, Vikinflenguin Books, 1999)
estudio intrigante de la cceconomia de las ideas,, y de la for- argumenta que dentro de 20 afios la tecnologia del hardware
ma en que se creara el valor econdmico a medida que evolu- tendra la capacidad de modelar completamente el cerebro
ciona el ciber-negocio. El libro de Negroponte (Being Digital, humano. Borgman (Holding on to Reality: The Nature of
Alfred A. Knopf, Inc., 1995) fue un best seller a mediados de Information at the Turn of the Millenium, University of Chi-
10s noventa y continua proporcionando una vision interesan- cago Press, 1999) ha escrito una historia de informacih intri-
te de la computacion y de su impacto global. gante, haciendo un seguimiento de su papel en la
Kroker y Kroker (Digital Delirium, New World Perspecti- transformacidn de la cultura. Devlin (InfoSense: Turning Infor-
ves, 1997) han publicado una coleccion p o l h i c a de ensayos, mation into Knowledge, W.H. Freeman & Co., 1999) trata de
poemas y humor en donde exarninan el impacto de las tecno- dar sentido a1 constante flujo de informacidn que nos bom-
logias digitales en las personas y en la sociedad. Brin (The Trans- bardea dia a dia. Gleik (Faster: The Acceleration of Just About
parent Society: Will Technology Force us To Choose Between Everything, Pantheon Books, 2000) estudia el ritmo cada vez
Privacy and Freedom?, Perseus Books, 1999) repasa el debate mas veloz del cambio tecnol6gico y de su impacto en todos
continuo asociado a la pCrdida inevitable de privacidad perso- 10s aspectos de la vida modema. Jonscher (The Evolution of
nal que acompaiia a1 crecimiento de las tecnologias de la infor- Wired Life: From the Alphabet to the Soul-Catcher Chip-How
macion. Shenk (Data Smog: Surviving the Information Glut, Information Technologies Change Our World, Wiley, 2000)
Harpercollins, 1998) estudia 10s problemas asociados con la argumenta que el pensamiento humano y la interaccion tras-
ccsociedad infectada de informaci6nn que se esta produciendo cienden la importancia de la tecnologia.
del volumen de informacion que producen las tecnologias de Una variedad de fuentes de informacion sobre las ten-
informacibn. dencias futuras en la informatica esta disponible en Internet.
Miller, Michalski y Stevens (21S' Century Technologies: Una lista actualizada de referencias en la red se puede encon-
Promises and Perils of a Dynamic Future, Brookings Insti- trar en http://www.pressman5.com
Ias Espanol I Ingles
583
APENDICE
TR (Transitions) TR (Transiciones)
UI (User Interface) IU (Interfaz de usuario)
UICE (User Interface and Control Facilities) IUFC (Interfaz de usuario y facilidades de control)
UIDS (User-Interface Development Systems) SDIU (Sistemas de desarrollo de la interfaz de usuario)
UML (Unified Modelling Language) UML (Lenguaje de modelado unificado)
UNPL (Upper Natural Process Limit) LPNS (Limite de proceso natural superior)
V&V (Verification and validation) V&V (Verificaci6n y validacibn)
VPS (Violation of Programming Standards) IEP (Incumplimiento de las estidandares de programacion)
WBS (Work Breakdown Structure) EAT (Estructuras de anilisis del trabajo)
WebApps (Web-based Applications) WebApps (Aplicaciones basadas en Web)
WebE (Web-Engineering) IWeb (Ingenieria Web)
WFC (Weak Function Cohesion) CFD (Cohesiones funcionales dtbiles)
WMC (weighted methods per class) MPC (MCtodos ponderados por clase)
WON (Ways of navigating) NN (Nodos de navegaci6n)
XML (Extensible Mark-up Language) XML (Lenguaje de marcas extensible)
ZS (Zone Set) FZ (Fijar zona)
Abstracci6n. 223-224.423 funcional, 527
Acceso publico a datos rniembros (APD), 429 para ganar valores, 125- I26
Ackerman. A.F., 308 de interaccibn, 527
Acoplarniento, 23 1.424 de inventario, 545-546,554
entre clases objeto (ACO), 426 (n~crpping)
cornh. 23 1 de las transacciones. 252-255
de contenido. 23 1 de las transforrnaciones, 247-252
de control, 23 1 orientado a objetos (AOO), 352,376
externo, 23 1 de cornponentes genkricos. 366-367
rnCtricas de, 334-335 consistencia, 4 10-4 12
Actividndes enfoque(s)
de construcci6n e integraci6n (C&I), 170, 171 00,362
del rnarco de trabajo, 25,46 unificado, 363-364
de rnodelado de disefio, 171 exactitud, 409-4 10
protectoras, 16, 38 , mCtodos de, 362-363
Actores, 187- 188, 368 proceso, 367-373
Adaptador de objetos, 5 13 pruebas, 409-4 10
Agente de distribuci6n de objetos (ORB), 5 1 1 principios del, 188- 192
Agregaci6n. 394-395 de 10s requisites, 20
Agrupaci6n descripci6n, 182- 183
de datos atines, 505-506 orientado a objetos (AROO), 344
de objetos, 156 para la reutilizaci6n. 48 1-482
Albretch, A.J., 62 de selecci6n del diseiio, 244-245
Algoritrnos, 6 1 de tareas, 264
disefio de, 389-390 de valores lirnite (AVL). 297
Alrnactn Aplicaciones basadas en Web (WehApps)
CASE integsado (I-CASE) atributos de calidad, 523-524
caracteristicas y contenido, 568-57 1 caracteristicas, 523
papel, 567-568 categorias, 523
de dntos, 239-240, 504 contenido, 536-537
Almacenanliento estructurado, 480 controladas por el contenido, 522
Arnbigiiedades, 436 diseiio, 527-532
~ r n b i t o536
. escalabilidad. 537
del concepto, 1 19, 120- 121 evoluci6n continua, 523
prelirninases, 119 intensivas de red, 522
del software, 45 personas, 537
definici6n. 79 politicas, 537
ejernplo, 80-82 pruebas, 532-533
obtener informaci611, 79-80 tecnologias, 524
vabilidad, 80 Arbol
Ambler, S., 368 de decision, 93-94
Andisis, 216, 563 de profundidad de herencia (APH). 425,429
del drbol de fallos, 144 Areas de proceso clave (ACP), 14
del drea de negocio (AAN), 170 car;~cteristicas,18
del cbdigo fuente, 550-55 1 Arnold, R.S., 550
de cornprorniso para la arquitectura, 243-244 Arquitectura(s), 169- 170
de la configu~.acicin,527 de aplicaci6n. 169- 170
del contenido, 527 del ciclo de vida (ACV), 27
de contribuci6n, 245 cliente/servidor (CIS), 552-553
de coste, 485-486 de control, 243
de datos, 55 1 de datos, 169- 170,24 1-242.243
descripci6n del, 181, 36 1 descripci6n,238
del dorninio, 364,476-477 estratificadas, 242,496-497
orientado a objetos (ADOO), 344 importancia de la, 238-239
proceso, 365-366 de integraci6n. 566-567
estructurado, 216-217 de llarnada y retosno, 242
descripcibn, 199-200 orientadas a objetos, 242
historia, 200 del software, 226
rnecmisrnos, 2 10-2 15 Asignacibn de componentes
de fallos, 56-57 gesti6n de datos rernota, 5 10
Asignaci6n de componentes (Cont.) Capa de
16gica distribuida, 5 10 gestion de objetos (CGO), 567
' presentacidn distribuida, 509 interfaz de usuario, 566
remota, 509-5 10 repositorio cornpartido, 567
Asociacion, 395 Capacidad
de control, 5 I6 de descomposici6n, 284
de datos, 5 16 de expansion, 325
Atributos, 202,233-234 operativa inicial (COI), 27
especificacion de, 353 Card, D.N., 332
Auditona de configuracion, 158-159 Cardinalidad, 203
Autodocumentaci6n, 325 Carencia de cohesion en 10s mCtodos (CCM), 426,428
Automatization, 480 CASE integrado (I-CASE), 565-566
Autoridad de control de cambio (ACC), 157-158, 159 Cashman, M., 35 1
Caso(s) de
prueba, 415
Bach, J., 156 derivacion, 288-290
Balzer. R., 194 USO,186-188,367-368,374-375,395-397
Base de datos, 166,239,509 Caswell, D.L., 65
diseiio de, 5 14-515 Cavano, J.P., 326
estructura, 549-550 Certification, 461,468-649
objeto de, 5 16 Certificados digitales, 508
pruebas, 5 17 Champeaux, D. de, 347,367
Basili, V., 67 Charnpy, J., 4
Bass, L., 238, 513 Chapin, N., 276
Beizer, B., 282,290 Charette, R.N., 97
Belady, L., 219 Chen, P., 204
Bennett, S., 383 Chidamber, S.R., 427
Berard, E., 421,422 Chifovsky, E.J., 544
Berard, E.V., 344,355 Christel, M.G., 172
Bieman, J.M., 334 Churcher, N.I., 425
Binder, R.V.. 407,428,429 Ciclo de vida clasica. Ve'ase rnodelo secuencial lineal
Boal, I., 4 Clases. 346, 368-369
Boehm, B., 25,26,49,91, 134,306 clave, 429-430
Boock, G., 355,362,382 dependientes, 4 12
Bowan, J.P., 455 dispositivo de, 369
Breuer, P.T., 549 identificacion de, 350-353
Brooh, J., 4 interaction de, 369
Brooks, F., 9,21, 113 interdependientes,4 12
Buschmann, F., 385 propiedad de, 369
Clases-responsabilidades-colaboraciones(CRC), 368-371
consistencia, 410-412
estructuras, 371-372
Cadena definition-uso (DU), 292-293
jerarquias, 37 1-372
Calidad, 63-64,69,306, 324
subsistemas, 372
componentes reutilizables, 484-485 tarjetas indice, 368,369, 373,411
conceptos, 132-134 Clasificaci6n
control de variacibn, 132 de atributos y valores, 484
de concordancia, 132-133 enumerada, 483
de coste, 133 por facetas, 483-484
de diseiio, 132-133,220,221 Clements, P.C., 473
estgndares, 146-147 Clemm, G.M., 155
factores Cliente, 39, 169
extemos, 223 comunicacion, 25,46,79-80
intemos, 223 evaluacion, 25,46
ISO, 326 ligero, 5 10
de McCall, 234-235 pesado, 509
fallo, 134 reacci6n ante el concepto, 119
FURPS, 325-326 Coad, P., 346, 352,362-363, 382,386,387
medidas de, 94 Cobertura
mCtricas, 331-332 de enlaces, 296
movimiento, 134-135 de nodos, 296
prevencibn, 133 C6digo fuente, metricas, 336-337
transition a una vision cuantitativa, 326-327 Cohesion, 230,424
valoracion, 134 accidental, 230
variaciones entre muestras, 132 logics, 230
Cambio, 9- 10
metricas de, 334
ambito, 574 temporal, 230
Colaboraciones, 368,370-37 1 Contradicciones, 436
Coleccion de mktricas MDOO, 427 Control
COM de Microsoft, 480 cambio(s), 156-158
Comercio electronic0 formal, 158
arquitectura tkcnica, 501-502 individual. 158
descripcion, 499-500 proceso estadistico, 70-72
funciones, 500-501 sincronizacih, 158
tecnologias, 502-508 versiones, 155- 156
Complejidad, 423 Controlabilidad, 284
arquitectonica, 245 Controladores, riesgo, 101
ciclomitica, 287-288, 337 Conversion (mapping)
de datos, 333 arquitectonica, 245-246
mktricas, 335 de transacciones, 245-246
de operaciones, 428 de transformaciones, 247-252
Completitud, 325,424,436 Correcci611, 64,324
Componente(s) Coste, 485
actualizaci6n de, 474, 475 de la calidad, 133-134
adaptacion de, 474,475,479 empirico, 49
de la administracion de datos, 386-387 de presupuesto de trabajo
de administracion de tareas, 386 planificado (CPTP), 125-126
de aplicacion, 509,5 10-51 1 realizado (CPTR), 125- I26
clasificacion y recuperation de, 482-484 Counsell, S.J., 428
composicidn de, 474,475,480-481 Criterios de adaptacion, 117
cualificacion de, 193 Cuellos de botella, 505
diseiio de datos, 240-24 1 Cuestiones de context0 libres, 79-80, 183
de disponibilidad inmediata, 82.474 Cumplimiento de las estructuras, 278
distribution de, 509-520
de DOO, 385-387
estandar, 85 Datos, 576-577
de experiencia agrupar datos afines, 505-506
completa, 82-83 Davis, A,, 27, 188, 331-332
parcial, 474,475,479 Davis, M., 3 1
de gestion de recursos, 387 Decision hacer-comprar, 92-93
de interfaz de usuario, 386 arbol de decisiones, 93-94
JavaBean de Sun, 480-48 1 subcontratacion (outsourcing), 94
N, 154 Defectos,
nuevos, 83 ampliacion, 138
reutilizables, 193 impact0 del coste, 137-I38
de riesgo, 100- 101 Definicidn de objetos, 353
Composicion, 394-395 DeMarco, T., 42, 199. 200, 330. 331
Compresion de datos, 506 Dependencias
Comprobacion de cuenta, 370 de compartimiento, 245
Computadora de red, 5 10 flujo de, 245
Comunicaci6n restrictivas, 245
del cliente, 46 Depuracibn. 3 18
del equipo, 43-44 consideraciones psicol6gicas, 3 19
de procesos, 5 13-5 14 enfoques, 320-321
entre subsistemas, 387-388 proceso. 3 19
tkcnicas, 183-184 Desarrollo
Concentrador de impresion, 439-441 basado en componentes (DBC), 28-29,478-482,524
Concepto de la horda mongoliana, 9 de conceptos, 25
Concisibn, 325 rapid0 de aplicaciones (DRA), 22-23
Condicion, 274, 275 del software, matematicas, 437
compuesta, 291 de Webs, 564
de datos, 208 Descomposici6n, 84
Conectividad, 227 de proceso, 47
Configuracion del software, 10 de producto, 45
Conjunto de tareas, 16,25, 38 tkcnicas, 85-90
calculo del valor de seleccibn, 117-118 Descripcion(ones)
definicibn, 116- 117 de la informacion, 194
Consistencia, 325 funcional, 195
Constantine, L., 41,42 de objetos, 388-389
Construccidn de sistemas, 574-575 Descubrimiento de conocimiento en bases de datos
Contabilidad del estado, 159 (DCBC), 239
Contenido Despliegue de la funcion de calidad (DFC), 186-188
ejecutable, 503-504 Deutsch, M., 281
de la informacion, 189-190 Devanbu, P., 486
Dhama, H., 334 enfoque convencional VSP. 00,380-381
Diagrama(s) exactitud, 409
de burbujas, 206 mktodos, 382-383
de context0 del sistema (DCS), 176-177 metricas, 423-424
de flujo de control (DFC), 208 piramide, 380
creaci6n de, 2 13-214 pruebas, 409-410
creacion de, 2 10-211 plantillas, 528
entidad-relacion (DER), 200,204-205 principios, 222-223,528
de espina, 57 de procedimientos. Ve'ase Diseiio a nivel de componentes
de estado, 397 proceso, 22 1
de flujo de prueba basada en escenario, 415-417
de datos (DFD), 200-201,206-207,208 reglas de oro, 528
creacion, 2 11-2 13 para la reutilizaci6n,48 1-482
del sistema (DFS), 177 del sistema, proceso, 384-388
de Gantt, 123 de sistemas de negocio (DSN), 170
de transicion de estados (DTE), 183,209 tipos de, 220
Diccionario de datos, 200,206.2 15-216 visi6n general, 5 15-516
Dijkistra, E., 273-274 Disponibilidad, 143
Dimension, 85 Dispositivos
cambio, 85 de deteccion, 145-146
componente estindar, 85 poka-yoke, 145-146
de control, 6 1 Divisi6n estructural, 227-228
de datos, 6 1 Documentaci6n, 166,233,562-563
funcional, 6 1 pmeba de la, 300
logica difusa, 85 Dominio de la informaci6n, 189-190
punto de funcion, 85 valores, 60
Disefio, 234,563 Druker, P., 97
a nivel de componentes, 23 Dunn, R., 32 1
descripcion,273 Duplicacibn, 5 15
metricas, 333-335 de datos, 505
arquitectonico, 220,256,528-530 paquetes de, 504
analisis, 243-245
descripcion, 237
guia cuantitativa para, 244-245 Ecuacion de software, 92
metricas del, 332-333, 337 Eficacia de eliminaci6n de defectos (EED), 64-65
refinamiento del, 255 Eficiencia, 325
de sistemas CIS, 5 13-514 de ejecucion, 325
calidad de, 132 Eje de punto de entrada del proyecto, 25
de casos de prueba, 285,301 Ejogu, L.. 328
entre clases, 417-420 Elemento escalar, 228
convencional, 414 Encapsulamiento, 348,422-423,428
software 00,412-417 Encriptacion, 507-508
conceptos de, 223-229 Encubrimiento de caja
consistencia/uniformidaddel, 222 gris, 479
de datos, 220,239-240 negra, 479
a nivel de componente, 240-24 1 Entidades, 156
descripcion, 2 19 extemas, 176
efectivo, 229-23 1 Entomo
especificacion, 154.233 de desarrollo, 82
evaluacion, 225 de ingenieria del software (EIS), 84
para el fallo, 506 prototipos del, 193
formal, 461 Equipo
heuristicas, 23 1-232 centralizado y controlado (CC), 41
de usuario, 270 de descentralizado democratico, (DD), 41,42
descripcion, 259 descentralizado y controlado (DC), 41,42
evaluacion, 268-269 de ingenieria Web, 533-534
modelos, 262-263 administrador, 534
procesos, 263 desarrollador del contenido, 534
reglas de oro, 260-26 1 editor, 534
metodos de, 527-528 especialista de soporte, 534
de navegacion, 530-53 1 ingeniero, 534
de objetos, proceso, 388-390 proveedores, 534
orientado a objetos (DOO), 344,405 de software
aproximacion unificada, 383-384 coordinaci6n/comunicaci6n, 43-44
aspectos, 38 1-382 organizaci6n/estructura, 40-43
consistencia, 41 0-411 Errores, 3 11
descripcion, 379 deteccion de. 29 1-292
Errores (Cont.) diseiio de, 389-391
Iogica de, 286 internas, 549
tipograficos de, 286 jerarquicas, 529
Esfuerzo lineales, 528-529
distribuci6n, 115-116 en red, 529
personas, 114-116 reticulares, 529
Espacios, 503 Evaluacion y tCcnica de revision de programas (ETRP),
de diseiio cuantificado (EDC), 245 122-123
n-dimensional, 228-229 Exactitud, 325
Especificacion, 193-195 Expresi6n lbgica (Booleana), 291 -292
algebraica, 450-452 Extraccibn manual, 5 15
de control (EC), 201,208,213-214
de datos, 240-241
diseiio, 233 Facilidad de
de la estructura de cajas, 460-461,462 auditona, 325
de estado, 462,463-464 comprension, 284
negra, 462,463 prueba, 325
transparente, 462,464 atributos, 284
formal, 193 caracten'sticas,283-284
lenguajes de, 445 Factor de
notacibn matematica, 444-445 acoplamiento (FA), 427-428
funcional, 462-464 herencia de mCtodos (FHM), 427
principios, 194 polimorlismo (FP), 428
de proceso (EP), 20 1,206-207,2 14-215 Fallo(s), 506
representacibn, 194 del aiio 2000,3,4
de 10s requisitos del software, 194-195 dobles, 299
del sistema, 173, 177 multimodales, 299
Z, 446-447 simples, 299
Espiral WINWIN, 26-27 Fase de
Esquema del modelado del sistema, 176, 178 definicibn, 15
Estabilidad, 284 desarrollo, 15
Estado del sistema, 189 soporte, 15
Esthdares de Internet, 524 adaptacibn, 15
Estandarizacibn de correccibn, 15
la comunicaci6n, 325 mejora, 15
datos, 325 prevencibn, 15
rediseiio de datos, 55 1 Fecha limite, 112-113
Estilos arquitectbnicos, 24 1-242 Feigenbaum, E.A., 4
organizaci6n de, 243 Fenton, N., 327,333
refinamiento de, 243 Fiabilidad, 80, 143,324,326
taxonomia de, 24 1-243 disponibilidad, 143
Estimacibn, 78.84 medidas, 143
automatizada, 84 Firesmith, D.G., 369
basada Firma digital, 508
problemas, 86-87 Fleming, Q.W., 125
procesos, 89 Flexibilidad, 325
ejemplo basado en procesos, 89-90 Florac, W.A., 53
empirica, 84 Flujo de
Lineas de c6digo (LDC), 85-88 control, 208
00,299-300 datos, 242
Puntos de funci6n (PF), 86-87, 88 arquitecturas, 242
Estrategia de prueba, 321 continuo en el tiempo, 207
aspectos, 309-310 discreto, 207
depuracibn, 3 18-321 grafo de, 206
descripcibn,305 pruebas, 292-293
enfoque, 306-309 informacibn, 189-190
integracibn, 3 12-315 modelo, 205-209
organizacibn, 307 transaccih,246
sistema, 3 17-318 transformacibn,246
unidad, 3 10-312 Formacibn,325
validacibn, 3 16 Fragmentacibn, 274,5 15
Estructura(s) de Freedman, D.P., 137
anllisis del trabajo (EAT), 122 Freeman, P., 237
datos, 228-229.239 Funci6n de
jerkquicas, 228-229 ayuda
la informacibn, 189-190 complementaria, 267
programa. 226-227,229 integrada, 267
Funcidn (Cont.) individual, 7 1
. pmeba, 300 rangos en movimiento (Rm), 70
caracterizaci6n,477 de tiempo, 123-124
compendia de mensajes, 508 Grafo, 350
FURPS, 325-326 de evolucih, 155, 156
Gran conocimiento del sistema, 505
Gmpo independiente de prueba (GIP), 307
Gaffney, J.E., 62 Guiones de escenario, 429
Gamma, E., 379,390
Gane, T., 200
Garantia de la calidad del software (SQA), 148
actividades, 136 Habilidad de codificar, 279
antecedentes, 135- 136 Halstead, M., 337
definicion. 135 Hammer, M., 5.54 1, 542
descripcion, 13 1- 132 Hardware, 5, 166
estadistica, 14 1- 142 Hares, J.S., 170
plan, 147 Harrison, R., 428
Garlan, D., 226, 238 Hatley, D.J., 208
Gause, D.C., 79-80, 183 Henderson, J., 460
GCI, 785 Henry, S., 333
Generacion de Herencia, 348-349,423,429
codigo, 461 multiple, 349
una aplicacion, 22 Herramientas, 14
Generadores de pantallas, 564 capa, 567
Generalidad, 325 dinimico, 564
Generalization, 394 estitico, 564
Gestion de desarrollo, 564
de la configuracion del software (GCS), 159-160 de gestion ,562
categonas, 152 de pmebas, 565
descripcibn, 15 1 de implementaci6n, 268
elementos, 78 de programacion, 564
identificacion de objetos, 154-155 taxonomia, 561-565
IWeb, 536-537 Herron, R., 574
lineas base, 152- 153 Hetzel, W., 301
proceso, 154 Hinchley, M.G., 455
de programas relacionada con el personal, 50 Hindley, P.G., 476
de proyectos, 534-535,562 Hopper, M., 573
basada en metricas, 50 Humphrey, W., 56, 125
descripcion, 37 Hutchinson, J.W., 476
expectacion/rendimiento, 536
inicio de un proyecto, 535
personal, 38
proceso, 38 Identification de
producto, 38 objetos
proyecto, 39 bisicos, 154
de riesgos formal, 49 compuesta, 154
total de calidad (GTC), 135 requisitos, 183-188
atarimae hinshitsu, 135 inicio del proceso, 183- 184
kaizen, 135 Incertidumbre estructural, 78
miryokuteki hinshitsu, 135 Incompletitud, 437
Gestor(es) Independencia
de bloques, 439,444-445 funcional, 229-230
superiores, 39 del hardware, 325
(tkcnico) de proyectos, 39 !ndicadores de proceso, 55
Gilb, T., 309 Indice de
Glass, R., 332 errores (IE), 142
Gnaho, C., 530 especializacion (IE), 427
Goethert, W.B., 53 espectro, 244
Gooldman, N., 194 Informacibn, 576-577
Grado de rigor, 117 Informe de
casual, 117 cambio, 157
estricto, 117 estado de configuraci6n, 159
estructurado, 117 Ingenieria, 25,45-46
reaccion rapida, 117 del software basada en componentes (ISBC), 486
Grady, R.G., 56,57,65 actividades, 474-475
Grifico(s) de descripcih, 473-474
control, 70 econdmica de, 484-486
Ingenieria (Cont.) objeto, 265-266,5 15-516
proceso, 475 reducir la carga de memoria del usuario, 260-26 1
de componentes del sistema, 17 1 de usuario, 550,552-553
directa, 547,551-552 Internet, 3
arquitectura 0 0 , 553 Interoperahilidad, 325
clienteJservidor,552-553 Invanante de datos, 438
interfaces de usuario, 553-554 IS0
del dominio, 362, 366,476-478 9000-3, 146
de informaci6n, 20 9001, 146-147
inversa, 546, 547-548 9004-2, 146
datos, 549-550 9126,326
interfaz de usuario, 550 Iteraci6n del diseiio de procesos, 5 16
procesamiento, 548-549
de proceso de negocio (IPN), 169- 170, 178,561-562
de producto, 17 1, 178 Jackman, M., 42
de requisitos, 171, 172 Jackson, M.A., 223.227
analisis, 173 Jacobson, I., 187,362,382
especificaci6n, 173 Jerarquia(s) de
gestion, 174-175 clases, 4 16
identificaci6n, 172 control, 226-227
modelado, 174 tipos de objetos de datos, 204
negociaciones, 173 Juego de herramientas de la interfaz de usuario. 268
validation, 174
de sala limpia, 29,469
caracteristicas, 46 1 Kafura, D., 333
definicih, 3, 14 Kahn, P., 528
descripcion, 459 Kaizen, 135
enfoque. 460-462 Kang, K.C., 172
estrategia, 460-46 1 Kapln, C., 134
futuro, 573-579 Kautz, K., 72
importancia, 574 Kidd, J., 356,426, 427
paradigma, 19 Kirani, S., 418
proceso nuevo, 575-576 Kit de Desarrollo Bean (BDK), 481
pruebas, 467-469 Koppleman, J.M., 125
sistemas CIS, 5 12 Kraul, R..44
vision genCrica, 14- 16
de seguridad, 507
de sistemas, 178 Lano, K., 549
descripcion, 165 Larcher, F., 530
jerarquia, 167-169 Latencia, 506
del software, 7 Legibilidad para la computadora, 278
asistida por computadora (CASE), 9, 14 Lenguaje(s)
bloques de construcci6n, 560-561 de descripcion arquitectonica(LDAs),226
descripcion, 559 de diseiio de programas (LDP), 276-277
taxonomia, 561-565 ejemplo, 277-278
Web (IWeb), 537-538 de interconexion de modulos (LIM), 155
atributos, 522-524 estructurado. VPase Lenguaje de diseiio de programas (LDP)
descripci6n,52 1-522 unificado de modelado (UML), 29,363-364,383-384,393-397
estimation, 534-535,536 estudio de un caso, 398-400
marco de trabajo, 525-526 Leveson, N.G., 144
problemas de gestion, 533-537 Levy, J., 336
proceso, 525 Libros en linea, 398-400
subcontratacion (outsourcing), 534,535-536 Liderazgo
Inspection. Viase Revisiones ttcnicas formales (RTF) caracteristicas, 40
Instantanea, 5 15 rasgos, 40
Instituto de Ingenieria del Software (SEI), 16, 18, 136 Limite del proceso natural
libro de guia, 73-74 inferior, 71
Instrumentaci6n, 325 superior, 7 1
Integracih, 564 Lineas de c6digo (LDC), 58,62-63
Integridad, 64 ejemplo de estimacibn, 87-88
Interfaz estimaci6n,86-87
action, 265-266 Linger, R.M., 465,466
construccion consistente, 26 1 Lister, T., 42
dar el control a1 usuario, 260 Localizaci6n, 422
diseiio, 220, 266-268,531-532,564 L6gica en tiempo real, 144
grifica de usuario (IGU), pruebas, 299-300 Lorenz, M., 356-357,426,427
hombre-miquina, 337 Lowe, D., 523
MACA, 244 desarrollo, 67,69-70
Madurez del proceso, 16- 18 de diseiio 00,423-424
definicibn, 16- 17 establecimiento de programas para, 72-74
gestionada, 17 etiqueta, 56
inicial, 17 evaluacih, 66
optimizacih, 17 de integracibn con objetos, 66
repetible, 17 linea base, 66
Mandel, T., 260-261 de mantenimiento, 338
Mantei, M., 41 del modelo
Mantenibilidad (capacidad de mantenimiento), 64,278,325, 326 de analisis, 329-336
Mantenimiento, 338,544-545 de diseiio, 332-336
Marco de proceso comun, 16 de organizaciones pequeiias, 72
00,355-356 orientadas a
Matemiticas, 437,441 clases, 424-428
aplicacibn, 444-445 funciones, 59-61
conjuntos, 441-442 objetos
especificacibn constructiva, 441 -442 caractensticas, 422-423
sucesiones, 443 descripcibn,421
Matrices de grafos, 290 propbsito,422
McCabe, T.J., 335 operaciones. 428
McCall, J.A., 324-325, 326 tamaiio, 59
McCorduck, P., 4 privadas, 56
McGlaughlin, R., 221 de proceso, 55-57,69-70
McMahon. P.E.. 478 de producto, 58
Medicibn, 69, 74 de proyecto(s), 58-59
calidad, 63-65 00,356-357,428-430
definicion, 53, 54 de prueba, 337
descripcibn, 323-324 pliblicas, 56
directa, 58 punto de funcibn ampliado, 61-62
indirecta, 58 reconciliacibn de diferentes enfoques, 62-63
principios, 328 de reutilizacibn, 486
razones, 53 de software sencillo, 72
Medida, descripcibn, 54 tkcnicas, 43
Mejora marco de trabajo, 327-329
estadistica del proceso de software (MEPS), 56-57 reto de, 327
del proceso del software, 55-57 de validez estadistica, 70-72
Mellor, S., 207 Meyer, B., 225
Mensajes, 347-348 Miller, E.. 306
de error, 267-268 Mills, H.D., 460
Merlo, E., 554 Mitigacibn, monitorizacibn y gestibn del riesgo (MMGR), 102,
Mktodo(s), 14, 347 105-106, 107
del camino critic0 (MCC), 122-123 Mitos, 8
formales, 456 de clientes, 9-10
basados en objetos, 447-450 de desarrolladores. 10
conceptos basicos, 436-441 de gestibn, 9
concurrentes, 452-455 Modalidad, 203
descripcibn, 435 Modelado, 190
10s diez mandamientos de, 455-456 de analisis, 512
futuro, 456 actividades del, 171
modelo, 29 descripcibn del, 199
preliminares matematicos, 441-443 elementos del, 200-201
ponderados por clase (MPC), 425 del comportamiento, 209-210
Mktrica(s), 17,426-427 de datos, 22, 154, 189
acoplamiento, 334-335 cardinalidad, 203
de argumentos a favor, 65-66 elementos, 201-203
atributos, 328-329 modalidad, 203-204
bang, 330-33 1,337 representaci6n grafica, 204-205
calculo, 33 1 estructural, 363,477-478
basadas en funciones, 329-330 funcional, 190
calculo, 66 del negocio, 22
de calidad, 63-65 de procesos, 22,562
de especificaciones, 33 1-332 del sistema, 167-168, 174, 175-177
de cbdigo fuente, 336-337 limitaciones, 168
de cohesibn, 334 preferencias, 168
de coleccibn, 66 restricciones, 168
complejidad, 335 simplificaciones, 168
definicibn, 53,54 supuestos, 167-168
~ N D I C EDE MATERIAS