Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Un enfoque prctico
CAPTULO 1
PARTE UNO
PARTE DOS
PARTE TRES
CAPTULO 3
CAPTULO 4
Desarrollo gil
22
48
77
103
CAPTULO 5
CAPTULO 6
Ingeniera de sistemas
104
133
CAPTULO 7
Ingeniera de requisitos
155
CAPTULO 8
191
CAPTULO 9
245
CAPTULOlO
Diseo arquitectnico
275
CAPTULO 11
315
CAPTULO 12
350
CAPTULO 13
CAPTULO 14
CAPTULO 15
382
418
462
~ CUATRO
Ingeniera Web
502
CAPTULO 17
CAPTULO 18
544
517
CAPTULO 19
566
CAPTULO 20
604
CAPTULO 22
640
663
CAPTULO 23
CAPTULO 24
690
CAPTULO 25
CAPTULO 26
Gestin de la calidad
CAPTULO 27
724
74 7
767
796
vil
vill
CONTENIDO BREVE
PARTE CINCO
Mtodos formales
CAPTULO 29
CAPTULO 30
CAPTULO 31
Reingeniera
CAPTULO 32
830
902
927
858
879
Prefacio xxviii
Recorrido xxxi
CAPTULO 1
1. 1
1. 2
Software
1. 3
1.4
Software heredado
l .4 .2
1.5
1.6
1.7
Resumen
12
12
14
17
18
18
19
PARTE UNO:
11
1.4 . 1
Referencias
20
21
22
2. 1
2.2
2.3
2 .4
23
24
29
34
2 .5
2 .6
36
38
2 .6 . 1
2.6 .2
2.7
2 .8
Producto y proceso
2 .9
Resumen
Referencias
39
40
42
43
44
45
46
CAPTULO 3
47
3 .1
Modelos prescriptivos
3.2
El modelo en cascada
49
3 .3
51
3.3.1
El modelo incremental
52
3.3.2
El modelo DRA
50
53
1x
CONTENIDO
3.4
3.4. l
3.5
3.6
Construccin de prototipos 55
58
3.4.2
El modelo en espiral
3.4.3
3 .4 .4
60
61
3.5.2
63
3.5.3
64
El proceso unificado 67
3.6. l
3.6.2
3.6 .3
3 .7
54
Resumen
Referencias
67
73
CAPTULO 4
DESARROU.0 GIL 71
4.1
Qu es la agilidad? 79
4. 2
Qu es un proceso gil?
4 .3
81
4.2. 1
4.2.2
Factores humanos
4.3 .3
4.3 .4
Mel 92
4.3.5
Cristal 95
89
4.3.6
4.3.7
Resumen
95
99
100
1O1
l 02
5 .2
84
4.3.2
Relerencios
5 .1
81
82
4.4
75
10 3
La esencia de lo prctico
5. 1.2
Principios esenciales
Prcticos de comunicacin
109
5 .3
Prcticos de lo ploneocin
l 13
5 .4
116
107
105
106
CONTENIDO
5 .5
xi
5.4.l
5.4 2
Prctica de la construccin
122
5.5. l
5.5 2
pruebos
123
56
Despliegue
5.7
Resumen
Referencias
117
l 19
124
126
128
l 29
l 30
CAPTUL06
131
INGENIERA DE SISTEMAS
133
l 34
6. l
6. 2
137
6.2.2
139
136
6.3
6.4
6.5
6.6
144
6.5. 1
Modelado HatleyPirbhoi
6.5 2
Resumen
151
Referencias
144
CAPTULO 7
152
de mformocin 153
INGENIERA DE REQUISITOS
7 .1
7.2
Toreos de
7.4
147
152
7. 3
140
142
155
156
7.2.1
Inicio
7.2.2
Obtencin
158
7 2.3
Elaboracin
7 2.4
Negociacin
158
159
160
7.2.5
Especificacin
7.2.6
Validacin
7.2.7
Gestin de requisitos
160
161
161
7.3.1
7.3.2
7 3 3
7 3.4
Obtencin de requisitos
164
lo colaboracin 164
165
166
7.4. l
7 4 2
7.4 3
172
167
171
164
xii
CONTENIDO
7.5
7.6
7.4.4
Productos de trabajo de lo obtencin
Desarrollo de casos de uso 173
Construccin del modelo de anlisis
7.6.2
Patrones de anlisis
Negociacin de requisitos
7.8
Validacin de requisitos
7.9
Resumen
Referencias
184
186
187
CAPTULOS
188
l 89
Anlisis de requisitos
192
8. 1. 1
8.1.2
8. l .3
194
196
8.3
197
8.3. l
Objetos de datos
l 97
8.3.2
Atributos
8.3.3
Relaciones
198
8.3.4
Cardinalidad y modalidad
199
8.4
8.5
8.7
l 93
194
8.2
8.6
179
183
186
8. 1
179
7.6. 1
7.7
173
199
201
202
8.5 .1
8.5.2
8.5.3
202
208
8.6. 2
8.6.3
8.6.4
Especificacin de proceso
21 l
217
219
8 7. l
8.7.2
8.7.3
Definicin de operaciones
8.7.4
8.7.5
8.7.6
8.8
Creacin de un modelo
8.9
8.8.2
Resumen
8.8. 1
223
de comportamiento 234
236
235
225
CONTENIDO
Referencias
xm
24 1
241
CAPTULO 9
243
9. 1
9.2
9.3
9.4
9.5
9 .6
9 .3. l
Abstraccin
252
9 .3.2
Arquitectura
253
9.3.3
Patrones 254
9.3.4
Modularidad
9.3.5
Ocultacin de informacin
9.3.6
Independencia funcional
9.3.7
Refinamiento
247
254
256
256
257
9.3.8
Refabricocin
9.3.9
258
263
9.4.2
9.4.3
9.4.4
9.4.5
269
9.5 . 1
9.5.2
9 .5.3
Resumen
266
271
Referencias 272
Problemas y puntos o considerar
273
CAPTULO 10
273
l 0.1
10.2
10.1.2
Por qu es importante la arquitectura?
Diseo de datos 278
10.2.1
278
10.2.2
10. l .1
10.3
10.4
Qu es lo arquitectura?
276
280
1O. 3. l
10.3.2
10.3.3
Organizacin y refinamiento
Patrones arquitectnicos
Diseo arquitectnico
10.4. l
284
287
287
288
281
xi.V
CONTENJDO
10.5
10.6
10.4.2
Definicin de arquetipos
10.4.3
10.4.4
10.5.2
Complejidad arquitectnica
10.5.3
296
10.6.2
Flujo de transaccin
10.6.3
Correlacin de transformaciones
10.6.4
Correlacin de transacciones
10 .6.5
Resumen
298
299
306 ,
31 1
312
3 13
Qu es un componente?
11. 1. 1
11.1 .2
El concepto convencional
317
11.1 .3
318
321
322
de diseo 322
11.2. 1
Principios bsicos
11.2.2
11.2.3
Cohesin
11.2.4
Acoplamiento
327
329
11.3
11.4
11.5
331
337
340
11.5. 1
340
11.5.2
342
11.5.3
11.5.4
Resumen
343
345
346
347
347
CAPTULO 12
12.1
31 O
3 12
CAPTULO 11
Referencias
297
297
Flujo de transformacin
11.6
296
11.2
292
10.5.1
Referencias
11. 1
290
294 r
10.6. 1
10.7
289
348
35 1
12.1 . 1
12. 1.2
12.1.3
35 1
354
353
325
294
CONTENIDO
12.2
12.3
12.2'.2
El proceso
358
Anlisis de la interfaz
359
12.3.l
12.3.2
12.3.3
12.3.4
12.4
XV
36 1
367
367
360
12.4.2
12.4.3
12.5
12.6
Resumen
Referencias
377
378
379
380
CAPrrutO 13
13. 1
13.1. 2
13.1.4
13.2
Aspectos estratgics
13.3
13.6
13.3 .l
Pruebo.deunidad
391
392
402
13.4.2
Pruebo de integracin en el contexto orientado a objetos
Pruebas de validacin 404
13.5. l
13.5.2
Revisin de lo configuracin
13.5.3
13.7
390
13. 3.2
13.4. 1
13.5
385
13. 1.3
13. l .5
13.4
383
l 3. l . 1
405
405
406
Prueba de recuperacin
407
13.6.3
l 3.6.4
408
13 .7. l
t i proceso de depuracin
13.7.2
Consideraciones psicolgicos
4lO
411
403
386
388
xv1
CONTENIDO
13.7.3
13.7.4
13.8
Resumen
4 14
415
Referencias 416
Problemas y puntos o considerar 416
Otros lecturas y fuentes de informoci.n 4 17
CAPTULO 14
14.1
14.2
14.3
14.4
418
4 19
422
14.4.1
14.4.2
14.4.3
14.4.4
14.5
423
423
423
425
427
430
43 l
Pruebo del flujo de dots 431 ~
Pruebo de bucles 432
14.6 Pruebo de cojo negro 41 3
Mtodos grficos de pruebo 434
14.6.1
14.6.2
Particin equivalente 436
Anlisis
de valores lmite 437
14.6.3
Pruebo de tablo ortogonal 438
14.6.4
14.7 Mtodos de pruebas orientados o objetos 441
14.7. l
Implicaciones del concepto orientado o objetos en el diseo de cosos de pruebo 442
14.7.2
Aplicobilidod de mtodos convencionales de diseo de cosos de pruebo 442
14.7.3
Pruebo bosodo en fallos 443
Cosos de pruebo y jerarqua de clase 444
14.7.4
Pruebo bosodo en escenarios 444
14.7.5
14.7.6
Estructuras de superficie y de fondo en pruebas 446
14.8 Mtodos de pruebo oplicobles ol nivel de clase 447
14.8.1
Pruebo aleatorio poro doses orientados o objetos 447
14.8.2
Pruebo de particin ol nivel de clase 448
14.9 Diseo de coso de pruebo de interclose 449
14.9. l
Pruebo de doses mltiples 449
Pruebas derivados de modelos de comportamiento 451
14.9.2
14. l O Pruebo de_entornos especiolzodos: arquitecturas y aplicaciones 452
14. 1O. l Pruebas de interfaces grficosde-usuorio 452
14. 10.2 Pruebo de orquitecturos cliente/servidor 452
14. 1O. 3 Pruebo de lo documentacin y los funciones de ayudo 454
14.10.4 Pruebo de sistemas de tiempo reol 455
14. 11 Patrones de pruebo 456
Pruebas de lo estructuro de control
14.5.1
14.5.2
14.5.3
Pruebo de condicin
CONTENIDO
Referencias
459
CAPfTuLo 15
15. l
Calidad general
15. l . l
15. l . 2
15. l . 3
15.2
15.3
15.4
463
465
467
467
15.2.2
15.2.3
15.2.4
Principios de medicin
15.2.5
468
1'5.2.6
469
474
15. 3. l
15.3.2
474
477
15.4.2
15.4.3
15.4.4
15.4.5
15.4.6
15.4.7
15.4.8
15.6
493
15.6. l
15.6".r
15.7
15.8
Resumen
Referencias
497
497
CAfflULO 16
483
15.5
"
464
15 .2. l
J'\I
INcaNJERi.A WEB
502
16. l
16.2
507
504
487
CONTENIDO
16.2.l
16.2.2
16. 2.3
16.3
Proceso 507
Mtodos 507
Herromientos y tecnologa 508
17. l
17. l. l
17.1 .2
17. 1.3
17.2
17.3
t.
530
17.5. l
17.5.2
17.6
17.7
17.4. l
17.4.2
17.5
17 3,.1
17.3.2
17.4
Referencias 54 l
Problemas y puntos o considerar 542
Otras lecturas y fuentes de informacin
CAPTULO 18
18. l
18. l. l
18. 1.2
18.1.3
18.2
18.3
18.3. l
18.3.2
18.3.3
18.4
18.5
18.6
El modelo de configuracin
18.7
18.8
559
18.7.1
18.7.2
Resumen 563
Referendos 563
Problemas y puntos a considerar 564
Otras lecturas y fuentes de informacin 564
CAfflULO 19
19. l
19.1.2
19.2
19.3
19.4
19.5
19.6
19.7
19.3.1
19.3.2
19.3.3
Cuestiones de la plantilla
19.4.2
582
19.5.2
19.6.2
Diseo de navegacin
590
19.7.1
19.7.2
19.8
19.9
19. l 0.2
19.10.3
599
Referencias 600
Problemas y puntos a considerar 602
Otras lectura y fuentes de informacin 603
595
19. l 0.1
Prueba
20. 1. 1
Dimensiones de calidad
605
CONTENIDO
20.1 .2
20. 1.3
20. 1.4
20.2
20.3
Pruebas de navegacin
625
20.7.1
20.7.2
20.8
20.9
20.6.1
20.6.2
20.7
20.4. 1
20.4.2
20.4.3
20.4.4
20.4.5
20.5
20.6
20.3. 1
20.3.2
20.4
20.9.1
20.9.2
20.9. 3
Pruebas de tensin 63 3
CONTENIDO
21.3.1
21.3.2
21 .4
El proceso
Combinacin del producto y el proceso
656
El principio W 5 HH
Prcticos crticos
Resumen
657
658
659
660
660
CA.ffl'ULO 22
664
668
669
670
673
674
Medicin de lo calidad
671
674
676
677
678
22.4 Integracin de las mtricas dentro del proceso de software 680
., '22, 4:.laa ;.,rArgumerttos pdro tos mliicas del soWxi're 680
Establecimiento de una lnea base 68 l
22.4.2
22.4.3
Recopilacin, clculo y evaluacin de mtricas 682
22.5 Mtricas para organizaciones pequeos 682
22.6 Estableciminto de un programo de mtrias de software 684
22.7 Resumen 686
Referencias 687 ,
Problemas y puntos o considerar 687
Otros lecturas y fuentes de informacin 688
CAPmJLO 23
23.1
23.2
23.3
23.4
23.4.1
23.4.2
Recursos
664
667
22.3. l
22.3 .2
1,,
22.2.1
22.2.2
22.2.3
22.2.4
22.2.5
22.2.6
22.3
661
22.1. 1
22.1.2
22.2
653
654
El proyecto
Referencias
22. 1
652
21.4.1
21.4.2
21.5
21 .6
21.7
21.8
651
691
692
y factibilidad 693
694
Recursos humanos
695
695
CONTENIDO
23.4.3
23.5
23.6
23 .6.1
23.6.2
23.6.3
23.6.4
23.6.5
23.6.6
23.6.7
23.6.8
23.6.9
23.7
23.8
23.9
707
23.7.1
23.7.2
23.7.3
699
:1
23.9.1
23. 9 .2
714
24.1
24.2
24.2. 1
24.2.2
24.2.3
24.3
24.5.1
24.5.2
24.5 .3
24.6
24.7
24.3.1
24.3.2
24.4
24.5
736
Cronogramas 738
Seguimiento de lo colendarizocin 739
Seguimiento del progreso en un proyecto 00 74 1
CONTENIDO
Referencias 7 44
Problemas y puntos o considerar 7 44
Otros lecturas y fuentes de informacin 7 46
CAPTUI.025
25 . 1
25.2
25 .3
Identificacin de riesgos
25.4
748
750
25.3. 1
25.3.2
25.4.2
25.5
25.6
25 .7
El pion RSGR
25.8
Resumen
Referencias
753
754
755
759
759
7 63
764
7 64
CAPiTuI.o26
26. l
26.2
26.3
26.4
Conceptos de calidad
26.1.1
7 65
768
Calidad 769
26.1 .2
26.1 .3
Garanta de la calidad
26.1.4
Costo de lo calidad
26.2.1
26.2.2
770
770
'
Garanta de lo calidad del software (SQA)
771
26.3 .2
778
26.4. 1
26.4.2
26.4.3
26.4.4
26.5
26.6
26.7
783
26.6. l
26.6.2
787
779
26.7.2
27.1
27. l . l
27. 1.2
27. l.3
27.1.4
27.2
27.4
Resumen
Referencias
803
806
808
8l3
,,
824
825
827
CAPfflJLO 28
28. l
28.1.1
28.1.2
28.) .3
28.2
799
27.4. l
27.4.2
27.4.3
27.4.4
27.4.5
27.4 .6
27.5
El proceso de GCS
27.3. l
27.3.2
27.3.3
27.3.4
27.3.5
El depsito de ECS
27.2.1
27.2.2
27.2.3
27.3
Gestin de lo configuracin
Preliminares motem6ticos
28.2. l
833
837
837
CONTENJI>O
28.2.2
28 .2.3
28 .2.4
28.3
28.4
28.5
29.1
842
844
845
28.5 .1
Un breve ponoromo de lo sintoxis y lo semntico del OCl 845
28.5.2
Ejemplo de uso del OCL 847
28.6 8 lenguoje de especificocin Z 849
28.6.1
Breve ponoromo de lo sintoxis y sem6ntico Z 849
28.6.2
Un ejemplo que utilizo Z 849
28.7 los diez mondomientos de los mtodos formoles 852
28.8 Mtodos formoles: el comino por recorrer 853
28.9 Resumen 854
r
Referendos 855
Problemos y puntos o consideror 855
Otros leciuros y fuentes de informacin 856
lenguoje restringido o objetos (OCL)
29. 1. 1
29.1 .2
29.2
29.5
Resumen
Referencias
866
867
29.4. 1
29.4.2
863
29.3.1
29.3.2
29.4
Especificacin funcional
29.2.1
29.2.2
29.2.3
29.3
859
lo estrotegio de solo limpio 860
872
873
Certificacin 874
875
876
cAPiTuLo 30
30.1
30.2
30.3
30.4
877
883
30.3. 1 - El proceso de anlisis del dominio 883
30.3.2
Funciones de caracterizacin 884
30.3.3
Modelodo estrudvrol y puntos de estrudvro 885
Desarrollo basado en componentes 886
CONTENIDO
30.4. l
30.4.2
30.4.3
30.5
891
30.5. l
30.5.2
30.6
890
Ingeniera de componentes
892
894
30.6. l
30.6.2
896
Anlisis de costo empleando puntos de estructura 897
30.7 Resumen 898
Referencias 899
Problemas y puntos a considerar 900
Otras lecturas y fuentes de informacin 901
Impacto sobre la calidad, la productividad y el costo
REINGENIIIA 902
CAPiTuJ.o31
31 . l
31.2
31 . 1. l
31.1.2
Un modelo de RPN
Reingeniera
31.2. l
31.2.2
31 .3
31 .6
31 .7
" - ,..,..
Mantenimiento del software 907
Reestructuracin 916
31 .4 . l
31.4.2
31 .5
904
31 .3. l
31 .3.2
31 .3.3
3 1.4
31 .5. l
31 .5.2
31 .5.3
Referencias
923
924
32. l
32.2
32.3
32.4
32 .5
32 .6
926
929
CONTENIDO
XXV11
32.7
32.8
Un comentario final
Referencias
938
939
939
936
CLAVE
..teristkas
.. sattw., ... ~
s
Clllllptas ' ,,. ,,,
.a.idn
ie softwat \ .; .5
4tterioro ..':. " ~ if;
ffOMII .~., . ~;
.12
liistorio . ,~~.,..,
aitos . ....J.-.. 14
,i
CAPiTm.o 1
~?in,
;:~~;t:l,'
A medida que la importancia del software ha crecido, la comunidad del software
ha intentado de manera continua desarrollar tecnologas que hagan ms fcil, ms
rpida y menos cara la construccin y el mantenimiento de programas de computadora de alta calidad. Algunas de estas tecnologfas se limitan al dominio de una
aplicacin especifica (por ejemplo, al diseo y la implementacin de sitios Web);
otras se enfocan al dominio de una tecnologa (como la programacin orientada a
objetos y la programacin orientada a aspectos); y existen otras con base general
(por ejemplo, sistemas operativos como LINUX). Sin embargo, an no se desarroll?
una tecnologia de software que lo haga todo, y la probabilidad de que sta surja en
el futuro es pequea. Aun as, las personas dejan sus trabajos, su seguridad y hasta
sus vidas en manos del software de computadoras. Ms vale que ste sea bueno.
Este texto presenta un marco para quienes construyen software de computadora:
las personas que deben hacer buen software. El marco, que incluye un proceso, un
conjunto de mtodos y una serie de herramientas se llama ingeniera del software.
;
~~
~~,..,
<n~n
;
'~i(;.;ij
> '
fS
~~VE
Bdt.m es 1on1o oo
prodooo ClllOO el veltulo JXIIO $U eotTego.
~ ili;:--~,H!I!'
,'
'
~,~:-a}<
111.....-es
,...... 1 1 .... ms fd, Slfll "'
propGnOllllsilaaff
CAPiTuLo 1
m n oms de es
a hdsicos.
flvis, a18ndn en
'5 ,-fcciones errf>.
aas 111f1 BSlos exper,
115 lron e.n lo
"""'1te oeventos y
llodogas. Consrve-
'1 oomildod:nadie
ia6e en realidad el fu., de los sistemas
se construyen.
genbaum y McCorduck [FEI83J sugirieron que la informacin y el conocimiento (controlados por computadoras) seran el punto de enfoque para el poder en el siglo xx1, y
Stoll [ST089J argument que la "comunidad electrnica" creada por redes y software
era la clave del intercambio de conocimiento alrededor del mundo. Todos estos escritores tenan razn.
Al comienzo de la dcada de 1990, Toffler [TOF90] describi un "cambio de poder" en el que todas las viejas estructuras' (gubernamentales, educativas, industriales, econmicas y militares) se desintegraran a medida que las computadoras y el
software condujeran a una "democratizacin del conocimiento". Yourdon [YOU92J
se preocupaba de qul las compaas lstadounitlenses pudieran perder su margen
competitivo en negocis relacionados con el software y predijo "la declinacin y cada del programador estadounidense". Hammer y Champy [HAM93] argumentaban que
las tecnologias de informacin rep,esentaran un papel primordial en la "reingeniera de la corporacin". A mediados de la dcada de 1990 la penetracin de las computadoras y del software provoc el surgimiento de una serie de libros de "neoluditas"
(como Resisting the Virtual Lije, editado por James Brook y Iain Boa!, y The Future Does
Not Compute, de Stephen Talbot). Estos autores satanizaban a la computadora al enfatizar inquietudes legitimas, pero ignorando los grandes beneficios que ya se haban
obtenido [LEV95J.
CAPTULO l
A finales de la dcada de 1990, Yourdon [YOU96) evalu de nuevo a los candidatos a profesionales del software y sugiri el "surgimiento y resurreccin" del programador estadounidense. A medida que Internet cobraba mayor importancia, el giro
que habla dado Yourdon parecla ser el correcto. Al finalizar el siglo xx, el enfoque
cambi nuevamente, esta vez con el impacto del Y2K, "bomha de tiempo" (por ejemplo [YOU98a). [KAR99)). Aunque las fatales predicciones de aquellos que vislumbraban una catstrofe respecto al Y2K fueron falsas, sus populares escritos acarrearon
la permanencia del software en la vida de los seres humanos.
Ya iniciado el nuevo siglo, Johnson (JOHO I Jexplic el poder del "surgimiento" como un fenmeno que explica lo que sucede cuando interconexiones presentes en
entidades relativamente simples resultan en un sistema que "se autoorganiza para
formar un comportamiento ms adaptable e inteligente". Yourdon [YOUR02J retom
los trgicos sucesos ocurridos el 11 de septiembre de 2001 en Nueva York para explicar el impacto continuo del terrorismo global en la comunidad informtica. Wolfram [WOL02) present un tratado sobre "un nuevo tipo de ciencia" en donde expone
una teorfa unificadora basada sobre todo en elaboradas simulaciones de software. Daconta y sus colegas [DAC03J explicaron la evolucin de la "red semntica", y cmo esto cambiar el modo en que la gente interacta a travs de las redes globales.
, ,, M'
w~
~\.:::,,~1%~?,
"',,
~
'
~ -.., , ,C:1111
un excelente libro de ensayos sobre el negocio del software, Tom DeMarco (DEM95J expone la
idea contraria. Explica: "En vez de cuestionarse por qu cuesta tanto el software, uno debe preguntarse qu se ha hecho para hacer que hoy el software cueste tan poco. La respuesta a esa pregunta
ayudar a continuar con el extraordinario nivel de logros que siempre ha distinguido a la Industria
del softwareH.
En
En 1970, menos del uno por ciento de las personas podran haber definido lo que significaba "software de computadora". En la actualidad, la mayoria de los profesionales
y muchos miembros del pblico creen que entienden el software. Pero, en realidad
lo hacen?
Una definicin de software en un libro de texto puede tener la siguiente forma: e/
software se forma con 1) las instrucciones (programas de computadora) que al ejecutarse proporcionan las caractersticas, fenciones y el grado de desempeo deseados; 2) las
estructuras de datos que permiten que los programas manipulen informacin de maneta adecuada; y 3) los documentos que describen la operacin y el uso de los programas.
No existe duda de que se pueden encontrar definiciones ms completas. Pero se requiere ms que una definicin fonnal.
Para entender el software (y la ingeniera del software), es importante examinar
las caractersticas que lo hacen fferente de otras cosas que construye el ser humano. El software es un eleme~to lgico, en lugar de fisico, de un sistema. Por lo tanto, el software tiene caracteristicas mtiy diferentes a las del hardware:
1
Bsoftwore se ,
desorrollo, no
se manufactura.
esoftwore no se
*gosto, pero
!I detenora.
En la figura 1.1 se muestra, para el hardware, la tasa de fallas como una funcin del tiempo.' La relacin, llamada a menudo "curva de la baera", indica
tiiM+IH
Curva de
fallal para
elhardwme.
Si S6 deseo reducir el
deleriofO d,/ sdwm,
es necesario reoHzor
un me;o, dise-0 (ropf
tvlos 9-12).
fS
~'&vi
los mtodos de lo
ingenietfo del softwore
pretenden recwr lo
magnitud de los picos
y lo pendiente de lo
CAPi'l'uJ.o l
4;:..;1+
CUrvasde
lallapara
el software.
'
c&v1
curva tenga otro pico. o'e est manera, el nivel de fallas mnimo se comienza
a elevar; el software se deteriora debido a los cambios.
Otro aspecto del desgaste ilustra la diferencia entre el hardware y el software. Cuando un componente del hardware se desgasta se sustituye con un
repuesto. Pero en el s?ftware no existen repuestos. Cualquier falla del software implica un error en el diseo o el proceso mediante el cual se pas del diseo al cdigo mquina ejecutable. Por lo tanto, e!J.mantenimiento del software
implica de manera considerable una complejidad mayor que el del hardware.
3. A pesar de que la industria tiene una tendencia hacia la construccin por compo-
elementos que en realidad son innovadores en el diseo; es decir, e.n las partes que representan algo nuevo. En el mundo del hardware, la reutilizacin de
componentes es una parte natural del proceso de ingeniera. En el mbito del
software, dicha actividad apenas se ha comenzado a extender.
'1''
,'.:;'t!f'#
..........
',~1
esta rea procesan datos empresariales o tcnicos de forma que facilitan las operaciones de negocios o la toma de decisiones tcnicas o de gestin. Adems del procesamiento de datos convencional, el software de aplicacin se utiliza para controlar
l~s funciones de negocios en tiempo real (por ejemplo, el procesamiento de transacciones en los puntos de venta y el control de proces?s de m~nufactura en tiempo
real.)
10
Existen millones de ingenieros de software que trabajan duro en una o ms de estas categoras. En algunos casos se construyen sistemas nuevos, pero en otros las aplicaciones existentes se corrigen, adaptan y mejoran. Es comn ver a un joven ingeniero de
software que trabaja en programas ms viejos que l mismo. Las generaciones pasadas
de creadores de software han dejado un legado en cada una de las categoras que se
han definido prrafos atrs. Se espera que el legado de la generacin actual facilite
la tarea de los ingenieros de software del futuro. No obstante, en el horizonte han
aparecido retos nuevos:
Fuente abierta. Existe una tendencia creciente que impulsa la distribucin del cdigo fuente para aplicaciones de sistemas (como sistemas operativos, bases de datos
y ambientes de desarrollo) de forma que los clientes hagan modificaciones locales.
El reto para los ingenieros de software es construir un cdigo fuente que sea descriptivo en s mismo, pero, an ms importante, desarrollar tcnicas que permitan tanto a los clientes como a los diseadores conocer los cambios realizados y la forma
en que se manifiestan dentro del software.
La ''nueva economa". La locura del punto-com que se afianz en los mercados
financieros hacia finales de la dcada de 1990 y la subsiguiente ruptura en los primeros aos del siglo xx, ha llevado a mucha gente de negocios a creer que la nueva
economa est muerta. La nueva economa est viva y saludable, pero evolucionar
con lentitud; la caracterizar la comunicacin y la distribucin masiva. Andy Lippman [LIP02J puntualiza esta situacin cuando escribe:
11
Estamos entrando en una era caracterizada por las comunicaciones entre las mquinas distribuidas y la gente dispersa, en Jugar de la que define una conexin entre dos individuos o
entre un individuo y una mquina. El antiguo enfoque de la telefonia se refiere a "conexiones con"; la siguiente ola se refiere a "conexiones entre". Por mencionar algunos ejemplos,
se tiene Napster, la mensajeria instantnea, los sistemas de mensaje cortos y las BlackBerries.
El reto para los ingenieros de software es construir aplicaciones que faciliten la comunicacin y la distribucin de productos en masa mediante productos apenas en formacin.
Cada uno de estos "nuevos retos" obedecer sin duda la ley de las consecuencias
imprevistas y tendrn efectos (para la gente de negocios, los ingenieros de software
y los usuarios finales) que no pueden predecirse en la actualidad. Sin embargo, los
ingenieros de software se pueden preparar al iniciar un proceso que tenga la suficiente agilidad y adaptabilidad como para acoplarse a los cambios drsticos en la
tecnologa y las reglas de negocios que con seguridad se presentarn en la dcada
siguiente.
Qu es el
software
lleredado?
dolores de cabeza a las grandes organizaciones, las cuales los perciben como costosos en
su mantenimiento y riesgosos en su evolucin.
Liu y sus colegas [LIU98J extendieron esta descripcin al escribir que "muchos sistemas heredados persisten como el soporte de las funciones centrales de negocios y
son indispensables para las empresas" . Por lo tanto, al software heredado lo caracterizan. su longevidad y el ser crtico para los negocios.
12
1.4.1
Qu sede
be hacer si
se tiene un
sohware hereda
'do con poca cah
dad?
Cules son
los tipos de
cambios que se
realizan sobre
el software
heredado?
Por desgracia, existe una caracterstica adicional que tal vez est presente en el software heredado: poca calidad. 5 Algunas veces, los sistemas heredados tienen diseos
imposibles de extender, cdigo complicado, documentacin escasa o inexistente, casos de prueba y resultados que nunca fueron archivados, un historial de cambio manejado con pobreza, etctera; la lista podrla seguir hasta tener una longitud considerable. No obstante, estos sistemas son el soporte de "las funciones centrales de
negocios y son indispensables para las empresas" [LIU98]. Qu se puede hacer?
La nica respuesta razonable podra ser no hacer nada, al menos hasta que el sistema heredado experimente algn cambio significativo. Pero si satisface las necesidades de sus usuarios y funciona de manera confiable, el sistema no est roto y no
requiere arreglos. Sin embargo, conforme pasa el tiempo, los sistemas heredados
evolucionan por una o ms de las razones siguientes:
El software debe adaptarse para satisfacer las necesidades de los nuevos ambientes o las nuevas tecnologas de cmputo.
El software debe mejorarse para implementar los nuevos requerimientos de
los negocios.
El software debe extenderse para hacerlo operable con sistemas y bases de
datos ms modernos.
El software debe redisearse para hacerlo viable dentro de un ambiente de red.
Cualquier ingeniero de
software debe reconer
Cuando suceden estas formas de evolucin en un software heredado, ste debe someterse a una reingeniera (captulo 31) de modo que conserve su viabilidad en el
futuro. La meta de la ingeniera de software moderna es "imaginar metodologas que
se basen en la nocin de la evolucin"; esto es, la nocin de que "los sistemas de
software cambian de manera continua, los nuevos sistemas de software se construyen a partir de los viejos, y ... todos deben interactuar y cooperar con los dems"
(DAY99).
13
Debido a que los programas a gran escala como Windows y Solaris se expanden bien en
el intervalo de 30 a 50 millones de lneas de cdigo, los administradores de proyecto exitosos han aprendido a dedicar tanto tiempo a combinar los enredos de nuestro cdigo heredado como a agregar cdigo nuevo. Para decirlo de manera ms simple, en una dcada
en la que el desempeo promedio del microchip de PC se increment cien veces, la incapacidad de escalar el software incluso a tasas lineales ha pasado de un pequeo secreto
a una enorme alteracin en toda la industria.
En los ltimos 30 aos, Manny Lehman {LEH97a] y sus colegas han analizado en
forma detallada la industria del software y los sistemas en un esfuerzo dirigido a desarrollar una teora unificada para la evolucin del software. Los detalles de dicho trabajo superan el enfoque del presente texto,6 pero las leyes subyacentes derivadas de
su estudio son dignas de destacarse [LEH97b):
La ley del cambio continuo (1974). Los sistemas de tipo electrnico 7 deben
adaptarse en forma continua, de lo contrario se volvern menos satisfactorios a travs del tiempo.
La ley de la complejidad creciente (1974). Cuando un sistema de tipo electrnico est en evolucin, su complejidad se incrementa a menos que se realice el
trabajo necesario para mantenerla o reducirla.
La ley de la autorregulacin (1974). El proceso de evolucin de un sistema de
tipo electrnico se autorregula con la distribucin del producto y las mediciones del
proceso cercanas a la normal.
Pw q los
sistemas
. . . . .s
al..,.
_ .. peso
ill-,o?
mas de tipo electrnico debe incrementarse en forma continua para mantener la satisfaccin del usuario a lo largo del periodo de vida del sistema.
La ley de la calidad decreciente (1996). La calidad de los sistemas de tipo
electrnico parecer declinar a menos que stos se mantengan y adapten en forma
rigurosa de acuerdo con los cambios en su ambiente operacional.
6 Para una clara explicacin de la evolucin del software, el lector interesado puede revisar (LEH97a).
7 Los sistemas de tipo electrnico son programas de software que han sido implementados en un con texto computacional del mundo real y que. por tanto, evolucionarn a travs del tiempo.
14
CAPTULO l
Los mitos del software -creencias acerca del software y de los procesos empleados
para construirlo- se pueden rastrear hasta los primeros das de la computacin. Los
mitos tienen ciertos atributos que los convierten en insidiosos. Por ejemplo, los mitos parecen una relacin de hechos razonables (algunas veces contienen elementos
verdaderos). se observan de manera intuitiva, y con frecuencia los promulgan practicantes experimentados, quienes "conocen el terreno".
.....
l'f ausencio de normas signm<otivos, uno industrio nuevo como el software seelt depencf.er de les iilsluntfnt"
.., ,,
$/f:ifrif1
la red de ID!inisltudores de proyectos de
-w.....-.
Mito:
Ya se tiene un libro lleno de estndares y procedimientos para la construccin de software. Esto proporcionar a mi gente todo el conocimiento necesario?
Realidad: Tal vez sea verdad que el libro de estndares existe, pero se usa? Los
encargados de la construccin del software saben de su existencia?
El libro refleja la prctica moderna de la ingeniera del software? Est completo? Es adaptable? Est dirigido al mejoramiento del tiem-
CAPTULO 1
15
Si se est atrasado en el itinerario es posible contratar ms programadores para as terminar a tiempo (algunas veces llamado el concepto de la
horda mongola).
Realidad: El desarrollo de software no es un proceso mecnico como la manufactura. En palabras de Brooks [BR075J: "Agregar gente a un proyecto de software atrasado lo atrasa ms". De inicio, este enunciado podra parecer contraro a la intuicin. Sin embargo, cuando se agregan
nuevos integrantes a un equipo la gente que ya estaba trabajando debe invertir tiempo en la enseanza a los recin llegados, lo cual reduce el tiempo dedicado al esfuerzo para el desarrollo productivo. Se
puede agregar gente, pero slo de una manera planeada y bien coordinada.
Mito:
Si decido subcontratar el proyecto de software a un tercero, puedo relajarme y dejar que esa compaa Jo construya.
Realidad: Si una organizacin no entiende cmo administrar y controlar internamente los proyectos de software, de manera invariable entrar en
conflicto al subcontratar este tipo de proyectos.
Mitos del cliente. El cliente que solicita un software de computadora puede ser la
fs lmSOrio trobojor
uo entender
s, debe hacer onRS comenzar. En
m:sn?s no es posf
desaro//ar todos
l:s de1r1/les, pero en
m se sepa, mees el riesgo que se
c:m.
persona del escritorio de al lado, un grupo tcnico en el piso de abajo, el departamento de ventas o de mercadotecnia, o una compaa externa que ha solicitado el
software bajo contrato. En muchos casos, el cliente cree en mitos acerca del software porque los profesionales y administradores del software hacen muy poco para corregir la desinformacin. Los mitos conducen a expectativas falsas (del cliente) y en
definitiva a insatisfaccin con el desarrollador.
Mito:
Un enunciado general de los objetivos es suficiente para comenzar a escrbir programas; los detalles se pueden afinar despus.
Realidad: A pesar de que no siempre es factible que el enunciado de los requerimientos sea comprensible y estable, un enunciado ambiguo de los
objetivos es la receta perfecta para el desastre. Los requerimientos
precisos (los cuales se derivan usualmente en forma iterativa) se desarrollan slo mediante la comunicacin continua y efectiva entre el
cliente y el desarrollador.
M i to:
Realidad: Es verdad que los requerimientos del software cambian, pero el impacto del cambio vara de acuerdo con el momento en que ste se introduce. Cuando los cambios en los requerimientos se solicitan en
16
etapas tempranas (antes de iniciar con el diseo o el cdigo), el impacto en el costo es relativamente pequeo. 8 Sin embargo, conforme
pasa el tiempo, el impacto en el costo crece con rapidez -se han distribuido los recursos, se ha establecido un marco general para el diseo- y el cambio puede provocar una convulsin que requiera recursos adicionales y una modificacin significativa en el diseo.
Mitos del desarrollador. Los mitos que an subsisten entre los desarrolladores
del software han permanecido a travs de 50 aos de cultura de programacin. Durante los primeros aos del software, la programacin era vista como una forma de
arte; por ello, las viejas formas y actitudes son dificiles de eliminar.
Mito:
considerar si hobr
tiempo pora hacerlo
tado de nuevo.
Realidad: Alguien dijo alguna vez que entre ms rpido se comience a escribir
cdigo, ms tiempo pasar para que el programa est terminado. Los
datos de la industria indican que entre 60 y 80 por ciento de todo el
esfuerzo aplicado en el software se realizar despus de que el sistema haya sido entregado al cliente por primera vez.
Mito:
Realidad: Uno de los mecanismos ms efectivos para el aseguramiento de la calidad del software se puede aplicar desde el inicio de un proyecto: la
revisin tcnica formal. Las revisiones al software (descritas en el capitulo 26) son un "filtro de calidad" que han probado ser ms efectivas
que las pruebas para encontrar ciertas clases de errores en el software.
Mito:
El nico producto del trabajo que puede entregarse para tener un proyecto exHoso es el programa en funcionamiento.
La ingeniera del software obligar a emprender la creacin de una documentacin voluminosa e innecesariay de manera invariable tornar ms
lento el proceso.
Realidad: La ingeniera del software no se refiere a la elaboracin de documentos. Est relacionada con la creacin de calidad. Una mejor calidad
8 Muchos ingenieros de software han adoptado un enfoque "gil" que adapta los cambios en forma
incremental, con lo que se controla su impacto y costo. Los mtodos giles se exponen en el captulo 4.
17
conduce a la reduccin de los trabajos redundantes. Y una menor cantidad de trabajos redundantes resulta en menores tiempos de entrega.
Muchos profesionales de los sistemas reconocen la falacia de los mitos del software. Por el contrario, las actitudes y los mtodos habituales conducen a adoptar
malas prcticas administrativas y tcnicas, a pesar de que la realidad exige un mejor enfoque. El reconocimiento de las realidades del software es el primer paso hacia la formulacin de soluciones prcticas para la ingeniera del software.
Cualquier proyecto de software se inicia por alguna necesidad de negocios: la necesidad de corregir un defecto en una aplicacin existente; el imperativo de adaptar un
sistema heredado a un ambiente de negocios cambiante; el requerimiento de extender las funciones y caractersticas de una aplicacin existente; o la necesidad de
crear un producto, servicio o sistema nuevos.
Con frecuencia, en el inicio de un proyecto de ingeniera del software la necesidad de negocios se expresa de manera informal durante una simple conversacin.
En el recuadro que est abajo se presenta una conversacin tpica.
Con excepcin de una referencia pasajera, el software no se mencion durante la
conversacin. Aun as, el software har la diferencia en el futuro de la lnea de productos HogarSeguro. El mercado aceptar el producto slo si el software incrustado
en l satisface de manera apropiada las necesidades del cliente (que an no ha sido
definido). En los captulos subsecuentes se dar seguimento a la ingeniera del software en HogarSeguro.
a.: &geniol,mmoclel
de conedor a SlfflSOl'8t d.todca 1o'
El proyecto HogarSeguro se usar a lo largo de este texto para ilustrar los trabajos internos de un
equipo de proyecto. mientras ste construye un producto de software. La compaa. el proyecto y
las personas son ficticios, pero las situaciones y los problemas son reales.
18
CAPTULO l
_ . GCC8IO a la
19
UOHO I J Johnson, S., Emergence: The Connected Lives ofAnts, Brains, Cities and Software, Scribner, 2001.
[KAR99J Karlson, E. y J. Kolber, A Basic Introduclion to Y2K: How the year 2000 Computer Crisis
Ajfects YOU, Next Era Publications, !ne, 1999.
[LEH97a] Lehman, M y L. Belady, Program Evolution: Processes ojSoftware Change, Academic
Press, 1997.
(LEH97b] Lehman, M. et al., "Metrics and Laws of Software Evolution-The Nineties View". en
Proceedings of the 4th International Software Metrics Symposium (METRJCS '97), IEEE, 1997.
puede descargarse de http://www.ece.utexas.edu/-perry/work/papers/feastl .pdf.
[LEV95J Levy, s., "The Luddites Are Back", en Newsweek, 12 de julio de 1995, p. 55.
[LIP02) Lippman, A., "Round 2.0'', en Context Magazine, agosto de 2002, http://www.contextmag.com/.
[LIU98J Liu, K. et al., ''Report on the First SEBPC Workshop on Legacy Systems", Durham University, febrero de I 998, disponible en http:/ /www.dur.ac.uk/CSM/SABA/legacy-wksp I /
report.html.
[OSB79J Osborne, A., Running Wild-The Next Induscrial Revolution, Osborne/McGraw-Hill,
1979.
[NAI82J Naisbitt, J., Megatrends, Wamer Books, I 982.
[ST089J Stoll, c., The Cuckoo's Egg, Doubleday, I 989.
(TOF80)Tofler, A., The Third Wave, Morrow Publishers, 1980.
[TOF90J Toffier, A. Powershijl, Bantam Publishers, 1990.
[WIL02J Williams, S., "A Unified Theory ofSoftware Evolution", en salon.com, 2002. http://www.
salon.com/tech/feature/2002/04/08/lehman/index.html.
[WOL02] Wolfram, S., A New Kind ofScience, Wolfram Media, !ne., 2002.
tYOU92] Yourdon, E., The Decline and Fa// of the American Programmer, Yourdon Press, 1992.
[YOU96J Yourdon, E., The Rise and Resurrection of the American Programmer, Yourdon Press,
1996.
[YOU98aJ Yourdon, E. y J. Yourdon, Time Bomb 2000, Prentice-Hall, 1998.
[YOU98bJ Yourdon, E., Death March Projects, Prentice-Hall, I 999.
[YOU02) Yourdon, E., Byte Wars, Prentice-Hall, 2002.
1.3. Desarrollar sus propias respuestas a las preguntas formuladas en la seccin 1. I. Debtanse con los compaeros de clase.
1.4. La definicin de software que se presenta en la seccin 1.2 se aplica a los sitios Web? Si la
respuesta es afirmativa, indicar la sutil diferencia entre un sitio Web y el software convencional.
1.5. Muchas aplicaciones modernas cambian frecuentemente (antes de presentarlas al usuario final y despus de que se empieza a utilizar la primera versin). Sugiranse algunas formas
de construir software para detener el deterioro debido al cambio.
1.6. Considrense las siete categoras presentadas en la seccin 1.3. Es posible aplicar el
mismo enfoque de la ingeniera del software a cada una de ellas? Explicar la respuesta.
1. 7. Seleccionar alguno de los nuevos retos mencionados en la seccin 1.3 (o algn desafio
an ms nuevo que pudiera haber surgido desde la impresin de este texto) y escribir un documento de una cuartilla que describa la tecnologa y los retos que representa para los ingenieros
de software.
20
CAPTULO l
1.11. A medida que la presencia del soflware se vuelve ms generalizada, los riesgos al pblico (debido a las fallas en los programas) representan una preocupacin significativa y creciente. Desarrollar un escenario catastrfico realista en el que la falla de un programa de computadora podria producir un gran dao (Ya sea econmico o humano).
1.12. Examinar con atencin al grupo de noticias de Internet comp.risk y preparar un resumen de los riesgos al pblico que se han discutido recientemente. Fuente alternativa: Software
Engineering Note publicada por la ACM.
Existen miles de libros que tratan sobre el soflware de computadora. La inmensa mayoria discute los lenguajes de programacin o las aplicaciones del software, pero muy pocos tratan del
soflware en si mismo. Pressman y Herron (SOftware Shock, Dorset House, 1991) presentan uno
de los primeros debates (dirigidos al pblico en general} del software y de la forma en que los
profesionales lo construyen. El libro ms vendido de Negroponte (Being Digital, Alfred A. Knopf,
Inc., 1995) ofrece una visin de la computacin y su impacto global en el siglo xx1. DeMarco
[DEM95J ha escrito una coleccin de ensayos divertidos y profundos acerca del software y del
proceso a travs del cual ste se desarrolla. Los libros de Norrnan (The Inv1SJble Computer, MlT
Press, I 998) y Bergman (lnformation Appliances and Beyond, Academic Press/Morgan Kaufmann, 2000) sugieren que el impacto extendido de las PC disminuir conforme los instrumentos de informacin y la computacin omnipresente conecten a todos en el mundo industrializado
y casi cualquier "aparato" que se posea est conectado a una nueva infraestructura de Internet.
Minasi (The Software Conspiracy: Why Software Companies Put Out Faulty Products, How They
can Hurt You, and What You can Do, McGraw-Hill, 2000) argumentaba que la "plaga moderna"
de las impurezas del software se puede eliminar y sugiere formas de lograrlo. Compaine (Digital Divide: Facing a Crisis or Creating a Mylh, MIT Press, 2001) escribe que la "brecha" entre aquellos que lienen acceso a los recursos de informacin (como la Web) y los que no lo tienen se est reduciendo conforme avanza la primera dcada del presente siglo.
En Internet existe una amplia variedad de fuentes de informacin sobre tpicos relacionados
con el software y su administracin. Asimismo, en nuestro sitio web se puede encontrar una lista actualizada de recursos en la red que son relevantes para el estudio del software:
http:/ /www.mhhe.com/pressman.
I O La seccin Otras lecturas y fuentes de informacin que se presenta al final de cada capitulo ofrece un
breve panorama de tas fuentes impresas que pueden ayudarle a aumentar su comprensin de los
temas principales presentados en este capitulo. Hemos creado un sitio de intemet muy extenso para
apoyar Ingeniera del software: un enfoque prctico en http://www.mhhe.com/pressman. Entre tos
muchos tpcos incluidos se encuentran referencias captulo por capitulo sobre ingenie ria del software existentes en ta red que complementan del material presentado en cada captulo. con estas
referencias se proporciona un enlace con Amazon.com para localizar tos libros que se mencionan
en cada seccin.
EL
PROCESO
DEL SOFlWARE
- - - - - - - - - - - ~ ~ - - - - = - ~-
CAPITULO
EL
PROCESO:
,
UNA VISION GENERAL
CONCEPTOS
CLAVE
adivldadts
somlirila ..... 28
*!unto
de ta1tas ..... 27
valuacin
del proceso . 36
IMO\ .. . 29
De hecho, la construccin del software de computadora es un proceso iterativo de aprendizaje, y el resultado, algo que .Baetjer llamara: "el capital del software", es una materializacin del conocimiento recolectado, depurado y organizado conforme el proceso estuvo en ejecucin.
PSE ..........40
PSP ..........39
tecnologa
del proceso .. . 42
y probarlo.
Por qu es
22
23
Pero, qu es con exactitud un proceso de software desde un punto de vista tcnico? Dentro del contexto de este libro, un proceso de software se define como un
marco de trabajo para las tareas que se requieren en la construccin de software de
alta calidad. El proceso es un sinnimo de ingeniera del software? La respuesta es
s y no. un proceso de software define el enfoque que se adopta mientras el software est en desarrollo. Pero la ingeniera del software tambin abarca las tecnologas
que requiere el proceso (mtodos tcnicos y herramientas automatizadas) .
An ms importante es que la ingeniera del software la realizan personas
creativas y con conocimiento que deben trabajar en un proceso de software maduro que sea apropiado para el producto que construyen y para las demandas de sus
mercados.
A pesar de que cientos de autores han definido en forma individual la ingeniera del
software, la definicin que propuso Fritz Bauer [NAU69] en una conferencia fundamental sobre la materia an se puede utilizar como base para el debate:
[La ingeniera del software es] el establecimiento y uso de principios slidos de la ingeniera para obtener econmicamente un software confiable y que funcione de modo eficiente en mquinas reales.
Casi cualquier lector se sentir tentado a sumar otras ideas a esta definicin. Dice poco sobre los aspectos tcnicos de la calidad del software; no se refiere de manera directa a la necesidad de satisfacer al cliente o al tiempo de entrega de un producto; omite mencionar la importancia de la medicin y la mtrica; no establece la importancia
de un proceso efectivo. No obstante, la definicin de Bauer ofrece una idea bsica.
Cules son "los principios slidos de la ingeniera" que pueden aplicarse en el desarrollo del software de computadora? De qu manera se construye "econmicamente"
un software "confiable"? Qu se requiere para crear programas de computadora que
funcionen "de manera eficiente" no slo en una, sino en vanas "mquinas reales" diferentes? Estas interrogantes continan siendo un reto para los ingenieros de software.
"M6s f1111 disciplina oun cuerpo de conocimiento, lo ingeniera es un verbo, uno palabro de iltd6n, una IIClllllffl
define la
.,.,..,-a
t sohware?
Y aun as, lo que es "sistemtico, disciplinado" y "cuantificable" para un equipo de software, puede ser gravoso para otro. Se requiere de disciplina, pero tambin de adaptabilidad y agilidad.
PARTE UNO
24
Uhffli
Estratos de la
ingeniera de
software.
-'~"'
c&v1
Lo ingenieo del
softwore abarca un
proceso, mtodos y
herromientos.
dii(Qdllqueinformoci6n
e1 INUQISQ, lclS
mtodos y los
m,
'
"'*
~i>,ed
enooMrarse en
........
.........
Un marco de trabajo establece la base para un proceso de software completo al identificar un nmero pequeo de actividades del marco de trabajo aplicables a todos los
proyectos de software, sin importar su tamao o complejidad. Adems, el marco de
trabaJo del proceso abarca un conjunto de actMdades sombrilla aplicables a lo largo
dcl proceso del software.
CAPTULO 2
+11+1+11,
25
Un marco de
trabajo del
proceso
de software.
Actividades sombrilla
Actividad del marco de trabajo # 1
accin de lo ingeniera de software # 1 . 1
1,
Conjunto
de toreos
de lo calidad
fundomenlos del p,")'edo
de lo colidod
fundomen~ del p<oyeclo
1,
Conjunto
de toreos
li
Como se muestra en la figura 2.2, cada actividad dentro del marco contiene un
conjunto de acciones de ingeniera del software; es decir, una serie de tareas relacionadas que produce un producto del trabajo en la ingeniera del software (por ejemplo,
el diseo es una accin de la ingeniera del software). Cada accin la forman tareas
de trabajo individuales que completan alguna parte del trabajo implicado por la accin.
f1111111
Mnt-
..
PARTE UNO
26
El siguiente marco de trabajo genrico del proceso (utilizado como base para la
descripcin de los modelos de proceso en los captulos subsecuentes) se puede aplicar en la inmensa mayora de los proyectos de software:
Cules
Comunicacin. Esta actividad del marco de trabajo implica una intensa colaboracin y comunicacin con los clientes; 1 adems, abarca la investigacin de requisitos y otras actividades relacionadas.
Planeacin. Esta actividad establece un plan para el trabajo de la ingeniera del
software. Describe las tareas tcnicas que deben realizarse, los riesgos probables,
los recursos que sern requeridos, los productos del trabajo que han de producirse y
un programa de trabajo.
Modelado. Esta actividad abarca la creacin de modelos que permiten al desarrollador y al cliente entender mejor los requisitos del software y el diseo que lograr satisfacerlos.
Construccin. Esta actividad combina la generacin del cdigo (ya sea manual
o automatizado) y la realizacin de pruebas necesarias para descubrir errores en el
cdigo.
Despliegue. El software (como una entidad completa o un incremento completado de manera parcial) se entrega al cliente, quien evala el producto recibido y
proporciona informacin basada en su evaluacin.
Estas cinco actividades genricas del marco de trabajo son tiles durante el desarrollo de programas pequeos, la creacin de grandes aplicaciones en la red, y en la ingeniera de sistemas basados en computadoras grandes y complejas. Los detalles del
proceso del software sern muy diferentes en cada caso, pero las actividades dentro
del marco permanecern iguales.
"EinsHin argumentaba que deba existir uno explicacin simplificado de la naturaleza porque Dios no es ropri<hoso pj
arbitrario. Tal fe no cooforta ol ingeniero del software. Mucho de lo cornplefidod que debe 1110niobror es de mrdw
otbitrario.
FrtdBroeu
Si se usa un ejemplo derivado del marco de trabajo genrico del proceso, la actividad de elaboracin del modelo la componen dos acciones de la ingeniera del software: anlisis y diseo. El anlisis2 abarca un conjunto de tareas de trabajo (por ejemplo, la investigacin, elaboracin, negociacin, especificacin y validacin de requisitos) que conducen a la creacin del modelo de anlisis (o a la especificacin de re-
1. Un cliente es cualquier persona que tiene un inters en el xito del resultado del proyecto: gerentes
de negocios, usuarios finales, gente de apoyo, etctera. Rob Thomset bromea diciendo que "un
cliente (en ingls stakeholder) es una persona que sostiene una estaca (stake) grande y afilada .. . si
no cuidas a tus clientes, ya sabes dnde terminar la estaca".
2. El anlisis se explicar con mayor detenimiento en los captulos 7 y 8.
~,
~
C~VE
27
quisitos). El diseo abarca tareas de trabajo (diseo de datos, diseo arquitectnico, diseo de interfaz y diseo al nivel de componentes) que crean un modelo de diseo (una especificacin de diseo).3
1A1iJ1os 11oyectos
~diferentes
CllpllOs de toreos.
B~ de software
illlie el coojooto de
tt!CS coo base en
~yenlos
c:misticos del
Como tambin se aprecia en la figura 2.2, cada accin de la ingeniera del software la representa un gran nmero de diferentes conjuntos de tareas: una serie de tareas de trabajo, productos relacionados, puntos para el aseguramiento de la calidad
y fundamentos de proyecto dentro de la ingeniera del software. El conjunto de tareas que mejor se ajuste a las necesidades del proyecto y a las caractersticas del equipo es el que se escoge al final. Esto implica que una accin de la ingeniera del software (como el diseo) se puede adaptar a las necesidades especficas del proyecto
p:r).
Conjunto de tareas
Un conjunto de tareas define el trabajo real
....-::;
que debe realizarse poro cumplir los objetivos de
J'(J accin de ingeniera del software. Por ejemplo, la
recopilacin de requisitos es una accin importante de la
ngeniera del software que ocurre durante lo actividad de
comunicacin. Lo meta de la reunin de requisitos es
eriender qu desean los distintos dientes del software que
,e va a construir.
Para un proyecto pequeo, al parecer simple, el
CXlOjunto de toreas para lo recopilacin de requisitos
ouede ser como se enumera a continuacin:
,
3 Cabe aclarar que "la elaboracin del modelo" debe interpretarse de un modo diferente cuando se realiza el mantenimiento de un software existente. En algunos casos ocurre el modelado del diseo y el
anlisis, pero en otras situaciones de mantenimiento se le utiliza para ayudar a entender el software
heredado, al igual que para representar adiciones o modificaciones en ste.
28
PARTE UNO
,,
,r.,
c&v1
lo odoptocin del
proceso de soflware es
esencial l)OIO el xito
del proyecto.
Gestin del riesgo: evala los riesgos que pudieran afectar los resultados del
proyecto o la calidad del producto.
Aseguramiento de la calidad del software: define y conduce las actividades
requeridas para asegurar la calidad del software.
Revisiones tcnicas formales: evala los productos del trabajo de la ingeniera del software en un esfuerzo encaminado a descubrir y eliminar los errores antes
de que stos se propaguen hacia la siguiente accin o actividad.
Gestin de la reutilizacin: define los criterios para la reutilizacin de productos del trabajo (se incluyen componentes del software) y establece mecanismos para la creacin de componentes reutilizables.
Preparacin y produccin del producto de trabajo: abarca las actividades
requeridas para crear productos del trabajo como modelos, documentos, registros,
formatos y listas.
Las actividades sombrilla se aplican durante el proceso del software y se tratan con
detalle en captulos posteriores de este texto.
Todos los modelos de proceso se caracterizan dentro del marco del proceso mostrado en la figura 2.2. La aplicacin inteligente de cualquier modelo de proceso del
software debe reconocer que la adaptacin (al problema, proyecto, equipo y a la cultura organizacional) es esencial para el xito de esta actividad. Pero los modelos de
proceso difieren de manera fundamental en:
El flujo global de actividades y tareas, y las interdependencias entre las actividades y las tareas.
Dt qu
manera
ditteren los
modelos del
pro<eso entre s?
El grado en el cual las tareas de trabajo estn definidas dentro de cada actividad del marco de trabajo.
El grado en el cual se identifican y se solicitan los productos de trabajo.
La forma en la que se aplican las actividades de aseguramiento de la calidad.
La manera en la que se aplican las actividades de seguimiento y control.
CAPTULO 2
29
..........
,.., "8 una receta es slo un temo con el que un conero inteligente puede jugar cado vez de una ll1Cllllfa dislintl.
O.
caracteriza
..,?
proceso
2,3
El Instituto de Ingenierla del software (SEi, por sus siglas en ingls) ha desarrollado
un modelo completo de un amplio proceso basado en un conjunto de capacidades
de software y de sistemas que deben estar presentes conforme las organizaciones
alcanzan diferentes grados de capacidad y madurez del proceso. El SEi sostiene que
para lograr estas capacidades una organizacin debe crear un modelo de proceso (figura 2.2) que se ajuste a las directrices establecidas por la integracin del modelo de
capacidad de madurez (JMCM) [CMM02J.
4
Los modelos giles y los principios que los guan se explican en el capitulo 4.
30
PARTE UNO
ifrhii+
Perfil de c apacidad del rea
del proceso de
laIMCM
pp
Ploneoci6n del p ~
Gesti6n ele requiik,.
Medkin y on6'iJis
Ges6n de lo c:onfiguroci6n
A,eguromiento de lo colidod
del producto y el pr0<8$o
GR
MA
GC
ACPP
[PHI02].
--
'--
o
PP
GR
MA
GC
rea del proceso
ACPP
airo
del proceso (por ejemplo, la planeacin del proyecto o la gestin de los requisitos)
se evala de manera formal contra las m etas y prcticas especficas y se clasifica de
acuerdo con los siguientes niveles de capacidad:
tMCM puede
* -811
ldtp://www.stl.
ca.N.11/-'I
Nivel 1: Realizado. Todas las metas especficas del rea del proceso (como las
defini la IMCM) han sido satisfechas. Las tareas de trabajo requeridas para producir el producto especfico han sido realizadas.
Nivel 2 : Administrado. Todos los criterios del nivel l han sido satisfechos. Adems, todo el trabajo asociado con el rea de proceso se ajusta a una poltica organizacional definida; toda la gente que ejecuta el trabajo tiene acceso a recursos adecuados para realizar su labor; los clientes estn implicados de manera activa en el
rea de proceso, cuando esto se requiere; todas las tareas de trabajo y productos estn "monitoreados, controlados y revisados; y son evaluados en apego a la descripcin del proceso" [CMM02).
Nivel 3: Definido. Todos los criterios del nivel 2 se han cumplido. Adems, el
proceso est "adaptado al conjunto de procesos estndar de la organizacin, de
acuerdo con las polticas de adaptacin de esta misma, y contribuye a la informacin
de los productos del trabajo, mediciones y otras mejoras del proceso para los activos del proceso organizacional" [CMM02J.
CAPTULO 2
31
desempeo del proceso estn establecidos y se utilizan como un criterio para administrar el proceso" [CMM02).
Nivel 5: Mejorado. Todos los criterios del nivel 4 han sido satisfechos. Adems,
el rea del proceso "se adapta y mejora mediante el uso de medios cuantitativos (es
tadsticos) para conocer las necesidades cambiantes del cliente y mejorar de manera continua la eficacia del rea del proceso que se est considerando" [CMM02J .
!.
....... 11 aisis del software es autoinfli9icla, como cuondo 00 dice: Prefieroque Mi mal a qwt
- . . ~ repararlo despus.
lsti-.
La IMCM define cada rea del proceso en funcin de "metas especficas" y de las
"prcticas especficas" requeridas para alcanzar dichas metas. Las metas especficas
establecen las caracteristicas que deben existir para que las actividades implicadas
por un rea de proceso sean efectivas. Las prcticas especficas convierten una meta
en un conjunto de actividades relacionadas con el proceso.
Por ejemplo, la planeadn del proyecto es una de las ocho reas del proceso
definidas por la IMCM para la categora de "gestin del proyecto". 5 Las metas especficas (ME) y las prcticas especificas asociadas (PE) que se han definido para la planeacin del proyecto son [CMM02):
ME 1 Establecer es timaciones
PE 1.1- 1 Estimar el alcance del proyecto.
PE 1.2- 1 Establecer estimaciones para los atributos del producto y las tareas
del trabajo.
PE 1.3- 1 Definir el ciclo de vida del proyecto.
PE 1.4- 1 Determinar estimaciones de esfuerzo y costo.
5 Otras reas del proceso definidas como "gestin del proyecto" incluyen: monitoreo y control del pro
yecto, gestin de acuerdos con proveedores, gestin integrada del proyecto para IPPD, gestin del
riesgo, integracin del equipo, gestin de integracin del proveedor y gestin cuantitativa del pro yecto.
32
PARTE UNO
B#/H,iliIM1
Uoo itlfonnad6lt
cqmpleto; as CilfflO
~ Y8rsi6n 4spontie
11& lo IMCM peade
.,.,.
olltenelse en
www....-.
CAPiTuJ.0 2
La IMCM es un modelo total del proceso. Define (en alrededor de 700 pginas) las carader'.$JCXJS del proceso que deben existir si una organizacin
dl9eo establecer un proceso de software completo. La preg.nle que se ha debatido durante una dcada es la IMCM
es -=esiva? Como la mayor parte de las cosas en la vida (y
<m el. software) la respuesta no es un simple s o no.
Siempre debe adoptarse el espritu de la IMCM. Frente
riesgo de la simplificacin excesiva, se argumenta que el
~
lo del software debe tomarse con seriedad: debe
paneorse; debe controlarse de manera uniforme; debe
i:a:51r'earse con precisin; debe conducirse de manera pro
lm.onol. Debe centrarse en los necesidades de los clientes
oe proyecto, las habilidades de los ingenieros de software
'o calidad del producto terminado. Nadie debe poner en
i,do estas ideos.
Los requisitos detallados de la IMCM deben tomarse en
:::..ai1c con seriedad si una organizacin construye siste-
+mv11+
33
..-.asdel
Nival
Enfoque
poceso
mqueridas
De optimimcin
Mejoro
continua del
proceso
Gestionado de
modo cuantitativo
Gestin
cuantitativa
para alcanzar
dvel de
mturez.
Definido
Gestionado
Ejecutado
Estandarizacin
del proceso
Gestin
bsica del
proyecto
.l
Desarrollo de requisitos
Solucin tcnica
Integracin del producto
Verificacin
Validocin
Enfoque del proceso organizacional
Definicin del proceso organizacional
Capacitacin organizacional
Gestin integrada del proyecto
Gestin integrada del proveedor
Gestin del riesgo
Anlisis y resolucin de la decisin
Ambiente organimcional para la integracin
Equipo integrado
Gestin de requisitos
Planeacin del proyecto
Monitorea y control de l proyecto
Gestin de acuerdos del proveedor
Medicin y anlisis
Aseguramiento de la calidad del
producto y del proce so
Gestin de la configuracin
34
PARTE UNO
del proceso?
El proceso de software puede definirse como una coleccin de patrones que definen
un conjunto de actividades, acciones, tareas de trabajo o comportamientos relacionados [AMB98] que requiere el desarrollo de un software de computadora. Dicho en
'
trminos generales, un patrn de proceso ofrece una plantilla: un mtodo consistente para describir una caracterstica importante del proceso de software. Mediante la
Qlles
patrn
combinacin de patrones, un equipo de software puede construir un proceso que satisfaga lo mejor posible las necesidades de un proyecto.
.......
a.1 ,air
Los patrones pueden definirse en cualquier grado de abstraccin.6 En algunos casos se puede utilizar un patrn para describir un proceso completo (por ejemplo, un
prototipo). En otras situaciones se utilizan los patrones para describir una actividad
del marco de trabajo importante (como la planeacin) o una tarea dentro de una actividad del marco de trabajo (por ejemplo, la estimacin de un proyecto).
~,
~
C~YE
Uno ~ontillo del patrn
ofrece un medio
consistente poro
descbir un patrn.
CAPTULO 2
35
Los patrones de fase definen la secuencia de actividades del marco de trabajo que ocurre junto con el proceso, aun cuando el flujo general de actividades es iterativo por naturaleza. Un ejemplo de un patrn de fase puede
ser un modelo en espiral o de construccin de prototipos. 7
36
Mhiiilrn1
S pueden entootrot
PatternsPagt.hlllll.
de software. Los clientes no estn seguros de lo que desean; es decir, na pueden describir ningn detalle de
los requisitos del software.
Solucin. Aqu se presenta una descripcin del proceso
de prototipo. Para ms detalles, vase el captulo 3.
Contexto resultonte. Los clientes aprueban un prototi
pode software que identifica requisitos bsicos (par
ejemplo, modelos de interaccin, rasgos computaciona
les, funciones de procesamiento). Despus 1) el prototi
po puede evolucionar recorriendo una serie de
incrementos poro convertirse en el software de produc
cin, o 2) el prototipo se descarta y el software de produccin se construye con otros patrones de proceso.
Patrones relacionados. Los siguientes patrones estn
relacionados con este patrn: comunicacin con
CAPTULO 2
37
ifr!idi
Es examinada par
Identifico
modificaciones a
Evaluacin del
proceso de software
Mejoramiento del
proceso de software------ - - -- - - - - - !
Determinacin
de la capacidad
Motivo
b b e't'Dluocin se
;J'ftlllOO comprender
De qu
tmicas
fwaalesse
~
para
fflllllcn, el proceso
.ttware?
ingeniera del software (parte 2 de este libro). Adems, el proceso mismo debe evaluarse para asegurarse de que cumpla una serie de criterios bsicos del proceso que
han demostrado ser esenciales para una ingeniera de software exitosa. 8 La relacin
entre el proceso de software y los mtodos aplicados para la evaluacin y el mejoramiento se muestra en la figura 2.5. Se han propuesto varios enfoques para la eva-
La apreciacin basada en el CMM para el mejoram i ento del proceso interno (ABC MPI) ofrece una tcnica de diagnstico para evaluar la madurez relativa de una organizacin de software mediante la ABC MPI (un precursor de la IMCM,
el cual se explic en la seccin 2.3) como base para la evaluacin [DUNOlJ .
El estndar SPICE (ISO/ IEC 15504 ) define un conjunto de requisitos para la
evaluacin del proceso de software; lo que pretende es ayudar a las organizaciones
en el desarrollo de una evaluacin objetiva de la eficacia de cualquier proceso de
software definido [SPl99J.
El ISO 900 1:2000 para software es un estndar genrico que se aplica a cualquier organizacin que desee mejorar la calidad general de los productos, sistemas
8
La JMCM del SEi tCMM02] describe, en detalle y con amplitud, las caractersticas de un proceso de
software y los criterios para un proceso exitoso.
38
PARTE UNO
o servicios que provee. Por lo tanto, el estndar se aplica de modo directo a compaas y organizaciones de software.
Debido a que el ISO 900 l :2000 se usa de manera amplia en el mbito internacional,
se examinar con brevedad en los prrafos que siguen.
"tas o,ganlzodones de softwore han mostrodo deficiencias significativos en su habiliclotf para aJtlilalizef los ...-.
ckls tllRadas en froyedos completos.
'!.
1-filf:ifrh':;1
Un excelenlt resumen
de.! ISO 9001:2000
~encoomiisei
http://prult&
<Ofl/$
9001.i..
El ISO 900 l :2000 ha adoptado un ciclo de "planear-hacer-revisar-actuar" que se aplica a los elementos de gestin de calidad de un proyecto de software. Dentro de un
contexto de software, "planear" establece los objetivos, las actividades y tareas del
proceso necesarios para conseguir un software de alta calidad y una satisfaccin
del cliente; "hacer" implementa el proceso de software (incluidas las actividades del
marco de trabajo y las actividades sombrilla); "revisar" monitorea y mide el proceso
para asegurarse de que todos los requisitos establecidos para la gestin de calidad
hayan sido cumplidos; "actuar" inicia las actividades de mejoramiento del proceso de
software, el cual tiene una continuidad de trabajo para mejorar el proceso.
Para un tratamiento ms detallado del ISO 9001 :2000 los lectores interesados en
el tema deben consultar los estndares ISO o [CIAO 1l, [KETO l] o [MONO l J.
El mejor proceso de software es el que est cerca de la gente que realizar el trabajo.
Si un modelo de proceso de software ha sido desarrollado en un mbito corporativo
u organizacional, puede ser efectivo slo si es en gran medida adaptable para satisfacer las necesidades del equipo del proyecto, que es el que en realidad lleva a cabo
el trabajo de ingeniera del software. En un escenario ideal, cada ingeniero de software creara un proceso que llene lo mejor posible sus propias necesidades, y al mis9 El aseguramiento de la calidad del software (ACSJ, un elemento importante de la gestin de calidad,
ha sido definido como una actividad sombrilla que se aplica a travs de todo el marco de trabajo del
proceso. Se expone en detalle en el captulo 26.
CAPITULO 2
39
,,.,... . . lilne xito slo se ho formado el hbito de hacer las cosos que la gente sin ixlo
. . . . . . . . !
.,
2.6.1
Cada desarrollador utiliza algn proceso para construir un software de computadora. El proceso puede ser fortuito o ad hoc, puede cambiar a diario, puede no ser eficiente, efectivo o hasta exitoso, pero existe un proceso. Watts Humphrey [HUM97]
sugiere que para cambiar un proceso personal inefectivo, un individuo debe pasar
por cuatro fases, en las cuales se requiere capacitacin e instrumentacin cuidadosa. El proceso de software personal (PSP) resalta la medida personal del producto de
trabajo que se produce y la calidad resultante del producto de trabajo. Adems, el
PSP responsabiliza al profesional encargado de la planeacin del proyecto (por ejemplo, la estimacin y la planificacin) y Je confiere el poder de controlar la calidad de
todos los productos de trabajo del software que se desarrollan.
El modelo PSP define cinco actividades del marco de trabajo: planeacin, diseo
de alto nivel, revisin del diseo de alto nivel, desarrollo y anlisis de resultados.
C. ecttvl-
alza
el tamao y la estimacin de los recursos. Adems, se estiman los defectos (el nmero de defectos proyectado en el trabajo) . Todas las mediciones se registran en hojas de trabajo o en plantillas. Al final, se identifican las tareas de desarrollo y se crea
un programa del proyecto.
-.s del
.-..a1rabao
PSI'?
Diseo de alto nivel. Se elaboran las especificaciones externas para que cada
componente sea construido y se crea un diseo del componente. Se construyen prototipos cuando existe incertidumbre. Todos los elementos se registran y rastrean .
Revisin del disefio de alto nivel. Los mtodos formales de verificacin (captulo 26) se aplican a errores descubiertos en el diseo. Las mediciones se mantienen
para todas las tareas importantes y los resultados de trabajo.
Desarrollo. El diseo al nivel de componente se refina y revisa. Se genera, revisa, compila y prueba el cdigo. Las mediciones se mantienen para todas las tareas
importantes y los resultados de trabajo.
lo Vale la pena mencionar que los proponentes del desarrollo gil del software (captulo 4) tambin ar-
gumentan que el proceso debe pennanecer cerca del equipo. Ellos proponen un mtodo alternativo
para lograrlo.
40
PARTE UNO
,re.,
~~
c&vE
El PSP destoco lo
necesidad de registrar
y onolizor los hpos de
errores que se
cometen poro
desouollor estrategias
encominodos o
eliminarlos.
El PSP destaca la necesidad que tiene cada ingeniero de software de identificar los
errores desde el principio y la importancia de entender los tipos de errores que suele cometer. Esto se lleva a cabo mediante una actividad de evaluacin rigurosa aplicada en todos los productos de trabajo que genera el ingeniero de software.
El PSP representa un enfoque disciplinado, basado en mediciones, de la ingeniera de software que puede conducir a un choque de culturas a muchos profesionales. Sin embargo, cuando el PSP se presenta de un modo adecuado a los ingenieros
de software [HUM96L la mejora resultante en la productividad de la ingeniera del
software y la calidad de ste son significativas [FER97]. No obstante, la industria no
ha adoptado con amplitud el PSP. Las razones, tristemente, tienen ms relacin con
la naturaleza humana y la inercia organizacional que con las fuerzas y debilidades
del enfoque del PSP. Este ltimo es un reto intelectual y demanda un grado de compromiso (por parte de los profesionales y sus jefes) que no siempre es posible obtener. La capacitacin es relativamente larga y sus costos son altos. En lo cultural, el
grado requerido de medicin es dificil para mucha gente involucrada con el software.
Una interrogante es s1 el PSP puede usarse como un proceso de software efectivo
a un nivel personal. La respuesta es, sin duda, s. Pero aun si el PSP no es adoptado
en su totalidad, vale la pena estudiar muchos de los conceptos de mejora del proceso que ste presenta.
e1 mn,m,
j,\(J, ROllll}O 1 ~ 6
lo conmuccioo de
equipos de alto
desempeo empleando
el PSE y el PSP puede
obtenerse en
w-.stl.<11111.
fts,/.
Construir equipos autodirigidos que planeen y tengan un seguimiento de su
trabajo. establezcan metas y posean sus procesos y planes. Estos grupos
pueden ser equipos de software puros o equipos de producto integrado
(EPI) de 3 a 20 ingenieros.
Mostrar a los jefes cmo preparar y motivar a sus equipos y cmo ayudarlos a sostener un alto desempeo.
Acelerar el mejoramiento del proceso de software al realizar, con el comportamiento normal y esperado, el nivel 5 del MCM.
CAPTULO 2
41
"&lcontrar buenos ugodores es fcil. Hacer que jueguenenequipoes otro historio." '
CaeyS......
'
c{Av1
El PSE define las siguientes actividades del marco de trabajo: lanzamiento, diseo
de alto nivel, implementacin, integracin y prueba, y anlisis de resultados. Al igual
que sus contrapartes en el PSP (ntese que la terminologa es diferente), estas actividades permiten al equipo planear, disear y construir un software de una manera disciplinada al mismo tiempo que miden de modo cuantitativo el proceso y el producto.
Los anlisis de resultados muestran el escenario para el mejoramiento del proceso
El PSE utiliza una amplia variedad de escritos, formas y estndares que sirven para
guiar a los miembros del equipo en su trabajo. Los escritos definen actividades espe
cficas del proceso (por ejemplo, lanzamiento, diseo. implementacin, integracin
y prueba, y anlisis de resultados del proyecto) y otras funciones ms detalladas del
trabajo (como planeacin del desarrollo, desarrollo de requisitos, gestin de la configuracin de software y prueba de unidad) que son parte del proceso del equipo.
Con fines ilustrativos, es til tomar en cuenta la actividad inicial del proceso: el lan-
42
PARTE UNO
Hacer un balance de la cantidad de trabajo del equipo para obtener un programa mnimo en trminos generales.
Valorar los riesgos del proyecto y asignar responsabilidad de rastreo para
cada riesgo clave.
Es importante sealar que la actividad de lanzamiento puede aplicarse antes de ca-
da actividad del marco de trabajo del PSE, el cual se explic prrafos atrs. Esto se
ajusta a la naturaleza iterativa de muchos proyectos y permite que el equipo se adapte a las necesidades cambiantes del cliente y a las lecciones aprendidas de actividades previas.
El PSE reconoce que los mejores equipos de software son autodirigidos. Los
miembros del equipo plantean los objetivos del proyecto, adaptan el proceso para
cubrir sus necesidades, controlan el programa y la medicin y el anlisis de las medidas recolectadas; adems, trabajan de manera continua para mejorar el enfoque
del equipo respecto de la ingeniera del software.
Al igual que el PSP. el PSE es un enfoque riguroso para la ingeniera del software
que ofrece beneficios distintos y cuantificables en productividad y calidad. El equipo
debe comprometerse con el proceso y debe recibir capacitacin para asegurarse de
que el enfoque se aplique de manera apropiada.
43
proceso
'
HerTamientas representativas:11
/grabe Process Tools, distribuidas par Corel Corporotion
(www.igrafx.com/products/process), es uno serie de
herramientas que permiten al equipa organizar, medir
y modelar el proceso de software.
Si el proceso es dbil, sin duda el producto final sufrir las consecuencias. Asimismo, una confianza excesiva en el proceso es peligrosa. En un breve ensayo Margaret Davis [DAV95) comenta sobre la dualidad del producto y el proceso:
Alrededor de cada diez aos, a veces cada cinco, la comunidad del sollware redefine "el
problema" cambiando su enfoque de los aspectos del producto a los asuntos del proceso
Entonces se han obtenido lenguajes de programacin estructurados (producto) seguidos
por mtodos de anlisis estructurado (proceso) y encapsulacin de datos (producto), as[
como el nfasis actual en el Modelo de Madurez de Capacidad para el Desarrollo de SOllware del Instituto de lngenierla del Software (proceso) (seguidos por los mtodos orienta
dos a objetos y el desarrollo gil de sollwareJ.
Mientras la tendencia natural de un pndulo es llegar al reposo en el punto medio en
tre dos extremos, el objetivo de la comunidad del sollware cambia en forma constante
porque cada vez que una oscilacin termina se aplica una nueva fuerza. Estas oscilacio
nes son nocivas en si mismas porque confunden al profesional promedio del software con
los cambios radicales en el significado de hacer el trabajo o dejar que ste se desarrolle
solo. Las oscilaciones tampoco resuelven "el problema", puesto que estn destinadas a fallar mientras el producto y el proceso sean tratados como si formaran una dicotoma en
lugar de una dualidad.
11 Las herramientas mencionadas aqu representan una muestra de esta categora. En la mayorla de
los casos los nombres son marcas registradas de sus respectivos desarrolladores.
44
PARTE UNO
Existen precedentes en la comunidad cientfica hacia las nociones de dualidad, cuando las contradicciones en las observaciones no se pueden explicar por completo con una
u otra teora competidora. La naturaleza dual de la luz. la cual parece ser en forma simultnea una particula y una onda, ha sido aceptada desde la dcada de 1920, cuando LOuis
de Broglie la propuso. Creo que las observaciones posibles sobre los artefactos del software y su desarrollo demuestran una dualidad fundamental entre el producto y el proceso. No se puede llegar a entender el artefacto completo, su contexto, uso, signiflcado y
valor si slo se ve como un proceso o nicamente como un producto .
Todas las actividades humanas pueden verse como un proceso, pero cada ser humano tiene un sentido de autovaloracin de aquellas actividades que generan una representacin que puede emplear o apreciar ms de una persona, emplear una y otra vez, o
aprovechar en algn otro contexto. Es decir, el ser humano encuentra placer en reutilizar
sus productos y en que otros los reutilicen.
Por lo tanto, mientras la rpida asimilacin de reutilizar metas en el desarrollo de software aumenta de manera potencial la satisfaccin que experimentan los profesionales de
su trabajo, tambin aumenta la urgencia de aceptacin de la dualidad del producto y el
proceso. Considerar un artefacto reutilizable como slo un producto o slo como un proceso oscurece el contexto y las maneras de utilizarlo, u oscurece el hecho de que cada uso
resulta en un producto que, a su tiempo, se aprovechar como entrada a alguna otra actividad de desarrollo de software. Poner un punto de vista sobre el otro reduce en forma
sustancial las oportunidades de reutilizar y. por lo tanto, pierde la oportunidad de incrementar la satisfaccin del trabajo.
'*
el sisllnlD ideal, si se pudiera obtenet, serio un cdigo Ion flexible y dinimo COIIIO ~ prMS par ...
dpllle mile sihNKin concebible uno regla exacto. Pero lo vida es demasiado (omplejo para . _ 1511 illa
inda ton tDclo el poder humano.
"Sil
La gente obtiene tanta (o ms) satisfaccin del proceso creativo que del producto final. Un pintor disfruta los trazos del pincel tanto como el resultado del cuadro.
Un escritor disfruta la bsqueda de una metfora apropiada tanto como el libro terminado. Un profesional del software creativo debe sentir tanta satisfaccin del proceso como del producto terminado.
El trabajo que realiza la gente de software cambiar en los aos que siguen. La
dualidad del producto y el proceso es un elemento importante para mantener a la
gente creativa comprometida mientras finaliza la transicin desde la programacin
hasta la ingenieria del software.
La ingeniera del software es una disciplina que integra al proceso, los mtodos y las
herramientas para el desarrollo del software de computadora. Se ha propuesto un
gran nmero de modelos de proceso para la ingeniera del software, pero todos definen un conjunto de actividades del marco de trabajo, una coleccin de tareas con-
CAPTULO 2
45
ducidas para realizar cada actividad, productos de trabajo generados como consecuencia de las tareas y un conjunto de actividades sombrilla que acompaan el proceso entero. Los patrones de proceso pueden aprovecharse para definir las caractersticas del mismo.
La integracin del modelo de capacidad de madurez (IMCM) es un modelo total
del proceso, que describe las metas, prcticas y capacidades especficas con que de
be contar un proceso de software maduro. El SPICE y otros estndares definen los
requisitos para guiar una evaluacin del proceso de software, y el estndar ISO
9001 :2000 examina la gestin de la calidad dentro de un proceso.
Se han propuesto los modelos personal y en equipo para el proceso de software.
Ambos destacan la medicin, la planeacin y la autodireccin como ingredientes
clave para un proceso de software exitoso.
Los principios, conceptos y mtodos que permiten realizar el proceso llamado ingeniera del software sern considerados en el resto de este libro.
[AMB98) Ambler, S., Process Patterns: Building Large-Sca/e Systems Using Object Technology,
Cambridge University Press/SIGS Books, 1998.
[BAE98) Baetjer, Jr., H., Software as Capital, IEEE Computer Society Press, 1998, p. 85.
[CIAOll Cianfrani, c. et al., ISO 9001:2000 Explained, American Society of Quality, 2001.
[CMM02J capability, Maturio,, Model Tntegration (CMMI), Versin 1.1, Software Engineering Institute,
marzo de 2002, disponible en http://www.sei.cmu.edu/cmmi/.
[DAV95] Davis, M., "Process and Product: Dichotomy or Duality", en software Engmeering Notes,
ACM Press, vol. 20, nm. 2, abril de 1995, pp. 17-18.
(DUNOl)Dunaway. D. y S. Masters, CMM-Based Appraisa/for Interna/ Process Improvement(CBA /PI
Version J.2 Method Description, Software Englneering 1nstitute, 2001, puede descargarse de
http:/ /www.sei.cmu.edu/publications/documents/0l.reports/01 tr033.html
[ELE98J El Emam, K., J. Drouin y w. Melo (eds.), SPICE: The Theory and Pract1ce o/Software
Process Improvement and Capability Determinalion, IEEE Computer Society Press. 1998.
[FER97] Ferguson, P. et al , "Results of applying the personal software process", en IEEE
Computer, vol 30, nm 5, mayo de 1997, pp. 24-31.
(HUM96J Humphrey, W., "Using a Defined and Measuted Personal Software Process", en IEEE
SOflware, vol. 13, nm. 3, mayo-junio de 1996. pp. 77-88.
(HUM97J Humphrey, W., Jntroduction to the Personal Software Process, Addison-Wesley, 1997.
(HUM98J Humphrey, w, NThe Three Dimensions of Process Improvement, Part 111: The Team
Process", en Crosstalk, abril de I 998. Disponible en http://www.stsc.hill.af.mil/crosstalk/
1998/apr/dimensions.asp.
(HUMOOJ Humphrey, w., lntroduclion to the Team software Process, Addison-Wesley, 2000.
(IEE93) IEE Standards Co/lection: software Engineering, IEE Standard 6 I 0.12-1990, IEEE, 1993.
[ISOOOJ ISO 9001 2000 Document Sel, lntemational Organization for Standards, 2000, http:/ /
www.iso.ch/iso/en/iso9000-l 4000/ iso9000/ 9000isoindex.html.
[ISOOIJ "Guidance on the Process Approach to Quality Management systems", Document
JSO/TC l 76/SC2/N544R, lnternational Organization for Standards, mayo de 2001
[KETOIJ Ketola, J. y K. Roberts, ISO 9001:2000 in a Nutshe/1, 2a. ed., Paton Press, 2001.
[MONO!) Monnich, H.,Jr. y H. Monnich, lSO 9001 :2000 for Small-and Medium-Sized Businesses,
American Society of Quality, 2001.
(NAU69J Naur, P y B. Randall (eds.), SOjtware Engineering A Report on a Conference Sponsored
by the NATO Sdence Comltlee, NATO, 1969.
[NEG99J Negele, H., "Modeling of Integrated Product Development proceses", Proc. 9th Annual
Symposium of!NCOSE, Reino Unido, 1999.
46
PARTE UNO
[PAU93] Paulk, M. et al.. Capability Maturity ModelJor Software, Software Engineering lnstitute,
Camegie Mellon University, Pittsburgh, PA, 1993.
[PHI02) Phillips, M., "CMMI V 1.1 Tutora!", abril de 2002, disponible en http:/ /www.sei.cmu.
edu/cmmi/.
[SEIOOJ SCAMPI, VI.O Standard CMMI Assessment Methodfor Process Improvement: Method
Description, Software Engineering Institute, Technical Report CMU/SEI-2000-TR-009,
disponible en http/ /www.sei.cmu.edu/publications/documents/OO.reports/00tr009.html
ISPI99] "SPICE: Software Process Assessment, Part 1: Concepts and Introduction". Versin 1.0,
ISO/IEC JTCI, 1999.
2. 1. En la introduccin a este captulo, Baetjer puntualiza: "El proceso ofrece una interaccin
entre usuarios y diseadores, entre usuarios y herramientas en evolucin, entre diseadores y
herramientas en evolucin [tecnologa]". Hganse cinco preguntas respecto a a) lo que los diseadores deben preguntar a los usuarios; b) los usuarios deben preguntar a los diseadores;
e) lo que los usuarios deben preguntarse a s mismos sobre el producto de software que se
construir: y d) lo que los diseadores deben preguntarse a s mismos sobre el producto de
software que se construir y el proceso que se utilizar para hacerlo.
2.2. En la figura 2.1 se colocan los tres estratos de ingeniera del software arriba de un estrato titulado "un enfoque en la calidad". Esto implica un programa de calidad de una organizacin amplia como gestin de la calidad total. Realizar una pequea investigacin y desarrollar una gua de
los principios clave de un programa de gestin de calidad total.
2.3. Existe la posibilidad de que las actividades genricas del proceso de ingeniera del soft-
2.1. Investigar un poco ms acerca de la IMCM y discutir las ventajas y desventajas de los modelos de la IMCM continuo y discreto.
2.8. Desplegar la documentacin de la JMCM del sitio de la red del SEi y seleccionar un rea del
proceso que no sea la planeacin del proyecto. Hacer una lista de las metas especficas (ME) y de
las prcticas especficas (PE) asociadas que se definan mediante el rea que se haya elegido.
2 .9. Considerar la actividad de comunicacin dentro del marco de trabajo. Desarrollar un patrn completo del proceso (podra ser un patrn discreto) aprovechando los principios descritos en la seccin 2.4.
2. 10. Cul es el propsito de la evaluacin del proceso? Por qu el SPJCE ha sido desarrollado como un estndar para la evaluacin del proceso?
2 . 11 . Investigar ms sobre el PSP y preparar una breve presentacin que indique los benefi-
CAPTULO 2
47
MODELOS PRESCRIPTIVOS
DE PROCESO
CONCEPTOS
CLAVE
c's1rucd6n de
protottoJ ... ..ss
dtwrollo
tOIKlll'rente 60
mtfodos
fonnales. .. .64
modelo DIC . 63
lllOihl DRA , ,U
11!Nlelo DSOA 6S
modelo
cos<llda .......SO
modelo en
espiral ........58
llllklelo
ilcrt!lltlltal .. .52
modelo
prescriptivo 49
proceso
l!l borde del caos se define como "un estado natural entre el ore.en y el caos, una
relacin estrecha entre la estructura y la sorpresa" [K.AU95J. El borde del caos se p1.1ede
visuallz;r como un estado inestable, estructurado en forma parcial,,. es inestable
porque es atraldo de manera constante hacia el caos o hacia el orden absoluto.
se tiende a pensar que el orden es el estado ideal de la naturaleza, fSto po<lrta ser
un error. La investigacin... apoya la teora de que la operacin lejos del equilibrio
genera creatividad, procesos O(ganizados por s mismos y retroalimentacin creciente [R0096J. El orden absoluto significa la ausencia de variablidad. lo cual sera
una ventaja 1m ambientes impredecibles. El cambio ocurre cuando existe alguna es
tructura para que pueda organizarse, dicha estructura no debe ser tan rigida como
para que evite el cambio. Por otro lado, <l.emasiado caos puede imposibilitar la coor~
dinaci6n y la coherencia. ta falta de estructura no siempre significa desorden.
Ullifkodo .. .. .67
ware.
de IQHwQre y
svs gerentes adaptan vn inocleto prescriptivo de
proceso a svs necesidades y ~ lo siguen,
Adems, la gente que he solicitado el .t'twore
tiene un popel por desempear conforme se ej8""
cuto el modelo de software.
Pe>r qu es importante? Porque propo(C1ona
estabilidad, control y 019ootc.1d6n uno activi
49
PARTE UNO
50
Aunque un proceso
seo prescrip#vo, no se
debe asumir que ste
es estfJ#co. los
modelos prescriptivos
se deben adoptar o
las personas, ol
problema y al
proyecto.
ComunicCJCin
l -
Plonea(in
estimacin
itinerario
seg1Jmiento
Modelado
on6lisls
diseo
Construccin
cdigo
pruebo
Despliegu.
eotrego
soporte
retroolime:nrocin
A pesar de que el modelo en cascada original, que propuso Winston Royce [ROY70]. prev "ciclos
de retroalimentacin", la inmensa mayora de las organizaciones que aplica este modelo de proceso
lo trata como si fuera estrictamente lineal.
51
1. Es muy raro que los proyectos reales sigan el flujo secuencial que propone el
modelo. A pesar de que el modelo lineal incluye iteraciones, lo hace de manera
indirecta. Como resultado, los cambios confunden mientras el equipo de
proyecto acta.
2. Con frecuencia es dificil para el cliente establecer todos los requisitos de manera
explicita. El modelo en cascada lo requiere y se enfrentan dificultades al incorporar la incertidumbre natural presente en el inicio de muchos proyectos.
3. El cliente debe tener paciencia. Una versin que funcione de los programas
estar disponible cuando el proyecto est muy avanzado. Un error grave ser
desastroso si no se detecta antes de la revisin del programa.
En un anlisis interesante de proyectos reales, Bradac [BRA94J concluy que la
naturaleza lineal del modelo en cascada conduce a "estados de bloqueo" en los cuales algunos miembros del equipo del proyecto deben esperar a otros para terminar
tareas dependientes. De hecho, el tiempo de espera puede superar el que se aplica
en el trabajo productivo. El estado de bloqueo tiende a ser ms comn al principio y
al final del proceso secuencial.
En la actualidad, el trabajo del software est acelerado y sujeto a una cadena infinita de cambios (de caractersticas, funciones y contenido de la informacin). Con
frecuencia, el modelo en cascada no es aprop_iado para dicho trabajo. Sin embargo.
puede servir como un modelo de proceso til en situaciones donde los requerimientos estn fijos y donde el trabajo se realiza, hasta su conclusin, de una manera lineal.
En muchas situaciones los requisitos iniciales del software estn bien definidos en
forma razonable, pero el enfoque global del esfuerzo de desarrollo excluye un proceso puramente lineal. Adems, quiz haya una necesidad imperiosa de proporcionar de manera rpida un conjunto limitado de funcionalidad para el usuario y despus refinarla y expandirla en las entregas posteriores del software. En estos casos
se elige un modelo de proceso diseado para producir el software en forma incremental.
eon CNll1IJ$lada frecuencJo, el trobojo en el software sigue la primero ley def ciclismo: no impontl PCl(ilJ ~ WIJ'IS.
as ll10lltelia arriba ymnlra el Viento.
"
,,
52
PARTE UNO
El modelo incremental
entrego uno serie de
lanzamientos,
llamados incrementos,
que proporcionan en
formo progresivo ms
funcionalidad poro los
clientes a medido que
se entrego codo uno
de los incrementos.
Si el diente demando
lo entrego en una
fecho imposible de
cumplir, sugirase
entregar uno oms
incrementos poro eso
fecho yel resto del
software (incrementos
adiciono/es) despus.
iiMJFD
O Comunicoci6n
O Ploneoci6n
O Modelodo {onlisis, diseno]
ll1 Construccin jc6digo, pruebo)
El modelo
incremental.
:
a
-~
incremento #n
e
incremento #2
entrego de
n-simo incremento
B
>.
incremento # 1
entrego del
segundo incremento
j
Tiempo del calendario de pro~
CAPTULO 3
53
3.3.2
El modelo DRA
El desarrollo rpido de aplicaciones (DRA) es un modelo de proceso de software incremental que resalta un ciclo de desarrollo corto. El modelo ORA es una adaptacin a
"alta velocidad" del modelo en cascada en el que se logra el desarrollo rpido
mediante un enfoque de construccin basado en componentes. Si se entienden bien
los requisitos y se limita el mbito del proyecto.4 el proceso DRA permite que un
equipo de desarrollo cree un "sistema completamente funcional" dentro de un periodo muy corto (por ejemplo, de 60 a 90 das) [MAR91].
Como otros modelos de proceso, el enfoque DRA cumple con las actividades
genricas del marco de trabajo que ya se han presentado. La comunicacin trabaja
para entender el problema de negocios y las caractersticas de informacin que debe
incluir el software. La planeadn es esencial porque varios equipos de software trabajan en paralelo sobre diferentes funciones del sistema. El modelado incluye tres
grandes fases -modelado de negocios, modelado de datos y modelado del proceso- y establece representaciones del diseo que sirven como base para la actividad
de construccin del modelo DRA. La construccin resalta el empleo de componentes
de software existente y la aplicacin de la generacin automtica de cdigo. Por ltimo, el despliegue establece una base para las iteraciones subsecuentes, si stas son
necesarias [KER94J.
El modelo de proceso DRA se ilustra en la figura 3.3. Es obvio que las restricciones
de tiempo impuestas sobre un proyecto DRA exigen un "mbito de escalas" [KER94J .
Si una aplicacin de negocios se puede modular de forma que cada gran funcin
pueda completarse en menos de tres meses (mediante la aplicacin del enfoque ya
Es importante observar que para todos los modelos de proceso giles que se tratan en et captulo 4
Estas condiciones no se pueden garantizar por ningn medio. De hecho, muchos proyectos de soft-
{REl95J.
54
PARTE UNO
iihiff
Equipo #n
El modelo
DRA.
M
modelado del negocio
modelado d. loa dato&
modelado del prooeso
!"]
c..........
~.raci()n de
COMpOMnlas
Equipo #2
Comunicacin
91nefaCin
Ma,I
de ccligo
....._....
OUlclmlico
pruebo,
'
-mv
C1n11r satl.
NU!ilil111Ci6n de
Equipo#!
Modelado
modelado del negocio
modelado cle los datos
modelada clel proceso
~CIIIIOMiCO
c:...... vcd6n
revnlizoel6n de
componente
D,.1,.,n11gtaci6n
enirego
relroo~menloclII
get*OCln ~
ele c6digo
pruaba,
60-90diaa
Cules
so11 los
desventaos del
modelo DRA?
descrito), sta es una candidata para el DRA. cada gran funcin se puede abordar
mediante un equipo de ORA por separado, para despus integrarlas y formar un todo.
Como todos los modelos de proceso, el enfoque ORA tiene inconvenientes
[BUT94 J: 1) para proyectos grandes, pero escalables, el ORA necesita suficientes
recursos humanos para crear el nmero correcto de equipos ORA; 2) si los desarrolladores y clientes no se comprometen con las actividades rpidas necesarias para
completar el sistema en un marco de tiempo muy breve, los proyectos de ORA fallarn; 3) si un sistema no se puede modular en forma apropiada, la construccin de
los componentes necesarios para el ORA ser problemtica; 4) si el alto rendimiento es un aspecto importante, y se alcanzar al convertir interfases en componentes
del sistema, el enfoque ORA podra no funcionar; y 5) el ORA seria inapropiado cuando los riesgos tcnicos son altos (por ejemplo, cuando una aplicacin nueva aplica
muchas nuevas tecnologas)
CAPTULO 3
55
completo, por lo que se debe presentar una versin limitada para liberar la presin
competitiva y de negocios; se tiene claro un conjunto de requisitos del producto o
sistema esencial, pero todava se deben definir los detalles de las extensiones del
producto o sistemas. En stas y otras situaciones similares, los ingenieros de software necesitan un modelo de proceso que haya sido diseado de manera explcita
para incluir un producto que evolucione con el tiempo.
Los modelos evolutivos son iterativos; los caracteriza la forma en que permiten que
los ingenieros de software desarrollen versiones cada vez ms completas del software.
3.4. 1
. .1. .11l.11f0-
ddente
necesidad
411'11
E:modelode
c:am:zruc:c1n
ol polotipos.
Construccin de prototipos
56
PARTE UNO
bales para el software, identifican los requisitos conocidos y las reas del esquema
en donde es necesaria ms definicin. Entonces se plantea con rapidez una iteracin
de construccin de prototipos y se presenta el modelado (en la forma de un diseo
rpido) . El diseo rpido se centra en una representacin de aquellos aspectos del
software que sern visibles para el cliente o el usuario final (por ejemplo, la configuracin de la interfaz con el usuario y el formato de los despliegues de salida). El
diseo rpido conduce a la construccin de un prototipo. Despus, el prototipo lo
evala el cliente/usuario y con la retroalimentacin se refinan los requisitos del software que se desarrollar. La iteracin ocurre cuando el prototipo se ajusta para
satisfacer las necesidades del cliente. Esto permite que al mismo tiempo el desarrollador entienda mejor lo que se debe hacer.
De manera ideal, el prototipo debera servir como un mecanismo para identificar
los requisitos del software. Si se construye un prototipo de trabajo, el desarrollador
intenta emplear los fragmentos del programa ya existentes o aplica herramientas
(como generadores de informes, administradores de ventanas, etctera) que permiten producir programas de trabajo con rapidez.
Pero qu debe hacerse con el prototipo una vez cumplido el propsito descrito?
Brooks [BR075] ofrece una respuesta:
En la mayora de los proyectos, el primer sistema construido apenas se utliza. Tal vez sea
demasado lento, muy grande o torpe en su uso, o rena las tres caracteristicas a la vez.
No existe otra opcin que comenzar de nuevo, aunque sea doloroso, es lo mejor, y construr
una revsn redseada en la que se resuelvan estos problemas .. . cuando se aplca un
concepto nuevo de sistema o una tecnologa nueva, se tene que construir un sistema inservible y que sea necesario desechar, porque incluso la mejor planeacin no es omnisciente
como para que el sistema est perfecto desde la primera vez. Por lo tanto, la pregunta de
la administracin no es si debe construirse un sistema piloto y desecharlo. Esto tendr que
hacerse. La nica pregunta es si se planea la construccin de un desechable o se promete
entregrselo a los clentes.
El prototipo puede servir como "primer sistema", el que Brooks recomienda desechar. Pero sta tal vez sea una visin idealizada. Es verdad que a los clientes y los
desarrolladores les gusta el paradigma de construccin de prototipos. A los usuarios
les gusta el sistema real y a los desarrolladores les gusta construir algo de inmediato. Sin embargo, la construccin de prototipos tambin se toma problemtica por las
siguientes razones:
l. El cliente ve lo que parece una versin en funcionamiento del software, sin
saber que el prototipo est unido "con chicle y cable para embalaje", que por
la prisa de hacerlo funcionar no se ha considerado la calidad del software
global o la facilidad de mantenimiento a largo plazo. Cuando se informa que
el producto debe construirse otra vez para mantener los altos niveles de calidad, el cliente no lo entiende y pide la aplicacin de "unos pequeos ajustes"
para que se pueda elaborar un producto final a partir del prototipo. Es muy frecuente que la gestin del desarrollo de software sea muy lenta.
CAPTULO 3
57
lograr que el prototipo funcione con rapidez. Tal vez se utilice un sistema
operativo o lenguaje de programacin inadecuado slo porque est disponible
y es conocido; se puede implementar un algoritmo ineficiente slo para
mostrar capacidad. Despus de un tiempo, el desarrollador quiz se familiarice con estas selecciones y olvide las razones por las que son inapropiadas.
La seleccin menos ideal ahora se convierte en una parte integral del sistema.
A pesar de que tal vez surjan problemas, la construccin de prototipos puede ser
un paradigma efectivo para la ingeniera del software. La clave es definir las reglas
del juego desde el principio; es decir, el cliente y el desarrollador se deben poner de
acuerdo en que el prototipo se construya y sirva como un mecanismo para la definicin de requisitos, en que se descarte, al menos en parte, y en que despus se desarrolle el software real con un enfoque hacia la calidad.
58
PARTE UNO
~,
'1
c&v1
El modelo en espiral se
puede odoptor y
oplicorlo orrovs del
cido de vido completo
de uno oplicocin,
junto de puntos de fijacin para asegurar el compromiso del usuario con soluciones de
sistema que sean factibles y mutuamente satisfactorias.
liM+iiJ
Planeacin
eshmoci6n
itinerario
on61isis de riesgos
Un modelo
en espiral
tpico.
Comunicacin
Modelado
on6lisis
diseo
Construccin
cdigo
pruebo
5 El modelo en espiral expuesto en esta seccin es una variacin del modelo que propuso Boehm. Para
ms infonnacin sobre el modelo en espiral original, vase BOE88J En BOE98J se puede encon
trar una exposicin ms reciente del modelo en espiral de Boehm
CAPTULO 3
59
espiral que tiene una direccin en el sentido del movimiento de las manecillas del
reloj, y que se inicia desde el centro. El riesgo (captulo 25) es un factor considerado
en cada revolucin. Los puntos de .fijacin -una combinacin de productos de trabajo y condiciones incluidas a lo largo de la ruta de la espiral- se consideran para
cada paso evolutivo.
El primer circuito alrededor de la espiral quiz genere el desarrollo de una especificacin del producto; los pasos subsecuentes alrededor de la espiral se pueden
aprovechar para desarrollar un prototipo y despus, en forma progresiva, versiones
ms elaboradas del software. Cada paso a travs de la regin de planeacin resulta
en ajustes al plan del proyecto. Los costos y el itinerario se ajustan con base en la
retroalimentacin derivada de la relacin con el cliente despus de la entrega.
Adems, el administrador del proyecto ajusta el nmero de iteraciones planeado que
se requiere para completar el software.
A diferencia de otros modelos de proceso que terminan cuando se entrega el software, el modelo en espiral puede adaptarse y aplicarse a lo largo de la vida del software de computadora. Por lo tanto, el primer circuito alrededor de la espiral podra
representar un "proyecto de desarrollo del concepto", el cual se inicia en el centro de
la espiral y contina por mltiples iteraciones6 hasta que el desarrollo del concepto
est completo. Si el concepto se desarrollar en un producto real, el proceso contina en la siguiente fase de la espiral y comienza un "proyecto de desarrollo de un
producto nuevo". El nuevo producto evolucionar a travs de un nmero de iteraciones alrededor de la espiral. Despus, un circuito alrededor de la espiral se podra
emplear para representar un "proyecto de mejoramiento del producto". En esencia,
la espiral. cuando se caracteriza de esta forma, permanece operativa hasta que el
software se retira. En ocasiones el proceso est inactivo, pero siempre que se inicie
un cambio el proceso comienza en el punto de entrada aprobado (por ejemplo,
mejoramiento del producto).
El modelo en espiral es un enfoque realista para el desarrollo de software y de sistemas a gran escala. Como el software evoluciona conforme avanza el proceso, el
desarrollador y el cliente entienden y reaccionan de mejor manera ante los riesgos
en cada etapa evolutiva. El modelo en espiral emplea la construccin de prototipos
como un mecanismo encaminado a reducir riesgos pero, en forma ms importante,
permite al desarrollador la aplicacin del enfoque de la construccin de prototipos
en cualquier etapa evolutiva del producto. Mantiene el enfoque sistemtico de los
pasos que sugiere el ciclo de vida clsico, pero lo incorpora al marco de trabajo iterativo que refleja de forma ms verdica el mundo real. El modelo en espiral exige
una consideracin directa de los riesgos tcnicos en todas las etapas del proyecto y,
si se aplica en forma apropiada, debe reducir los riesgos antes de que se vuelvan
roblemticos.
6 las flechas que apuntan hacia dentro a lo largo del eje que separa la regin de despliegue de la de
avnuncacin indican una posibilidad de iteracin /oca/ a lo largo de la misma ruta de la espira/.
60
PARTE UNO
~ONSIJOS.
Amenudo, el modelo
concurrente es ms
opropiodo pura
proyectos de inge-
nieoo de sistemas
(captulo 6), donde
estn implicados diferentes equipos de
ingeniera.
7 Se debe notar que el anlisis y el diseo son acciones complejas que requieren un debate sustancial. La parte 2 de este libro considera estos tpicos en forma detallada.
8
CAPTULO 3
eieme,to
*imodelo
-11::==z:-Jante
.pcocaso.
61
Ninguno
Actividad de modelado
eventos generados en un punto de la red del proceso disparan transiciones entre los
estados.
3.4.4
Ya se ha detectado que al software de computadoras moderno lo caracteriza el cambio continuo, los tiempos de entrega muy reducidos, y una necesidad intensa de
satisfacer al cliente/usuario. En muchos casos, el tiempo de llegada al mercado es
el requisito de gestin ms importante. Si se pierde una ventana del mercado, el
mismo proyecto de software puede perder su significado.9
Sin embargo, es importante notar que llegar en primer lugar a un mercado no garantiza el xito. De
hecho, muchos productos de software muy exitosos han sido los segundos o hasta los terceros en llegar al mercado (al aprender errores de los antecesores).
62
PARTE UNO
locidad mxima de la evolucin. Si las evoluciones suceden demasiado rpido, sin un periodo de relajacin, existe la certidumbre de que el proceso caer en el caos. Por otro lado,
si la velocidad es demasiado lenta, se podra afectar la productividad.
Una tercera dificultad es que los procesos de software se deben enfocar en la flexibili dad y extensibilidad en vez de en la alta calidad. Esta afirmacin suena atemorizan te. Sin
embargo, se debe priorizar la velocidad del desarrollo sobre los cero defectos. Si el desarrollo
se extiende para alcanzar una alta calidad, se producira un retraso en la entrega del producto, la cual se hara cuando el nicho de oportunidad ya haya desaparecido. Este cambio
de paradigma Jo impone la competencia en el borde del caos.
incremento.
1O En este contexto, la calidad del software se define con mucha amplitud para abarcar no slo la satisfaccin del cliente, sino tambin una variedad de criterios tcnicos tratados en el captulo 26.
CAPTULO 3
63
conforme solicilan
los...._
3.5. l
Los nuevos componentes de software comerciales (NCSC), desarrollados por vendedores que los ofrecen como productos, se pueden emplear cuando el software est
en proceso de construccin. Estos componentes proporcionan funcionalidad dirigida con interfaces bien definidas que permiten que el componente se integre en el
software.
El modelo de desarrollo basado en componentes (DBC) (captulo 30) incorpora muchas
de las caracteristicas del modelo en espiral. Es evolutivo por naturaleza [NIE92J y exige
un enfoque iterativo para la creacin del software. Sin embargo, el modelo configura
aplicaciones a partir de componentes de software empaquetados en fonna previa.
Las actividades de modelado y construccin comienzan con la identificacin de
los componentes candidatos. Estos componentes se pueden disear como mdulos
de software convencionales o como clases o paquetes de clases orientados a objetos. 12 Sin importar la tecnologia que se aplique en la creacin de los componentes,
el modelo de desarrollo basado en componentes incorpora los siguientes pasos
(implementados mediante un enfoque evolutivo):
Se disea una arquitectura de software (captulo 1O) para adaptar los componentes.
11 En algunos casos estos modelos especializados de proceso se pueden describir de mejor manera
como una coleccin de tcnicas o una metodologa para alcanzar una meta especifica del desarroJlo del software. Sin embargo, stas implican un proceso.
12 La tecnologa orientada a objetos se trata a lo largo de la parte 2 de este libro. En este contexto, una
2se e11G1psu/a una serie de datos y los procedimientos que procesan dichos datos. Un paquete de clases es una coleccin de clases relacionadas que trabajan juntas para alcanzar algn resultado final.
64
PARTE UNO a
3.5.2
CAPTULO 3
65
Es dificil la utilizacin de estos modelos como un mecanismo de comunicacin con clientes que no tienen muchos conocimientos tcnicos.
No obstante, tal vez el enfoque a travs de mtodos fonnales haya ganado adeptos
entre los desarrolladores de software que deben construir sistemas de alta seguridad (por
eJemplo, en los campos de la aeronutica y de los dispositivos mdicos). y entre los desarrolladores que padecen severas penurias econmicas cuando aparecen errores en el
software.
3.5.3
Sin importar el proceso de software que se elija, los constructores de software complejo implementan de manera invariable un conjunto especfico de caractersticas.
funciones y contenido de infonnacin. Estas caractersticas especificas del software
se modelan como componentes (por ejemplo, clases orientadas a objetos) y despus se
construyen dentro del contexto de una arquitectura de sistema. Conforme los sistemas basados en computadora se vuelven ms elaborados <:y complejos), ciertos
intereses" -propiedades requeridas para el cliente o reas de inters tcnicoabarcan toda la arquitectura. Algunos intereses son propiedades de alto nivel de un
sistema (por ejemplo, seguridad, falta de tolerancia). Otros intereses afectan las funciones (como la aplicacin de reglas de negocios), mientras que otros son sistmicos (como la sincronizacin de tareas o la gestin de memoria).
Cuando los intereses se relacionan con mltiples funciones, caractersticas e
informacin del sistema, con frecuencia se denominan intereses generales. Los requerimientos de aspectos definen estos intereses generales que ejercen un impacto a travs de la arquitectura del software. El desarrollo de software orientado a aspectos
(DSOA), referido con frecuencia como programadn orientada a aspectos (POA). es
un paradigma de la ingeniera del software relativamente nuevo que proporciona un
proceso y enfoque metodolgico para definir, especificar. disear y construir aspee
CAPTULO 3
67
jos . Eso se debe en parte al hecho de que las computadoras se volvan ms poderosas cada
ao, lo que alentaba que los usuarios esperaran ms de ellas. Esta tendencia tambin la
impuls el uso expandido de Internet para el intercambio de todo tipo de informacin.
Nuestro apetito por un software cada vez ms complejo crece en la medida en la que
aprendemos cmo puede mejorarse un producto desde que sale uno hasta que llega el
otro. Necesitamos un software que se adapte mejor a nuestras necesidades, pero que, a
su vez, haga el software ms complejo. En resumen, queremos ms.
3.6. l
Durante la dcada de 1980 y al principio de la dcada siguiente, los mtodos y lenguajes de programacin orientados a objetos (00) 16 obtuvieron una amplia difusin
entre la comunidad de la ingeniera del software. Durante el mismo periodo se pro-
14 Un caso de uso (captulos 7 y 8) es un contexto narrativo o plantilla que describe una caracterstica
o funcin del sistema desde el punto de vista del usuario. El caso de uso lo escribe el usuario y sirve
como una base para la creacin de un modelo de anlisis ms completo.
15 El UML (Untfied Modeling Language) se ha convertido en la notacin ms utilizada para el modelado del
anlisis y el diseo. Representa una unin entre tres importantes notaciones orientadas a objetos.
16 Si el lector no se encuentra familiarizado con los mtodos orientados a objetos, en los captulos 8 y
9 se presenta una breve revisin general de ellos. Para una presentacin ms detallada vase
[REE02) [STIOI) o [FOW99).
68
PARTE UNO
puso una amplia variedad de anlisis y diseo orientados a objetos (AOO y DOO) y
se introdujo un modelo de proceso orientado a objetos de propsito general (similar
a los modelos evolutivos presentados en este captulo). Al igual que la mayora de
los paradigmas "nuevos" para la ingeniera del software, los seguidores de cada uno
de los mtodos de AOO y DOO argumentaban acerca de cul de ellos era el mejor,
pero ningn mtodo o lenguaje domin la escena de la ingeniera del software.
Al principio de la dcada de 1990, James Rumbaugh [RUM91J, Grady Booch
[B0094] e Ivar Jacobson [JAC92] comenzaron a trabajar en un "mtodo unificado"
que combinara las mejores caractersticas de cada uno de sus mtodos individuales
y adoptara caractersticas adicionales que propusieran otros expertos (por ejemplo,
[WIR901) en el campo OO. El resultado fue el lenguaje de modelado unificado (UML,
por sus siglas en ingls) -que contiene una notacin robusta para el modelado y el
desarrollo de sistemas 00-. Para 1997, el UML se convirti en un estndar de la
industria para el desarrollo de software orientado a objetos. Al mismo tiempo,
Rational Corporation y otras firmas desarrollaron herramientas automticas para
apoyar los mtodos del UML.
El UML proporciona la tecnologa necesaria para apoyar la prctica de la ingeniera del software orientada a objetos, pero no provee el marco de trabajo del proceso
que gue a los equipos en la aplicacin de la tecnologa. En los aos siguientes,
Jacobson, Rumbaugh y Booch desarrollaron el proceso unificado, un marco de trabajo para la ingeniera del software orientada a objetos, mediante la utilizacin del
UML. En la actualidad, el proceso unificado y el UML se emplean de forma amplia en
proyectos 00 de todos los tipos. El modelo iterativo e incremental que propone el
PU puede y debe adaptarse para satisfacer necesidades de proyecto especficas.
Como consecuencia de la aplicacin del UML se puede producir un arreglo de
productos de trabajo (por ejemplo, modelos y documentos). Sin embargo, stos los
reducen los ingenieros de software para lograr que el desarrollo sea ms gil y reactivo ante el cambio.
. . .....,
Ettwww.
.........
,,....,.-,
ellCIWIIRK
tlanentos
utk
sobre el PU.
3.6.2
Se han analizado cinco actividades genricas del marco de trabajo y se ha explicado que stas se pueden aplicar para describir cualquier modelo de proceso del software. El proceso unificado no es la excepcin. En la figura 3.7 se muestran las
"fases" del proceso unificado (PU) y se relacionan con las actividades genricas que
se trataron en el captulo 2.
La fase de inicio del PU abarca la comunicacin con el cliente y las actividades de
planeacin. Al colaborar con los clientes y usuarios finales se identifican los requisitos de negocios para el software, se propone una arquitectura aproximada para el
17 Algunas veces el proceso unificado se llama proceso unificado racional (PUR) despus de que lo respaldara la Rational Corporation, un contribuyente importante en el desarrollo y refinamiento del
proceso y un constructor de ambientes completos (herramientas y tecnologa).
CAPTULO 3
69
siStema, y se desarrolla un plan para la naturaleza iterativa e incremental del sistema subsiguiente. Los requisitos fundamentales de negocios se describen a travs de
U" conjunto preliminar de casos de uso que describen cules caractersticas y func.ones son deseables para cada clase importante de usuarios. En general, un caso de
uso describe una secuencia de acciones que desarrolla un actor (por ejemplo, una
persona, una mquina, otro sistema) cuando ste interacta con el software. Los
casos de uso ayudan a identificar el mbito del proyecto y proporcionan una base
para la planeacin de ste.
En este punto, la arquitectura no es ms que un esquema tentativo de los subsistemas ms importantes y de las funciones y caractersticas que los forman. Despus,
la arquitectura se refinar y expandir en un conjunto de modelos que representarn visiones diferentes del sistema. La planeacin identifica recursos, evala los riesgos importantes, define un itinerario y establece una base para las fases que se aplicarn conforme se desarrolle el incremento del software.
La fase de elaboracin abarca la comunicacin con el cliente y las actividades de
modelado del modelo genrico del proceso (figura 3.7). La elaboracin refina y
expande los casos de uso preliminares que se desarrollaron como una parte de la
fase de inicio; adems, expande la representacin arquitectnica para incluir cinco
visiones diferentes del software: el modelo de caso de uso, el modelo de anlisis, el
modelo de diseo, el modelo de implementacin y el modelo de despliegue. En algunos casos, la elaboracin crea una "lnea de base arquitectnica ejecutable" [ARL02J
que representa un sistema ejecutable en su "primer corte". 18 La lnea de base arquitectnica demuestra la viabilidad de la arquitectura, pero no proporciona todas las
Elaboroci6n
Produccin
70
~--..........
PARTE UNO
19 En la prueba beta, una accin de prueba controlada (captulo 13). el software lo utilizan usuarios finales reales, con la intencin de descubrir defectos y deficiencias. Se establece un esquema de informe
de defectos y deficiencias de manera formal, y el equipo de software evala la retroalimentacin.
CAPTULO 3
71
3.6.3
En la figura 3.8 se ilustran los productos de trabajo clave que se produjeron como
consecuencia de las cuatro fases tcnicas del PU. Durante la fase de inicio, el propsito es establecer una "visin" general para el proyecto, identificar un conjunto de
requisitos de negocios, formar un caso de negocios para el software y definir los riesgos del proyecto y del negocio que pudieran representar un obstculo para el xito.
Desde el punto de vista del ingeniero de software, el producto de trabajo ms importante generado durante la etapa de inicio es el modelo de caso de uso: una coleccin
de casos de uso que describen la forma en que actores externos ("usuarios" humanos y no humanos del software) interactan con el sistema y obtienen valor a partir
de ste. En esencia, el modelo de casos de uso es una coleccin de escenarios de uso
con plantillas estandarizadas que implican caractersticas y funciones del software
mediante la descripcin de una serie de condiciones previas, un flujo de eventos o
un escenario, y un conjunto de condiciones exteriores para la interaccin representada. En un inicio, los casos de uso describen requisitos al nivel del dominio de negocios (por ejemplo, el grado de abstraccin es alto). Sin embargo, el modelo de casos
de uso se refina y elabora conforme cada fase del PU se ejecuta y sirve como una
entrada importante para la creacin de productos de trabajo subsecuentes. Durante
la fase de inicio slo se completa entre el 10 y 20 por ciento de los casos de uso.
Despus de la elaboracin, se ha creado entre un 80 y 90 por ciento del modelo.
La fase de elaboracin produce un conjunto de productos de trabajo que elabora
requisitos (incluso requisitos no funcionales2), asi como una descripcin arquitectnica y un diseo preliminar. Cuando el ingeniero de software inicia con el anlisis
orientado a objetos, el objetivo primordial es definir un conjunto de clases de anlisis que describan en forma adecuada el comportamiento del sistema. El modelo de
anlisis del PU es un producto de trabajo que se desarrolla como consecuencia de
esta actividad. Los paquetes de clases y anlisis (colecciones de clases) definidos
como una parte del modelo de anlisis se refinan despus en un modelo de diseo,
el cual identifica clases de diseo, subsistemas y las interfases entre los subsistemas.
Los modelos de anlisis y diseo expanden y refinan una representacin evolutiva
de la arquitectura del software. Adems, en la fase de elaboracin se revisan los riesgos y el plan de proyecto para asegurar que cada uno de ellos conserve su validez.
La fase de construccin produce un modelo de implementacin que traduce las
clases de diseo en componentes de software que se construirn para ejecutar el sis-
---~-.
-~-.
72
ifrUfi:
Principales
productos de
trabajo
producidos
para cada
PARTE UNO
Fase de inicio
Documento de lo visin
Modelo inicial de coso
de uso
Glosario inicial
del proyecto
Coso inicial de negocio
Evaluacin inicial
del riesgo
Pion de proyecto,
foses e iteraciones
Modelo del negocio
si e$ necesario
Uno o m6s protottpos
. . . . . 1llll!arN6n
Mc,delo(le C:O~ de UQ
R11qul11h Wj>lemenlori011
Fase de construccin
,.. ......killn
l~ l o de Qflwc:-
'integrado
Rpttei de la, pr'Uba1
beta
R~IIMmOc:in ~rol
d.f U$UOIO
del lr<>bajo
Molivol preliminor
del usuorio
Los modelos prescriptivos del proceso de software se han aplicado durante muchos
aos en un esfuerzo encaminado a ordenar y estructurar el desarrollo del software.
Cada uno de estos modelos convencionales sugiere un flujo de proceso que de alguna forma es diferente, pero todos realizan el mismo conjunto de actividades genricas del marco de trabajo: comunicacin, planeacin, modelado, construccin y despliegue.
El modelo en cascada sugiere una progresin lineal de actividades del marco de
trabajo que a menudo resulta inconsistente con la realidad moderna en el mundo del
software (por ejemplo, con el cambio continuo, los sistemas en evolucin, las fechas
de entrega restringidas). Sin embargo, este modelo se puede aplicar en situaciones
en las cuales los requisitos estn bien definidos y son estables.
CAPTULO 3
73
Los modelos incrementales del proceso de software producen software como una
serie de entregas de incrementos. El modelo DRA est diseado para proyectos grandes que se deben entregar en marcos de tiempo muy reducidos.
Los modelos de proceso evolutivos reconocen la naturaleza evolutiva de la mayora de los proyectos de ingeniera del software y estn diseados para ajustarse al
cambio. Los modelos evolutivos, como el de construccin de prototipos y el modelo
en espiral, generan productos de trabajo incrementales (o versiones del software en
funcionamiento) con rapidez. Estos modelos se pueden adaptar para aplicarlos a travs de todas las actividades de la ingeniera del software: desde el desarrollo de conceptos hasta el mantenimiento del sistema a largo plazo.
El modelo basado en componentes destaca la reutilizacin y ensambladura de
componentes. Los modelos de mtodos formales conducen a la utilizacin de un
enfoque basado en las matemticas para el desarrollo y la verificacin del software.
El modelo orientado a aspectos incluye los intereses generales que cubren la arquitectura total del sistema.
El proceso unificado es un proceso de software "guiado por los casos de uso, de
arquitectura cntrica, iterativo e incremental" diseado como un marco para los
mtodos y herramientas del UML. El proceso unificado es un modelo incremental en
el que se definen cinco fases: 1) una fase de inido que abarca la comunicacin con el
cliente y las actividades de planeacin, y destaca el desarrollo y el refinamiento de
casos de uso como un modelo primario; 2) una fase de elaboracin que abarca la
comunicacin con el cliente y las actividades de modelado con un enfoque en la creacin de modelos de anlisis y diseo, con nfasis en las definiciones de clase y representaciones arquitectnicas; 3) una fase de construcdn que refina y despus traduce
el modelo de diseo en componentes de software implementados; 4) una fase de
transicin que transfiere el software del desarrollador al usuario final para realizar
las pruebas beta y obtener la aceptacin; y 5) una fase de produccin en la cual se
realiza el monitoreo continuo y el soporte.
[AMB021 Ambler, s. y L. Constantine, The Uni.fied Process Inception Phase, CMP Books, 2002.
[ARL02] Arlow, J. e T. Neustandt, UML and the Unijied Process, Addison-Wesley, 2002.
[BAC97J Bach, J.. "Good Enough Quality: Beyond the Buzzword", en IEEE Computer, vol.30,
nm. 8, agosto de 1997, pp. 96-98.
[B0E88J Boehm, B., "A Spiral Model for Software Development Enhancement", en Computer,
vol. 21, nm. 5, mayo de 1988, pp. 61-72.
[B0E98] Boehm, B., "Using the WINWIN Spiral Model: A Case Study", en Computer, vol.3,
nm.7, julio de 1998, pp. 33-34.
[BOEOI) Bohem, B., "The Spiral Model as a Too! for Evolutionary Software Acquisition", en
CrossTalk, mayo de 2001, disponible en http://www.stsc.hill.af.mil/crosstalk/2001/05/
boehm.html.
[B0094] Booch, G., Object-Oriented Analysis and Design, 2a. ed., Benjamin Cummings, 1994.
[BRA94] Bradac, M., D. Peny y L. Votta, "Prototyping a Process Monitoring Experiment", en IEEE 71rlns.
Sojlware Engmeering, vol. 20, nm. 10, octubre de 1994, pp. 774-784.
[BR075J Brooks, F., The Mylhical Man -Monlh, Addison-Wesley, 1975.
74
PARTE UNO
[BUT94) Butler, J., "Rapid Application Development in Action", en Managing System Development,
Applied COmputer Research, vol. 14, nm.5, mayo de 1994, pp. 6-8.
[DYE 92] Dyer, M., The Cleanroom Approach to Quality Software Development. Wiley, 1992.
[ELROI] Elrad, T., R. Filman y A. Bader (eds.), "Aspect-Oriented Programming", en Comm. ACM,
vol. 44, nm. 10, octubre de 2001, edicin especial.
[FOW99) Fowler, M. y K. Scott, UMLDistilled, 2a. ed., Addison-Wesley, 1999.
[G!L88J Gilb, T., Principies of Software Engineering Management, Addison-Wesley, 1998.
[GRA03) Gradecki, J. y N. Lesiecki, Mastering Aspectf; Aspect-Oriented Programming in Java,
Wiley,2003.
[GRU02J Grundy, J., "Aspect-Oriented Component Engineering", 2002, http://www.cs. auckland.
ac.nz/-john-g/aspects.html.
[HAN95) Hanna, M., "Farewell to Waterfalls", en Software Magazine, mayo de 1995, pp. 38-46.
[HES96] Hesse, W., "Theory and Practice of the Software Process-A Field Study and its
Implications for Project Management". Software Process Technology, 5th European Workshop,
EWSPT 96, Springer LNCS I I 49, 1996, pp. 241-256.
LHESOI) Hesse, w., "Dinosaur Meets Archaeoptery)c? Seven Theses on Rational's Unified
Process (RUP)", en Proc. 8th Intl. Workshop on Eva/uation of Modelng Methods in System
Anafysis and Design, Ch. VII Interlaken, 2001.
[JAC92J Jacobson, l., Object-Oriented software Engineering, Addison-wesley, 1992.
[JAC99) Jacobson, J., 6ooch, G. y J. Rumbaugh, The Unijied Software Development Process,
Addison-Wesley, 1999.
[KAU95] Kauffman, S., At Home in the Universe, Oxford, 1995.
[KER941 Kerr. J. y R. Hunter, Inside RAD, McGraw-Hill, 1991.
[MAR91] Martn, J., Rapid Application Development, Prentice-Hall, 1991.
[McDE93J McDermid J. y P. Rook, "Software Development Process Models", en Software
Engineer's Rejerence Book, CRC Press, 1993, pp. 15/26- 15/28.
[MIL87] Mills, H.D., M. Dyer y R. Linger, "Cleanroom Software Engineering", en IEEE Software,
septiembre de 1987, pp. 19-25.
[NIE92J Nierstrasz, O., S. Gibbs y D. Tsichritzis, "Component-Oriented Software Development",
en CACM, vol. 35, nm. 9, septiembre de 1992, pp. 160- 165.
[NOGOO] Nogueira, J., C. Jones y LUqi, "Surfing the Edge of Chaos: Applications to Software
Engineering", Command and Control Research Technology Symposium, Naval Post Graduate
School, Monterey CA, junio de 2000, disponible en
http//www.dodccrp.org/2000CCRTS/cd/html/pdf_papers/Track_4/075.pdf.
[REE02] Reed, P., Developing Applcations with Java and UML, Addison-Wesley, 2002.
[REI95] Reilly, J. P., "Does RAD Live Up th the Hype", en IEEE Software, septiembre de 1995, pp.
24-26.
[R0096] Roos, J., 'The Poised Organization: Navigating Effectively on Knowledge Landscapes",
1996, disponible en http:/ /www.imd.ch/fac/roos/paper_po.html.
(ROY70] Royce, W.W., "Managing the Development of Large Software Systems: Concepts and
Techniques" en, Proc. WESCON, agosto de 1970.
[RUM91J Rumbaugh, J. et al., Object-Orienled Modelng and Design, Prentice-Hall, 1991.
[STIOIJ Stiller, E. y C. LeBlanc, Project-Based Software Engineering: An Object-Oriented Approach,
Addison-Wesley, 2001.
[WIR90] Wirfs-Brock, R., B. Wilkerson y L. Weiner, Designing Object-Oriented software, PrenticeHall, 1990.
[YOU94J Yourdon, E., "Software Reuse", en Application Developmenl Strategies, vol. 6, nm. 12,
diciembre de 1994, pp. 1-16.
[YOU95] Yourdon, E., "When Goood Enough Is Best", en IEEE Software, vol. 12, nm. 3, mayo
de 1995, pp. 79-81.
3. 1. Leer [NOGOOJ y escribir un documento de dos o tres pginas que trate sobre el impacto
del "caos" en la ingeniera del software.
CAPTULO 3
75
3.2. Dar tres ejemplos de proyectos de software que pudieran adaptarse al modelo en cascada.
Ser especfico.
3.3. Proporcionar tres ejemplos de proyectos de software que pudieran adaptarse al modelo
La mayor parte de los textos sobre ingeniera del software consideran los modelos prescriptivos de proceso con algn detalle. Los libros de Sommerville (Software Engineering, sexta
edicin, Addison-Wesley, 2000), Pfleeger (Software Engineering: Theory and Pra.ctice, PrenticeHall, 2001), y Schach (Object Oriented and C/assical software Engineering, McGraw-Hill, 2001)
consideran los paradigmas convencionales y analizan sus fortalezas y debilidades A pesar de
que no se dedica en forma especfica al proceso. Brooks (The Mythical Man -Month, segunda
edicin, Addison-wesley, 1995) presenta la experiencia ganada en proyectos antiguos que
tienen una gran relacin con el proceso. Firesmith y Henderson-Sellers (The OPEN Process
Framework: An Jntroduction, Addison-wesley, 2001), presenta una plantilla general para crear
procesos de software flexible, pero, an asl, indisciplinados# y analiza los atributos y objetivos
del proceso.
Sharpe y McDermott (Worijlow Mode/ing: Tools far Process !mprovement ond Applicotion
Development, Artech House, 2001) presentan herramientas para el modelado de procesos de
sotlware y negocios. Jacobson Griss y Jonsson (Sojlware Reuse, Addison-Wesley, 1997) y
McClure (SOjlware Reuse Techmques, Prentice-Ha/1, J997) presentan mucha informacin til
7()
PARTE UNO
n 200 I, Kent eeck y otros I6 notables desarrolladores, escritores y consultores [BECOlJ (conocidos como la ''Alianza Agil") firmaron el ''Manifiesto
para el dcsarrllo gil de software", el cual estableca:
un manifiesto se asocia por lo general con un movimiento poltico emergente: aquel que ataca a la vieja vanguardia y sugiere un cambio revolucionario (en
Qu es? La ingeniero de ~
re
git
de proyecto ~
mk>dos i ~
mnimo de productos de trabajo de lo iQ91t
re incremental equipos
os y con alto motivacin;
no
A los mtodos giles algunas veces se les llama mtodos ligeros o livianos.
77
78
PARTE UNO
CAPTULO 4
DESARROLLO GIL
79
de proceso ms prescriptivos eligen la disciplina. l establece: "Como la consistencia en la accin es una debilidad humana, las metodologas que exigen un alto grado de disciplina son frgiles" [COC02a].
Los modelos de proceso funcionarn si proporcionan un mecanismo realista que
fomente la disciplina necesaria, o deben estar caracterizados de manera que muestren "tolerancia" por la gente que realiza el trabajo de la ingeniera del software. De
manera invariable, la gente de software adopta y sostiene ms fcilmente las prcticas tolerantes, pero (como Cockburn lo admite) tal vez sea menos productiva. Como la mayoria de las cosas en la vida, se deben considerar los intercambios.
Qu es la agilidad en el contexto del trabajo de la ingeniera del software? Ivar Jacobson OAC02) proporciona una definicin til:
Agilidad se ha convertido actualmente en la palabra de moda en cuanto se describe un
moderno proceso de software. Cualquiera es gil. Un equipo gil es un equipo rpido
que responde de manera apropiada a los cambios. Stos son. en gran parte, la materia
del desarrollo de software. Cambios en el software que se va a construir, cambios entre los miembros del equipo, cambios debidos a las nuevas tecnologas, cambios de todo tipo que pueden incidir en el producto que se construye o en el proyecto que crea el
producto. En cualquier actividad de software se debe incluir un soporte para los cambios, esto es algo que adoptamos porque es el alma y el corazn del software. un equipo gil reconoce que el software lo desarrollan individuos que trabajan en equipo y que
las aptitudes de esta gente, y su capacidad para colaborar, son esenciales para et xito del proyecto.
"La a,lklad es di,imico, con contenido espefico, ajustable al cambio de manera dinll\ko y orienteda ol
aiilien,to.
,,
Pero la agilidad es ms que una respuesta efectiva al cambio. Tambin incluye la
filosofa del manifiesto enunciado al principio de este captulo. Estimula las estructuras y actitudes de los equipos para que la comunicacin (entre los miembros del
equipo, entre los tcnicos y la gente de negocios, entre los ingenieros de software y
sus gerentes) sea ms fcil. Resalta la entrega rpida del software operativo y le resta importancia a los productos de trabajo intermedio (lo cual no siempre es bueno);
adopta al cliente como una parte del equipo de desarrollo y trabaja para eliminar la
actitud del tipo "nosotros y ustedes" que an perjudica a muchos proyectos de software; reconoce que la planeacin tiene sus lmites en un mundo incierto y que el
plan de proyecto debe ser flexible.
80
PARTE UNO
La Alianza Agil [AGI03] define 12 principios para quienes quieren alcanzar la agi-
lidad:
1. Nuestra mayor prioridad es satisfacer al cliente mediante la entrega temprana
cliente.
3. Entregar con frecuencia software en funcionamiento, desde un par de sema-
nas hasta un par de meses, con una preferencia por la escala de tiempo ms
corta.
4. La gente de negocios y los desarrolladores deben trabajar juntos a diario a lo
largo del proyecto.
5. Construir proyectos alrededor de individuos motivados. Darles el ambiente y
esencial.
11. Las mejores arquitecturas, los mejores requisitos y los mejores diseos emer-
CAPiTtJLO 4
DESARROLLO GIL
81
Cualquier proceso gil de software se caracteriza de una manera que refiere tres su
posiciones clave fFOW02J acerca de la mayoria de los proyectos de software:
1. Resulta dificil predecir cules requisitos del software persistirn y cules cambiarn. De igual forma, es dificil presagiar cmo cambiarn las prioridades del
cliente mientras se ejecuta un proyecto.
2. Para muchos tipos de software, el diseo y la construccin estn intercalados.
Esto es, ambas actividades se deben realizar de manera conjunta, de modo
que los modelos de diseo sean probados conforme se crean. Resulta difcil
predecir cunto diseo se necesita antes de que la construccin se utilice para
probar el diseo.
3. El anlisis, el diseo y la construccin no son predecibles (desde el punto de
vista de la planeacin). lo que sera deseable.
Dados los puntos anteriores, surge una pregunta importante: cmo se crea un
proceso susceptible de manipular en forma impredecible? La respuesta, como ya se
ha puntualizado antes, reside en la adaptabilidad del proceso (a un proyecto y a condiciones tcnicas que cambian con rapidez). Por lo tanto, un proceso gil debe ser
adaptable.
Pero una adaptacin continua sin un progreso logra muy poco. Por lo tanto, un
proceso gil de software debe adaptarse en forma incremental. Para llevar a cabo
una adaptacin incremental, un equipo gil requiere de la retroalimentacin con el
cliente (para que sea factible realizar las adaptaciones apropiadas). Un catalizador
efectivo para la retroalimentacin del cliente es un prototipo operacional o una porcin de un sistema operacional. Por lo tanto, debe insttuirse una estrategia incremen
tal de desarrollo. Los incrementos de software (prototipos ejecutables o una porcin de
un sistema operacional) deben entregarse en cortos periodos para que la adaptacin
mantenga un buen ritmo con el cambio (imprevisibilidad). Este enfoque iterativo le
permite al cliente evaluar el incremento del software de manera regular, proporcionar la retroalimentacin necesaria al equipo de software, e influir sobre las adaptaciones del proceso que se realizan para adecuar la retroalimentacin.
ti,...~ 1
82
No es necesorio elegir
en/Te agilidad einge
nie,a del software. En
lugar de ello, se
puede definir un
enfoque de ingenie,o
de software que seo
gil.
PARTE UNO
4.2.2
Factores humanos
Los defensores del desarrollo gil del software resaltan la importancia de los "factores de las personas" en un desarrollo gil exitoso. Como establecen Cockburn y
Highsmth [COCO l J: "El desarrollo gil se centra en los talentos y las habilidades de
los individuos, puesto que el proceso se ajusta a personas y equipos especficos". El
punto clave en esta afirmacin es que el proceso se ajusta a las necesidades de las personas y del equipo, y no al revs.2
"Aqudo openas suficiente poro un equipo es excesivo o insuficiente poro otro.
AUstair
e.e.._
La mayora de las organizaciones de software exitosas reconocen esta realidad sin importar el modelo de proceso que elijan.
CAPiTuLo 4
DESARROU.O GIL
83
Si los miembros del equipo de software van a manejar las caractersticas del proceso que se aplica para construirlo, debe existir un gran nmero de rasgos clave entre la gente de un equipo gil y el equipo mismo:
Enfoque comn. Aunque los miembros del equipo gil desempeen tareas diferentes y aporten distintas habilidades al proyecto, todos deben enfocarse en una
meta: entregar al cliente un incremento de trabajo de software dentro del tiempo
establecido. Alcanzar esta meta requiere que el equipo tambin se centre en adaptaciones continuas (pequeas y grandes) mediante las cuales el proceso satisfar
las necesidades del equipo.
Habilidad para la toma de decisiones . Todo buen equipo de software (incluidos los equipos giles) debe permitirse la libertad de controlar su propio destino. Esto implica que al equipo se le d autonomia, es decir, autoridad para tomar
decisiones en cuanto a cuestiones tcnicas y del proyecto.
84
PARTE UNO
manera la entrega del incremento del software. La organizacin propia tiene varios
beneficios tcnicos, pero lo ms importante es que mejora la colaboracin y eleva
la moral del equipo. En esencia, el equipo sirve como su propia gestora. Ken Schwaber [SCH02] puntualiza estos aspectos cuando escribe: "El equipo selecciona la
cantidad de trabajo que cree que es capaz de hacer dentro de la iteracin, y el
equipo se compromete con el trabajo. Nada desalienta ms a un equipo que alguien ms se comprometa por l. Nada motiva ms a un equipo que aceptar la responsabilidad de cumplir los compromisos que l mismo hizo".
La historia de la ingeniera del software est llena de decenas de descripciones y metodologas, mtodos de modelado y notaciones, herramientas y tecnologas obsoletas. Cada elemento surgi con notoriedad y despus Jo eclips algo nuevo y (supuestamente) mejor. con la introduccin de un amplio espectro de modelos giles de
proceso -cada uno en busca de su aceptacin dentro de la comunidad del desarrollo de software- el movimiento gil est en la misma ruta histrica.3
s..,._~,
En las siguientes secciones se presenta una visin general de cierto nmero de diferentes modelos giles de proceso. Existen muchas similitudes (en filosofa y prctica) entre estos enfoques. La intencin es subrayar aquellas caractersticas de cada
mtodo que lo hacen nico. Es importante sealar que todos los modelos giles se
ajustan (en mayor o menor grado) al Manifiesto para el desarrollo de software y a los
principios enunciados en la seccin 4.1.
4.3.1
A pesar de que los primeros trabajos sobre las ideas y los mtodos asociados con la
programacin extrema (PE) se realizaron a finales de la dcada de 1980, el trabajo
fuehlllo
.. .f"""..
.....
~
excMIMl6n*
las ,im '1 tt.
fundamental sobre la materia, escrito por Kent Beck [BEC99], se public en 1999. Los
libros subsiguientes de Jeffries et al. OEFOl] sobre los detalles tcnicos de la PE, y el
trabajo adicional de Beck y Fowler [BECO lb] sobre la planeacin de la PE expusieron
los detalles del mtodo.
La PE utiliza un enfoque orientado a objetos (parte 2 de este libro) como su paradigma de desarrollo preferido. La PE abarca un conjunto de reglas y prcticas que
ocurren en el contexto de cuatro actividades del marco de trabajo: planeacin, dise3
Esto no es algo malo. Antes de que uno o ms modelos o mtodos sean aceptados como un estndar de facto, todos deben competir por los corazones y las mentes de los ingenieros de software.
Los "ganadores" evolucionan con la mejora que proporciona la prctica, mientras que los "perdedores" desaparecen o se unen a los modelos "ganadores".
CAPTULO 4
85
DESARROLLO GIL
diseo simple
cortos CRC
soluciones pico
prototipos
valores
criterios de los pruebas de iteracin
pion de iteracin
Lonzomiento
incremento de software
velocidad calculada
del proyecto
pruebo de unidad
integracin continua
pruebas de aceptacin
o, codificacin y pruebas. En la figura 4.1 se ilustra el proceso de la PE y se observan algunas de las ideas y tareas clave asociadas con cada actividad del marco de trabajo. En los siguientes prrafos se resumen las actividades clave de la PE.
86
PARTE UNO
.11 :i
Enelsille
........
Cz../'1(#/dff
I
Vlilctso"piaode
~ - pa111ta l'l
mentadas de un modo inmediato (dentro de pocas semanas); 2) las historias con valor ms alto se movern en el programa y se implementarn al principio; o 3) las
historias ms riesgosas se movern dentro del programa y se implementarn al
principio.
Despus de que se ha entregado el primer lanzamiento del proyecto (tambin llamado incremento de software), el equipo de la PE calcula la velocidad del proyecto.
Dicho de un modo ms simple, la velocidad del proyecto es el nmero de historias de
los clientes implementado durante el primer lanzamiento. Entonces, la velocidad del
proyecto puede utilizarse para l) ayudar a estimar fechas de entrega y el programa
para lanzamientos subsecuentes, y 2) determinar si se ha hecho un compromiso excesivo en algunas de las historias de todo el proyecto de desarrollo. Si se presenta
un compromiso excesivo, el contenido de los lanzamientos se modifica o se cambian
las fechas de las entregas finales.
Conforme avanza el trabajo de desarrollo, el cliente puede agregar historias, cambiar el valor de la historia existente, dividir historias o eliminarlas. Entonces el equipo de la PE considera de nuevo los lanzamientos restantes y modifica sus planes de
acuerdo con ello.
En el captulo 8, y a lo largo de la parte 2 del libro, se estudian las clases orientadas a objetos.
CAPTULO 4
DESARROLLO GIL
87
cin y validar las estimaciones originales en la historia que contiene el problema del
diseo.
La PE apoya la refabricacin, una tcnica de construccin que tambin lo es de diseo. Fowler [FOWOOJ describe la refabricacin de la siguiente manera:
Refabricacin es el proceso de cambiar un sistema de software de tal manera que no altere el comportamiento externo del cdigo y que mejore la estructura interna. Es una manera disciplinada de limpiar el cdigo [y modificar/simplificar el diseo interno]. lo que
minimiza las oportunidades de introducir errores. En esencia, al refabricar, se mejora el
diseo del cdigo despus de que se ha escrito.
Debido a que el diseo de la PE virtualmente no utiliza la notacin y produce, si acaso, muy pocos productos de trabajo, distintos a las tarjetas de CRC y soluciones pico, el diseo se considera como un artefacto que puede y debe modificarse de manera continua a medida que prosigue la construccin. El propsito de refabricar es
controlar estas modificaciones al sugerir pequeos cambios del diseo que "pueden
mejorar de manera radical el diseo" [FOWOOJ. Sin embargo, debe notarse que el esfuerzo requerido para refabricar puede aumentar en forma drstica a medida que
crece el tamao de la aplicacin.
Una nocin central en la PE es que el diseo ocurre tanto antes como despus
del comienzo de la codificacin. Refabricar significa que el diseo ocurre de manera continua a medida que se construye el sistema. De hecho. la actividad de cons
truccin misma le proporcionar al equipo de PE una gula sobre cmo mejorar el
diseo.
7 Este enfoque es anlogo a conocer las preguntas del examen antes de comenzar a estudiar Esto facilita mucho ms el estudio al enfocar la atencin slo sobre las preguntas que sern formuladas.
88
PARTE UNO
sar en los detalles de codificacin de una porcin particular del diseo, mientras que la
otra se asegura de que se sigan los estndares de codificacin (una parte requerida de
la PE) y que el cdigo que se genera "coincida" con el diseo ms amplio de la historia.
Cuando los programadores completan su trabajo el cdigo que desarrollaron se
integra con el trabajo de otros. En algunos casos esto lo lleva a cabo diariamente el
equipo de integracin. En otros casos, la pareja de programadores es la responsable
de la integracin. Esta estrategia de "integracin continua" ayuda a evitar problemas de
compatibilidad e interfaz y proporciona un ambiente de "prueba de humo" (capitulo
13) que ayuda a descubrir los errores desde el principio.
PrUebas. Ya se ha hecho notar que la creacin de una prueba de unidad8 antes de
&1
~~
c&vE
Los pruebos de
oceptncin de lo PE se
devon de los historias
del usuoo.
comenzar la codificacin es un elemento clave para el enfoque de la PE. Las pruebas de unidad que se crean deben implementarse con un marco de trabajo que permita automatizarlas (por lo tanto, pueden ejecutarse de manera fcil y repetida). Esto apoya una estrategia de regresin de prueba (captulo 13) cuando el cdigo se modifica (al cual a menudo se le confiere la filosofia de la PE de refabricar).
Cuando las unidades individuales de prueba se organizan en un "conjunto universal de pruebas" [WEL99J, las pruebas de integracin y validacin del sistema pueden
realizarse a diario. Esto proporciona al equipo de PE una indicacin continua del
progreso y tambin puede encender luces de emergencia previas si las cosas salen
mal. Wells [WEL99] establece: "Arreglar problemas pequeos cada pocas horas toma menos tiempo que arreglar problemas enormes justo antes de la fecha limite".
Las pruebas de aceptacin de la PE, tambin llamadas pruebas del cliente, las especifica el cliente y se enfocan en las caractersticas generales y la funcionalidad del
sistema, elementos visibles y revisables por el cliente. Las pruebas de aceptacin se
derivan de las historias del usuario que se han implementado como parte de un lanzamiento de software.
~dePou;Milw.
Las pruebas de unidad, que se tratan con detalle en el captulo 13, se enfocan sobre un componente
individual del software, al ejercitar la interfaz de los componentes. las estructuras de datos y la funcionalidad en un esfuerzo por descubrir los errores locales en el componente.
CAPTULO 4
DESARROLLO _GIL
89
90
PARTE UNO a
iihliD
Desarrollo
adaptativo de
software.
Recopilacin de requisitos
ploneocin del ciclo odoptotivo
enunciado de la misin
restricciones del proyecto
requisitos bsicos
JAD
especificaciones mnimas
Lanzamiento
incremento de software
componentes implementados/probados
---
EuhilO
wnial ,......
i)1fesp111ulbl$.
Cules son
las carade
rstkas de los
ciclos adaptativos
'del DAS?
la coloboroci6n
CAPTULO 4
91
DESARROLLO GIL
8$
1. Grupos enfocados. El cliente o los usuarios finales proporcionan retroalimentacin sobre los incrementos de software que se entregan. Esto indica en
forma directa la satisfaccin o la insatisfaccin de las necesidades del negocio.
2. Revisiones tcnicas formales. Los miembros del equipo del DAS revisan
los componentes del software desarrollado mientras mejoran su calidad y su
aprendizaje.
3 . Post mortem. El equipo de DAS se vuelve introspectivo al vigilar su propio
4.3.3
92
Estudio deJactiMidad: establece los requisitos bsicos de negocio y las restricciones asociadas con la aplicacin del mtodo y para evaluar si la aplicacin es una
candidata viable para el proceso del MDSD.
Estudio de negocios: establece los requisitos funcionales y de informacin que permitirn que la aplicacin proporcione un valor al negocio; tambin define la arquitectura bsica de la aplicacin.
Iteracin de modelo funcional: produce una serie de prototipos incrementales que
demuestran la funcionalidad para el cliente (nota: todos los prototipos del MDSD estn diseados para evolucionar hacia la aplicacin entregable). El propsito durante este ciclo iterativo es recopilar requisitos adicionales mediante la retroalimentacin de lo que obtiene el usuario, mientras ste trabaja con el prototipo.
Iteracin de construccin y diseo: revisa la construccin de prototipos durante la
iteracin del modelo funcional para asegurar que cada uno de ellos ha sido desarrollado de una manera que Je permitir proporcionar un valor operativo de negocios
para los usuarios finales. En algunos casos, la iteracin del modelo funcional y el diseo y la iteracin de construccin suceden en forma concurrente.
Implementacin: coloca el incremento de software ms reciente (un prototipo
"operacionalizado") en el ambiente operativo. Se debe destacar que 1) el incremento puede no estar 100 por ciento completo o 2) se pueden requerir cambios cuando
el incremento se coloca en el sitio. En cualquier caso, el trabajo de desarrollo del
MDSD contina al regresar a la actividad de iteracin del modelo de funcin.
El MDSD se puede combinar con la PE para obtener un enfoque conjunto que define un modelo slido de proceso (el ciclo de vida del MDSD) con los aspectos prcticos (PE) necesarios para construir incrementos de software. Adems, los conceptos del DAS de colaboracin y equipos autoorganizados se pueden adaptar a un modelo de proceso combinado.
4.3.4 Mel
Mel (trmino derivado de una jugada de rugby1) es un modelo gil de proceso que
CAPTULO 4
93
DESARROLLO GIL
.............
Retrasos: son una lista que considera la prioridad de los requisitos o caractersti
cas de proyecto que proporcionan un valor comercial para el cliente. En cualquier
momento se pueden agregar elementos a los retrasos (as se introducen los cambios). El gerente de producto evala los retrasos y actualiza las prioridades de acuerdo con lo requerido.
94
iii'I/Cf
Retraso de sprint:
Caractersticas
~ - - :',~.- i_i~p_~-ind_i<s, o
Elementos
de retraso
__,c2J
;::.::i;_s_ ......_ _ _
0~.~1se demuestra
al final del sprint
Lo mel incorporo un
conjunto de patrones
de proceso que resalto
los prioridades del
proyecto, lo divisin
del trabajo, los
unidades de trobojo, lo
comunicacin ylo
retroalimentacin
frecuente del cliente.
sito definido en los retrasos en un periodo predefinido (el lapso usual es de 30 das).
En esta etapa, los elementos de los retrasos a los que se dirigen las unidades de trabajo del sprint estn congelados (es decir, durante el sprint no se introducen cambios). Por lo tanto, el sprint permite a los miembros del equipo trabajar en un ambiente enfocado al corto plazo, pero estable.
Reuniones de mel: son reuniones cortas (por lo general de 15 minutos) y las realiza a diario el equipo de mel. Existen tres preguntas que plantean y responden todos los miembros del equipo.
Qu hiciste desde la ltima reunin?
Cules obstculos encontraste?
Qu esperas lograr para la siguiente reunin del equipo?
Un lder de equipo, llamado "maestro de la mel", preside la reunin y evala las
respuestas de cada persona. Cada reunin de mel ayuda al equipo a descubrir problemas potenciales tan pronto como sea posible. Estas reuniones diarias tambin
conducen a la "socializacin del conocimiento" [BEE99] y, por ende, a promover una
estructura de equipo con organizacin propia.
CAPTULO 4
DESARROLLO GIL
95
4.3.5
Cristal
Alistair Cockburn [COC02a] y Jim Highsmith [HIG02b] crearon la familia cristal de los
mtodos giles 11 con el fin de lograr un enfoque de desarrollo de software que coloca un premio en la "manejabilidad" durante lo que Cockburn caracteriza como "un
juego cooperativo de inventiva y comunicacin con recursos limitados, con una meta primaria consistente en la entrega de software til y en funcionamiento y una meta
secundaria de prepararse para el juego siguiente" [COC02bJ.
Para alcanzar la manejabilidad, Cockburn y Highsmith definieron un conjunto de
metodologas, cada una de ellas con elementos esenciales comunes a todas, y funciones, patrones de proceso. productos de trabajo y prcticas nicas en cada una cte
ellas. En realidad, la familia cristal es un conjunto de procesos giles, los cuales han
probado su efectividad en diferentes tipos de proyectos. El objetivo es permitir que
los equipos giles seleccionen el miembro de la familia cristal ms apropiado para
su proyecto y ambiente.
4.3.6
Coad y sus colegas [COA99] sugieren la siguiente plantilla para definir una caracterstica:
UMICI
Desarrollo
conducido por
caractesUcas
[COA99]
(usado con
autorizacin).
1
1
~$arrollar
un
modelo
general
Elaborar
uno lista de
coractedsticas
Pion
-+
por
Diso
_,
caracterstico
por
coractersli
C'Onstru<:cio
-.
por
caracterstico
,-
Uno listo de
caractersticos
agrupados
en conjuntos
y reas
de contenido
Un pion de desarrollo
Propietarios de clase
Propietarios
del conjunto
de caractersticos
Un paquete
de diseo
(secuencias)
Funcin
cliente-valor
completada
,...
CAPTULO 4
DESARROLLO GIL
97
4.3.7
Adems de los valores consistentes con el manifiesto gil, Ambler sugiere valor y humildad. Un equipo gil debe tener el valor para tomar decisiones que ocasionarn el
rechazo y la refabricacin de un diseo. Debe tener la humildad de reconocer que
quienes manejan la tecnologa no tienen todas las respuestas, y que los expertos en
negocios y otros participantes de la empresa son dignos de respeto y consideracin.
98
PARTE 'UNO
especfica en mente (por ejemplo, comunicar informacin al cliente o ayudarle a entender mejor algn aspecto del software) antes de crear el modelo. Una vez identificada la meta para el modelo, el tipo de notacin que se usar y el grado de detalle
requerido sern ms obvios.
Usar mltiples modelos. Existen muchos modelos y notaciones diferentes con los
cuales describir el software. Slo un pequeo subconjunto es esencial para la mayora de los proyectos. El MA sugiere que para proporcionar la visin necesaria cada modelo debe presentar un aspecto diferente del sistema, y slo aquellos mode-
los que proporcionen un valor para la audiencia a la que estn dirigidos deben
usarse.
Viajar ligero. La realizacin de trabajo de la ingeniera del software requiere con-
~oNsuoS.
HVioior ligero es un
enfoque apropiado
para Jodo el trabao
de ingeniera del
software. Construir
sl() oque/los modelos
que proporcionan
valor ceni ms, ni
menos
H
servar slo los modelos que proporcionarn valor a largo plazo y descartar el resto. Cada producto de trabajo que se conserve debe recibir mantenimiento conforme se presentan cambios. Esto representa un trabajo que reduce la velocidad del
equipo. Ambler [AMB02] observa que "cada vez que se decide conservar un modelo se intercambia la agilidad por la conveniencia de tener la informacin disponible
para el equipo de una forma abstracta (por ende, existe una posibilidad de mejorar
la comunicacin dentro del equipo, as como con los propietarios del proyecto)".
El contenido es ms importante que la representacin. El modelado debe comunicar informacin a la audiencia a la que est dirigido. un modelo sintcticamente
perfecto que comunique slo un poco del contenido til no tiene tanto valor como
un modelo con una notacin defectuosa que, sin embargo, comunique un contenido valioso para su audiencia.
Conocer los modelos y las herramientas con que se crean. Es necesario entender
las fortalezas y debilidades de cada modelo y las herramientas con los que se cre.
Adaptar en forma local. El enfoque del modelado se debe adaptar a las necesidades del equipo gil.
~ Desarrollo gil
~ Objetivo: El objetivo de las herramientas del
CAPTULO 4
99
DESARROLLO GIL
Una filosofia gil para la ingeniera del software se relaciona con cuatro aspectos
clave: la importancia de la organizacin propia de los equipos, los cuales controlan
el trabajo que realizan; comunicacin y colaboracin entre los miembros del equipo
y entre los profesionales y sus clientes; un reconocimiento de que el cambio representa una oportunidad; y un especial cuidado en la entrega rpida del software que
satisfaga al cliente. Los modelos de proceso gil se disearon para cumplir con cada uno de estos aspectos.
La programacin extrema (PE) es el proceso gil que ms se utiliza. organizada
como cuatro actividades del marco de trabajo -planeacin, diseo, codificacin y
pruebas-, la PE sugiere algunas tcnicas innovadoras y poderosas que permiten a
un equipo gil crear frecuentes lanzamientos de software al entregar caractersticas
y funcionalidad que describe y despus prioriza el cliente.
El desarrollo de software adaptativo (OSA) destaca la colaboracin humana y la
organizacin propia del equipo. Organizado con tres actividades del marco de trabajo --especulacin, colaboracin y aprendizaje-, el OSA utiliza un proceso iterativo que incorpora la planeacin del ciclo adaptativo, mtodos de recopilacin de requisitos relativamente rigurosos y un ciclo iterativo de desarrollo que incorpora grupos enfocados en el cliente y revisiones tcnicas formales como mecanismos de retroalimentacin en tiempo real. El mtodo de desarrollo de sistemas dinmicos
(MDSD) define tres diferentes ciclos iterativos -iteracin funcional del modelo, iteracin de diseo y construccin e implementacin- precedidos por dos actividades del
ciclo de vida adicionales: estudio de factibilidad y estudio de negocios. El MDSD abo-
12 Las herramientas mencionadas aqu son slo una muestra de esta categora. En casi todos los
casos los nombres son marcas registradas de sus respectivos desarrolladores.
100
PARTE UNO
ga por el uso de programas y sugiere que slo se requiere el trabajo suficiente para cada incremento de software y as facilitar el movimiento hacia el incremento prximo.
La mel subraya el uso de un conjunto de patrones de proceso de software que
han probado su efectividad en proyectos con lmites de tiempo muy ajustados, requisitos cambiantes y que son crticos para el negocio. Cada patrn de proceso define
un conjunto de tareas de desarrollo y permite al equipo de mel construir un proceso que se adapte a las necesidades del proyecto.
Cristal es una familia de modelos giles de proceso que pueden adaptarse a las
caractersticas especficas de un proyecto. Como otros enfoques giles, cristal adopta una estrategia iterativa, pero se ajusta al rigor del proceso para incluir proyectos
de tamaos y complejidades diferentes.
El desarrollo conducido por caractersticas (DCC) es algo ms "formal" que otros
mtodos giles, pero aun as mantiene la agilidad al enfocar al equipo de proyecto
en el desarrollo de caractersticas, funciones que evala el cliente y que se pueden
implementar en dos semanas o menos. El DCC concede una mayor importancia al
proyecto y a su gestin que otros enfoques giles. El modelado gil (MA) sugiere que
el modelado es esencial para todos los sistemas, pero que la complejidad, tipo y tamao del modelo debe ajustarse al software que ser construido. Mediante la proposicin de una serie de principios de modelado esenciales y complementarios, el
MA proporciona una gua til para los profesionales durante las tareas de anlisis y
diseo.
CAPTULO 4
DlSARROILO GIL
101
[FOWOO) Fowler, M. et al, Refactoring lmproving the Design of E.xisting Code, Addison-Wesley,
2000.
[FOWOIJ Fowler M. y J. Highsmith, "The Agile Manifesto", Software Development Magazine, agosto
de 2001, http:/ /www.sdmagazine.com/documents/s=844/sdm0J 08a.htm.
[FOW02J Fowler, M., "The New Methodology", junio de 2002, hllp:/ /www.martinfowler.com/
articles/newMethodology.html#N8B.
[HIG98J Highsmith, J., "Life-The Artificial and the Real", Software Development, 1998, en
http:/ /www.adaptivesd.com/articles/order.hLml.
[HIGOOJ Highsmith, J., Adaptive Software Development: An Evolutionary Approach to Managlng
Complex systems, Dorset House Publishing, 1998.
[HIGOIJ Highsmith, J. (ed ), "The Greal Methodolog1es Debate: Parl I", Cutter 1TJoumal, vol. 14.
nm. 12, diciembre de 2001.
[HlG02aJ Highsmith, J. (ed.), "The Greal Methodologies Debate: Part 2", Cutter IT Journal, vol. 15.
nm. 1, enero de 2002.
[HIG02b] Highsmith, J., Agile Software Development Ecosystems, Addison-Wesley, 2002.
UAC02] Jacobson, 1, "A Resounding 'Yes' to Agile Processes-Bul Also More", Cutter IT Joumal,
vol. 15, nm. 1, enero de 2002, pp. 18-24.
UEFO I J Jeffries, R, et al., Extreme Programming lnstalled, Addison-Wesley, 2001.
[NOY02) Noyes, B., "Rugby, Anyone?", Managing Development (una publicacin en lnea de
Fawcette Technical Publications), junio de 2002, http://www.fawcette.com/resources/managingdev/methodologies/scrum/
[PAL02J Palmer, s. y J Felsing, A Practica/ Guide to Feature Driven Development, Prentice Hall,
2002.
[SCHO 1J Schwaber, K. y M Beedle, Agi/c Software Development wllh SCRUM. Prentlce-Hall. 200 l.
[SCH02) Schwaber, K, "Agile Processes and Self Organization", Agile Alliance, 2002,
http:/ /www.aanpo.org/articles/index
[STA97J Stapleton, J., DSDM-Dynam1c system Development Method The Method in Praclice. Addison Wesley, 1997.
[WEL99J Wells, D., "XP-Unit Tests", 1999, http://www.extremeprogramming.org/rules/
unittests.html.
4.1. Lase de nuevo el "Manifiesto para el desarrollo gil de sof\ware" al principio de este capitulo. El lector puede pensar en una situacin en la que uno o ms de los cuatro HvaloresH
pueda meter a un equipo de software en problemas?
4.2. Descrlbase agilidad (para proyectos de sof\ware) con palabras propias.
4.3. Por qu un proceso iterativo facilita ms manejar el cambio? Todos los procesos giles
tratados en este capitulo son iterativos? Es posible concluir un proyecto en slo una iteracin
y an as! seguir siendo gil? Explquense las respuestas.
4.4. Podr!a cada uno de los procesos giles describirse recurriendo a las actividades genricas del
marco de trabajo mencionadas en el capitulo 2? constryase una tabla que coloque las actividades
genricas dentro de las actividades definidas para cada proceso gil
4.5. Trtese de idear un "principio de agilidad" adicional que pudiera ayudar a una equipo de
ingeniera del software a volverse an ms manejable.
4.6 . Seleccinese un principio de agilidad de los enunciados de la seccin 4.1 y trtese de determinar si cada uno de los modelos de proceso presentados en este captulo muestran el principio.
4. 7. Por qu cambian tanto los requisitos? Despus de todo, ,la gente no sabe lo que quiere?
4 .8. Considrense los siete rasgos enunciados en la seccin 4.2.2. Ordnense los rasgos con
base en su percepcin desde lo que es ms importante hasta lo que tiene menor importancia.
4.9. La mayora de los procesos giles recomiendan la comunicacin cara a cara. Aun en la
actualidad, los miembros de un equipo de sof\ware y sus clientes pueden estar geogrficamen-
1111 im11m~~
102
PARTE UNO
te separados entre si. Esto implica la necesidad de evitar la separacin geogrfica? Es posible
pensar en formas de contrarrestar este problema?
4 . 1O. Escrbase una historia del usuario para PE que describa los "sitios favoritos" o la caracterstica de "favoritos" disponible en la mayora de los exploradores Web.
4.11. '-Qu es una solucin pico en PE?
4.12. Oescribanse los conceptos de PE refabricacin y programacin en pareja con palabras
propias.
4.13. Utilcese la plantilla del patrn de proceso presentada en el capitulo 2 y desarrllese un
patrn de proceso para cualquiera de los patrones de mel presentados en la seccin 4.3.4
4.14. '-Por qu se dice que cristal es unaJam,Jia de mtodos giles?
4.15. Utilcese la plantilla de caracterstica para el DCC descrito en la seccin 4.3.6 y definase
un conjunto de caractersticas de un explorador Web. Ahora desarrllese un conjunto de caractersticas para el conjunto mencionado antes.
4 . 16. Vistese el sitio oficial del modelado gil y hgase una lista completa de todos los principios de MA esenciales y complementarios.
;.:;~:
d!~:.~:;::
~~~=t,t~:::~:.::1r
:
,
:
;
.
.
E
;,.ge- (
'
~Qu conceptos y f)tindposg1,UanJa~rctica 1e ta _illf:fOietf,~.del $0ft."'
wa,re?
.~. '\:
,, ,,
.,@-,o.;
}d'
so,~ware,efectiva?
"
'
'
\\
..
!t
\~
. ~.
de
creardiseos ar..,
'
1;
LA
PRCTICA:
UNA VISION GENERICA
#
CONCEPTOS
CLAVE
prlndples "-:
., anilisis .. .117
elcltspliegMl26
el clselio .. .119
.........
gl ......121
,. ____
la c04lfkadiN 123
din .......l09
la lllpnierio
411 saftwwe 107
1, plone4icl6a 113
,.,,...., .124
prtglllfas
rtMilclil4e
,,.W-s ... .106
No tengo idea de qu hora es. No hay ventanas en esta oficina, tampoco reloj, slo el
LEO parpadeante en roo de un horno de microondas, el cual parpadea 12:00, 12:00,
12:00, 12:00. Joel y yo hemos estado programando por dfas Tenemos un "bicho", el
necio demonio de un error Por eso la pulsacin roja sm tiempo se siente bien, como
una lectura de nuestros cerebros. los cuales se han sincronizado de alguna manera
a la misma velocidad del parpadeo .
En qu estamos trabajando?.. Los detalles se me escapan ahora. Podrfamos estar
ayudando a gente pobre y enferma o ajustando una serie de rutinas de bajo nivel para
ven ficar bits en un protocolo de una base de datos distnbuida, no me importa. Me debera importar, en otra parte de m1 ser-ms tarde, quiz cuando salgamos de estecuarto lleno de computadoras- me importar mucho por qu, para quin y con qu
propSJto estoy escnb1endo software Pero ahora no. He pasado a travs de una
membrana donde el mundo real y ~us usos ya no importan. Soy un ingeniero de software ..
Sin duda, una imagen oscura de la prctica de la ingeniera del software, pero
con la que, despus de reflexionar, muchos de los lectores de este libro sern
capaces de identificarse
104
CAPTULO 5
105
En el captulo 2 se introdujo un modelo de proceso de software genrico compuesto de una serie de actividades que establecen un marco de trabajo para la prctica
de la ingeniera del software. Las actividades genricas del marco de trabajo -comunicacin, planeacin, modelado, construccin y despliegue- y las actividades sombrilla establecen la arquitectura de una esqueleto para el trabajo de ingeniera del
software. Todos los modelos de proceso de software presentados en los captulos 3
y 4 pueden organizarse en este esqueleto arquitectnico. Pero qu cabida tiene ah
la prctica de la ingeniera del software? En las secciones siguientes se considerarn
los conceptos y principios genricos que se aplican a las actividades del marco de
trabajo. 2
Algunos escritores utilizan uno de estos trminos y excluyen los otros. En realidad, la ingenierla del
software es las tres cosas a la vez.
2
Se exhorta al lector para que revise las secciones relevantes dentro de este captulo, conforme se
discutan los mtodos especficos de la ingeniera del software y las actividades sombrilla en los captulos posteriores del libro.
1111mm11m111111m11,11
106
5.1.1
tcoNsuoS.
Se pod1a argumentar
que el enfoque de
Po/yo consiste en
simple senffdo comn.
Es verdad. Pero es
sorprendente la
frecuencia con la que
el senffdo comn no
es comn en el
mundo del software.
La esencia de la prctica
En un libro clsico, How to So/ve lt, escrito antes de que existieran las computadoras
modernas, George Polya [POL45] puntualiz la esencia de la resolucin de problemas y, en consecuencia, la esencia de la prctica de la ingeniera del software:
1. Entender el problema (comunicacin y anlisis).
2 . Planear una solucin (modelado y diseo de software).
3. Llevar a cabo el plan (generacin de cdigo).
A quin le interesa la solucin del problema? Es decir, quines son los clientes?
Cules aspectos se desconocen? Qu datos, funciones, caractersticas y
modelo de anlisis?
Planear la solucin.
Se haban visto problemas similares antes? Existen patrones reconocibles en
una solucin potencial? Hay un software existente que implemente los datos,
las funciones, las caractersticas y los comportamientos que se requieren?
Se ha resuelto un problema similar? Si es as, los elementos de la solucin
pueden reutilizarse?
Se pueden definir los subproblemas? Si es as, las soluciones para los subpro-
pruebas de correccin?
CAPTULO 5
107
Examinar el resultado.
Es posible probar cada parte de la solucin del componente? Se ha implemen-
rasgos y
comportamientos que se requieren;, El software ha sido validado contra todos
"1'11
9"
3 Reproducido con permiso del autor [H0096J. Hooker define patrones para estos principios en:
http://c2.com/cgi/wild?5evenPrinciplesofSottwareDevelopment.
llllllllli
11
'lll.11:lliUI
108
Alualrr ....
El tercer principio: mantener la visin
una visin clara es esendal para el xito de un proyecto de software. Sin la visin clara
el proyecto podra terminar con "dos [o ms] significados" en uno. Sin una integridad conceptual un sistema amenaza con tomarse en una masa confusa de diseos
incompatibles, unida por un tipo inadecuado de tomillos ...
Arriesgar la visin arquitectnica de un sistema de software debilita y al final
rompe hasta un sistema bien diseado. Tener a un arquitecto capaz de mantener la
visin y reforzar lo acordado ayuda al aseguramiento de que un proyecto de soft-
~,
C~VE
Si el software tiene un
valor. tto rombior o
lo lorgo de su vida til.
Por eso razn, el
software debe
construirse de formo
Un sistema con una larga vida tiene ms valor. En los ambientes computacionales
de la actualidad, en los que las especificaciones cambian a cada momento y las plataformas de hardware son obsoletas despus de algunos meses, la vida del software se mide, de modo tpico, en meses en lugar de aos. No obstante, los verdaderos
sistemas de software "con fuerza industrial" deben durar ms tiempo. Estos sistemas
tendrn xito si estn listos para adaptarse a stos y otros cambios. Los sistemas que
logran el xito son aquellos que han sido diseados de esta manera desde el principio. Nunca se debe disear para llegar a una esquina. Uno siempre se debe preguntar:
"qu tal si?", y prepararse para todas las respuestas posibles, al crear sistemas que
resuelvan el problema general, no un problema especfico.4 Es muy probable que
esto conduzca a la reutilizacin de un sistema entero.
4
Nota del autor: esta recomendacin puede ser peligrosa si se lleva hasta el extremo. El diseo para
el "problema general" algunas veces requiere compromisos de desempeo y puede implicar un mayor esfuerzo para el proyecto.
CAPTULO 5
109
cuando se
tiene un pensamiento claro y completo antes de la accin, se producen los mejores resultados. Cuando se reflexiona acerca de algo existe una mayor probabilidad de hacer-
Antes de que los requisitos del cliente puedan analizarse, modelarse o especificarse,
stos deben recopilarse por medio de una actividad de comunicacin (tambin llamada obtencin de requisitos). Un cliente tiene un problema que se puede ajustar a
5 Nota del autor: aunque esto es cierto para quienes reutilizan el software en proyectos futuros, la reutilizacin puede resultar cara para quienes deben disenar y construir componentes reutilizables. Algunos estudios indican que el diseo y la construccin de componentes reutilizables pueden costar
entre 25 y 200 por ciento ms que el software solicitado. En algunos casos. la diferencia de costo no
se puede justificar.
11111111111
110
~ ONIUOS .
Antes de comvnkUI se
l
Principio #5 : Tomar notas y documentar las decisiones Las cosas suelen
caer en malentendidos. AJgu1en que participe en la comunicacin debe servir como
"grabadora" y escribir todos los puntos y decisiones importantes.
Principio #6: Buscar la colaboradn. La colaboracin y el consenso se presentan cuando el conocimiento colectivo de los miembros del equipo se combina
para describir las funciones o caractersticas del producto o sistema. Cada pequea
colaboracin sirve para construir confianza entre los miembros del equipo y crear
una meta comn para dicho equipo.
CAPTULO 5
111
Principio #8: Si algo no est claro, se hace un dibujo. La comunicacin verbal slo llega hasta cierto punto. Con frecuencia un esquema o figura puede proporcionar claridad cuando las palabras fallan al realizar su trabajo.
Principio #9: a) Una vez que se llega a un acuerdo sobre algo, se debe continuar; b) si no se puede llegar a un acuerdo, se debe continuar C) si una
caracterstica o fundn no est clara y no se puede clarificar en el momento,
se debe continuar. La comunicacin, como cualquier actividad de ingeniera del
software, requiere de tiempo. En lugar de que se itere sin fin, los particpante5 deben
reconocer que hay muchos tpicos que requieren anlisis (vase el principio #2) y
que "continuar" algunas veces es la mejor forma agilitar la comunicacin.
Principio # l O: La negodadn no es un concurso o un juego. Funciona
mejor cuando ambas partes ganan. En muchas ocasiones los ingenieros de soft
ware y el cliente deben negociar funciones y caracterl:;tica:;, prioriclacle5 y fecha5 ele
entrega. Si el equipo ha colaborado de buena forma. todas las partes tienen una meta
comn. Por lo tanto, la negociacin demandar el compromiso de todus Ju:; purtc~.
----=
HogarSeguro?
Vinod: La reunin de inicio est pt"<>gramadc poro lo
prximo semana.
112
lil:wo..
prestodo maana.
Jamie: Buena idea ... . . . . .
(seccin 25.3).
6. DesorroOor uno breve descripcin 8$Clo (por
ejemplo, uno serie de listos) de escenarios,
solidos/entrados, caractersticos/funciones y riesgos.
7. Iterar con el diente poro refinar los 8$Cenorios,
solidos/entrados, corodersticos/funciones y riesgos.
8. As,gnor prioridades definidos por el cliente o codo
escenario del usuario, caracterstico, funcin y
compor1omienta (seccin 7.4.2).
9. Revisor todo lo informacin recopilado durante lo
actividad de comunicacin con el diente y otros
participantes, y ajustarla de lo formo que se
requiero
1O. Prepararse poro lo actividad de ploneocin
(captulos 23 y 24).
CAPTULO 5
113
La actividad de comunicacin ayuda al equipo de software a definir sus metas y objetivos generales (por supuesto, sujeto al cambio conforme pasa el tiempo). Sin
embargo, entender estas metas y objetivos no es lo mismo que definir un plan para
llegar a ellos. La actividad de planeacin abarca un conjunto de prcticas tcnicas y
de gestin que permiten al equipo de sofiware definir un mapa del camino mientras
se viaja a travs de su meta estratgica y objetivos tcticos.
"'& la Pfeparadn para lo !mio siempre he encontradoque los piones son lltiles, pero que lo plaaeda
1 t,1 ... ...
DwiJIMD.Bse.......
Existen muchos enfoques diferentes para la planeacin. Algunas personas son
"minimalistas", y argumentan que el cambio con frecuencia obvia la necesidad de un
plan detallado. Otros son tradicionalistas, y dicen que el plan proporciona un mapa
efectivo del camino, y mientras ms detallado sea ste, menor probabilidad habr de
que el equipo pierda el rumbo. Adems, otros son "agilistas" y argumentan que tal
vez un "juego de planeacin" rpido sea necesario, pero que el mapa del camino surgir cuando comience el "trabajo real" sobre el software.
Qu hacer? En muchos proyectos la sobreplaneacin consume tiempo y no produce frutos (demasiadas cosas cambian), pero la planeacin insuficiente es una
receta para el caos. Como la mayora de las cosas en la vida, la planeacin se debe
producir con moderacin, lo suficiente para proporcionar una gua til parn el equipo -no ms, no menos.
Sin importar el rigor con el que se conduzca la planeaci6n, los siguientes principios son vlidos en todo momento.
1111mm11 11
114
Principio #6: Ser realista. Las personas no trabajan el 100 por ciento de cada
da. El ruido siempre entra en cualquier comunicacin humana. Las omisiones y la
ambigedad son hechos de la vida. Los cambios ocurrirn. Hasta los mejores ingenieros de software cometen errores. stas y otras realidades deben considerarse
mientras se establece el plan del proyecto.
'8 xito est ms en funcin del sentido comn consistente que del genio.
Aa . . .
La granu-
El trmino gronuloridod
planeacin se
representan odirigen.
115
cualquier momento? Si se presenta una solicitud de cambio el equipo est obligado a implementarlo de inmediato? Cmo se evalan el impacto y el costo del cambio?
Principio # 1O: Adaptar el plan a menudo y hacer los ajustes cuando stos
se requieran. Oa tras da los proyectos de software van por detrs del calendario
establecido. Por ello, es de mucha ayuda adaptar el progreso a diario. Se deben buscar reas problemticas y situaciones en las que el trabajo calendarizado no vaya de
acuerdo con el trabajo que se ejecuta en realidad. Cuando se encuentran desfases,
el plan se ajusta en concordancia con ello.
En la bsqueda de mayor efectividad, todos los integrantes del equipo de software deben participar en la actividad de planeacin. Slo entonces son miembros del
equipo "comprometidos" con el plan.
En un excelente documento sobre procesos y proyectos de software, Bany
Boehm [BOE96J establece: "Se necesita un principio de organizacin que se reduzca
para proporcionar planes [de proyecto] simples para proyectos simples." Boehm
sugiere un enfoque dirigido a los objetivos, fundamentos y calendarios del proyecto,
a las responsabilidades, enfoques tcnicos y de gestin y a los recursos requeridos.
l lo llam principio W5HH (why, what, when, who, where, how, how). debido a una
serie de preguntas que conducen a una definicin de caractersticas clave del proyecto y el plan de proyecto resultante:
Por qu est en desarrollo este sistema? Todas las partes deben evaluar la
validez de las razones del negocio para el trabajo en el software. Dicho de otra
manera, el propsito del negocio justifica el gasto de personal, tiempo y dinero?
Qu se har? Se debe identificar la funcionalidad que se construir y, por ende,
las tareas requeridas para realizar el trabajo.
Cundo se terminar? Es necesario establecer un flujo de trabajo y un tiempo
lmite para las tareas clave del proyecto, as como identilcar los runctamentO!S requeridos por el cliente.
Quin es el responsable de una funcin? Se deben definir el papel y la responsabilidad de cada miembro del equipo de soflware.
En dnde se ubican dentro de la organizacin? No todos los papeles y responsabilidades residen dentro del mismo equipo de software. El cliente, los usuarios
y otros participantes tambin tienen responsabilidades.
Cmo se realizar el trabajo en los sentidos tcnico y de gestin? Una
vez que se establece el mbito del producto, es necesario definir una estrategia tcnica y de gestin para el proyecto.
Cunto se necesita de cada recw-so? La respuesta a esta pregunta se obtiene al desarrollar estimaciones (captulo 2.3) con base en las respuestas a las preguntas anteriores.
116
Las respuestas a las preguntas W5HH de Boehm son importantes independientemente del tamao o la complejidad de un proyecto de software. Pero, cmo se inicia el proceso de planeacin?
.....
"8samos que los desllrolladom ele software estn perdiendo uno verdad vital: la mayora de las mpiadalllS
sal. lo que hacen. Elas piensan que lo saben, pero no es CIS
5.
Los modelos se crean para obtener un mejor entendimiento de la entidad real que se
construir. Cuando la entidad es un objeto tsico (por ejemplo, un edificio, un avin,
una mquina), se puede construir un modelo idntico en forma y tamao, pero en
menor escala. Sin embargo, cuando la entidad es software, el modelo debe tomar
una forma diferente. Debe ser capaz de representar la informacin que el software
transforma, la arquitectura y las funciones que permiten que ocurra la transformacin, las caractersticas que desean los usuarios, y el comportamiento del sistema
conforme se realiza la transformacin. Los modelos deben cumplir estos objetivos
en diferentes grados de abstraccin (primero al presentar el software desde el punto
de vista del cliente y despus al representar el software en un nivel ms tcnico).
CAPTULO 5
117
En el trabajo de la ingeniera del software se crean dos clases de modelos: modelos de anlisis y modelos de diseo. Los modelos de anlisis representan los requisitos del cliente al presentar el software en tres dominios diferentes: el dominio de la
informacin, el dominio funcional y el dominio del comportamiento. Los modelos de
diseo representan caractersticas del software que ayudan a los profesionales a
construirlo de manera efectiva: la arquitectura (captulo 10). la interfaz del usuario
(captulo 12), y el detalle al nivel de componentes (captulo 11).
En las secciones siguientes se presentan los principios y conceptos bsicos que
son relevantes para el modelado del anlisis y el diseo. Los mtodos tcnicos y la
notacin que permiten que los ingenieros de software creen modelos de anlisis y
diseo se presentan en los captulos posteriores.
"B
5.4. l
""* praj,lema del ingeniero en wmquier situacin de diseo es descubri <UI es realmente el p,olilenia.
w..
Principio # 1: El dominio de informadn de un problema debe representarse y entenderse. El dominio de infonnacin lo forman los datos que fluyen hacia
el sistema (a partir de los usuarios finales, otros sistemas o dispositivos externos),
los datos que fluyen desde el sistema (a travs de la interfaz del usuario, interfases
de red, reportes, grficas y otros medios) y los almacenamientos de datos que se
recopilan y reorganizan los objetos consistentes de informaci6n (es decir, los datos
que se mantienen en forma permanente).
Principio #2: Se deben definir las fundones que ejecuta el software. Las
funciones del software proporcionan un beneficio directo a los usuarios finales y
tambin aporta soporte interno a aquellas caractersticas visibles para el usuario.
Algunas funciones transforman los datos que fluyen hacia el sistema. En otros casos,
las funciones efectan algn grado de control sobre el procesamiento interno del
software o elementos externos del sistema. Las funciones se pueden describir en
muchos grados diferentes de abstraccin, que van desde un enunciado general del
propsito hasta una descripcin detallada de los elementos ctel procesamtenl que
deben utilizarse.
lllilWILIIIIKI '
118
PARTE DOS
los usuarios finales. los datos de control que aporta un sistema externo o los datos
de monitoreo que se recolectan a travs de una red ocasionan que el software se
comporte de una manera especifica.
Principio #4: Los modelos que presentan informadn, fundn y comportamiento deben partirse de forma que descubran el detalle de una manera
estratificada (o jerrquica). El modelado del anlisis es el primer paso en la resolucin de problemas en la ingeniera del software. Esto permite al profesional entender mejor el problema y establecer una base para la solucin (diseo). Los problemas complejos son dificiles de resolver por completo. Por esta razn, se utiliza una
estrategia de "divide y ganars". Un problema grande y complejo se divide en subproblemas hasta que cada subproblema es relativamente fcil de entender. Este concepto se llama particin, y es una estrategia clave en el modelado del anlisis.
CAPTULO 5
119
8.8).
26.4).
.,._" .. ti 1liseiio seo saliio y justo:averiguado fflo, persguelo mvehamn,; no por III niCham datei Ir et
wa..sw.,....
->----. . ..
No hay pocos mtodos para derivar los diferentes elementos de un diseo de software. Algunos mtodos se guan mediante los datos al permitir a la estructura de
datos dictar la arquitectura del programa y los componentes de procesamiento resultantes. A otros los conduce el patrn al utilizar informacin acerca del dominio del
problema (el modelo de anlisis) para desarrollar estilos ar9uitectnicos y p.ttrom:s
de procesamiento. Incluso otros estn orientados a objetos, al usar los objetos del
dominio del problema como los conductores para la creacin de estructuras de datos
y los mtodos para manipularlos. An as, todos ellos siguen un conjunto de principios de diseo que se pueden aplicar sin importar el mtodo que se utilice:
Principio # I: El diseifo debe ser rastreable hasta el modelo de anlisis. El
modelo de anlisis describe el dominio de la informacin del problema, las funciones visibles para el usuario, el comportamiento del sistema y un conjunto de clases
de anlisis que empaqueta los objetos del negocio con los mtodos que les sirven.
El modelo de diseo traduce esta informacin a una arcuitectura, un conjunto e
subsistemas que implementan las funciones mas importantes y un conjunto de diseos al nivel de componentes que son la realizacin de las clases de anlisis. Excepto
el modelo asociado con la infraestructura de software, los elementos del modelo de
diseo deben ser rastreables hasta el modelo de anlisis.
11
lli. lli'
120
PARTE DOS
ttilH5f1
.,,....,.
En cs.WWWI.
,,_./se
ell(onl!Dr(OllMlffl(IIOS
~ssc,lweel
procese de d.
Principio #3: El diseo de datos es tan importante como el diseo de funciones de procesamiento. El diseo de datos es un elemento esencial del diseo
arquitectnico. La manera en que se realizan los objetos de los datos dentro del diseo no puede dejarse a la suerte. Un diseo de datos bien estructurado ayuda a simplificar el flujo del programa, facilita el diseo y la implementacin de los componentes del software, y confiere ms eficiencia al procesamiento en general.
Principio #4: I.o.s interfaces (internas y externas) deben disearse con cuidado. La manera en que fluyen los datos entre los componentes de un sistema tiene
mucho que ver con la eficiencia del procesamiento, la propagacin del error y la simplicidad del diseo. Una interfaz bien diseada facilita la integracin y ayuda a quien
realiza la prueba a validar funciones de componentes.
Principio #5: El diseo de interfaz del usuario debe ajustarse a las necesidades del usuario final. Sin embargo, en cada caso, debe resaltarse la facilidad del
uso. La interfaz del usuario es la manifestacin visible del software. Sin importar qu
tan sofisticadas sean sus funciones internas, sin importar qu tan comprensibles
sean las estructuras de datos, no importa qu tan bien diseada est su arquitectura, un diseo de interfaz pobre siempre conduce a la percepcin de que el software
est "mal" hecho.
Principio #6: El diseo al nivel de componentes debe ser independiente del
modo funcional . La independencia funcional es una medida del "significado sencillo" de un componente de software. La funcionalidad que entrega un componente
debe ser cohesiva; es decir, debe centrarse en una y slo una funcin o subfuncin.8
Principio #7: Los componentes deben estar apareados entre s en forma
minima y vinculados con el ambiente externo. El apareamiento se consigue de
muchas maneras: va interfaz de componente, por mensajes, a travs de datos globales. A medida que aumenta el nivel de apareamiento, la probabilidad de propagacin del error tambin aumenta y la facilidad de mantenimiento general del software disminuye. Por lo tanto, el apareamiento de componentes debe mantenerse tan
bajo como sea posible.
CAPTULO 5
121
Principio #8: IAs representadones del diseo (modelos) deben ser fcilmente comprensibles. El propsito del diseo es comunicar informacin a los profesionales que generarn cdigos, a aquellos que probarn el software, y a quienes
tal vez mantengan el software en lo futuro. Si el diseo es dificil de entender, no servir como un medio efectivo de comunicacin.
Principio #9: El diseo debe desarrollarse de manera iterativa. En cada iteradn el diseador debe buscar la mayor simpliddad. Como casi todas las actividades creativas, el diseo ocurre de modo iterativo. Las primeras iteraciones sirven para refinar el diseo y corregir errores. pero las iteraciones posteriores deben
buscar que el diseo sea tan simple como sea posible.
Cuando se aplican estos principios de manera apropiada, el ingeniero de software crea un diseo que muestra los factores internos y externos de calidad. Los factores de calidad externos son aquellas propiedades del software que los usuarios pueden observar fcilmente (como velocidad, confiabilidad, correccin, facilidad de
uso) Los factores de calidad internos son importantes para los ingenieros de software, ya que conducen hacia un diseo de alta calidad desde una perspectiva tcnica.
Lograr factores de calidad internos requiere que el diseador entienda conceptos
bsicos de diseo (captulo 9)
Modelado g11
En su libro sobre modelodo gil, Scoft AmblM
[AMB02) define uno serie de principios9
~m:ll::ile5 cuando el on61isis y el diseo se conducen
del contexto de lo filosolo del desorrol1o gil de
(captulo .4).
# 1: lo meto primario del equipo de software es
consMJir softwore, no crear modek.
Principio #
seleccionado.
9 Los principios mencionados en e:.ta seccin se han abreVlado y adaptado para los propsitos de este
libro.
II
122
PARTE DOS
1 ~111:111111
'
opropiodo$.
en
,,.._ gran porte de mi vida he sido Uf1 fisgn del software, asomndome furtivamente
t6dip1Danenas. Ocasionaln-1e, 811CU8111rouno joyo recl, un programo bien estructwado escrito can . . . . CIF i 11 IIS.
. . . desarrolado de formo que codo componente es simple y organizoda, y dsdo para f11!1 el .....
,_._...con fddad.
El enfoque inicial de las pruebas est al nivel de componentes, con frecuencia llamadas pruebas de unidad. Los otros niveles de prueba incluyen: 1) pruebas de integracin (realizadas mientras el sistema est en construccin) 2) pruebas de validacin,
las cuales evalan si los requisitos han sido satisfechos para el sistema completo (o
para el incremento de software); y 3) pruebas de aceptacin, que realiza el cliente en
un esfuerzo encaminado a ejercitar las caractersticas y funciones.
CAPTULO 5
123
Existe una serie de principios y conceptos aplicables a la codificacin y las pruebas. stos se presentan en las secciones siguientes.
5.5. l
Principios de preparacin: Antes de escribir una lnea de cdigo se debe estar seguro de:
1. Entender el problema que se intenta resolver.
2. Entender los principios y conceptos bsicos del diseo.
3. Escoger un lenguaje de programacin que satisfaga las necesidades del software que se va a construir y el ambiente en el que ste va a operar.
Principios de validacin: Despus de haber completado los primeros pases de codificacin, se debe estar seguro de:
1. Conducir un ensayo de cdigo cuando sea apropado
11'11'11
124
Los libros sobre codificacin y los principios que la guan incluyen trabajos recientes sobre el estilo de programacin [KER78J, construccin prctica de software
[MCC93). perlas de programacin [BEN99). el arte de la programacin [KNU99).
aspectos de la programacin pragmtica [HUN99). y muchos otros.
Buscar la exactitud.
Asegurarse de que se han mantenido los
estndares de codificacin.
Asegurarse de que el c6cligo se documenta a s
mismo.
C,des son
los objetivos
4e las pntbos al
softwae?
CAPTULO 5
125
Principio # 1: Todas las pruebas deben ser rastreables hasta los requisitos
del cliente. 11 El objetivo de las pruebas realizadas al software es descubrir errores.
De aqu se desprende que los defectos ms severos (desde el punto de vista del cliente) son aquellos que hacen fallar el programa al tratar de satisfacer sus requisitos.
Principio # 3: El prind po de Pareto es aplicable para las pruebas de software . Para establecerlo de manera simple, el principio de Pareto implica que 80 por
ciento de los errores descubiertos durante las pruebas con probabilidad sern rastreables hasta 20 por ciento de todos los programas. El problema, por supuesto, es
aislar estos componentes sospechosos y despus probarlos.
Principio # 5 : La.s pruebas exhaustivas no son posibles. El nmero de permutaciones entre las rutas, incluso de un programa con un tamao moderado, es
excepcionalmente grande. Por esta razn es imposible ejecutar cada combinacin
de rutas para las pruebas. Sin embargo, se puede cubrir de manera adecuada la lgica del programa para asegurar que se hayan ejercitado todas las condiciones al nivel
de componentes (capitulo 14).
1I Este principio se refiere a las pruebas funcionales; es decir, a las que se enfocan en los requisitos.
Las pruebas estroclllrales (que se enfocan en los detalles arquitectnicos o lgicos) pueden no referirse en forma directa a los requisitos especficos.
11 1 ,IUII
PARTE DOS
126
4.
1 ,6 PllfLRMI
Como se mencion en el captulo 2, la actividad de despliegue abarca tres acciones:
entrega, soporte y retroalimentacin. Como el software moderno es evolutivo por
naturaleza, el despliegue no se presenta una sola vez, sino varias veces conforme el
software avanza hacia su terminacin. cada ciclo de entrega le proporciona al cliente y a los usuarios finales un incremento de software operativo que provee funciones y caractersticas tiles. cada ciclo de soporte proporciona documentacin y asistencia humana para todas las funciones y caractersticas introducidas durante todos
los ciclos de despliegue que se han presentado hasta la fecha. Cada ciclo de retroalimentacin ofrece al equipo de software una gua importante que conduce a modificaciones en las funciones, caractersticas y el enfoque que se toma para el siguiente incremento.
La entrega de un incremento de software representa un fundamento importante
Se be tener lo
serpJd de que el
lllle sobe qu
tsperor antes de que
se entregue el increrJeflto de software.
Oe otro manero, el
cifI1e esperar ms
/ lo que se /e puede
,m,egor.
CAPTULO 5
127
Principio #5: El software con errores se debe arreglar primero y entregarse despus. Ante la presin del tiempo, algunas organizaciones de software entregan incrementos de baja calidad con una advertencia para el cliente de que los errores "se eliminarn en la prxima versin". Esto es un error. En el negocio del software se dice: "Los clientes olvidarn que se les entreg un producto de alta calidad
unos pocos dias despus, pero nunca olvidarn los problemas que les caus un producto de baja calidad. El software se los recuerda todos los das".
El software entregado proporciona un beneficio para el usuarto nnal, pero tambin provee una retroalimentacin til para el equipo de software. Al utilizar el incremento, los usuarios finales deben ser motivados a comentar sobre las caractersticas y funciones, facilidad de uso, confiabilidad y cualesquiera otras caractertsticas
apropiadas. La retroalimentacin debe recopilarla y registrarla el equipo de software y aprovecharla para 1) hacer modificaciones inmediatas al incremento entregado
(si es necesario); 2) definir los cambios que sern incorporados en el prximo incremento planeado; 3) realizar las modificaciones necesarias al diseo para ajustarlo a
los cambios; y 4) revisar el plan (incluyendo el calendario de entrega) del prximo
incremento para reflejar los cambios.
12 Durante la actividad de comunicacin el equipo de software debe determinar los tipos de materiales de ayuda que quieren los usuarios.
11
128
PARTE DOS
11. IIRIIII
4.
S.7 RsuuN
La prctica de la ingeniera del software incluye conceptos, principios, mtodos y
herramientas que aplican los ingenieros de software durante el proceso de software. Cada proyecto de ingeniera del software es diferente, aun as existe un conjunto
de principios y tareas aplicables para cada actividad del marco de trabajo del proceso, sin importar el proyecto o producto.
Si se pretende dirigir una buena prctica de la ingeniera del software, es necesario un conjunto de puntos esenciales tcnicos y de gestin. Los puntos tcnicos
incluyen la necesidad de entender los requisitos y las reas de incertidumbre del prototipo, as como la necesidad de definir de manera explcita la arquitectura del software y el plan de integracin de componentes. Los puntos esenciales de gestin
incluyen la necesidad de definir prioridades y especificar un calendario realista que
las refleje, la necesidad de precisar medidas de control del proyecto apropiadas para
la calidad y el cambio.
CAPTULO 5
129
Los principios de comunicacin con el cliente se enfocan en la necesidad de redu cir el ruido y mejorar el canal de comunicacin conforme progresa la conversacin
entre el desarrollador y el cliente. Ambas partes deben colaborar para que se establezca la mejor comunicacin.
Los principios de planeacin se enfocan en las directrices encaminadas a construir el mejor mapa para realizar el trabajo que conducir a terminar un sistema o
producto. El plan se puede disear slo para un incremento de software, o se puede
definir respecto del proyecto completo. Independientemente de ello, el plan debe
indicar qu se har, quin lo har y cundo se completar el trabajo.
El modelado incluye tanto el anlisis como el diseo, al describir representaciones del software que se vuelven ms detalladas de manera progresiva. La finalidad
de los modelos es solidificar la comprensin del trabajo que se realizar y proporcionar una gua tcnica para quienes implementarn el software.
La construccin incorpora un ciclo de codificacin y pruebas en el cual primero
se genera el cdigo fuente y despus ste se prueba para detectar errores. La integracin combina los componentes individuales e involucra una serie de pruebas que
11
130
11
111:111
5.2 . Existen otros puntos tcnicos "esenciales" que se puedan recomendar a los ingenieros de
software? Enunciar cada uno de ellos y explicar por qu se han incluido.
5 .3. Existen otros puntos "esenciales" de gestin que se puedan recomendar a los ingenieros de
software? Enunciar cada uno de ellos y explicar por qu se ha incluido.
CAPTULO 5
131
5.5. Hgase una investigacin de la "facilitacin" para la actividad de comunicacin (utilcense las referencias que se proporcionan u otras) y preprese un conjunto de directrices que se
enfoquen slo en la facilitacin.
5.6 . En qu difieren la comunicacin gil y la comunicacin de la ingeniera de software tradicional? En qu son similares?
La comunicacin con el cliente es una actividad muy importante en la ingeniera del software;
no obstante, algunos profesionales no dedican tiempo a leer acerca de ella. Los libros de Pardee
(To Satsfy and Delight Your Costumer, Dorset House. 1996) y Karten [KAR94J proporcionan una
gran perspectiva de los mtodos para la interaccin efectiva con el cliente. En muchos libros
sobre la gestin de proyectos se consideran los conceptos y principios de la comunicacin y la
planeacin. Las ofertas tiles relativas a la gestin de proyectos incluyen: Hughs y couerell
(Software Project Management, segunda edicin, McGraw-Hill, 1999), Phillips (The Software
Project Manager's Handbook, IEEE Computer Society Press, 1998), McConnell (Software Project
Survival Guide, Microsoft Press, 1998) y Gilb (PTincip/e:s of sojlware Engineenng Managemem.
Addison-Wesley, 1998).
casi cualquier libro sobre ingeniera del software contiene una exposicin til sobre los conceptos y principios para el anlisis, el diseo y las pruebas. Entre las mejores ofertas estn los
libros de Endres y sus colegas (Handbook o/Software and syscems Engineering, Addison-Wesley,
2003), Sommerville (Software Engineering, sexta edicin, Addison-Wesley, 2000), Pfleeger
(Software Engineering: Theory and Practice, Prentice-Hall, 2001) y Schach (Object-Orienled and
Classica/ Software Engineering, McGraw-Hill, 2001). Davis ha recopilado una amplia coleccin de
principios de software en [DAV95).
Los conceptos y principios del modelado se consideran en muchos libros dedicados al anlisis de requisitos o al diseo de software. Young (Ejfective Requirements Practices, AddisonWesley, 2001) resalta un "equipo conjunto" de clientes y desarrolladores que elaboren los requisitos colectivamente. Weigers (Software Requirements, Microsoft Press, 1999) presenta muchos
requisitos clave de ingeniera y requisitos de las prcticas de gestin. Sommerville y Kotonya
(Requirements Engineering: Process and Techniques, Wiley, 1998) analizan los conceptos y las tcnicas de "obtencin" y otros principios de la ingeniera de requisitos.
El libro de Norman (The Design ofEveryday Things. Currency/Doubleday. 1990) es una lectura obligada para cualquier ingeniero de software que intente hacer el trabajo de disen
Winograd y sus colegas (Bringing Design to Software, Addison-Wesley. 1996) han editado una
excelente coleccin de ensayos que tratan sobre los aspectos prcticos del diseo de software.
Constantine y Lockwood (Software for Use, Addison-Wesley, 1999) presentan los conceptos aso-
11
132
PARTE DOS
l a1IUll~I
ciados con el "diseo centrado en el usuario". Tognazzini (Tog on SOflware Design, AddisonWesley. 1995) presenta una valiosa exposicin filosfica de la naturaleza del diseo y el impacto de las decisiones sobre la calidad y la capacidad del equipo para producir un software que
proporcione un gran valor a su cliente.
Hay cientos de libros que tratan sobre uno o ms elementos de la actividad de construccin.
Kemighan y Plauger [KER78J escribieron un texto clsico sobre el estilo de programacin
McConnell [MCC93J presenta directrices pragmticas para la construccin prctica de software
Bentley [BEN99J sugiere una amplia variedad de perlas de programacin; Knuth (KNU98) ha
escrito una serie clsica de tres volmenes sobre el arte de la programacin, y Hunt [HUN99J
sugiere directrices pragmticas de programacin. La bibliografa sobre pruebas ha florecido en
la dcada pasada. Myers [MYE79) se conserva como un clsico. Los libros de Whitaker (How to
Break SOflware, Addison-Wesley, 2002), Kaner y sus colegas (Lessons Leamed in SOflware Testing
Wiley, 200 I) y Marick (The Craft of SOflware Tesling, Prentice-Hall, 1997) presentan conceptos y
principios importantes sobre las pruebas, as como una gua pragmtica considerable.
En Internet existe una amplia variedad de fuentes de informacin sobre la prctica de la
ingenieria del software. En el sitio web de SEPA se puede encontrar una lista actualizada de
referencias en la red mundial, las cuales son relevantes para la prctica de la ingeniera de software:
http:// www.mhhe.com/ pressman.
CAPTULO
INGENIERA
DE SISTEMAS
CONCEPTOS
......
LAVE
fl'Nll(fo . ..142
....... .140
. . . .os ...135
aililnUML ..147
.....134
aljllledwa
..s.s
fm .......135
....tos ...135
prll'llllI .136
...wo ....144
. . . . . . . .139
ace casi 500 aos, Maquiavelo dijo: "No hay nada ms dificil de llevar a
cabo, ms peligroso de realizar o de xito ms incierto que encabezar la
introduccin de un nuevo orden de cosas". Durante los 50 ltimos aos,
los sistemas basados en computadora han introducido un nuevo orden. Aunque
la tecnologa ha tenido varios avances desde la poca de Maquiavelo. sus palabras an siguen vigentes.
La ingeniera del software ocurre como consecuencia de un proceso llamado
ngeniera de sistemas. En lugar de concentrarse slo en el software, esta disciplina se centra en una variedad de elementos mientras analiza, disea y organiza aquellos elementos de un sistema que pueden ser un producto, un servicio
o una tecnologa para la transformacin o control de informacin.
El proceso de ingeniera de sistemas asume distintas formas, segn el dominio de aplicacin en que se utilice. La ingeneria de procesos de negocios se aplica cuando el contexto del trabajo se enroca en una empresa. cuando se va a
construir un producto (en este contexto un producto incluye todo, desde un telfono inalmbrico hasta un sistema de control de trfico areo), al proceso se le
llama ingeniera de producto.
Tanto la ingeniera de procesos de negocio como la de producto intentan
poner orden en el desarrollo de sistemas basados en computadora. Aunque cada
uno de eJJos se utiliza en un dominio de aplicacin diferente, ambos buscan
poner al software en su contexto. Es decir, tanto la ingeniera de procesos de
-meresodos.
completo y es consistente;
se cree uno 1ttpec1'f'1
cocin, que por
PARTE DOS
134
~como
puede realim; cr
CW..
YQS,~.,.
pero
CICIM.d.ea,
En realidad , el trmino mgcueria ck sistemc.15 se emplea con frecuencia en este contexto. Sin em
bargo, para los propositos de este libro ffingenerta de sistemas" es genrico y abarca la ingeniera
de procesos del negocio y ,a mgeruena de producto
CAPTULO 6
INGENIERA DE SISTEMAS
135
Es posible que la meta sea apoyar una funcin de negocio o desarrollar un produc-
to que pueda venderse para generar beneficios. Para cumplir la meta, un sistema
basado en computadora emplea una variedad de elementos del sistema:
Documentacin. Informacin descriptiva (por ejemplo, modelos, especificaciones, manuales, archivos de ayuda en lnea, sitios web) que detalla el uso y operacin
del sistema.
Procedimientos. Los pasos que definen el uso especfico de cada elemento del
sistema o el contexto de procedimiento en que reside el sistema.
Estos elementos se combinan de varias maneras para transformar la informacin.
Por ejemplo, un departamento de mercadotecnia transforma la informacin bruta de
ventas en un perfil del comprador tlpico del producto; un robot transforma un archivo de rdenes que contiene instrucciones especficas en un conjunto de seales de
control que provocan alguna accin fisica especfica. La creacin de un sistema de informacin para asesorar al departamento de mercadotecnia y un software de control para
el robot requiere de la ingeniera de sistemas.
' ll lkllilllll
136
6.2
. . . . . de
...... de Sis1emos
(OSS)~
_...._ ies en
uu hmss.,..
&,
~~
C~VE
le 1nm ilgenierlo de
sislams comienzo con
u: f5'11e1Dniento cloro
d:I cmtexlo -lo visin
~ Vdespus, de
r:mero rogresivo, el
~sedelimi1o
bi5*I kl comrensin
de mdelolles tcnicos.
Cada dominio Jo componen elementos (E1) especficos, los cuales tienen un papel
para cumplir el objetivo y las metas del dominio o componente:
Sin embargo, en algunas situaciones los ingenieros del sistema deben considerar primero los elementos individuales del sistema. Mediante el uso de este enfoque, los subsistemas se describen de
abajo hacia arriba al considerar primero los componentes detallados que forman el subsistema.
CAPTULO 6
D;
= {E1,
INGENIERA DE SISTEMAS
137
Por ltimo, cada elemento se implementa al especificar los componentes (Cd tcnicos que logran la funcin necesaria para un elemento:
E1 = {C,, C2, C3, ..., Ck)
En el contexto de software un componente podra ser un programa de computadora, un componente reutilizable de un programa, un mdulo, una clase u objeto o
incluso un enunciado en lenguaje de programacin.
"Siempre diseia las Cll5GS considerndolos en su contexto inmedioto supeor: uno sllo en un <uorto, un cuarto en una
casa, una caso en un verindario, un vendorio en unpion urbano:
Es importante notar que el ingeniero de sistemas estrecha ms el enfoque de trabajo conforme avanza hacia abajo en la jerarqua descrita. Sin embargo, la visin
global muestra una clara definicin de la funcionalidad general que Je permitir al
ingeniero entender el dominio y el sistema o producto en el contexto apropiado.
Dominio de negocio
o de producto
Visin global
lli llllllll
138
Qu se
logra con el
modelo de la
ingeniera de
sistemas?
PARTE DOS
Definen los procesos que satisfacen las necesidades de la visin que se considera
Representen el comportamiento de los procesos y los supuestos en los que se
basa el comportamiento.
Definen de modo explcito las entradas exgenas3 y endgenas de informacin al modelo.
Representan todas las uniones (incluidas las salidas) que permiten al
ingeniero entender mejor la visin.
Al construir un modelo del sistema el ingeniero debe considerar algunas restricciones
1.
Un ingeniero de
sistemas considero los
siguientes factores al
determinar soluciones
alternativas:
supuestos,
simplfociones,
limitaciones,
restricciones y
preferencias del
cliente.
3. limitaciones que ayudan a delimitar el sistema. Por ejemplo, se modela un sistema de aeronutica para un avin de prxima generacin. Como el avin
tiene un diseo de dos motores, el dominio de monitoreo para la propulsin
ser modelado para acomodar un mximo de dos motores y sus numerosos
sistemas asociados.
4.
3 Las entradas exgenas unen un elemento de una visin dada con otros elementos en el mismo nivel o en otros niveles; las entradas endgenas unen componentes individuales de un elemento el'
una visin particular.
CAPTULO 6
INGENIERA DE SISTEMAS
139
5 . Preferencias que indican la arquitectura preferida para todos los datos, funcio-
1 ~ GBGS simples delieci ser simples. los <osas complejos deben ser posibles."
6.2.2 Simulacin del sistema
140
Henamientas representativas4
CSIM, desarrollado par Lockheed Martn Advanced
Technology Lobs (www.atl.extemal.lnco.com), es un
simulador de eventos discretos de propsitos generales
paro sistemas orientados a diagramas de edificios.
Ctles
S011
las
_...tecmas que
se 4efilea y
4tsarrolcm como
,-te de la IPN?
Arquitectura de aplicaciones
Infraestructura de la tecnologa
La arquilectura de dalos proporciona un marco de trabajo para las necesidades de
informacin de un negocio o de una funcin de negocios. Los ladrillos de la arquitectura son los objetos de datos que utiliza el negocio. Un objeto de los datos contiene un conjunto de atributos que define algn aspecto, cualidad, caracterstica o
descriptor de los datos que se describen.
Una vez definido un conjunto de datos se identifican sus relaciones. Una relacin
indica la forma en que los objetos estn conectados entre s. Como ejemplo se pue-
Las herramientas mostradas aqu son una muestra de esta categora. En la mayora de los casos los
nombres estn registrados por sus respectivos desarrolladores.
CAPTULO 6
INGENIERA DE SISTEMAS
14 1
den considerar los objetos cliente y productoA. Los dos objetos pueden conectarse por la relacin compra; es decir, un cliente compra productoA o productoA es
comprado por un cliente. Los objetos de datos (que pueden existir cientos o hasta
miles para una actividad de negocios importante) fluyen entre funciones de negocio,
estn organizados dentro de una base de datos y se transforman para ofrecer informacin que satisface las necesidades del negocio.
La arquitectura de apjjcacin abarca aquellos elementos de un sistema que transforman objetos dentro de la arquitectura de datos por algn propsito del negocio.
En el contexto de este libro se considera que la arquitectura de aplicacin es el sistema de programas (software) que realiza esta transformacin. Sin embargo, en un
contexto ms amplio, la arquitectura de aplicacin puede incorporar el papel de las
personas (quienes son transformadores y usuarios de informacin) y procedimientos
de negocios que no han sido automatizados.
La
lo empreso.
1---.---.---.-----t
Planeacin
estratgica
de la informacin
(visin global)
Anlisis del
rea de
nesocio
(viJin de
dominio)
Diseo del
sistema del
MO.!JCXO
(vis,on del
elemento)
Ingeniero
de software
1 11111111
14 2
Amenudo se utilizo
en esre conrexto el
modg/o concurrgnfg
dbl ptOCbSO (captulo
comunicacin
mientras codo
disciplino desempeo
su troboo.
La jerarqua de
Ingeniera de
re~uisitos
(visin global)
El producto
completo
la ing eniea de
productos.
Copocidodes
Ingeniera de
com~nente
(visin de
dominio)
Requisito de proceso
Modelado de
anlisis y diseo
(visin del
elemento)
Componentes
de programa
!:==:lllllla:::::!::::;;;:::~:::::::._
Ingeniero
de software
CAPTULO 6
INGENIERA DE SISTEMAS
143
bases de datos. cada una de estas disciplinas de ingeniera toma una visin de dominio especfica, pero es importante sealar que las disciplinas de ingeniera deben
establecer y mantener una comunicacin activa entre ellas. Parte del papel de la
ingeniera de requisitos
esto suceda.
La visin de elemento para la ingeniera de producto es la disciplina de ingeniera aplicada a un componente asignado. Para la ingeniera de software esto significa
actividades de modelado del anlisis y diseo (cubierto en detalle en captulos posteriores) y actividades de construccin y despliegue que abarcan: generacin de
cdigo, pruebas y tareas de soporte. Los modelos de anlisis de tareas asignan requisitos a las representaciones de datos, funcin
del anaquel
' 1
144
PARTE DOS
illii.llill
mowimiento en el eiderior.
o:,locacin de ,eguridad por Internet.
Disponer un mensaje lo
Contoc1onend.don11
paro,...,...
reconocimiento de '<0%.
funciones del creo ~ -. .
estridores del correo "*""nic:4
telefnico.
Directorio lelefnico ~
Vnculo con el PDA.
Otros funciones:
Por definine.
CAPTULO 6
INGENIERA DE SISTEMAS
145
del
sistema
todas las entidades que se comunican a travs de la interfaz o realizan mantenimiento y autocomprobacin.
Para ilustrar el uso del DCS se considerar un sistema de clasificacin de cinta
transportadora {SCCT) descrito en la siguiente declaracin (un tanto confusa) de
objetivos:
El SCCT debe desarrollarse de manera que las cajas que se mueven a lo largo de la cinta
transportadora sean identificadas y ordenadas en uno de los seis contenedores al final de
la cinta. Las cajas pasarn a travs de una estacin clasificadora, donde se identificarn.
ae
146
Uhtii
Diagrama de
contexto del
sistema del
Proceso
de lo interfaz
del usuario
Operador de
lo estacin de
dosificacin
SCCT.
Peticin
Lector de
cdigo de
barros
Cinto
transportadora
Procesamiento
de entrada
+ TConsultas Comond~s
de control Mecanismo de
dosificacin
Sistema de
Cdigo
clasificacin
de borras
1
de cinta
Dolos formoteodos del informe
transporladora
___r-
Indicador de la
Dolos de diagnstico
velocidodde lo cinto
Mantenimiento Operador de
lo estacin de
y
dosificacin
autocomprobacin
Estructuro
principal
Procesamiento
de solido
C APTULO 6
INGENIERA DE SISTEMAS
14 7
DFS de A
se para el anlisis y diseo al nivel de software y del s1stema. 5 Para el SCCT se modelan cuatro elementos importantes del sistema. 1) el hardware que pennite el SCCT;
y la clasificacin; 3) el
operador que acata varias peticiones del sistema; y 4) la base de datos que contiene
infonnacin relevante del cdigo de barras y el destino.
2) el software que implementa el acceso a la base de datos
5 En los captulos del 8 al 11 se presenta una exposc1on ms detallada de los diagramas de UML. Para
una exposicin completa del UML el lector interesado debe consultar [SCH021, [lAROlJ o [BEN991 .
11 Aill:IIJ
148
Uhilii
Diagrama de
despliegue
del hardware
deSCCT.
El hardware del SCCT se puede modelar en el nivel del sistema mediante un diagrama de despliegue de UML, como se ilustra en la figura 6.6. Cada caja tridimensional muestra un elemento del hardware que es parte de la arquitectura fisica del sistema. En algunos casos, los elementos del hardware tendrn que disearse y construirse como parte del proyecto. Sin embargo, en muchos casos los elementos del
hardware se pueden adquirir ya construidos. El reto para el equipo de ingeniera es
realizar la interfaz de los elementos del hardware de manera apropiada.
Los elementos del software para el seer se pueden modelar en una variedad de
formas mediante el uso de UML. Los aspectos de procedimiento del software del
SCCT se pueden representar mediante un diagrama de actividad (figura 6.7). Esta
notacin del UML es similar al diagrama de flujo y se utiliza para representar lo que
sucede mientras el sistema realiza sus funciones. Los rectngulos redondeados
implican una funcin especfica del sistema; las flechas representan el flujo a travs
del sistema; el rombo de decisin representa una decisin ramificada (cada flecha
que sale del rombo est etiquetada); las lneas slidas horizontales implican la realizacin de actividades en paralelo.
Otra notacin de UML que se puede usar para modelar software es el diagrama de
clase (junto con muchos diagramas relacionados con las clases que se examinan en
apartados posteriores de este libro). En el nivel de la ingeniera del sistema las clases6 se extraen en un enunciado del problema. Para el SCCT las clases candidatas
En captulos anteriores se destac que una clase representa un conjunto de entidades que forman
parte del dominio del sistema. El sistema puede almacenar o transformar estas entidades o pueden
servir como un productor o consumidor de la informacin que el sistema produce.
CAP'nJLO 6
149
INGENIERA DE SJSttMAS
'
Iniciar lnea
del conductor
Obtener la velocida
del conductor
Cdigo de barras
vlido
Oblener
el eil0to$
del condudor
Conductor detenido
Conductor en movimiento
podran ser de: caja, lnea de conduccin, lector de cdigo de barras, contro-
150
iihtil
Diagrama de
clasedeUML
para la clase
caja.
Nombre de lo clase
Cojo
cdigo de barros
velocidad hacia delante
ubicocn del conductor
Atribvtos
ohuro
profundidad
peso
confenido
atributos
de lo ubicacin{)
lectura de ubicacin( )
obtencin de dimensiones( )
pobiencin del peso( l
verificacin de contenido( )
iihti.Ji
Diagrama de
caso de uso
para el
operador
seer.
Operador
del SCCT
Operaciones
(los parntesis
ol final del nombre
indican lo listo de
otribvtos que requiere
lo operacin)
CAPTULO 6
INGENIERA DE SISTEMAS
151
Las herramientas mostradas aqu son una muestra dentro de esta categora. En la mayora de los
casos los nombres estn registrados por sus respectivos desarrolladores.
152
y asigna funcione
[BEN99J Bennett, S., S. McRobb y R. Fanner, Object-Oriented Systems Analysis and Design U~
UML, McGraw-Hill, 1999.
[HAR93) Hares, J. S., Jnforrnation Engineeringfor Advanced Practitioner, Wiley, 1993, pp. 12-13
[HAT87) Hatley, D. J. e l. A. Pirbhai, Strategiesfor Real-Time System Specijication, Dorset House
1987.
[LARO 1J Larman, C., Applying UML and PaUems: An lntroduction to Object-Oriented Analysis ana
Design and
Unijied Process, 2a. ed., Prentice-Hall, mayo de 2001.
[MAR901 Martin. J.. Inforrnation Engneering: Book II-Planning and Analysis, Prentice-Hall, l99C
[MOT92) Motamarri, S., "Systems Modeling and Description", en Software Engineering Notes, v<j
17, nm. 2, abril de 1992, pp. 57-63.
[SCH02)Schmuller, J., Teach Yourself UML in 24 Hours, 2a. ed., Sams Publishing, 2002.
[SPE93J Spewak, s., Enterprise Architecture P/anning, QED Publishing, 1993.
[THA97) Thayer, R. H. y M. Dorfman, Software Requirements Engineering, 2a. ed., IEEE ComputeSociety Press, 1997.
me
6.1. Encontrar tantos sinnimos como se pueda de la palabra "sistema". Buena suerte!
6.2. Construir un "sistema de sistemas" jerrquico para un sistema, producto o servicio con ei
cual se est familiarizado. La jerarqua se debe extender hasta los elementos simples del sistema (hardware, software, etctera) de al menos una rama de cada estructura.
6.3. seleccionar un sistema o producto grande con el que est familiarizado. Definir el conjunto de dominios que definan la visin global del sistema o producto. Describir el conjunto de elementos que componen uno o dos de los dominios. Para un elemento, identificar los componentes tcnicos que deben desarrollarse.
6.4. Seleccionar algn sistema o producto grande con el cual est familiarizado. Establecer las
suposiciones, simplificaciones, limitaciones, restricciones y preferencias que se deberan hacer
para construir un modelo de sistema de modelo eficaz (y realizable).
6.5. La ingenietia de procesos del negocio requiere definir datos, arquitectura de aplicaciones.
adems de una infraestructura de aplicaciones. Describir cada uno de estos tnninos mediante
un ejemplo.
6.6. Un ingeniero de sistemas puede tener una de tres procedencias: el desarrollo de sistemas
el cliente o una organizacin externa. Discutir los pros y los contras de cada procedencia
Describir un ingeniero de sistemas "ideal".
6. 7. El profesor entregar una descripcin de alto nivel de un sistema o producto basado en
computadoras.
a) Desarrollar un conjunto de preguntas que se deberla realizar como ingeniero de siste-
mas.
bJ Proponer al menos dos ubicaciones diferentes para el sistema con base en las respuestas a sus preguntas.
CAPTULO 6
INGENIERiA DE SJSTEMAS
153
6 .9 Aunque la informacin hasta este punto est muy entrecortada, trtese de desarrollar un
cliagrama de desarrollo, un diagrama de actividad, un diagrama de clase y un diagrama de caso
de uso con UML para el producto HogarSeguro
6 .1 o. Realizar una investigacin bibliogrfica y escribir un documento breve que describa
cmo funcionan las herramientas de modelado y simulacin. Alternativa recopile b1bliografia
de dos o ms vendedores de herramientas de modelado y simulacin y evale sus similitudes y
diferencias
6.11 . Existen caractersticas de un sistema que no se puedan establecer durante las actividades de la ingeniera de sistemas? Describir las caractersticas, si existen, y explicar por qu su
consideracin se debe retrasar a fases posteriores del desarrollo.
6 . 12. Existen situaciones en las que la especificacin formal del sistema se pueda abreviar o
eliminar por completo? Explquese la respuesta.
Los libros de HaUey y sus colegas (ProcessJor systems Arch1tecture and Requirements Engineering,
Dorset House, 2001 ). Buede (The Engineering Design of systems: Mode/s and Methods, Wiley,
1999), Weiss y sus colegas (Sjlware Product-Une Engineering, Addison-Wesley, 1999),
Blanchard y Fabrycky (systern Engineering and Ana!)'szs, 3a. ed., Prentice-Hall, 1998), Armstrong
y sage (lntroducaon to systems Engineenng, Wiley, 1997), y Martn (systems Engmeering
Guidebook, CRC Press, 1996) presentan el proceso de la ingenierta del sistema (con un nfasis
distinto en la ingenierta) y proporcionan una gula muy valiosa. Blanchard (~tem Engmeering
Management, segunda edicin, Wiley, 199n y lacy (system Engineering Management, McGrawHill, 1992) exponen aspectos de gestin de la ingenieria del sistema.
Choraras (Enterp~ Archilecture and New Generation systems, St. Lucie Press, 2001) presenta ingeniera de informacin y arquitecturas de sistema para la "siguiente generacin" de soluciones de TI; se incluyen sistemas basados en Internet. Wallnau y sus colegas (Building Systems
Jrom Comercial Componermts, Addison-Wesley, 2001) se enfoca en los aspectos de la ingenierla
de sistemas basada en componentes para productos y sistemas de informacin. Lozinsky
(Enterprise-Wide software SO/ubons: lntegratJon Strategies and Practices, Addison-Wesley, 1998)
abarca el uso de paquetes de software como una solucin que permite a las compalas pasar
de los sistemas heredados a los procesos de negocio modernos. Una exposicin muy valiosa del
riesgo y la ingenier!a del sistema se presenta en el libro de Bradley (Elimination of Risk in
systems, Tharsis Boooks, 2002).
oavis (Business Process McxJeling wtCII Ms. A ProcCJcal Gwae. Spr!nger-verlag. 200 I l. Bustard
y sus colegas (system Models for Business Process Improvement, Artech House, 2000), y Scheer
(Business Process Engmeering Reference Models Jor Industrial cnterpriso, Springcr-vcrlag, l ':l':ltl)
describen los mtodos de modelado del proceso de negocios para sistemas de informacin y de
toda una empresa.
Oavis y Yen [The lnformatJon system Consultant's Handbook: Syslems Analysis and Design, CRC
Press, 1998) presentan una cobertura encicloptdica de los aspectos del anlisis y diseo de sistemas en el dominio de los sistemas de informacin. Una ayuda excelente del IEEE por Thayer
y Oorfman [THA97J discute la interrelacin entre los anlisis al nivel de sistema y al nivel de
software.
Law y sus colegas (Simulalion Modeling and Analysis, McGraw-Hill, 1999) analizan tcnicas
de modelado y simulacin de sistemas para una amplia variedad de dominios de aplicacin.
Para los lectores involucrados de manera activa en el trabajo de sistemas o que estn interesados en un tratamiento ms elaborado del tpico, los libros de Gerald Wemberg (An
Jntroduclion to General System Thinkmg, Wiley, lnterscience, 1976, y On the Design of Stable
systems, Wiley-lnterscience, 1979) se han convertido en clsicos y ofrecen una excelente exposicin sobre el "pensamiento general de sistemas", lo que de manera implcita conduce a un
enfoque general del anlisis y diseo de sistemas. Otros libros ms recientes de Weinberg
(General Pnndple:s o/ Systems Ikslgn, Dorset House, J998 y Rethinkmg Systems Anatysis and
,IR'IIID
154
CAPITULO
INGENIERA
DE REQUISITOS
y dice: "Yo s que usted piensa que entiende lo que digo, pero lo que usted no en
tiende es que lo que digo no es realmente lo que quiero decir". Esto sucede de manera invariable cuando el proyecto est avanzado, despus de que se han realizado
los compromisos relativos al tiempo de entrega, las reputaciones estn en juego y el
dinero est en seno peligro.
Todos los que hemos trabajado en el negocio de los sistemas y el so1hvare por m::,
de unos cuantos aos hemos vivido esta pesadilla. y slo unos pocos de nosotros hemos aprendido a contmuar aun con esta circunstancia. Nosotros tenemos dificultades cuando tratamos de obtener requisitos de nuestros clientes. Tenemos problemas
al comprender la informacin que adquirimos. Con frecuencia, registramos los re-
155
11
156
PARTE DOS
ilK:IWllilll.
quisitos de una manera desorganizada e invertimos muy poco tiempo en verificar lo que
registramos. Permitimos que el cambio nos controle en lugar de establecer mecanismos
para controlarlo. En resumen, fallamos al establecer un cimiento slido para el sistema o
software. cada uno de estos problemas representa un reto. Cuando stos se combinan, la
imagen es desalentadora incluso para los gerentes y profesionales del sofware ms experimentados. Pero existen soluciones.
Sera deshonesto decir que la ingeniera de requisitos es la "solucin" para los retos
que se han enunciado. Pero proporciona un enfoque slido para abordar dichos
desafos.
Las actividades de diseo y construccin de software de computadora son desafiantes, creativas y hasta divertidas. De hecho, la construccin es tan irresistible que
muchos desarrolladores de software quieren entrar en ella antes de comprender cor
claridad de qu es lo que se necesita. Ellos argumentan que las csas se aclararr
mientras construyen; que los interesados en el software sern capaces de entender
mejor las necesidades slo despus de examinar las primeras iteraciones del software; que las cosas cambian tan rpido que la ingeniera de requisitos es una prdida de tiempo; que la linea de base produce un programa que funciona y todo lo
dems es secundario. Lo que hace seductores a estos argumentos es que contiener
elementos de verdad. 1 Pero cada uno de ellos es imperfecto y puede conducir a ur
proyecto de software fallido.
En particular, esto es cierto para los proyectos chicos (menos de un mes) que implican un esfuerzc
relativamente pequeo. Conforme el software crece en tamao y complejidad, estos argumentos comienzan a derrumbarse.
CAPTULO 7
157
INGENIERA DE REQUISTl'OS
"la,....
ms W de conslrui" un sistema de software es decidir qu constnit NingWIO po11e del trabajo ISlrGpll
- . ti sist1n1D resubante si se hoce mol. Ningu1111 parte es ms W de rectificar despuis.
frtdhlu
La ingeniera de requisitos como todas las dems actividades de la ingeniera del
software, debe adaptarse a las necesidades del proceso. el proyecto, el producto y las
personas que realizan el trabajo. Desde la perspectiva del proceso del software, la
ingeniera de requisitos (IR) es una accin de la ingeniera del software que comienza durante la actividad de comunicacin y contina en la actividad de modelado.
En algunos casos se elige un enfoque abreviado. En otros, cada una de las tareas
definidas para comprender los requisitos se debe llevar a cabo de manera rigurosa.
Sobre todo, el equipo de software debe adaptar su enfoque a la IR, lo que no significa abandono. Es esencial que el equipo de software haga un esfuerzo real por entender los requisitos de un problema antes de intentar resolverlo.
La ingeniera de requisitos tiende un puente hacia el diseo y la construccin.
Pero dnde se origina el puente? Se puede argumentar que comienza al pie de los
participantes del proyecto (es decir, gerentes, clientes, usuarios finales), donde se
definen las necesidades del negocio, se describen los escenarios de los usuarios. se delinean las caractersticas y funciones, y se identifican las restricciones del proyecto.
otros quiz sugieran que comienza con la definicin ms amplia del sistema, en el
que el software es slo un componente (captulo 6) del dominio del sistema que es
an mayor. Pero sin importar el punto de inicio, el trabajo a lo largo del puente se
inicia en la parte alta del proyecto. lo que permite que el equipo de sof\ware exami
ne el contexto del trabajo de software que ser realizado; las necesidades especficas que el diseo y la construccin deben abordar, las prioridades que indican el
orden en el que se debe completar el trabajo; y la infonnaci6n1 las funciones y los
comportamientos que tendrn un impacto profundo en el diseno resultante
que el cliente quiere, analizar las necesidades, evaluar la factibilidad. negociar una
solucin razonable, especificar la solucin sin ambigedades, validar la especificacin, y administrar los requisitos conforme stos se transforman en un sistema operacional [THA97). El proceso de la ingeniera de requisitos se lleva a cabo a travs de
siete distintas funciones: inicio, obtencin, elaboracin, negociacin, especificacin,
validacin y gestin.
Resulta importante destacar que algunas de estas funciones de la ingeniera de
requisitos ocurren en paralelo y que todas deben adaptarse a las necesidades del
proyecto. Todas estn dirigidas a definir lo que el cliente quiere. y todas sirven para
establecer una base slida respecto del diseo y la construccin de lo que obtendr
el cliente.
11 ilKIWIIII~
158
7.2.1
Inicio
Cmo se inicia un proyecto de software? Es un evento aislado que se convierte e:el catalizador para un nuevo sistema o producto basado en computadora? O la
necesidad evoluciona con el tiempo? No existen respuestas definitivas para estas
preguntas.
"Par lo genertJI, las semi1as de los desastres ms importantes ensoftware se siembra! en los primeros 1nls -
En algunos casos, una conversacin informal es todo lo que se necesita para precipitar un esfuerzo importante de ingeniera del software. Pero en general, la mayora
de los proyectos comienza cuando se identifica una necesidad de negocios o se descubre un nuevo mercado o servicio potencial. Los participantes de la comunidad de
negocios (es decir, los gerentes, gente de mercadotecnia, gerentes de producto) definen un caso de negocios para la idea, tratan de identificar la amplitud y profundidad
del mercado, hacen un anlisis preliminar de factibilidad, e identifican una descripcin
funcional del mbito del proyecto. Toda esta informacin est sujeta a cambios (una
situacin probable), pero es suficiente para suscitar conversaciones con la organizacin de ingeniera del software. 2
Al inicio3 del proyecto los ingenieros de software hacen una serie de preguntas
libres de contexto, las cuales se exponen en la seccin 7.3.4. El objetivo es establecer una comprensin bsica del problema, las personas que quieren una solucin, la
naturaleza de la solucin que se desea, y la efectividad de la comunicacin preliminar entre el cliente y el desarrollador.
7 .2.2 Obtencin
Por qv
es ctdcil
En verdad parece muy simple preguntarle al cliente, a los usuarios y otros interesados cules son los objetivos para el sistema o producto, qu es lo que se debe lograr,
de qu forma el producto satisface las necesidades del negocio y por ltim o cmo se
utilizar el sistema o producto da a da. Pero no es simple, es muy dificil.
Christel y Kang [CRI92] identifican una serie de problemas que ayudan a entender
por qu es dificil la obtencin de requisitos:
Cllllpl'ender con
dlrillod lo que
.-,e el et.ente?
2
Los lectores del capitulo 3 recordarn que el proceso unificado define una "fase de inicio" ms com
pleta, la cual incluye las tareas de inicio, obtencin y elaboracin tal como se examinan en este captulo.
159
7 .2.3 Elaboracin
La informacin conseguida con el cliente durante el inicio y la obtencin se expande y se refina durante la elaboradn. Esta actividad de la ingeniera de requisitos se
enfoca en el desarrollo de un modelo tcnico refinado de las funciones, caractersticas y restricciones del software.
La elaboracin es una accin del modelado del anlisis (captulo 8) y se compone de una serie de tareas de modelado y refinamiento. La elaboracin se conduce
1111
PARTE DOS
7 .2.4
fn
una negociacin
1IUIIJIIJ
Negociacin
Dados los recursos limitados del negocio, no resulta inusual que los clientes y usuarios pidan ms de lo que se puede lograr. Tambin es relativamente comn que diferentes clientes o usuarios propongan requisitos que entran en conflicto entre s a.
argumentar que su versin es "esencial para nuestras necesidades especiales".
El ingeniero de requisitos debe conciliar estos conflictos por medio de un proceso de negociacin. Se pide a los clientes. usuarios y otros interesados que ordener
sus requisitos y despus discutan los conflictos relacionados con la prioridad. Se
identifican y analizan los riesgos asociados con cada requisito (para obtener ms
detalles vase el captulo 25). Se hacen "estimaciones" preliminares del esfuerzc
requerido para su desarrollo y despus se utilizan para evaluar el impacto de cada
requisito en el costo del proyecto y sobre el tiempo de entrega. Mediante un enfoque
iterativo. los requisitos se eliminan, combinan o modifican de forma que cada parte
alcance cierto grado de satisfaccin.
7 .2 .5
Especificacin
,,-~
lo formalidad y el
"plantilla estndar" [SOM97) argumentan que esto conduce a que los requisitos sean
presentados de una manera ms consistente y por ende ms entendible. Sin embargo, algunas veces es necesario ser flexible mientras se desarrolla una especificacin
Respecto de sistemas grandes el mejor enfoque podra ser un documento escrito que
combinara descripciones en el lenguaje natural y modelos grficos. Por otro lado, en
cuanto a productos o sistemas ms pequeos, podra ser que no se necesite ms que
escenarios de uso, cuando dichos sistemas residan en ambientes tcnicos que se
comprendan bien.
C~VE
formato de uno
especificacin varan
con el tomoo y lo
complejidad del
softwore que se va o
construir.
Algunos sugieren que para una especificacin se debe desarrollar y utilizar una
La especificacin es el producto de trabajo final que genera la ingeniera de requisitos. Sirve como base para las actividades de ingeniera de software subsecuentes.
CAPITULO 7
161
INGENIERA DE REQUISITOS
Describe la funcin y el desempeo de un sistema basado en computadora y las restricciones que regirn su desarrollo.
7.2.6 Validacin
La calidad de los productos de trabajo procedentes de la ingenieria de requ1s1tos se
evala durante un paso de validadn. La validacin de requisitos examina la especificacin para asegurar que todos los requisitos de software se han establecido de
manera precisa que se han detectado las inconsistencias, omisiones y errores y que
stos han sido corregidos, y que los productos de trabajo cumplen con los estndares establecidos para el proceso, proyecto y producto.
El mecanismo primario para la validacin de requisitos es la revisin tcnica formal (captulo 26) El equipo de revisin que valida los requisitos incluye ingenieros
de software, clientes, usuarios y otros interesados que examinan la especificacin y
buscan errores en el contenido o la interpretacin, reas que tal vez requieran una
clarificacin, informacin faltante, inconsistencias (que es un problema importante
cuando se desarrollan productos o sistemas grandes). conflictos entre los requisitos,
o requisitos irreales (inalcanzables).
pueden malinterpretorse?
~ niq.,,silo
S2rno2
7 .2 .7
Gestin de requisitos
En el captulo 6 se estableci que los requisitos para los sistemas basados en computadoras cambian y que el deseo de cambiarlos persiste durante la vida del sistema.
La gestin de requisitos es un conjunto de actividades que ayudan al equipo de proyecto a identificar, controlar y rastrear los requisitos y los cambios l :;to5 en cull-
1 11
162
1111111
Cuando un sistema es
grande y comple;o, lo
determinaci6n de las
poco el trobo;o.
Tabla de rastreabilidad del subsistema. Establece categoras entre los req~sitos de acuerdo con el(los) subsistema(s) que gobiema(n).
Tabla de rastreabilidad de la interfaz. Muestra la forma en que los requisitc.~
se relacionan con las inteases internas y externas del sistema.
En muchos casos, estas tablas de rastreabilidad se mantienen como parte de la
base de datos de los requisitos de forma que pueda buscrseles con rapidez para
entender cmo el cambio en un requisito afectar diferentes aspectos del sistema
que se construir.
ifrHDi
\ ~
..sistema
. -o su ambiente
. ..
pecto- especfico
del
Tabla
genrica de
rastreabWdad.
IA01'
Req
Aii
- .......
1
R01
R02
IV""
IV""
lv"
y"'
...,,,
...,,, lv""
ROS
...,,,
...,,,IV""
v'
Rnn
,...,,, ,...,,,
R03
804
..
...,,,
y"'
La gestin fonnal de requisitos se inicia slo para proyectos grandes, los cuales tienen cientos de requisitos identificables. En los proyectos pequeos esta funcin de la ingeniera de requisitos es bastante menos fonnal.
CAPTULO 7
INGENIERA DE REQUISITOS
163
Ingeniea de requisitos
Objetivo: las herramientas de lo ingeniera
de requisitos ayudan en lo recopilacin,
.:modo, gestin y validacin de requisitos.
1m11mientas representativas6
lic Systems Guide, lnc. ha preporodo una lista
1-=XXlolefliente completa de herramientas poro la
.-::1!!"'-,o de requisitos, sta se puede encontrar en
www.systemsguild.com/Guildsite/Robs/retools.
modelado de requisitos se estudia en el captulo 8.
bn-triientas que se presentan a continuacin se
en lo gestin de requisitos.
desarrollado por Cybemetic lntelligence GMBH
eosy-rm.com), construye un diccionario/glosorio
Las herramientas mencionadas aqu son una muestra dentro de esta categora. En la mayoria de los
casos los nombres estn registrados por sus respectivos desarrolladores.
Este enfoque se recomienda para todos los proyectos y es una parte integral de la filosofa para el
desarrollo gil de software.
1,Lillil'
164
PARTE DOS
Un interesodo es
cualquiera que
participo en formo
directo en el sistema
que se vo odesorrollor
u obtiene beneficios de
ste.
rente del sistema, obtiene beneficios diferentes cuando ste se desarrolla de mane:--exitosa, y est abierto a diferentes riesgos si el esfuerzo de desarrollo llegara a falla~
En el inicio el ingeniero de requisitos puede crear una lista de personas que cor
tribuirn durante la obtencin de requisitos (seccin 7.4). La lista inicial crecer cor
fonne se establezca contacto con los interesados, ya que a cada uno de ellos se
preguntar: "COn quin ms piensa que debera hablar?"
c.i..,. atres ill1eresados en 111G habitocin y pregnteles qu tipo de sistema quieren. fs ,raWile.,. . . .
- -oII5 opilliones difet'entes"
CAPTULO 7
165
INGENIERA DE REQUISITOS
cios o un tcnico importante) puede tomar la decisin final acerca de cules requisitos se aceptan.
....:.llllllllll
166
PARTE DOS
La siguiente serie de preguntas permite que el equipo de software compre mejor el problema y deja que el cliente exprese sus percepciones acerca de una soi
cin:
Cules son
las pregun
tas que ayudan a
comprender en
forma preliminar
el problema?
La serie final de preguntas se enfoca en la efectividad de la actividad de comu.cacin en s misma. Gause y Weinberg (GAU89] las llaman las "metapreguntas
proponen la siguiente lista abreviada:
Es usted la persona adecuada para contestar esta pregunta? Sus respuestas
son "oficiales"?
Mis preguntas son relevantes para su problema?
Estoy haciendo demasiadas preguntas?
Alguien ms puede proporcionar informacin adicional?
Debera preguntarle alguna otra cosa?
e que pragunla es un tonto durante cinco minutos; el que no pregunta es un tonto por siempre.*
Estas preguntas (y otras) ayudarn a "romper el hielo" y a iniciar la conversacir"
esencial para la obtencin exitosa. Pero un formato de reunin de pregunta y res
puesta no es un enfoque que haya sido exitoso de manera contundente. De hechc
la sesin de preguntas y respuestas se debe usar slo para el primer encuentro, .
despus se debe reemplazar por un formato de obtencin de requisitos que combine elementos de resolucin de problemas, negociacin y especificacin. En la seccin 7.4 se presenta un enfoque de este tipo.
CAPTULO 7
167
INGENIERA DE REQUlSrTOS
C.les
S01 las
ktrices bsicas
pn lnaacabo
-naia
-;.ta de
1 c:in de
lllfllShS?
"Dedimmos nuho tien'1)0-lo mayora del esfuerzo del proyecte>- no a lo implemen1aci6n ni a los pruebas, sino a
lnlllr ele de<illir qu es lo que se 'tCI a cons1n!ir!
Briall lowrace
Durante la fase de inicio (seccin 7.3) las preguntas y respuestas bsicas establecen el mbito del problema y la percepcin global de una solucin. Fuera de estas
reuniones iniciales, los participantes escriben una "solicitud de producto" de una o
dos pginas. Se fijan un lugar, una hora y una fecha para la reunin y se selecciona
un moderador. Los miembros del equipo de software y otras organizaciones intere-
A este enfoque se le llama algunas veces tcnica de especificacin facilitada de la aplicacin (FAST
por sus siglas en mgls)
11 lli:IIJ
168
ElffilfifrlM1
desoooilo (OJIUflW
de apliw<iolles OAO,
por SIIS siglos ef1
www.--
C11111/ wp;.tm
se puede encontror una
bueoo desaipoo de
esto jali(Q,
sadas son invitados a asistir. La solicitud de producto se distribuye a todos los asistentes antes de la fecha de reunin.
Mientras revisa la solicitud de producto en los das previos a la reunin, se pide a
cada asistente hacer una lista de objetos que son parte del ambiente que rodea al sistema, otros objetos que ste producir, y objetos que utiliza para realizar sus funciones. Adems, se le pide a cada asistente que elabore una lista de los servicios
(procesos o funciones} que manipulan o interactan con los objetos. Por ltimo
tambin se preparan listas de las restricciones (por ejemplo, costo, tamao, reglas
del negocio) y de los criterios de rendimiento (por ejemplo, velocidad, exactitud). Se
informa a los asistentes que no se espera que las listas sean exhaustivas, sino que
reflejen la percepcin que cada persona tiene del sistema.
Como un ejemplo, 9 considrese el fragmento de un documento previo a la reunin, escrito por una persona de mercadotecnia involucrada en el proyecto de
HogarSegu.ro. Esta persona escribe la siguiente narracin acerca de la funcin de seguridad en el hogar que ser parte de HogarSeguro.
Nuestra investigacin indica que el mercado para los sistemas de administracin del hogar est creciendo a una tasa de 40 por ciento anual. La primera funcin de HogarSeguro
que saquemos al mercado debera ser la funcin de seguridad en el hogar. La mayora de
la gente est familiarizada con los "sistemas de alanna", por lo que dicha funcin sera fcil de vender.
La funcin de seguridad en el hogar protegerla contra o reconocera una variedad de
"situaciones" indeseables como una entrada ilegal, fuego, inundaciones, niveles de monxido de carbono y otras. Utilizar nuestros sensores inalmbricos para detectar cada situacin, el usuario podr programarla
y llamar
Si un sistema a
producto servir6 o
muchos usuarios se
debe tener lo
completa seguridad de
que los requisitos se
obtienen de una
muestro representotivo de los usuarios. Si
slo uno de los
usuarios define todos
los requisitos, el
riesgo de rechazo es
o/to.
En realidad, otros podran contribuir a este relato durante la reunin para la recopilacin de requisitos, y mucha ms informacin estara disponible. Pero aun con
informacin adicional, la ambigedad podra estar presente, es probable que existieran omisiones y podran ocurrir errores. Por ahora, la "descripcin funcional
anterior ser suficiente.
El equipo de recopilacin de requisitos lo componen representantes de los departamentos de mercadotecnia, de ingeniera de hardware y software y de manufactura. Se utilizar un moderador externo.
cada persona desarrolla las listas previamente descritas. Los objetos descritos
para HogarSeguro podran incluir el panel de control, los detectores de humo, los
sensores en puertas y ventanas, los detectores de movimiento, una alarma, un evento (cuando algn sensor se active}. una pantalla, una PC, nmeros telefnicos, una
9. El ejemplo de HogarSeguro (con extensiones y variaciones) se utiliza para ilustrar mtodos importantes de la ingeniera del software en muchos de los captulos que siguen. como ejercicio, sera til
realizar una reunin para la recopilacin de requisitos propia y desarrollar una sere de listas para
sta.
CAPTULO 7
INGENIERA DE REQUISITOS
169
llamada telefnica y otros. La lista de servicios podra incluir la configuracin del sistema, la colocacin de la alarma, el monitoreo de sensores, la marcacin telefnica,
la programacin del panel de control y la lectura de pantalla (obsrvese que los servicios actan sobre los objetos). De una manera similar, cada asistente elaborar listas de restricciones (por ejemplo, el sistema debe reconocer cuando los sensores no
estn en funcionamiento, debe ser amigable para el usuario, debe tener una interfaz
directa con la lnea telefnica) y criterios de rendimiento (por ejemplo, el evento de
un sensor debe ser reconocido en un segundo o menos; se debe implementar un
esquema para la prioridad de los eventos).
1 :IKil
170
PARTE DOS
ti
nec:esilamo$-
apropiodos.
CAPTULO 7
INGENIERA DE REQUJSITOS
171
Requisitos normales. Reflejan los objetivos y metas establecidos para un producto o sistema durante las reuniones con el cliente. Si estos requisitos estn presentes, el cliente estar satisfecho. Algunos ejemplos de requisitos normales podran ser los tipos de grficos en pantalla, las funciones especficas del sistema, y los
niveles de rendimiento solicitados.
Requisitos esperados. Estn implcitos en el producto o sistema y pueden parecer
tan obvios, aunque son fundamentales, que el cliente no los establece de manera explcita. Su ausencia causara una insatisfaccin significativa. Algunos ejemplos de requisitos esperados son la facilidad de la interaccin humano/mquina, correccin y confiabilidad operacional general y facilidad en la instalacin del software.
Requisitos estimulantes. Reflejan las caractersticas que van ms all de las
expectativas del cliente y que prueban ser muy satisfactorias cuando estn presentes. Por ejemplo, un software procesador de palabras se solcita con caractersticas
estndar. El producto entregado contiene varias capacidades de configuracin de
pgina que son bastante satisfactorias e inesperadas.
En la actualidad, el QFD abarca la totalidad del proceso de ingeniera [PAR96]. Sin
embargo, muchos conceptos del QFD son aplicables a la actividad de obtencin de requisitos. En los prrafos siguientes se presenta una visin general de dichos conceptos
(adaptados para el software de computadora).
?_..
"
wa.w,.,,.,
n1
11
PARTE DOS
172
,11:111
tabla de requisitos -llamada la tabla de la voz del cliente- que se revisa con el cliente.
Una variedad de diagramas, matnces y mtodos de evaluacin se utilizan para obtener
los requisitos esperados y tratar de conseguir los requisitos estimulantes [BOS91].
1:~-........
, 11111..S..:a Dinos (y apunlo o uno persono de
o6mo visualims el occeso ol sislema.
tacnia:
-~1
Humm , bueoo, es lo
tlllMea fuera de c:ma y tuviera que dejar a
.._ digamos uno penona de t.mpiezo o un
...,. il,w quien no lendrio el cdigo de
173
En un libro que analiza la manera de escribir casos de uso eficaces, Alistair Cockburn
[COCO I J menciona que "un caso de uso captura un contrato ... (que] describe el comportamiento del sistema en diferentes condiciones mientras ste responde a la peticin de uno de sus usuarios". En esencia, un caso de uso cuenta una historia estilizada de la manera en que un usuario final (el cual desempea uno de varios papeles posibles) interacta con el sistema en un conjunto especfico de circunstancias.
La historia puede ser un texto narrativo, un esquema de tareas o interacciones, una
descripcin basada en una plantilla o una representacin por medio de diagramas.
Sin importar su forma, un caso de uso muestra el software o sistema desde el punto
de vista del usuario final.
El primer paso al escribir un caso de uso consiste en definir el conjunto de "actores" que estarn involucrados en la historia. Los actores son las diferentes personas
11
11
174
.-~,
.........
.......
..........1
wm.., pllde
. . . . . . k,s
-deUSD.
Qu se
necesha
PARTE DOS
111a:1~111 ,
(o dispositivos) que utilizan el sistema o producto dentro del contexto de la funcioy el comportamiento que se describir. Los actores representan los papeles que jut
gan las personas (o dispositivos) conforme el sistema opera. Definido de una mane
ra ms formal, un actor es algn elemento que se comunica con el sistema o pre
dueto y que es externo al sistema en s mismo. Cada actor tiene una o ms metas
cuando utiliza el sistema.
Es importante sealar que un actor y un usuario final no son necesariamente
mismo. Un usuario tipico puede desempear varios papeles al usar un sistema
mientras que un actor representa una clase de entidad externa (con frecuencia, per
no siempre, una persona) que desempea slo un papel en el contexto del caso c1t
uso. Como un ejemplo, considrese al operador de una mquina (un usuario) qlk
interacta con la computadora de control para una clula de manufactura que cor
tiene varios robots y mquinas de control numrico. Despus de la revisin cuidadosa de los requisitos. el software para la computadora de control requiere cuatr
diferentes modos (actores) para su interaccin: modo de programacin, modo de
prueba. modo de monitoreo y modo de resolucin de problemas. Por lo tanto, St
pueden definir cuatro actores: el programador, el que realiza las pruebas, el que
monitorea y el que resuelve los problemas. En algunos casos el operador de la
mquina puede desempear todos estos papeles. En otras situaciones, son personas
diferentes las que pueden desempear el papel de cada actor.
Como la obtencin de requisitos es una actividad evolutiva, no todos los actores
se identifican durante la primera iteracin. Durante sta es posible identificar los
actores primarios [JAC92J, mientras que los actores secundarios se identifican conforme se aprende ms acerca del sistema. Los actores primarios interactan para
lograr la funcin requerida del sistema y obtienen el beneficio que se espera de ste
Ellos trabajan de manera directa y frecuente con el software. Los actores secundarios dan soporte al sistema de manera que los actores primarios puedan hacer su trabajo.
Ya identificados los actores pueden desarrollarse los casos de uso. Jacobson
[JAC92J sugiere varias preguntas 1 que se deberan contestar mediante un caso de
uso.
Quin(es) es(son) el(los) actor(es) primario(s)?
Cules son las metas del actor?
Cules son las condiciones previas que deben existir antes de comenzar la
historia?
Cules son las tareas o funciones principales que realiza el actor?
Cules excepciones podran considerarse mientras se describe la historia?
Cules son las variaciones posibles en la interaccin del actor?
11 Las preguntas de Jacobson se han extendido para proporcionar una visin ms completa del contenido del caso de uso.
CAPTULO 7
INGENIERA DE REQUISITOS
175
HogarSeguro
,....
rn
solida
en casa
instante
desviacin
no lisio
U/
alarma
verificar
fuego
'\
/
activado
encendido
o o
12 Ntese que este caso de uso difiere de la situacin en la cual se entra en el sistema a travs de Internet. En este caso, la interaccin se lleva a cabo por medio del panel de control. el acceso es diferente que cuando se utiliza una PC.
111111111! 11
176
PARTE DOS
El propietario utiliza el teclado para introducir una contrasea de cuatro dgitos. La contrasea se compara con la clave almacenada en el sistema. Si la contrasea es incorrecta, el panel de control emitir un sonido y se reiniciar para recibir otra entrada. Si la
contrasea es correcta, el panel de control esperar la siguiente accin.
3.
El propietario selecciona e introduce en casa o salida (vase la figura 7.2) para activar el
sistema. En casa activa slo los sensores del permetro (los sensores para la deteccin
de movimiento interno se desactivan). Salida activa todos los sensores.
4. Cuando se realiza la activacin, el propietario puede observar una luz roja de alarma.
El caso de uso bsico presenta una historia de alto nivel que describe la interaccir
entre el actor y el sistema.
En muchas ocasiones, los casos de uso tienen una mayor elaboracin para proporcionar ms detalles acerca de la interaccin. Por ejemplo, Cockbum [COCO!
sugiere la siguiente plantilla para las descripciones detalladas de los casos de uso
caso de uso:
rnsos de uso se
esaiben de manero
,::formol. Sin
Propietario de la casa.
Meta en el contexto:
Condiciones previas:
PJ11tillo mostrado
Activador:
Escenario:
Inicio de monitoreo
Actor primario:
CAPTULO 7
INGENIERA DE REQUISITOS
177
Disponible desde:
El primer incremento.
Frecuencia de uso:
Actores secundarios:
clave abreviada?
2. El panel de control debera desplegar otros mensajes de texto?
3. De cunto tiempo dispone el propietario para introducir la contrasea desde el
momento en que presiona la primera tecla'
4. Existe alguna fonna de desactivar el sistema antes de que ste se active en realidad?
Los casos de uso para las otras interacciones del propietario se desarrollaran de
una manera similar. Es importante sealar que cada caso de uso debe revisarse con
cuidado. Si algn elemento de la interaccin es ambiguo, existe la posibilidad de que
una revisin del caso de uso descubra el problema.
m1:n1
111 lili:ILIW
PARTE DOS
178
HogarSegvro.
:p.
Diagrama de
caso de uso
para la
funcin de
seguridad en
el hogar de
HogarSeguro.
ensores
13 Las herramientas mencionadas aqu son una muestra de esta categora. En la mayora de los casos
los nombres estn registrados por sus respectivos desarrolladores.
CAPTULO 7
INGENIERA DE REQUISITOS
179
El objetivo del modelo de anlisis es descnbir los dominios requeridos de informacin, funcionamiento y comportamiento para un sistema basado en computadoras.
El modelo cambia en forma dinmica conforme los ingenieros de software aprenden
ms acerca del sistema que se va a construir y los interesados entienden mejor lo
que necesitan. Por esta razn el modelo de anlisis es una representacin de los
requisitos en un momento determinado, por lo que se espera que ste cambie.
Conforme el modelo de anlisis evoluciona, ciertos elementos se volvern relativamente estables. por lo que proporcionarn una base slida para las tareas de diseo
que siguen. Sin embargo, otros elementos del modelo pueden ser ms voltiles, lo que
indicar que el cliente an no entiende por completo los requisitos para el sistema.
El modelo de anlisis y los mtodos utilizados para construirlo se describen con
detalle en el captulo 8. En las secciones siguientes se presenta una breve visin
general.
7.6.l
Existen muchas maneras de buscar los requisitos para un sistema basado en computadora. Algunas personas involucradas con el software dicen que lo mejor es seleccionar un modo de representacin (por ejemplo, el caso de uso) y aplicarlo sin tomar
en cuenta todos los modos restantes. Otros profesionales creen que resulta valioso
utilizar varios modos de representacin para mostrar el modelo de anlisis. Las diferentes formas de representacin obligan al equipo de software a considerar los
requisitos desde distintos puntos de vista, un enfoque que tiene mayores probabilidades de descubrir omisiones, inconsistencias y ambigedades.
Los elementos especficos del modelo de anlisis los determina el mtodo de
modelado que se utilice (captulo 8). Sin embargo, existe un conjunto de elementos
genricos comn a la mayora de los modelos de anlisis:
lllillllll 1111
180
PARTE DOS
nes) se pueden representar en muchos grados diferentes de abstraccin. Los modelos en esta categora pueden definirse de manera iterativa. Cada iteracin proporciona detalles adicionales del procesamiento. Como un ejemplo, en la figura 7.4 se
presenta un diagrama de actividad en UML para la obtencin de requisitos. 14 Se
muestran tres niveles de elaboracin.
iihili
Diagramas
de actividad
para la
obtencin de
documentos.
:
Obtener requisitos
.:..pj
Diagrama de
clase para el
Sensor.
Sensor
nombre/id
ti
u~acin
rea
caractersticos
identificar( )
activar()
desactivar()
reconfigurar{ )
14 El diagrama de actividad es bastante parecido al diagrama de !lujo: un diagrama grfico para representar las secuencias y lgica del !lujo de control (capi tulo 11 ).
CAPTIJLO 7
INGENIERA DE REQUISITOS
181
Lectura
de comandos
Mensaje desplegado ..
introducir cmd*
Variables de estado
Estatus despl
do estable
Entrodo/subsistemas listo
Accin: pedir lo entrado del
usuario en el pone!
Accin: leer lo entrada del
usuario
Accin: interpretar la entrada
del usuario
111111111 11
Actividades de estado
182
PARTE DOS
HOGARSEGURO
~
recopt1ocion de
......
usuario!
el mnpor1amienlo de lo funcin
. . . . . -cad..._: Yo no entiendo lo que
Per1011a ele
mercado18aN: Eh... ~ 4
Madt adan
explicotles.
._ador
'- explica cil equipo de recopilacin
de
No exac1ameni.. Dervne
(El
CAPTULO 7
183
INGENIERA DE REQUISITOS
Los patrones de anlisis se integran al modelo respectivo mediante una referen cia al nombre del patrn. stos tambin se encuentran almacenados en un depsito
para que los ingenieros de requisitos puedan utilizar los servicios de bsqueda y as
encontrarlos y reutilizarlos.
La informacin acerca de un patrn de anlisis se presenta en
dar que tiene la siguiente forma[GEYOIJ: 16
Nombre del patrn: un descriptor que captura la esencia del patrn. El descriptor se
utiliza dentro del modelo de anlisis cuando se hace alguna referencia al patrn.
Motivacin: un escenario que ilustra la forma en que el patrn se puede utilizar para
atacar el problema.
Fuerzas y contexto: una descripcin de los aspectos externos (fuerzas externas) capaces de afectar la manera en que se utiliza el patrn, as como de los asuntos externos
que sern resueltos cuando se aplique el patrn. Los aspectos externos pueden incluir
cuestiones relacionadas con los negocios. restricciones tcnicas externas. y asuntos rela cionados con las personas.
solucin: una descripcin de la forma en que se aplica el patrn para resolver el problema, poniendo especial atencin en los aspectos estructurales y de comportamiento.
Consecuencias: se enfoca en lo que sucede cuando se aplica el patrn y en los cambios que se producen durante su aplicacin.
15 En algunas situaciones las cosas se repiten sin importar el dominio de aplicacin. Por ejemplo, las
caractersticas y funciones de las interfases del usuario son comunes, independientemente del dominio de aplicacin que se considere.
16 En la bibliografia se ha propuesto una variedad de plantillas de patrn. Los lectores mteresados pue
den consultar [FOW97J. (BUS961 y (GAM.95) entre much~ otras fuentes.
184
En el captulo 8 se presentan ejemplos de patrones de anlisis, as como otros anlisis de este tpico.
Patrones
los patrones se pueden ver en casi cualquier
actividad de la vida diario.
Considrense las pelculas de accin y aventuras -de
manero ms especfico los pelculas policiacos de accin y
ovenluros con matices de comedio--. Se pueden definir
patrones poro el HroeyCompaiero, CapilnJefede/Hroe,
CriminakonCorazn y muchos ms.
Por ejemplo, el Capiln/efede/Hroe de manero invariable
es ms viejo, uso corbata (el hroe no), les grita en Formo
constonle al HroeyCompaero, usuolmenle es quien da el
7,7
dromtico.
Poro un ejemplo algo ms tcnico considrese un
telfono celular. Los siguientes patrones son obvios: Uamar
BuscarNmero, VerMensojes entre muchos otros. Coda
uno de estos patrones puede describirse uno vez y despus
reutilizarse en el software para cualquier telfono celular.
HEGQSJ6SJ6N PI 119VHJt93
En un contexto ideal de la ingeniera de requisitos, las tareas de inicio, obtencin
elaboracin determinan los requisitos con el suficiente detalle como para emprerder los pasos subsecuentes de la ingeniera del software. Desgraciadamente, es~
sucede muy rara vez. En realidad, el cliente y el desarrollador entran en un proces-.
de negociacin, en el cual se le debe pedir al cliente un balance de la funcionalidad
el rendimiento y otras caractersticas del sistema o producto frente al costo y el tie!l'
po de colocacin en el mercado. El objetivo de esta negociacin es desarrollar u:plan de proyecto que satisfaga las necesidades del cliente al mismo tiempo que refleja las restricciones del mundo real (por ejemplo, tiempo, gente, presupuesto) a Ice
que est sometido el equipo de sottware.
~ awerdo es ti1lle de mwli 111 pa5tel de tal formo que mdo t.n0 pense que se qued (1)11 la rebonGllo mspide.
~,..
Las mejores negociaciones son aquellas que buscan un resultado del tipo "ganarganar".17 Esto es, el cliente gana al obtener el sistema o producto que satisface la
17 Se han escrito docenas de libros sobre las aptitudes para la negociacin (POr ejemplo, [LEWOO), [FAR9T
[D0N96J) sta es una de las competenoas ms importantes que un ingeniero o gerente de software~
ven (o no tan joven) puede aprender. se recomienda leer al menos uno de los libros mencionados.
CAPTULO 7
INGENIERA DE REQUISITOS
185
mayora de sus necesidades, y el equipo de software gana al trabajar con presupuestos y lmites de tiempo realistas y alcanzables.
Bohem [B0E98J define un conjunto de actividades de negociacin en el inicio de
cada iteracin del proceso del software. En lugar de la actividad sencilla de comunicacin con el cliente, se definen las siguientes actividades:
1. Identificacin de los interesados clave en el sistema o subsistema.
El arte de la negoctacin
El oprendizoje del orte de lo negociocin
efectivo es uno octividod que sirve o travs de
-..o lecnico y persono!. Lo considerocin de las
~i::a'lles directrices puede resultar muy volioso:
186
tenemos_...
Al crear cada elemento del modelo de anlisis, ste se examina para conocer su e
sistencia, sus omisiones y ambigedades. A los requisitos que representa el mOG.
el cltcnle les da jerarqua y se agrupan en paquetes de requisitos que se implen'~
tan como incrementos de software y se le entregan. Una revisin del modelo de a.
lisis se enfoca en las siguientes preguntas:
iJ
Cuando se
revisan los
requisitos, cules
preguntas deben
hacerse?
CAPTULO 7
INGENJERA DE REQUISITOS
187
Antes de que el diseo y la construccin de un sistema basado en computadora puedan comenzar, es necesario entender los requisitos. Esto se logra realizando una
serie de tareas de ingeniera de requisitos, la cual se lleva a cabo durante las actividades de comunicacin con el cliente y modelado que han sido definidas para el proceso genrico del software. Los miembros del equipo de software realizan siete funciones distintas dentro de la ingeniera de requisitos: inicio, obtencin, elaboracin,
negociacin, especificacin, validacin y gestin.
Al inicio del proyecto el desarrollador y el cliente (as como otros interesados)
establecen los requisitos bsicos del problema, definen las restricciones predominantes del proyecto y especifican las caractersticas y funciones ms importantes
que deben estar presentes en el sistema para que ste alcance sus objetivos. Esta
informacin es expandida y refinada durante la obtencin, una actividad para la
recopilacin de requisitos que emplea reuniones que encabeza un moderador facili tadas, el QFD y el desarrollo de escenarios de uso.
La elaboracin posterior expande los requisitos hacia un modelo de anlisis; es
decir, una coleccin de elementos del modelo basados en escenarios, en actividades
y en clases. de comportamiento y orientados al flujo. En la creacin de estos ele-
REFERENc14s
[B0E98I Boehm, B. y A. Egyed, "SOftware Requirements Negotiation: Sorne Lcssons Learned",
en Proc. InU. Conf. Sofa.vare Engineering, ACM/IEEE, 1998, pp. 503-506.
fBOS91]Bossert, J. L., Quality Function Deployment: A Practitioner's Approach, ASQC Press, 1991.
fBUS96J Buschmann, F. et al., Pattem-Oriented Sojhvare Ardutecture: A system Pattcm, Wiley,
1996.
1 11tt11--- ---""""!!!
188
PARTE DOS
7.1. Por qu varios desarrolladores de software no prestan mucha atencin a la ingeniera '""'"
requisitos? Se llegan a dar circunstancias en las que se puede omitir?
7 .2. Qu implica el "anlisis de factibilidad" cuando se examina dentro del contexto de la fil:'
cin inicio?
7 .3. A usted se le ha dado la responsabilidad de obtener requisitos de un cliente que dice eStie'
demasiado ocupado para reunirse con usted. Qu debe hacer?
7.4. Exponer algunos de los problemas que pueden surgir cuando los requisitos deben obte
nerse de tres o cuatro clientes diferentes.
7.5. Por qu se dice que el modelo de anlisis representa una foto instantnea de un sistel"'
en el tiempo?
7 .6. Suponga que ha convencido al cliente (usted es un excelente vendedor) de cada deman....
que ha hecho como desarrollador. E.so lo convierte en un negociador experto? Por qu?
7. 7. Desarrollar al menos tres "preguntas de contexto libre" adicionales que pueda hacerle
algn interesado durante la fase de inicio.
7 .8. A travs de este captulo se ha hecho referencia al "cliente". Describa al "cliente" para
desarrolladores de sistemas de informacin, para constructores de productos basados en com~
tadora, para constructores de sistemas. Debe tenerse precaucin: pueden existir ms clientes e
este problema de lo que se imagina.
7.9. Desarrolle un "paquete" que facilite la recopilacin de requisitos. El equipo debe incluir 1.:
conjunto de directrices para realizar una reunin de recopilacin de requisitos y una serie c..
materiales que puedan utilizarse para facilitar la creacin de listas y otros dispositivos que p~
dan ayudar en la definicin de requisitos.
189
7 . 1 O. El profesor har grupos de cuatro o cinco estudiantes. La mitad del grupo representar el
papel del departamento de mercadotecnia, y la otra mitad, el de ingeniera del software. LO que
se pretender es definir los requisitos para la funcin de seguridad de HogarSeguro, descrita en
este captulo. Realizar una reumn de recopilacin de requisitos mientras se utilizan las directrices presentadas en este captulo.
Debido a que es pnmordial para la creacin exitosa de cualquier sistema complejo basado en
computadora, la ingemeria de requ1s1tos se expone en una gran cantidad de libros. Hull y sus
colegas (Reqwrements Engineering, Springer-Verlag, 2002). Bray (An Jntroduction to Requircments
Engineering, Addison Wesley, 2002). Arlow (Requirements Engineering, Addison-Wesley, 2001),
Gllb (Requirements Engineenng, Addison-We.~ley, 2000), Craham (RC<fuirements Cngimx:m15 urr
Rapid Development, Addison-Wesley, 1999) y Sommerville y Kotonya (Requirement,; Engincering
Proceses and Techniques, Wiley, 1998) son slo algunos libros dedicados a este tema. Dan Bcrry
(http://se uwaterloo.ca/-dberry/b1b html) ha publicado una amplia variedad de escritos acerca
de tpicos relacionados con la ingeniera de requisitos.
Lauesen (Software Requiremencs. St_yles and Techniques. Adchson Wesley, 2002) presenta una
amplia muestra de notaciones y mtodos para el anlisis de requisitos. Wcigers (Software
Requirements, Microsoft Press, 1999) y Leffingwell y sus colegas (Managmg Software Requiremencs:
A Unijied Approach, Addison-Wesley, 2000) presentan una coleccin til de las mejores prcticas de requisitos y sugieren guias pragmticas para casi todos lo~ aspectos del proceso de la
ingenierla de requisitos.
Robertson y Robertson (Mastcnng the Rcqwremencs Process, Add1son Wesley, 1999) presentan un estudio de caso muy detallado que ayuda a explicar todos los aspectos del anhsis de
requisllos y el modelo de anlisis de sofiware. Kovitz (Practica/ Software Reqwrements: A Manual
ofContent and Style, Manning Publications, 1998) explica paso a paso un enfoque para el anlisis de requisitos y una gua de estilo para aquellos que deben desarrollar especificaciones de
requisitos Jackson (Sojlware Requirements Analysis and Spedjication A LexJcon of Practices,
Pnndples and Prejudices, Addison-Wesley, 1995) presenta una visin sugerente del tema de la A
a la z (de manera literal). Plocsch (ASSeltlons, Scenanos and Prototypes, Spnnger-Verlag, 200.3)
explica tcnicas avanzadas para desarrollar requisitos de software.
190
PARTE DOS
Windle y Abreo (Software Reqwrements Using the Unified Process, Prentice-Hall, 2002) exponen la ingeniera de requisitos dentro del contexto del proceso unificado y la notacin del UML
Alexander y Steven (Writing Better Requirements, Addison-Wesley, 2002) presentan un breve
conjunto de directrices para escribir requisitos claros, representarlos como escenarios y revisa:
el resultado final.
El modelado de casos de uso es a menudo el conductor de la creacin de todos los dems
aspectos del modelo de anlisis. Bitlner y Spence (Use-case Modeling, Addison-Wesley, 2002
examinan el tema de manera amplia, as como Cockbum [COCO I J, Armour y Miller (Advanca.
Use-Case Modeling: Software systems, Addison-Wesley, 2000), Kulak y sus colegas (Use Cases
Requirements in Context, Addison-Wesley, 2000), y Schneider y Winters (.Applying Use Cases
Addison-Wesley, 1998).
En Internet se puede disponer de una amplia variedad de fuentes de informacin sobre anlisis e ingeniera de requisitos. En el sitio web de SEPA, http:// www.mhhe.com/pressman,
se puede encontrar una lista actualizada de referencias en la red mundial que son relevantes
para el anlisis y la ingeniera de requisitos.
MODELADO
DEL ANLISIS
Los productos del anlisis deben tener una elevada facilidad de manteni-
Aunque DeMarco escribi acerca de los atributos del modelado del anlisis hace
ms de un cuarto de siglo, sus contribuciones se siguen aplicando en la notacin
y los mtodos modernos de modelado del anlisis.
191
11
192
~
~~
C~VE
El modelo de onlisis y
lo especificacin de
requisitos proporciono
un medio paro evoluar
el software est
construido.
PARTE DOS
11
il&:1111
CAPTULO 8
193
seguro de qu enfoque especfico realizar la funcin y si se desempear de manera apropiada. Estas realidades favorecen un enfoque iterativo para el anlisis y el
modelado de requisitos. El analista debe modelar lo que se conoce y utilizar ese
modelo como base para disear un incremento de software. 2
8.1.1
1IUIJ
194
1a1111ilia.aill_ __
El modelo debe centrarse en los requisitos visibles dentro del problema o dominio
de negocio. El grado de abstraccin debe ser alto deforma relativa. HNo se debe
perder tiempo en detalles" [ARL02] que tratan de explicar cmo funcionar el
sistema.
Cada elemento del modelo de anlisis debe agregarse a un acuerdo general de los
requisitos de software y proporcionar una visin interna del dominio de informacin, funcin y comportamiento del sistema.
Debe retrasarse la consideracin de la infraestructura y otros modelos no funcionales hasta el diseo. Por ejemplo, es posible que se requiera una base de
datos, pero las clases necesarias para implementarla, las funciones que se
requieren para acceder a ella y el comportamiento que se exhibir cuando se
utilice debe considerarse slo despus de que se haya completado el anlisis
de dominio del problema.
Se debe minimizar el acoplamiento de todo el sistema. Es importante representar las relaciones entre clases y funciones. Sin embargo, si el nivel de
"interconexin" es extremadamente alto se deben hacer esfuerzos para
reducirlo.
El modelo debe mantenerse tan simple como sea posible. No se deben agregar
diagramas adicionales cuando stos no ofrezcan informacin nueva. No se
deben utilizar formas de notacin nuevas cuando basta con una simple lista.
Cbif:iiN:'i
&i -w.ltv,ls.
etm/F.r,,/ii,ft/
Sohww.
illplNrflll/
SL-45.mp
puedeitenconlrols&
mucnos rerurmIJlles
\l(llO el onfis~ del
domino.
195
..
1terotura tecnica
Aplicaciones existentes
'-tes del
iento
~dominio
Taxonomas de clase
"I
Modelos funcionales
Lenguajes de dominio
. Anlisis
. del dominio
'-
Estndares de reutilizacin
Modelo
de anlisis
del dominio
Pero, en primer lugar, cmo se reconocen los patrones de anlisis? Quines los
definen, los asignan a una categora y los preparan para aplicarlos en proyectos subsecuentes? Las respuestas a estas preguntas residen en el anlisis del dominio.
Firesmith [FIR93] describe el anlisis del dominio de la siguiente manera:
El anlisis del dominio de software es la identificacin, el anlisis y la especificacin de requisitos comunes de un dominio especifico de aplicacin para, de manera tpica, reutilizarlo en mltiples proyectos dentro de ese dominio de aplicacin... [El anlisis del
dominio orientado a objetos es) la identificacin, el anlisis y la especificacin de capacidades comunes reutilizables dentro de un dominio especifico de aplicacin, en trminos
de objetos, clases, subensamblajes y marcos de trabajo.
3 Una visin complementaria del anlisis del dominio "involucra el modelado del dominio de forma
que los ingenieros de software y otros interesados puedan aprender ms de l... no todas las clases
del dominio resultan necesariamente en el desarrollo de clases reutilizables"[LET031.
4 No debe suponerse que si se cuenta con la colaboracin de un analista del dominio, un ingeni ~ro de
sollware no tiene por qu comprender el dominio de aplicacin. Todos los miembros de un equipo
de software deben tener algn conocimiento del dominio en el cual se colocar el software.
11.w111m
196
Una visin del modelado del anlisis, llamado anlisis estructurado, considera que le"
datos y el proceso que transforman los datos son entidades separadas. Los objet~
de datos se modelan en una forma que define sus atributos y relaciones. Los proce
sos que manipulan los objetos de los datos se modelan de tal manera que muestra-cmo transforman los datos, mientras los objetos de datos fluyen por el sistema.
Un segundo enfoque del modelado del anlisis, llamado anlisis orientado a ObJC
tos, se centra en la definicin de clases y en la manera en que stas colaboran entre
ellas para efectuar los requisitos del cliente. El UML y el proceso unificado (capitu;,
3) estn orientados a objetos en forma predominante.
B[uilisls es fruslronte, lleno de relaciones interpersonales comple;os, indefinido y clfidl. En ,acm palalns, a
fasdimte. Una .ez que ests engonc:hodo, el viejo placer de lo coostruccin de sistemas IIIIKO ser~ pn
Slllicwte.
.......
ir. qlldeliemos construir modelos?Por qu no construimos el sistema y yo? la respuesta es que podemos
c.stJtir modelos de tol forma que resabemos o enfali<emos ciertos coraderisticos crticas de un sistema, al "*-,o que
nfasis ootros aspedos del sistema.
.-nos
CAPTULO 8
197
E......._ orientados
'""""'
de
de
E'-basodos
C0$0S de U>O, lexlo
Co$0S de u>0, d,agromos
Diogromos de octiYidod
Diogramos de corril
Diogromos
flujo
dolos
Oiogromos de flujo de control
Narrativos de procesomiento
..._.._...
...........
1
Modelo de anlisis
..._._
e
Diagramas de do...
PoqueleS de onlis"
Modelos CRC
Diogromos de colaboracin
O.ogromos de eslodo
O.ogromos de sec-.ncio
Esta distincin separa los objetos de datos y las clases u objetos definidos como parte del enfoque
orientado a objetos.
198
PARTE DOS
iihtiii
Representacln
Nombres
de atributos
tabular d e
ob jetos de
datos.
Morco Modelo # de id
lexus LS400 AB123 . .
Instancio Cbtncy
BMW
Ford
.,
n
Sedan
Color
Blanco
Corwlle U56. . .
Ro
ceo
750il
Tourus
Coup
Blanco
Azul
UL
XZ765. . .
O 12AA5 .. Sedn
RSP
BLF
8.3.2 Abibutos
~~
cf&v1
describen sus
coracterstic05 y, en
oltmis cosos, hocen
referencia ootro
objeto.
t hif:iltlM1
e-.....,es
.l'MliiaJli(l.
.........
.......,,.
impol1onll pllU
aqillll .. inllAlan
.....
Atributos
Atributos
identificador
descriptivos
referenciales
~~~
-..&i ....
Los atributos definen las propiedades de un objeto de datos y toman una de las tR
caractersticas diferentes. Se pueden utilizar para 1) nombrar una ocurrencia c.
objeto de datos, 2) describir la ocurrencia o 3) hacer referencia a otra ocurrencia ~
otra tabla. Adems, se debe definir uno o ms atributos como un identificador; ~
decir, el atributo identificador se convierte en una "clave" cuando se desea encone-_
una ocurrencia del objeto de datos. En algunos casos. los valores para el (los) ide,..
tificador(es) son nicos, aunque esto no es un requisito. En referencia al objeto .:
datos auto, un identificador razonable podra ser el nmero de serie.
El conjunto de atributos apropiado para un objeto de datos se determina median
te la comprensin del contexto del problema. Los atributos para auto sirven b1....
para una aplicacin que utilice el Departamento de vehculos de motor, pero est
atributos seran intiles para una compaa automotriz que necesite un soft.wafl
para el control de fabricacin En este ltimo caso, los atributos para auto tal "
incluiran tambin nmero de Nrie, tipo de oanoceria y color, pero adems tendran
adicionarse muchos ms atributos (como cdigo interior, tipo de tren de manejo, desia,.dor de paquete de ajuste, tipo da transmisin) para hacer de auto un objeto significan
en el contexto de control de fabricacin
INFORMACIN
CAPTULO 8
199
pe=no -l
_,automvil
El
a::d? automvil
poro monet _r.__ _..
8.3.3 Relaciones
Los objetos de datos estn conectados entre si de muchas maneras diferentes. Por
ejemplo, dos objetos de datos, persona y auto, pueden representarse con la simple
notacin ilustrada en la figura 8.Sa. Se establece una conexin entre persona y
auto porque los objetos se relacionan entre s. Pero, cules son las relaciones? La
respuesta se determina entendiendo el papel de las personas (propietarios, en este
caso) y de los autos dentro del contexto del software que se construir. Se puede
definir un conjunto de parejas objeto/relacin que definan las relaciones relevantes.
Por ejemplo:
Una persona posee un auto.
una persona est asegurada para condudr un auto.
Las relaciones posee y est asegurada para conducir definen las conexiones relevantes entre persona y auto. En la figura 8.5b se ilustran estas parejas objeto/relacin
de manera grfica. Las flechas de la figura 8.5b ofrecen informacin importante
acerca de la direccionalidad de la relacin y a menudo reducen la ambigedad o las
malas interpretaciones.
8.3.4 Cardinalidad y modalidad
Los elementos del modelado de datos -objetos de datos, atributos y relacionesofrecen la base para entender el dominio de informacin de un problema. Sin
embargo, tambin es necesario comprender informacin adicional relacionada con
estos elementos bsicos.
Hasta este punto se ha definido un conjunto de objetos y se han representado las
parejas objeto/relacin que los limitan. Pero un simple par que establece que
objetox se relaciona con objetoY no proporciona suficiente informacin para los
propsitos de la ingeniera del software. se debe entender cuntas ocurrencias del
objetoX estn relacionadas con cuntas ocurrencias del objetoY. Esto conduce al
concepto del modelado de datos llamado cardinalidad.
El modelo de datos debe ser capaz de representar el nmero de ocurrencias de
los objetos en una relacin dada. Tillmann (TIL93J define la cardinalidad de un par
objeto/relacin de la siguiente manera: "cardinalidad es la especificacin del nme-
PARTE oos
200
Cmo se
maneja ana
situacin en la
que un objeto de
datos est relo
donado con la
0<11rrenda de
muchos otros
objetos de datos?
mcrteA. oc u
Diagramas de entidad-relacin
la parejo objeto-relacin es lo piedra angular
del modelo de datos. fatos parejos pueden
representarse de manero grfico mediante el diagramo ele
entidad relacin (DER). 7 El DER lo propu$0 originalmente
Peter Chen (CHE77] poro el diseo de sistemas de bases
relacionales, y despus otros lo han ampliado. Con el DER
se identifico un conjunto de componentes primarios:
objetos ele datos, atributos, relaciones e indicadores de
varios tipos. El propsito primordial del DER es representar
objetos de datos y sus relaciones.
Yo se ha hecho uno introduccin ele lo notocin
rudimentario poro el DER. las objetos de datos se
de informan sea ti, confiable, adoptable y e<onmico debe estar basado ,riarD .,
......_ de datos, y slo de manera secundario en el antisis del proceso .. . porque la tsi1ldWa 4t clalls llfln
4e fuma inherente o la ve,dod, mientras que el proceso es relativo a la taim.
Modelado de datos
J
6 Por eemplo, un to puede tener muchos sobnnos y un sobrino puede tener muchos tos
7 Aunque el DER todava se usa en algunas aplicaciones para el diseno de bases de datos, en la actualidad la notacin en UML es la ms utilizada para el diseo de datos
CAPTULO 8
il::t;:;:,on:ic:
>non un medio outomotizodo poro creor
a::::::rcMOs
"'1<Xlelos relocionodos.
relaciones. En
cosos utilizan lo notacin del DER; en otros
a:::=anes modelan los relaciones por medio de otros
-~-"'-. Adems permiten lo creacin de un modelo
datos ol generar un esquema de bose de datos
201
SMBO.
nmmentas representativas
1. Deben comunicarse los requisitos bsicos del usuario entre el cliente y el ingeniero de software.
2 . Deben identificarse las clases (es decir, se definen los alributos y mtodos) .
3. Se define una jerarqua de clases.
4 . Deben representarse las relaciones de objeto a objeto (conexiones entre objetos).
5. Debe modelarse el comportamiento del objeto.
Las herramientas mencionadas aqu son una muestra de esta categona. En la mayora de los casos
los nombres estan registrados por sus respectivos desarrolladores
202
PARTE DOS
9 Los casos de uso son una parte particularmente importante del modelado del anliso
terfases con el usuario. El anlisis de la interfaz se trata con detalle en el captulo 12
CAPTULO 8
203
de un actor definido. 10 Pero cmo puede saberse 1) sobre qu escribir? 2), cunto
escribir acerca de ello? 3), qu tan detallada debe ser la descripcin?, y 4) cmo organizar la descripcin? Estas son las preguntas que deben contestarse para que los casos
de uso tengan un valor como herramienta para el modelado del anlisis.
11a . . dtuso]sonsimplemente uno ayudo poro definir lo que existe fuero del sistemo (lidores) yle
que.,_.
Sobre qu escribir? Las primeras dos tareas de la ingeniera de requisitos 11 -inicio y obtencin- proporcionan la informacin necesaria para comenzar a escribir
casos de uso. Las reuniones para la recopilacin de requisitos, despliegue de la funcin de calidad (QFD) y otros mecanismos para la ingeniera de requisitos se utilizan
para identificar a los interesados, definir el mbito del problema, especificar las
metas operativas globales, esquematizar todos los requisitos funcionales conocidos
y describir las cosas (objetos) que manipular el sistema.
El desarrollo de una serie de casos de uso se comienza haciendo una lista de las
funciones o actividades que realiza un actor especfico. stas pueden obtenerse de
una lista de funciones requeridas del sistema por medio de conversaciones con los
clientes o usuarios finales, o mediante una evaluacin de los diagramas de actividad
(seccin 8.5.2) desarrollados como parte del modelado del anlisis.
1O Un actor no es una persona especfica, sino el papel que desempea una persona (o dispositivo) dentro de un contexto especfico. Un actor "llama al sistema para entregar uno de sus servicios"
[COCO!).
204
de lo boca.
~ b : Mm.... Quiero ~nr deso o lo func_ir de
vigilancia, )'QW!l o JtV~ de lo PC o de Intern!, Sienlo '
que el acceso por lntrnet serq el de lfSO ms frecuen!e,
De <UO)quier manero, quiero ser capaz de desplegar
vi$lm de ls c4moros en uno PC. y COfl,trolor el
dro identifica las siguientes funciones (una lista abreviada) que realiza el actor ide-:tificado como propietario de la casa:
Tener acceso a la cmara de vigilancia va Internet.
Seleccionar la cmara que desea ver.
Solicitar vistas en miniatura de todas las cmaras.
Desplegar vistas de la cmara en una ventana de una PC.
Controlar la visin panormica y de acercamiento en una cmara especfica
Registrar en forma selectiva la salida de cmara.
Repetir la salida de cmara.
Conforme se realizan las conversaciones posteriores con el interesado (qu.
desempea el papel de un propietario), el equipo de recopilacin de requisitos desarrolla casos de uso para cada una de las funciones mencionadas. En general,
casos de uso se escriben primero en un estilo narrativo informal. Si se requie:
mayor formalidad se rescribe el mismo caso de uso utilizando un formato estruc:.rado similar al propuesto en el captulo 7 y reproducido en esta seccin como t=:
recuadro.
Con fines ilustrativos, considrese la funcin "acceso a cmara de vigilancia-des
pliegue de vistas de cmara (ACV-DVC)". El interesado que desempea el papel de.
propietario podra escribir el siguiente relato:
CAPTULO 8
205
Una variacin del caso de uso relatado presenta la nteraccin como una secuencia
ordenada de las acciones del usuaro. cada accin se representa como un enunciado declarativo. Despus de vsitar la funcin ACV-DVC, se puede escrbir:
Caso de uso: Acceso a cmara de vigilancia-despliegue de vistas de cmara
(ACV-DVC)
Actor: propietario
Es importante destacar que esta presentacin secuencial no considera algunas interaccones alternativas (la narrativa tiene un flujo ms lbre y representa unas cuantas altematvas). Los casos de uso de este tipo se refieren algunas veces como esce-
PARTE DOS
alteraatlvos dt
1<dn mientras
se desarrolla un
caso de uso?
El actor puede ejecutar otra accin en este punto? La respuesta es: "s". Con refe
cia al relato de flujo libre, el actor puede elegir ver las vistas en miniatura de to
las cmaras de manera simultnea. Por ende, un escenario secundario podra ~
"Ver las vistas en miniatura de todas las cmaras".
Es posible que el actor encuentre alguna condicin de error en este punto? Cua,
un sistema basado en computadora est en funcionamiento puede ocurrir cualqu
cantidad de condiciones de error. En este contexto se consideran slo las conct..
nes de error que pueden ocurrir como resultado directo de las acciones descritas
los pasos 6 o 7. De nuevo, la respuesta a la pregunta es: "si". Puede ser que nun
se haya configurado un plano de planta con iconos de las cmaras. Por lo tanto
elegir "seleccionar una cmara" se produce una condicin de error: "no existe
plano de planta configurado para esta casa" . 12 Esta condicin de error se convie~..e
en un escenario secundario.
12 En este caso, otro actor, el administrador del sistem a, tendra que configurar el plano de planta
instalar e inicializar (es decir, asignar una ID a cada equipo) para todas las cmaras, as como rea
lizar pruebas para estar seguro de que cada una de ellas es accesible por medio del sistema y a tra
vs del plano de planta.
CAPTULO 8
207
at metlOS oc.ho-corodtre$l,
Excepciones:
controseas".
Disponible en:
Frecuencia de uso:
El tercer n c ~ .
Poco fr$Cu..-,le.
208
Aspedal pandientes
3.
idi i:iid','1
(undo se hon
Mlllootips."1f
En muchos casos no es necesario crear una representacin grfica de un escerio de uso. Sin embargo, la representacin diagramtica puede facilitar la compre
sin, en particular cuando el escenario es complejo. Como se mencion en el ca1i
tulo 7, el UML proporciona una capacidad para hacer diagramas de casos de uso pi
liminar para el producto HogarSeguro. Cada caso de uso se representa mediante w
valo. En esta seccin slo se ha examinado en detalle el caso de uso para el AC\
ove.
IIS~.
......
Diagrama
prellminar de
caso de uso
para el
sistema
HogarSeguro.
HogarSeguro
Cmaros
CAPTULO 8
209
Introducir contraseo - - - - - - - ~
e ID del usuario
Contraseas/ID vlidos
Contraseas/ID no vlidos
Tambin se pueden
seleccionar
otras funciones
Restan intentos
de entrado
Seleccionar uno
cmara especfico
Vistos en miniatura
Opcin para
otro vista
Ver otro cmaro
En la figura 8. 7 se muestra un diagrama de actividad para la funcin de ACVDVC. se debe resaltar que el diagrama de actividad agrega detalles adicionales que
no se mencionan de manera directa (pero s implcita) en el caso de uso. Por ejemplo, un usuario puede intentar ingresar la IDusuario y la contrasea slo un nmero limitado de veces. Esto se representa mediante un rombo de decisin debajo de
210
Propietario
Introducir contraseo
e ID del suorio
Cmara
Interfaz
--------+----------+--------------.
Controseos/lD vlidos
Seleccionar na
funcn importante
Tambin se
pueden
seleccionar . - - - ~ - - - airas
Seleccionar vigiloncio
funciones
Vistos en
Generar salido
de video
Visto de solida de cmara
en uno ventana eti uetodo
Ver otro
cmoro
--,
&~
C~VE
lm~de
enUML
~elllujode
ma:aones y las
decisixles e indico
dmlWGll
deeh
como segmentos paralelos que dividen el diagrama en forma vertical, como los
carriles de una alberca.
Exislen lres clases de anlisis - Propietario, Inteaz y Cmara- con responsabilidades directas o indirectas en el contexto del diagrama de actividad representado
en la figura 8.7. Respecto de la figura 8.8, el diagrama de actividad se reorganiza de
forma que las aclividades asociadas con una clase de anlisis particular pertenezcaJl
al carril correspondiente a dicha clase. Por ejemplo, la clase Interfaz representa la
interfaz con el usuario de acuerdo con la visin del propietario. El diagrama de actividad considera dos opciones que son responsabilidad de la interfaz: opcin para el rem-
CAPTULO 8
211
greso y opcin para otra vista. Estas opciones y las decisiones asociadas con ellas per-
tenecen al carril de Interfaz. Sin embargo, las flechas conducen desde ese carril de
regreso al carril de propietario, donde ocurren las acciones del propietario.
El modelado de datos orientado al flujo es una de las notaciones de anlisis utilizadas con mayor amplitud en la actualidad. 13 Aunque el diagrama de flujo de datos
(DFD) y los diagramas y la informacin relacionados no son una parte formal de
UML, pueden utilizarse para complementar los diagramas en UML y proporcionar un
conocimiento adicional de los requisitos y el flujo del sistema.
El DFD tiene una visin del sistema del tipo entrada-proceso-salida. Esto es, los
objetos de datos fluyen hacia el interior del software, se transforman mediante elementos de procesamiento, y los objetos de datos resultantes fluyen al exterior del
software. Los objetos de datos se representan mediante flechas rotuladas y las transformaciones se representan por medio de crculos (tambin llamadas burbujas). El
DFD se presenta en una forma jerrquica. Esto es, el primer modelo de flujo de datos
(algunas veces llamado un DFD de nivel O o diagrama de contexto) representa el sistema como un todo. Los diagramas de flujo de datos subsecuentes refinan el diagrama de contexto, ya que proporcionan una cantidad creciente de detalles con cada
nivel subsiguiente.
e propsito de los diogrQIJ)Os de flujo de datos es proporcionar un puente semntico entre los usuo(ros ylos
'
-.,olfadores de sistemas.
8.6.1
El diagrama de flujo de datos permite que el ingeniero de software desarrolle modelos del dominio de informacin y del dominio funcional al mismo tiempo. A medida
que el DFD se refina hacia grados mayores de detalle, el analista desempea una
descomposicin funcional implcita del sistema. Al mismo tiempo, el refinamiento
del DFD resulta en un correspondiente refinamiento de datos mientras se mueve
hacia los procesos que incorporan la aplicacin
Unas pocas directrices simples permiten obtener una ayuda invaluable durante la
creacin de un diagrama de flujo de datos: 1) el nivel Odel diagrama de flujo de datos
debe representar al software/sistema como una sola burbuja; 2) la entrada y la salida primaria deben establecerse con cuidado; 3) la refinacin debe comenzar por el
aislamiento de procesos, objetos de datos y almacenamientos de datos candidatos a
ser representados en el siguiente nivel; 4) todas las flechas y burbujas se deben rotular con nombres significativos; 5) se debe mantener la continuidad del flujo de infor-
212
iihiiKi
DFDalnlvel
Panel
de contexto
de control
para la
Oesplegue
delpoi,el
de control
funcin de
seguridad de
HogarSeguro.
Sen10tt1$
~~
'*'
c&v1
de informacin debe
montene~ conforme
se refino codo nivel del
DFD. Esto significo que
lo entrado ysolido en
oo nivel deben ser los
mismas 11J8 lo entrodo
y soillo en un nivel
refinado.
lneio
telelni<:o
14 Esto es, los objetos de datos que fluyen hacia el sistema o cualquier transformacin en algn nivel
deben ser los mismos objetos de datos (o sus partes constituyentes) que fluyen hacia la transformacin en un nivel ms refinado
15 Una narrativa del procesamiento es similar en estilo al caso de uso, pero algo diferente en propsito. La narrativa del procesamiento proporciona una descripcin general de la funcin que ser desarrollada. No es un escenario escrito desde el punto de vista de alguno de los actores.
16 Debe notarse que se omiten los sustantivos o verbos que son sinnimos o que no tienen una ingerencia directa en el proceso de modelacin. Tambin se debe notar que, cuando se considere el modelado basado en clases de la seccin 8.7, se usar un anlisis gramatical similar.
213
La funcin de seguridad de HogarSeguro pennite al propietario configurar el sistema de segwidad cuando ste se instala, monitorear todos los sensores que se conectan al sistema
de seguridad y que interactan con el propietario a travs de Internet, una PC o un ;,_anel
de control.
Durante la jnstalacjn, la PC de HogarSeguro se utiliza para programar y configurar el
.si.st.e.J:na. A cada sensor se le asigna un n.r:nerQ y lilo, se programa una contrasea ma~ para habilitar o deshabilitar el sistema, y algunos nmeros telefnicos ingresan para
marcarse cuando se presenta un evento en los sensores.
Cuando se reconoce un evento en los sensores, el software solidta una a!arma audjb!e
que el propietario especifica durante las actividades de configuracin del sistema, el software marca el nmero telefnico de un servicio de monitoreo, propordona informacin
acerca de la ubicacin, reporta la naturaleza del evento que se ha detectado. El nmero
telefnico se remarca cada 20 segundos hasta que se obtiene una conexin telefnica.
El propietario recibe jnformacjn de seguridad a travs de un panel de control, la PC o
un buscador que en forma colectiva se denomina una interfaz. La interfaz despliega mensajes de opcin e ioformacjn de) estatus del sistema en el panel de control, la PC o la ventana del buscador. La interaccin del propietario asume la siguiente forma ...
En relacin con el anlisis gramatical comienza a surgir un patrn. Los verbos son
los procesos de HogarSeguro; esto es, al final pueden representarse como burbujas
en un DFD subsecuente. Los sustantivos son entidades externas (cajas), objetos de
datos o de control (flechas), o almacenamientos de datos (lneas dobles). Despus
debe observarse que los sustantivos y verbos se puedan asociar de distintas formas
Informacin
del sensor
Sensore$ - - ---,
Esta tus
del sensor
Alarmo
Tipo de alarma
Tonos del nmero
telefnico
linea
telefnico
214
PARTE DOS
iiPiii
DFD de nivel 2
que refina el
proceso de
mortoreo
de sensores.
tcoNSIJOS.
Se debe tener lo
seguridad de que todo
lo narroffva de procesamiento que se
intento ano/izar est
esaito con el msmo
grodo de abstrocd6n.
entre s. Por ejemplo, a cada sensor se Je asigna un nmero y un tipo; por lo tant
el nmero y el tipo son atributos del objeto de datos sensor. Entonces, al realizar uanlisis gramatical sobre la narrativa de procesamiento para una burbuja en cua
quier nivel del DFD, se puede generar mucha informacin til acerca de cmo pr
ceder con la refinacin para el siguiente nivel. En la figura 8.10 se presenta un DFt
de nivel I para el cual se ha utilizado esta informacin. El proceso al nivel de co
texto mostrado en la figura 8.9 se ha expandido a seis procesos obtenidos de un ex:!
men del anlisis gramatical. De manera similar, el flujo de informacin entre los pr
cesos en el nivel I ha sido obtenido del anlisis. Adems, se mantiene la continu
dad del flujo de informacin entre los niveles O y 1.
Los procesos representados en el DFD de nivel 1 se refinan despus hacia nivel~
ms bajos. Por ejemplo, es posible refinar el proceso monitorear sensores hacia ur
DFD de nivel 2 como se muestra en la figura 8. 11. De nuevo, debe sealarse que St.
mantiene la continuidad del flujo de informacin entre los niveles.
La refinacin de los DFD contina hasta que cada burbuja realiza una sola fun cin; es decir, hasta que el proceso que representa la burbuja desempee una funcoque podra implementarse con facilidad como un componente de programa. En e
capitulo 9 se examina un concepto, llamado cohesin, con el cual se evala ta sill'plicidad de una funcin dada. Por ahora, se busca refinar los DFD hasta que cada
burbuja tenga "un solo significado".
CAPTULO 8
215
software. Sin embargo, como ya se ha mencionado, existe una clase muy grande de
aplicaciones que estn guiadas por eventos en lugar de datos, que producen informacin de control en lugar de reportes o despliegues, y que procesan informacin
con un especial inters por el tiempo y el rendimiento. Dichas aplicaciones requieren aplicar el modelado de control deljlujo, adems del modelado del flujo de datos.
Ya se ha mencionado que un evento o elemento de control se implementa como
un valor booleano (por ejemplo, verdadero o falso, encendido o apagado, I o O) o
una lista discreta de condiciones (vaco, saturado, lleno) . En la seleccin de los eventos que son candidatos potenciales se sugieren las siguientes directrices:
Hacer una lista de todos los sensores que el software "lee".
Listar todas las condiciones de interrupcin.
Listar todos los "interruptores" que maneja un operador.
Listar todas las condiciones de datos.
De acuerdo con el anlisis de sustantivos y verbos aplicado a la narrativa de
procesamiento, revisar todos los "elementos de control" como posibilidades
de entradas y salidas del control de flujo.
Describir el comportamiento de un sistema mediante la identificacin de sus
estados; determinar el grado en el que se alcanza cada estado, y definir las
transiciones entre los estados.
Enfocarse en posibles omisiones -un error muy comn al especificar el
control-; por ejemplo, se puede preguntar: "existe alguna otra manera de
alcanzar este estado o salir de l?".
puede contener una tabla de activacin del programa: una especificacin combinatoria del comportamiento.
En la figura 8.12 se muestra un diagrama de estado preliminar 18 para el modelo
de control del flujo en el nivel l para HogarSeguro. El diagrama indica cmo responde
el sistema a diferentes eventos conforme ste atraviesa los cuatro estados definidos
en este nivel. Al revisar el diagrama de estado, un ingeniero de software puede
determinar el comportamiento del sistema y, an ms importante, puede encontrar
si existen "hoyos" en el comportamiento especificado.
17 Despus, en este mismo captulo, se presenta notacin adicional para el modelado del comportamiento.
18 La notacin para el diagrama de estado se muestra aqu de conformidad con la notacin del UML.
En el anlisis estructurado se cuenta con un "diagrama de transicin de estado", pero el formato del
UML es superior en contenido y representaaon de informacin
216
,j.f .., f
Sstemo
cooeelo
it.lnlc1o
lntemiplor
inicio/ poro,
enc8'1d1do
Ellalussisleffla itl<Jdivo"
Entror/1NCt0 deJpf eg..-M.naote1
"lnielondo $1Sltffl0'
Entror/in,c,or de$f)l"'SueMen,oe2
'Por favor e1pei.
Entro,/Iniciar <IMphegueEstotu, deslello
lento
Hocer correr diognsticcs
fnlrat/JIUC,O,
Retntcio
opogodo/con4fol
FolloDetectodo/ iniciar
despliegveMensoje2 contoctor
ol Vendedor'
Afxi9odo
de,ocilvorControseo
Go1-....1~1o ,,._,...,____
En1!9r/inlclor despli~iltMtnsoe 1
"Al.ARMA"
1 - - - - - - - i Enlror/,nicior desplir,gveMensoe2
senso>isporodo/ duporodor~IIO<
...__...........
_ _ _, ......,.......
__ _
-_-,~_ _ ___, inicioTemporizodor
Entror/,nie,or de.pl,eguel;S1Ql111
Dewllorapido
Hocer. mon,IOreorYControlorS,stema
Hocer: ,onidodeAlom,q
Hacer: notifico1Re,puestaAlcumo
G<ilpedeleck,/fed<>demone o
sen,orOi,porodo/
reinicioTemporizador
Por ejemplo, el diagrama de estado (figura 8.12) indica que las transiciones des.Je
el estado desocupado pueden ocurrir si el sistema se reinicia, activa o apaga. Si el s
tema se activa (es decir, se enciende el sistema de alarma) ocurre una transick
hacia el estado MonitoreoEstarusSistema. los mensajes que se despliegan cambi~
como se muestra, y se solicita el proceso SistemaContro!JIMonitoreo. Con el estaMonitoreo Stratus Sistema ocurren dos transiciones: 1) al desactivar el sistema se pre:
senta una transicin de regreso al estado desocupado; 2) cuando se dispara un ser
sor ocurre una transicin hacia el estado AccinEnAlarma. Durante la revisin s
consideran todas las transiciones y el contenido de todos los estados.
HOGARSEGURO
Vinod).
Jamie: Tom un cuno de ingenierfa del softwrn lft la
universidod, 'f
oprand esta$ QOIGS S ~
ani
CAPTULO 8
217
lo
La EC describe el comportamiento del sistema, pero no brinda informacin acerca del trabajo interior de los procesos que activa. La notacin de modelado que proporciona esta informacin se estudia en la seccin 8.6.4.
cesamiento de contrasea valida la contrasea en el panel de control para la funcin de se19 El lenguaje de diseo de programas (LDP) mezcla la sintaxis del lenguaje de programacin con la
narrativa en texto para proporcionar detalles del diseo del procedimiento. El LDP se estudia en el
captulo 11.
218
Anlisis estructurado
Objetivo: Las herramientas del anlisis
estructurado ayudan a un ingeniero de software
a crear modelos de datos, modelos de Rujo y modelos de
comportamiento de una manera que permita la
verificacin de la continuidad y la consistencia, as como
su fcil edicin y extensin. los modelos creados utilizando
estas herramientas brindan al ingeniero de software una
visin de la representacin del anlisis y ayudan a
eliminar errores antes de que stos se propaguen en el
diseo o, aun peor, en la misma implementacin.
Mecnica: Las herramientas de esta cotegora utilizan un
"diccionario de datos como la base de datos central poro
la descripcin de todos los objetos de datos. Una vez que
las entradas del diccionario estn definidos, pueden
crearse diagramas de entidod-relacin y se pueden
desarrollar las jerarquas de objetos. Las coroctersticos de
diagramacin del Rujo de datos permiten crear fcilmente
este modelo grfico y tambin proporciono caractersticos
poro la creacin de especificaciones de control (EC) y
especificaciones de proceso (EP). las herramientas de
anlisis tambin ayudan al ingeniero de software en la
creacin de modelos de comportamiento que usan los
diagramas de estado como notacin operativa.
Herramientas representativas 2
AxiomSys, desarrollado por STG, lnc. (www.stgcase.com),
proporciona un paquete completo de herramientas
poro el anlisis de la estructura que incluye extensiones
de HorrleyPirbhoi poro el modelado de sistemas en
tiempo real.
MacA&D, WinA&D, desarrollados por Excel Software
20 Las herramientas mencionadas aqu representan una muestra de esta categora. En la mayora de
los casos los nombres estn registrados por sus respectivos desarrolladores.
CAPTULO 8
219
e problema realmente difi<il es descubrir cules son los objetos correctos [clases] en primer lugar/
CarlAtglci
Se puede iniciar la identificacin de clases al examinar el enunciado del problema o (de acuerdo con la terminologia aplicada previamente en este captulo) al realizar un "anlisis gramatical" sobre las narrativas desarrolladas para el sistema que
se va a construir o de los casos de uso. Las clases se determinan al subrayar cada
sustantivo e introducindolas en una simple tabla. Los sinnimos deben anotarse. Si
la clase se requiere para implementar una solucin, entonces es parte del espacio de
solucin; por otro lado, si una clase slo se necesita para describir una solucin es
parte del espacio del problema. Qu se debe buscar despus de que todos los sustantivos han sido aislados? Las clases se manifiestan en una de las siguientes formas:
Cosas (por ejemplo, reportes, despliegues, letras, seales) que son parte del
dominio de la informacin para el problema.
Sucesos o eventos (por ejemplo, una transferencia de propiedad o la consecucin de una serie de movimientos de robot) que ocurren dentro del contexto
de la operacin del sistema.
Sitios (por ejemplo, el piso de manufactura o el puerto de carga) que establecen el contexto del problema y la funcin global del sistema.
PARTE DOS
Clase potencial
Clasificacin general
propietario
sensor
entidad externa
panel de control
entidad externa
instalacin
ocurrencia
cosa
nmero, tipo
contrasea maestra
cosa
nmero telefnico
cosa
ocurrencia
alarmo audible
entidad externa
servicio de monitoreo
La lista podra extenderse hasta que todos los sustantivos en la narrativa del proce-
samiento hayan sido considerados. Obsrvese que cada entrada en la lista ha sido
21 Otra categorizacin importante -la cual define entidad, frontera y clases de controlador- se examina en la seccin 8.7.4.
22 Es importante notar que esta tcnica debe usarse tambin para todos los casos de uso desarrollados como parte de la actividad para la recopilacin de requisitos (obtencin). Esto es, los casos de
uso pueden analizarse gramaticalmente para extraer clases de anlisis potenciales.
CAPTULO 8
221
llamada como un objeto potencial. cada uno de ellos debe considerarse a fondo
antes de tomar una decisin final.
3.
4.
5.
clase potencial,
de la clase.
6.
Clase potencial
propietario
sensor
panel de control
PARTE DOS
instalacin
rechazado:
nmero, tipo
contrasea maestra
rechazada: falla 3
nmero telefnico
rechazado: falla 3
alarma audible
aceptado: aplican 2, 3, 4, 5. 6
servicio de monitoreo
se debe sealar que l) la lista anterior no est completa (se tendran que agregar
ses adicionales para terminar el modelo); 2) algunas de las clases potenciales rec
zadas se convertirn en atributos para las clases aceptadas (por ejemplo, n ~
tipo son atributos de sensor, y contrasea maestra y nmero telefnico se pueden COfl'
tiren atributos de sistema); 3) la existencia de enunciados diferentes del proble
podra ocasionar decisiones distintas de "aceptacin o rechazo" (por ejemplo, si a
propietario tuviera una contrasea diferente o si pudiera identificarse por su voz
clase Propietario satisfara las caractersticas l y 2 y sta habra sido aceptada
8. 7 .2 Especificacin de atributos
Los atributos describen una clase que ha sido seleccionada para incluirla en
modelo de anlisis. En esencia, los atributos son los que definen la clase, lo cual c -
del sistema
informacin de la respuesta de alarma
informacin de la activacin/desactivacin
sibles
contrasea temporal
Algunos de los datos a la derecha del signo de igual podran refinarse hasta un nivel
elemental. pero para los propsitos de este captulo constituyen una lista razonable
de atributos para la clase sistema (parte sombreada de la figura 8.13) .
223
Los sensores son parte del sistema global de HogarSeguro, y aun as no estn enlistados como elementos de datos o como atributos en la figura 8.13. Ya se ha definido sensor como una clase, y varios objetos de sensor se asociarn con la clase
sistema. En general, se evita la definicin de un elemento como un atributo si ms
de uno de los elementos se asociar con la clase.
Sistema
ID sistema
verificacinNmeroTelefnico
E$fa1Ussistema
Ttemporetraso
Nmerotelefnico
Conlrasearnaestra
Contrmealempol al
Nmerodeintentos
programar( )
desplegar( )
reiniciar( )
buscar()
modificar( )
llamar()
PARTE DOS
224
HOGARSEGURO
Modelos de clase
El escenario: Cubculo de Ed, al
comenzar el modelodo del onlisis
LN
Jamie, Vinod y Ed, miembros del equipo
de ingeniera del $0twore de HogorSeguro.
---=
La conwnadr.:
CAPTULO 8
225
PlanodePlanta
tipo
nombre
Oimensionesexternas
determinarTipo()
posiciQnarPlanodePlanta( )
escalar()
cambiar color{ )
Se ubica dentro de
...
Es porte de
Cmara
Pa.-.d
fi
lis'
tJbicadn
~nsionespared
tmpodeVisln
g~eTamo
Con urOCl'I
Acercamiento
determlnarfipo(
lroducirUbic0<:1 ni )
despie9arlD( )
de=arVlsto()
de
rAcereomienlo(}
dewminarTipo()
~lcularDimens1ones{ J
Se usa para
construir
Se usa para
construir
1
5'gmento
de Pared
Ventano
tipo
Coordllnq(jainicio
COfdenodQ,final
SlgvlenteSegmento
Pared
determioarTipo( )
dibujar
...
determinarTipo( }
dibujar
Ventona
tipo
Coordeoadosintco
Coord&nadasfilll
SiguienteVentooo
'
tipo
Coordenada$inld
Coorde.nadofincil
Slgueni.Pl.lrta
determinarTipo(J
dibujar
forma:
Un modelo CRC en realidad es una coleccin de tarjetas ndice estndar que representan
clases. Las tarjetas se dividen en tres secciones. A lo largo del borde superior de la tarjeta
se escribe el nombre de la clase. En el cuerpo de la tarjeta se listan las responsabilidades
de la clase a la izquierda y los colaboradores a la derecha.
En realidad, el modelo CRC puede utilizar tarjetas ndice reales o virtuales. El objetivo es desarrollar una representacin organizada de las clases. Las responsabilidades
226
PARTE DOS
son los atributos y las operaciones relevantes para la clase. Dicho de manera rr
simple, una responsabilidad es "cualquier cosa que la clase sabe o hace" (AMB9E
Los colaboradores son aquellas clases que se requieren para que una clase reciba
informacin necesaria para completar una responsabilidad. En general, una colat>.
racin implica ya sea una solicitud de informacin o la solicitud de alguna accin
Ut,o clt lQS propsitqs de los rorjetQs CRC es follar al inio, follar constantemente yfollar sin que $8 etro. Es l)IUCho
ms brofotitar 111! bilto de klrjetos que reorganizar uno gran cantidad de cdigo ~me.,,
tlfers...
En la figura 8.15 se ilustra una tarjeta ndice CRC simple para la clase Planode-planta. La lista de responsabilidades que se muestra en la tarjeta CRC es prelimin.;.
y est sujeta a adiciones o modificaciones. Las clases Pared y Cmara se anotr
enseguida de la responsabilidad que requerir su colaboracin.
Clases. Las directrices bsicas para identificar clases y objetos ya se han presetado en este mismo captulo. La taxonomia de los tipos de clases que se present e:"
la seccin 8.7.1 se puede extender considerando las siguientes categoras:
e(l(On!IGISQ>IMl[i
excelente expooo6r\
de este lil)O de COSO$.
iihilifj
Una carta
...
...
ndice del
modeloCRC.
,- 1, Clase: PJca...-PIQnt
,_t;:,
Descripcin
1-
,;,
~
...
... ,-..
,,
-"
1-
e< .,
'
ReJMnsabilid.ac:I
G<
Colaborador ,,1,
..-..
Pared
Cmara
'
F"
''
CAPTULO 8
227
........
dljllls,-len daslfkarse de manero cienttfo en tres grandes cotegorlos: los que no fundonan, los quu1
y los que se pienlen."
Responsabilidades. En las secciones 8.7.2 y 8.7.3 se han presentado las directrices bsicas para identificar responsabilidades (atributos y operaciones). Wirfs-Brock
y sus colegas [WIR90) sugieren cinco directrices para determinar las responsabilidades de las clases:
228
PARTE DOS
2. cada responsabilidad debe establecerse tan general como sea posible. Esta directriz implica que las responsabilidades generales (tanto atrib1
tos como operaciones) deben estar en la parte alta de la jerarqua de la cla
(debido a que son genricas son aplicables en todas las subclases).
CAPTULO 8
229
colaboracin sencilla luye en una direccin, lo que representa una solicitud del cliente al
servidor. Desde el punto de vista del cliente, cada una de sus colaboraciones est asociada
con una responsabilidad particular que ha implementado el servidor.
230
PARTE DOS
Una clase
agregada
compuesta.
Cuando se ha desarrollado un modelo CRC completo, los representantes del clie:tes y la ingeniera del software pueden revisar el modelo utilizando el siguiente en.
que [AMB95]:
1. Todos los participantes en la revisin (del modelo CRC) reciben un subcon-
junto de las tarjetas ndice del modelo CRC. Las tarjetas que colaboran se deben separar (es decir, ningn revisor debe tener dos que colaboren).
2. Todos los escenarios de caso de uso (y los diagramas de caso de uso corres-
llega a una clase nombrada pasa una seal a la persona que tiene la tarjeta
indice de clase correspondiente. Por ejemplo, un caso de uso para HogarSeguro contiene la siguiente narrativa:
El propietario observa el panel de control de HogarSeguro para determinar si el sistema
est listo para la entrada. Si no lo est, el propietario podr cerrar tlsicamente ventanas y puertas para que se presente el indicador de listo. [Un indicador de no-listo implica que un sensor est abierto; es decir, que esa puerta o ventana est abierta.]
CAPrruLO 8
231
dtEd,
232
seleccionorSituoci6rr
Pctnel$ituacin (clase)
entrorPlonodePlonto
PlanoclePlonta (dosel
Opercadones:
DesplegarControl(} ~onorControl(J,
de$~r5,tuacin{!, selec;cioparSituacin(J,
entrorPkmodePlonto(J, selecionar/conoDispo$ilivo(},
desplego,Pane/Dispos,hvo{J, entrar PonelD,sposihvo{},
Ckue: lnlerfazAdministr:acnHogar
...ponsabilidad
Colaborador
desplegarControl
PaneloperacionH (clase}
seleccionarControf
Ponelopetadones (dosel
desplegorS tuact0n
Pane1Situocin (clase)
--,c&v1
,:.,
En muchos casos, dos clases de anlisis se relacionan entre s de alguna manera, parecida a la forma en que se relacionan dos objetos de datos (seccin 8.3..3). En UML estas
relaciones se llaman asodadones. Vase de nuevo la figura 8.14; la clase PlanodePlantz
se define al identificar un conjunto de asociaciones entre PlanodePlanta y otras dos clases, Cmara y Pared. La clase Pared se asocia con tres clases que permiten que se
construya una pared, SegmentodePared, Ventana y Puerta.
En algunos casos, una asociacin se puede definir en forma ms extensa al inclicar multiplicidad (el trmino cardinalidad ya se us antes en este captulo). En ree
rencia a la figura 8.14, un objeto de Pared se construye con uno o ms objetos d
SegmentosdePared. Adems, el objeto Pared puede contener O o ms objetos
de Ventana y Oo ms objetos de Puerta. Estas restricciones de multiplicidad se ilustran en la figura 8.17, donde "uno o ms" se representa mediante 1.. * y "O o ms" por
medio o.. *. En UML el asterisco indica una frontera superior ilimitada en el rango
Qu es un
estereotipo?
En muchos casos existe una relacin cliente servidor entre dos clases de anlisis
En tales casos, una clase de cliente depende de alguna manera de la clase de serv dor y se establece una relacin independencia. Las dependencias se definen mediante un estereotipo. un estereotipo es un "mecanismo de extensibilidad" [ARL02] den-
24 Otras relaciones de multiplicidad - una a una, una a muchas, muchas a muchas, una a un rango especifico con lmites inferior y superior, y otras- se pueden indicar como parte de una asoc1ac1n
CAPTULO 8
233
Pared
Se utilizo poro
construir
....
o.. *
1..* 1
SegmentoPared
1
Se utilizo poro
- construir
Se utilizo ~oro
construir
Ventana
10
Pv.rta
1,
Ventano
Despliegue
'
Cmara
<<acceso>>
(contraseo)
tro del UML que permite a un ingeniero de software definir un elemento de modelado especial cuya semntica define el cliente. En UML los estereotipos se representan
dentro de comillas angulares (por ejemplo, estereotipo).
Como una ilustracin de una dependencia simple dentro del sistema de vigilancia de HogarSeguro, un objeto de Cmara (en este caso, la clase de servidor) proporciona una imagen de video o un objeto de VentanadeDespliegue (en este caso,
la del cliente). La relacin entre estos dos objetos no es una asociacin simple, aun as
existe una asociacin de dependencia. En un caso de uso escrito para la vigilancia
(que no se muestra), el modelador aprende que se debe proporcionar una contrasea
especial para ver ubicaciones especficas de cmara. Una forma de lograr esto es que
8. 7 .6 Paquetes de anlisis
Una parte importante del modelado del anlisis es la categorizacin. Esto es, los
diferentes elementos del modelo de anlisis (por ejemplo, casos de uso, clases de
PARTE DOS
Paquetes.
l"!":-""T.:'""'!"~-r-~
MHioAm ente
+Arbor'
+R-0isoj6
!'
!
'
.\
.
.------,-........
Persona
+Jogodot
+Protogoni~to
+Antcrgonlst<:1
+PopeldScporte
~
~~
c&v1
Un poquete se utiliza
paro ensamblar una
coleccin de clases
relacionados.
anlisis) se clasifican de una manera que los empaquete como una agrupacin mada un paquete de anlisis-, a la cual se le asigna un nombre representativo.
Para ilustrar la utilizacin de paquetes de anlisis considrese el videojuego e,::
se present prrafos atrs. Al desarrollar el modelo de anlisis para el videojuego
obtiene un gran nmero de clases. Algunas se enfocan en el ambiente del juego ::ejemplo, las escenas visuales que el usuario ve mientras se desarrolla el juegClases como rbol, Paisaje, Camino, Pared, Puente, Edificio, EfectoVJ.SUa..
podran estar dentro de esta categora. Otras se enfocan en los personajes dentro d.
juego al describir sus caractersticas fisicas, acciones y restricciones. Se podran de'..
nir clases como Jugador (la cual se describi con anterioridad), Protagonista.
Antagonista y Papelesdesoporte. Adems, otras describen las reglas del jueg
cmo navega el jugador a travs del ambiente. Aqu son candidatas clases cocReglasDeMovimiento y RestriccionesEnAccin. Pueden existir muchas otr::..
categoras. Estas clases pueden representarse como los paquetes de anlisis que Se
muestran en la figura 8. 19.
El signo de ms que precede al nombre de la clase de anlisis en cada paqueindica que las clases tienen visibilidad pblica y que, por lo tanto, son accesible!:
desde otros paquetes. Aunque no se muestran en esta figura, hay otros smbolos qu::
pueden preceder a un elemento dentro de un paquete. Un signo de menos indica que tr
elemento est oculto de todos los otros paquetes, y un smbolo # indica que un elemento es accesible slo a las clases contenidas dentro de un paquete dado.
Los diagramas de clase, las tarjetas ndice CRC y otros modelos orientados a las clases tratados en la seccin 8.7 representan elementos estticos del modelo de anli-
CAPTULO 8
235
sis. Ahora es tiempo de hacer una transicin al comportamiento dinmico del sistema o producto. Para lograrlo el comportamiento del sistema debe presentarse como
una funcin de los elementos especficos y el tiempo.
El modelo de comportamiento indica la forma en que el software responder a los eventos o estmulos externos. En la creacin del modelo el analista debe realizar los siguientes pasos:
l. Evaluar todos los casos de uso para entender por completo la secuencia de
cia.
Cada uno de estos pasos se expone en las secciones siguientes.
Las partes subrayadas del escenario del caso de uso indican eventos. Se debe identificar a un autor para cada evento; la informacin intercambiada se debe anotar, y
cualquier condicin o restriccin debe registrarse.
Como ejemplo de un evento tipico, considrese la frase subrayada del caso de uso
"el propietario utiliza el teclado para introducir una contrasea de cuatro dgitos". En
el contexto del modelo de anlisis, el objeto, propietario,25 transmite un evento al
25 En este ejemplo se asume que cada usuario (propietario) que interacta con HogarSeguro tiene una
contrasea de identificacin y que, por lo tanto, es un obJeto legtimo.
236
PARTE DOS
&'
'~
c&v1
El sistema tiene
estodos que
representan un
comportamiento
espelico obserwble
desde el exterior; una
clase tiene estodos que
rensenton su
comportamiento
cuando el sistema
reolizo sus funciones.
CAPTULO 8
237
Temporizador
> TiempoCerrodo
Contraseo = incorrecto
y nmeroDelntentos < lntentosmximos
--
Golpe
de teclo
Lectura "
Contrasea
introducida
Comparacin
Hacer: volidor
Contraseo
Cerrado"'
....-'-
nmeroDelntentos >
lntentosmximos
Contraseo
&
correcto
rSeleccin
'"
Activacin exitoso
estos estados activos. En la figura 8.20 se ilustra un diagrama de estado para la clase
En general, la guardia para una transicin por lo regular depende del valor de uno o
ms atributos de un objeto. En otras palabras, la guardia depende del estado pasivo
del objeto.
Una acdn sucede de manera concurrente con la transicin del estado o como
consecuencia de ste, y por lo general implica una o ms operaciones (responsabilidades) del objeto. Por ejemplo, una accin conectada con el evento contrasea introdudda (figura 8.20) es una operacin llamada Validarcontrasea( ) que da acceso a
PARTE DOS
Prop,retoro
srs;emo
ffistemo
isto
Solicitud de bsqueda
nmerDelntentos >
lntentosmximos
Activacin exitoso
1
1
1
1
Resultado
Contraseo ~ correcto
Solicitud de octivocin
Activacin exitoso
un objeto de contrasea y realiza una comparacin dgito por dgito para validar ~
contrasea introducida.
Diagramas de secuencia. El segundo tipo de representacin de comportamiento, llamado un diagrama de secuencia en UML, indica cmo los eventos causan transiciones de objeto a objeto. Una vez que se han identificado los eventos al examinar
un caso de uso, el modelador crea un diagrama de secuencia: una representacin de
cmo los eventos causan un flujo de un evento a otro como una funcin del tiempo
En esencia, el diagrama de secuencia es una versin abreviada del caso de uso
Representa clases clave y eventos que causan que el comportamiento fluya de clase
a clase.
En la figura 8.21 se ilustra un diagrama de secuencia parcial de la funcin de
seguridad de HogarSeguro. cada flecha representa un evento (derivado de un caso
de uso) e indica cmo el evento canaliza el comportamiento entre los objetos de
HogarSeguro. El tiempo se mide de manera vertical (hacia abajo), y los rectngulos
verticales delgados representan el tiempo invertido en procesar una actividad. Los
estados se pueden mostrar a lo largo de una linea de tiempo vertical.
El primer evento, sistema listo, se deriva del ambiente externo y canaliza el comportamiento a un objeto de propietario. El propietario introduce una contrasea. Se
pasa un evento de solicitud de bsqueda al sistema, el cual busca la contrasea en
una base de datos simple y regresa un resultado (encontrado o no encontrado) al
PaneldeControl (ahora en el estado de comparacin). Una contrasea vlida resul-
CAPTULO 8
239
e""
..,...,...,ta, representativas 27
El objetivo del modelado del anlisis es crear una variedad de representaciones que
muestran los requisitos del software para la informacin, la funcin y el comportamiento. Esto se logra aplicando dos diferentes filosofias de modelado (pero potencialmente complementarias): el anlisis estructurado y el anlisis orientado a objetos. El anlisis estructurado considera al software como un transformador de infor-
27 Las herramientas mencionadas aqu son una muestra de esta categora. En la mayora de los casos
los nombres estn registrados por sus respectivos desarrolladores
240
PARTE DOS
CAPTULO 8
241
[ABB83) Abbott, R., "Program Design by Informal English Descriptions", en CACM, vol. 26, nm.
11, noviembre de 1983, pp. 892-894.
[AMB95) Ambler, s.. "Using Use-cases", en Software Development, julio de 1995, pp. 53-61.
[ARA89J Arango, G. y R. Prieto-Diaz, "Domain Analysis: Concepts and Research Directions", en
Domain Analysis: Acquisition of Reusable Information far Software Construction, (Arango, G. y
R. Prieto-Diaz, eds.), IEEE Computer Society Press, 1989.
[ARL02] Arlow, J. e l. Neustadt, UML and the Unified Process, Addison-Wesley, 2002.
[BER93) Berard, E. V., Essays on Objetc-Oriented Software Engineering, Addison-Wesley, 1993.
[B0086] Booch, G., "Object-Oriented Development", en TEE 'Trans. Software Engineering, vol. SE12, nm. 2, febrero de 1986, pp. 21 lff.
[BUD96J Budd, T., An Introduction to Objetc-Oriented Programming, 2a. ed., Addison-Wesley,
1996.
[CAS891 cashman, M., "Object-Oriented Domain Analysis", en ACM Software Engineering Notes,
vol. 14, nm. 6, octubre de 1989, p. 67.
[CHA93J de Champeaux, D., D. Lea y P. Faure, Object-Oriented System Development, Addisonwesley, 1993.
[CHE77] Chen, P., The Entity-Relationshp Approach to Logical Database Design, QED Information
Systems, 1977.
[COA91l Coad, P. y E. Yourdon, Object-Oriented Analysis, 2a. ed., Prentice-Hall, 1991.
[COCO!] Cockbum, A . Writing Ejfective Use Cases, Addison-Wesley, 2001.
[DAV931 Davis, A., Software Requirements: Objects, Functions and States, Prentice-Hall, 1993.
[DEM79) DeMarco, T., Structured Analysis and system Specification, Prentice-Hall, 1979
[FIR93) Firesmith, D. G., Object-Oriented Requrements Analysis and Logical Design, Wiley, 1993.
[LET03) Lethbridge, T., comunicacin personal sobre el anlisis del dominio. mayo de 2003.
[OMG03) Object Management Group, OMG Unified Modeling Language Specification, versin
1.5, marzo de 2003, disponible en http://www.rational.com/uml/resources/documentation/.
[SCH02J Schmuller, J., Teach Yourse}fUML in 24 Hours, 2a. ed., SAMS Publishing 2002.
[SCH98J Schneider, G. y J. Winters, Applying use cases, Addison -Wesley, 1998.
[STR88] Stroustrup, B., "What is Object-Oriented Programming?", en IEEE Software. vol. 5, nm.
3, mayo de 1988, pp. 10-20.
[TAY90) Taylor, D. A., Object-Oriented Technology: A Manager's Gude, Addison-Wesley, 1990.
[THAOOJ Thalheim, B., Entity Relationship Modeling, Springer-Verlag, 2000.
[TIL93J Tillmann, G., A Practica} Guide to Logical Data Modeling, McGraw-Hill, 1993.
[UML03J The UML Caf, "Customers Don't Print Themselves", disponible en http:/ /www.
theumlcafe.com/a0079.htm, mayo de 2003.
[WJR90] Wirfs-Brock, R., B. Wilkerson y L. Weiner, Designing Object-Oriented Software, PrenticeHall, 1990.
patrones de requisitos?
8.4. En unas cuantas lneas, trtese de describir las diferencias primordiales entre el anlisis
estructurado y el anlisis orientado a objetos.
8.5. Es posible desarrollar un modelo de anlisis eficaz sin desarrollar los cuatro elementos
que se muestran en la figura 8.3? Explicar la respuesta.
8.6. Supngase que han pedido construir uno de los siguientes sistemas.
Seleccinese el sistema que se considere interesante y describanse sus objetos de datos, relaciones y atributos.
8. 7 . Dibujar un modelo al nivel de contexto (DFD de nivel O) para uno de los cinco sistemas que
se listan en el problema 8.6. Escribir una narrativa del procesamiento para el sistema al nivel de
contexto.
8.8. Utilizar el DFD al nivel de contexto desarrollado en el problema 8. 7 para dibujar los diagramas de flujo de los niveles 1 y 2. Para comenzar, utilcese un "anlisis gramatical" en la
narrativa del procesamiento al nivel de contexto. Recurdese especificar todo el fluido de informacin mientras rotula todas las flechas que se encuentran entre las burbujas. sense nombres
significativos para cada transformacin.
8.9. Desarrllense especificaciones de control (EC) y especificaciones de proceso (EP) para el
sistema que seleccion en el problema 8.6. Trtese de que el modelo sea lo ms completo posible.
8.1 o. El departamento de obras pblicas de una ciudad grande ha decidido desarrollar un sis-
tema de rastreo y reparacin de baches basado en la Web (SRRB). Se incluye la siguiente descripcin:
Los ciudadanos pueden entrar al sitio Web y reportar la ubicacin y severidad de los
baches. cuando stos se reportan entran a un "sistema de reparacin del departamento de
obras pblicas", donde se les asigna un nmero de identificacin, junto con la direccin de la
calle, el tamao (en una escala de Oa 10), la ubicacin (en la orilla de la calle, en medio,
etctera), el distrito (determinado por la direccin de la calle), y la urgencia de la reparacin (determinada por el tamao del bache). Los datos de la orden de trabajo estn asociados con cada bache e incluyen la ubicacin y el tamao del bache, nmero de identificacin de la reparacin, cantidad de personal necesario, horas aplicadas a la reparacin,
estado del bache (trabajo en progreso, reparado, reparado en forma temporal, no reparado), cantidad de material de relleno utilizado, y costo de la reparacin (clculo de las horas
aplicadas, nmero de personas, material y equipo utilizados). Por ltimo, se crea un archivo de daos para registrar informacin sobre averas reportadas debido a los baches, el
cual incluye nombre del ciudadano, direccin, nmero telefnico, tipo de dao, precio del
dao en dlares. El SRRB es un sistema basado en la Web; todas las peticiones se hacen
en forma interactiva.
Con base en una notacin de anlisis estructurada, desarrolle un modelo de anlisis para el
SRRB.
CAPTULO 8
243
8 .15. Desarrollar un conjunto completo de tarjetas ndice del modelo CRC para el sistema SRRB
presentado en el problema 8.1 o.
8 . 16. Encabezar una revisin de las tarjetas ndice de CRC con sus colegas. Cuntas clases
adicionales, responsabilidades y colaboradores fueron agregados como consecuencia de la revisin?
8 .1 7 . Desclibir la diferencia entre una asociacin y una dependencia para una clase de anlisis.
8 . 19. De qu manera difiere un diagrama de estado para clases de anlisis de los diagramas
de estado presentados para el sistema completo?
Se han publicado docenas de libros sobre anlisis estructurado. En la mayora se trata el tema
de una manera adecuada, pero slo en unos cuantos se presenta un trabajo en verdad excelente. DeMarco y Plauger (Structured Ana[ysis and System Spedji.cation, Pearson, 1985) es un clsico que sigue siendo una buena introduccin a la notacin bsica. Los libros de Kendal y
Kendal (Systems Analysis and Design, 5a. ed., Prentice-Hall, 2002) y Hoffer et al. (Modem Systems
Analysis and Design, Addison-Wesley, 3a. ed., 2001) son referencias valiosas. El libro de Yourdon
(Modem Structured Ana[ysis, Yourdon-Press, 1989) sobre el tema se conserva entre las publicaciones ms completas a la fecha.
Allen (Data Modeling for Evezyone, Wrox Press, 2002), Simpson y Witt (Data Modeling
Essentials, 2a. ed., Coriolis Group, 2000), Reingruber y Gregory (Data Modeling Handbook, Wiley,
1995) presentan guias detalladas para crear modelos de datos relacionados con la calidad
industrial. Un interesante libro de Hay (Data Modeling Pattems, Dorset House, 1995) presenta
patrones de modelos de datos tpicos que se encuentran en muchos negocios diferentes. un tratamiento detallado del modelado del comportamiento puede encontrarse en Kowal (Behavior
Models: Specifying User's Expectations, Prentice-Hall, 1992).
Los casos de uso son la base del anlisis orientado a objetos. Los libros de Bittner y Spence
(Use Cose Modeling, Addison-Wesley, 2002), Cockburn [COCO!], Arrnour y Miller (Advanced UseCase Modeling: SO.ftware Systems, Addison-Wesley, 2000) y Rosemberg y Scot (Use-case Driven
Object Modeling with UML: A Practica/ Approach, Addison-Wesley, 1999) proporcionan una gua
valiosa en la creacin y uso de este importante mecanismo de representacin y logro de requerimientos.
Arlow y Neustadt han escrito apreciables anlisis del UML [ARL02J, Schmuller (SCH02J,
Fowler y Scott (UML Distilled, 2a. ed., Addison-Wesley, 1999), Booch y sus colegas (The UML User
Guide, Addison-Wesley, 1998) y Rumbaugh y sus colegas (The Unified Modeling Language
Reference Manual, Addison-Wesley, 1998).
Los mtodos de anlisis y diseo que apoyan el proceso unificado los explica Larman
(Applying UML and Pattems: An Introduction to Obj ect-Oriented Ana[ysis and Design and the Unified
process, 2a. ed., Prentice-Hall, 2001), Dennis y sus colegas (System Ana[ysis and Design: An
Object-Oriented Approach with UML, Wiley, 2001 ), y Rosenberg y Scott (Use-Cose Driven Object
Modeling with UML, Addison-Wesley, 1999), Balcer y Mellor (EXecutable UML: A Foundationfor
INGENIERA
DEL DISEO
a ingeniera del diseo abarca un conjunto de principios, conceptos yprc
ticas que conducen al desarrollo de un sistema o producto de alta calidad.
Los principios del diseo (explicados en el captulo 5) establecen una filosofia primordial que guan al diseador en el trabajo qe desempea. E:s necesa
rio comprender los conceptos del diseo antes de que se apliquen las mecnicas
de la prctica del diseo, y la prctica del diseo mismo conduce a la creacin de
varias representaciones del software, el cual sirve como guia para la actividad de
construccin que sigue.
La ingeniera del diseo no es una frase comn dentro del contexto de la ingeniera del software. Sin embargo. deberta serlo. El disefio es una actividad primordial de la ingeniera. Aprincipios de la dcada de 1990, Mitch Kapor, el creador de Lotus l-2-3, present un "manifiesto sobre el diseo de software" en DrDobbs Joumal. Ah afirma:
Qu es el diseflo? l!s el lugar en donde una persona se puede parar con un pie en
dos mundos --el mundo de ta tecnofoga y el de la gente y los propsitos humanos-e intenta unidos ...
El crtico de arqutectura romana Vitruvlus aport la nocin de que las construc~
clones bien diseadas eran aquellas que mostraban firmeza, <:Omodidad y placer, LO
mismo debe decirse 4el buen software. Fi.lmi:Za:. el programa no debe tener nlng(m
error que inhiba su funcin, Comodidad: un pt9grama debe cumplir con los propsi~
tos para los que fue creado. Placer: la experiencia de usa.r el programa debe Sr agradable. Aqi. se presentan los principios de un teona de di$CJ\O para software.
245
246
PARTE DOS
CAPTULO 9
247
-S milagro rris comn de la i119enierio de soflwore es lo transicin del anlisis al diseo ydel diseo al cdigo.
RldinO.
Diseo en el nivel
de componentes
t..<09romos de clase
Paquetes de onlisis
ModelosCRC
'),c,gromos de coloborocin
Modelo de diseo
248
PARTE DOS
tar el software. Las clases y relaciones que definen las tarjetas indice CRC y el contenido detallado de datos que muestran los atributos de clase y otras notaciones proporcionan la base para la actividad de diseo de datos. Una parte del diseo de da
ses puede ocurrir en conjunto con el diseo de la arquitectura del software. El dise
o de clase ms detallado se realiza a medida que se disea cada componente del
software.
El diseo arquitectnico define la relacin entre los elementos estructurales ms
importantes del software, los estilos arquitectnicos y patrones de diseo que pueden usarse para satisfacer los requisitos definidos por el sistema, y las restricciones
que afectan la manera en que se pueden implementar los patrones arquitectnicos
[SHA96J. La representacin del diseo arquitectnico -el marco de trabajo de un
sistema basado en computadora- puede derivarse de la especificacin del sistema
del modelo de anlisis y de la interaccin de los subsistemas definidos dentro de
modelo de anlisis.
El diseo de la interfaz describe la forma en que el software se comunica con los
sistemas que interactan con l y con los humanos que los utilizan. Una interfaz
implica un flujo de informacin (por ejemplo, datos o control) y un tipo de compor
tamiento especlfico. Por lo tanto, los escenarios de uso y los modelos de comportamiento proporcionan mucha de la informacin que se requiere en el diseo de la
interfaz.
El diseo al nivel de componentes transforma los elementos estructurales de lz
arquitectura del software en una descripcin procedimental de los componentes de::
ste. La informacin obtenida de los modelos basados en clases, los modelos de fluJ
y los modelos de comportamiento sirven como base para el diseo de componentes
wsten dos formas de construir un diseo de software. Uno formo es hacerlo tan simple que obviamentl ti.,
defldenls, ylo omi es bocerlo ton compticodo que no existen deficiencias obvios. El primer mtodo es mucho
4lfldl.
e.u. .....
Durante el diseo se toman decisiones que al final incidirn en el xito de la cons
truccin del software, asi como en, con el mismo grado de importancia, la facilida ..
con que el software puede mantenerse. Pero, por qu es tan importante el diseo7
La importancia del diseo del software puede describirse con una sola palabra
calidad. El diseo es la etapa en la que se fomentar la calidad en la ingeniera de
software. El diseo proporciona las representaciones del software susceptibles d~
evaluar respecto de la calidad. El diseo es la nica forma en que, de manera exacta, un requisito del cliente se puede convertir en un sistema o producto de software
terminado. El diseo del software sirve como fundamento para todas las actividades
subsecuentes de la ingeniera del software y del soporte de ste. Sin diseo se corre
el riesgo de construir un sistema inestable, el cual fallar cuando se realicen cam
bios pequeos; que ser difcil de probar; cuya calidad no podr evaluarse sino hast:
CAPTULO 9
249
etapas tardas del proceso del software, cuando queda poco tiempo y ya se ha gastado mucho dinero en l.
El diseo del software es un proceso iterativo mediante el cual los requisitos se traducen en un "plano" para construir el software. Al inicio, el plano representa una
visin holstica del software. Es decir, el diseo se representa en un grado alto de
abstraccin, el cual puede rastrearse de manera directa hasta conseguir el objetivo
especfico del sistema y requisitos ms detallados de comportamiento, funcionales y
de datos. A medida en que ocurren las iteraciones del diseo, un refinamiento subsiguiente conduce a representaciones del diseo a grados mucho ms bajos de abstraccin. Estos grados an se pueden rastrear hasta los requisitos, pero la conexin
es ms sutil.
A travs del proceso del diseo, la calidad en evolucin de ste se evala con una
serie de revisiones tcnicas formales o con revisiones de diseo explicadas en el
captulo 26. McGlaughlin [MCG91] sugiere tres caractersticas que sirven como gua
en la evaluacin de un buen diseo:
El diseo debe implementar todos los requisitos explcitos contenidos en el
modelo de anlisis, y debe ajustarse a todos los requisitos implcitos que
desea el cliente.
El diseo debe ser una gua legible y comprensible para quienes generan
cdigo y quienes realizan pruebas y, en consecuencia, dan soporte al
software.
El diseo debe proporcionar una imagen completa del software -dando
direccin a los dominios de datos, funcionales y de comportamiento- desde
una perspectiva de implementacin.
Cada una de estas caractersticas es en realidad una meta del proceso de diseo.
Pero, cmo se alcanza cada una de ellas?
diseo se deben establecer los criterios tcnicos para un buen diseo. En secciones
posteriores de este capitulo se expondrn los conceptos de diseo que tambin sirven como criterios de calidad del software. Por ahora se presentan las siguientes
directrices:
l. Un diseo debe presentar una estructura arquitectnica que a) se haya creado
mediante patrones de diseo reconocibles, bJ la integren componentes que
PARTE DOS
250
Cllles son
las caracte
ristkas de un
bvea diseo?
2 . Un diseo debe ser modular, esto es, el software deber dividirse de man
lgica en elementos o subsistemas.
,_Q
1 Para sistemas ms pequeos algunas veces et diseo puede desarrollarse en forma lineal.
2
Los factores de calidad tratados en et captulo 15 pueden ayudar al equipo de revisin mientras o
evala la calidad,
En este punto se podrla considerar la revisin de la seccin 26.4. Las RTF son una parte crtica
proceso de diseo y un mecanismo Importante para lograr la calidad del diseo,
CAPTULO 9
251
Atributos de calidad. Hewlett-Packard [GRA87J desarroll un conjunto de atributos de calidad; entre ellos estn la funcionalidad, la facilidad de uso, la confiabilidad,
el desempeo y la soportabilidad. Estos atributos de calidad representan un objetivo
para todo el diseo de software:
Lo funcionalidad se estima al evaluar el conjunto de caractersticas y capacidades del programa, la generalidad de las funciones que se entregan y la
seguridad del sistema en su totalidad.
Lo facilidad de uso se valora al considerar los factores humanos (captulo 12),
la esttica, consistencia y documentacin generales.
Lo confiabilidad se evala al medir la frecuencia y severidad de las fallas, la
precisin de los resultados de salida, la media del momento de fallas (MMF).
la habilidad para recuperarse de las fallas y la previsibilidad del programa.
252
PARTE DOS
CONJUNTO DE TAREAS
5.
6.
7.
8.
9.3.1 Abstraccin
Cuando se considera una solucin modular a cualquier problema se pueden expo:muchos grados de abstraccin. En un alto grado de abstraccin una solucin se es
blece en trminos generales con el lenguaje del entorno del problema. En los grac.
de menor abstraccin se proporciona una descripcin ms detallada de la solucia
CAPTULO 9
253
,. absttGuilres lma ele lo.s formas fundamentales en los que el humano se enfrenta ala Coll)lllet"ldad:
<
Wyhodi'
'"
En la medida en que cambian los diferentes grados de abstraccin se trabaja para
crear abstracciones procedimentales y de datos. Una abstraccin procedimental se
refiere a una secuencia de instrucciones que tiene una funcin especfica y limitada.
El nombre de abstraccin procedimental implica estas funciones, pero se omiten
detalles especficos. Un ejemplo de abstraccin procedimental sera la palabra abrir
para una puerta. Abrir implica una larga secuencia de pasos procedimentales (por
ejemplo, caminar a la puerta, alcanzar la manija, darle vuelta a la manija y empujar
la puerta, hacerse a un lado para abrir paso a la puerta que se abre, etc.). 4
Una abstraccin de datos es una coleccin nombrada de datos que describe un
objeto de datos. En el contexto de abstraccin procedimental, abrir se puede definir
como una abstraccin de datos llamada puerta. como cualquier objeto de datos, la
abstraccin de datos para puerta abarcara una serie de atributos que la describan
(por ejemplo, puerla, tipo, direccin de aperlura, mecanismo de apertura, peso, dimensiones) .
Se puede decir que la abstraccin procedimental abrir empleara la informacin contenida en los atributos de la abstraccin de datos puerta.
9.3.2
Arquitectura
La arquitectura del software alude a "la estructura general del software y las formas
"Uno dfquilduro de software es el producto del trabajo de desarrollo que ofrece el mayor rendimiento cle lo
inVersin con respecto o lo colichid, el tiempo y el costo.
"
Una de las metas del diseo de software es derivar una representacin arquitectnica de un sistema. Esta representacin sirve como el marco de trabajo a partir del
cual se conducen actividades de diseo ms detalladas. Un conjunto de patrones
Sin embargo, debe notarse que un conjunto de operaciones puede reemplazarse con otro, siempre
que la funcin implicada por la abstraccin de procedimiento sea la mi sma. Por lo tanto, los pasos
requeridos para implementar abrir podran cambiar en forma sustancial si la puerta fuera automtica y estuviera unida a un sensor.
PARTE DOS
lo orquiteduro sucedo
po, si solo. Si eso
poso, el resto del
tiempo de proyecto se
invertir en tratar de
obligarlo oajustarse ol
diseo. Se recomiendo disear lo
o,quiteclum de
manero explcito.
9.3.3 Patrones
Brad Appleton define un patrn de diseo de la siguiente manera: "Un patrn es
semilla de conocimiento, la cual tiene un nombre y transporta la esencia de una so:
cin probada a un problema recurrente dentro de cierto contexto en medio de r.
reses en competencia" [APP98J. Dicho de otro modo, un patrn de diseo desa:
una estructura de diseo que resuelve un problema de diseo particular dentro
un contexto especfico y en medio de "fuerzas" que pueden tener un impacto e.
manera en que se aplica y utiliza el patrn.
1.t
patrn.
un probl$no que ocurre uno yotra vez en nuestro entorntt, yd~ clesulb&o ~ la
soilKllAi<ho prbleno, de tal forma que puedas usar esta solucin un m~l11 de:ve<~ ms, sfrl IIQfl(O lmrlo
di i lllisml! forma."
'*
patrn se puede reutilizar (por ende, ahorrar tiempo del diseo), y 3) si el pat:"
puede servir como gua para desarrollar un patrn similar, pero diferente en cu~
a la funcionalidad o estructura. Los patrones de diseo se exponen con mayor de:
lle en la seccin 9.5.
9.3.4 Modularidad
Los patrones de arquitectura y diseo de software materializan la modularidad
decir, el software se divide en componentes con nombres independientes y que es pe
ble abordar en forma individual. Estos componentes llamados mdulos se integ:para satisfacer los requisitos del problema.
Se ha establecido que la "modularidad es el atributo particular del software e
permite que un programa sea manejable de manera intelectual" [MYE78J. El sofi"
re monoltico (es decir, un programa grande compuesto por un mdulo sencillo
CAPTULO 9
255
puede entenderlo con facilidad un ingeniero de software. El nmero de rutas de control, la amplitud de las referencias, el nmero de variables y la complejidad general
imposibilitara comprenderlo. Este punto se ilustra con el siguiente argumento,
basado en observaciones de solucin de problemas humanos.
Considrense dos problemas, p 1 y p 2. Si la complejidad observada para p 1 es
mayor que la de p 2 se deduce que el esfuerzo requerido para resolver p I es mayor que
el esfuerzo necesario para resolver p 2 Como un caso general, este resultado es obvio
en el sentido intuitivo; la resolucin de un problema dificil toma ms tiempo.
Tambin se deduce que la complejidad observada de dos problemas, cuando
estn combinados, con frecuencia es mayor que la suma de las complejidades observadas cuando cada una de ellas se toma por separado: esto conduce a una estrategia de "divide y vencers" (es ms fcil resolver un problema complejo cuando ste
se divide en piezas ms manejables). Esto tiene implicaciones importantes con respecto a la modularidad y al software. De hecho, es un argumento para la modularidad.
Es posible concluir que si el software se subdivide en forma indefinida, el esfuerzo requerido para desarrollarlo se reducir en forma sensible. Por desgracia, hay
otras fuerzas que entran en juego, lo que ocasiona que esta conclusin sea (tristemente) invlida. En relacin con la figura 9.2, el esfuerzo (costo) para desarrollar un
solo mdulo de software decrece conforme se incrementa el nmero de mdulos. Si
se tiene el mismo conjunto de requisitos, ms mdulos significan un tamao individual menor. Sin embargo, a medida que crece el nmero de mdulos, el esfuerzo
(costo) asociado con la integracin de los mdulos tambin crece. Estas caractersticas conducen tambin a la curva total del costo o el esfuerzo que se muestra en la
figura. Existe un nmero M de mdulos que resultara en un costo de desarrollo
mnimo, aunque hasta el momento no se tiene la sofisticacin necesaria para predecir M con seguridad.
Las curvas que se muestran en la figura 9.2 proporcionan una gua til cuando se
considera la modularidad. sta debe aplicarse, pero se debe tener cuidado de per-
Regin de costo
mnimo
...,..,
...---"----,
. . r--, . .
1
I
,
;
;'
.,.,
- - - - - Costa/mdulo
Nmero de
mdulos
256
--,
&'
CLAVE
lo finolidod de lo
ocultacin de
informacin es reseivor
los detalles de los
estructuras de datos y
de los procesamientos
de procedimiento
detrs de uno intertoz
del mdulo. El
conocimiento de los
detalles no debe estor
ol olconce de los
usuorios del mdulo.
o que (cada uno) oculta a los otros". En otras palabras, los mdulos deben especficarse y disearse de manera que la informacin (procedimiento y datos) que est..
dentro del mdulo sea inaccesible para otros mdulos que no necesiten esa infor
macin.
La ocultacin implica que se puede conseguir una modularidad efectiva al defir
un conjunto de mdulos independientes que se comuniquen entre s y que inte
cambien slo la informacin necesaria para lograr la funcin del software. La abs
traccin ayuda a definir las entidades de procedimiento (o informacin) que conforman el software. La ocultacin define y fortalece las restricciones de acceso para lo.a:
detalles de procedimiento dentro de un mdulo y para cualquier estructura de date
local que utilice el mdulo [ROS75] .
El uso de la ocultacin de informacin, corno un criterio de diseo para sistema:c;
modulares, proporciona los mayores beneficios cuando se requieren modificaciones
durante la realizacin de las pruebas y, despus, en el curso de mantenimiento de
software. Como la mayora de los datos y procedimientos est oculta de las otra..
partes del software, existe una probabilidad menor de introducir errores inadvertido_
al realizar las modificaciones y propagarlos a otros lugares dentro del software.
CAPTULO 9
257
observe desde otras partes de la estructura del programa. Es justo preguntarse por
qu es importante la independencia.
El software con una modularidad efectiva, es decir, con mdulos independientes,
es ms fcil de desarrollar porque la funcin se puede fraccionar y las interfaces se
simplifican (considrense las ramificaciones cuando el desarrollo se realiza en equipo). Los mdulos independientes son ms fciles de mantener (y probar) porque se
limitan los efectos secundarios que originan las modificaciones al diseo o al cdigo, se reduce la propagacin de errores, y es posible emplear mdulos reutilizables.
En resumen, la independencia funcional es una clave para el buen diseo, y el diseo es la clave para lograr la calidad del software.
La independencia se evala aplicando dos criterios cualitativos: cohesin y acoplamiento. La cohesin es una medida de la fuerza funcional relativa de un mdulo.
El acoplamiento es una medida de la interdependencia relativa entre los mdulos.
La cohesin es una extensin natural del concepto de ocultacin de informacin
descrito en la seccin 9.3.5. Un mdulo cohesivo realiza una sola tarea, para lo que
requiere muy poca interaccin con otros componentes en otras partes del programa.
Dicho de manera sencilla, un mdulo cohesivo debe (idealmente) hacer slo una cosa.
El acoplamiento es una medida de la interconexin entre los mdulos de una
estructura de software. El acoplamiento depende de la complejidad de la interfaz
entre los mdulos, el punto donde se realiza una entrada o referencia a un mdulo,
y los datos que pasan a travs de la interfaz. En el diseo de software se intenta conseguir el acoplamiento ms bajo posible. una conectividad sencilla entre los mdulos da como resultado un software ms fcil de entender y menos propenso a experimentar el "efecto ola" [STE74]. el cual se presenta cuando surgen problemas en un
lugar y despus se propagan a travs del sistema.
9.3.7 Refinamiento
El refinamiento paso a paso es una estrategia de diseo descendente que propuso inicialmente Niklaus Wirth [WIR71) . El desarrollo de un programa se realiza al refinar
de manera sucesiva los niveles de detalle procedimentales. Una jerarqua se desarrolla al descomponer el enunciado macroscpico de una funcin (una abstraccin
procedimental) paso a paso hasta alcanzar las oraciones del lenguaje de programacin.
En realidad, el refinamiento es un proceso de elaboracin. Se inicia con el enunciado de una funcin (o una descripcin de datos) que se define con un alto grado
de abstraccin. Esto es, el enunciado describe los datos o la funcin de manera conceptual, pero no proporciona informacin acerca de los trabajos internos de la funcin o de la estructura interna de los datos. El refinamiento hace que el diseador
trabaje sobre el enunciado original y que proporcione ms y ms detalles conforme
se realiza cada refinamiento sucesivo (elaboracin)
La abstraccin y el refinamiento son conceptos complementarios. La abstraccin
le permite a un diseador especificar procedimientos y datos sin considerar detalles
258
"No fall. Slo enM1tr6 10 000 formas faOidos de hacer los cosos:
m1m,+,m1
9.3.8 Refabricacin
En www.
rtfo(torin..<011
Una actividad importante de diseo que sugieren muchos mtodos giles (ca::
se pueden 8fl<Olr
excelentes reCIMSOS
m lo rafubriar:n.
HOGARSEGURO
conceptos de disefio
la convnllci6ft:
cuatro miembros del equipo a<:oban de regresar de
NMlnOtio matutino, titulado ..Aplicacin de concepto$
de diseo", que ofreci un profesor local de
computacional )
petr
CAPTULO 9
259
260
PARTE DOS
Qu es
,na clase de
diseo "bien
formada"?
Primitivismo. Los mtodos asociados con una clase de diseo deben enfi
en el cumplimiento de un servicio para la clase. Una vez que el servicio ha
implementado con un mtodo, la clase no debe proporcionar otra forma de c
mentar la misma cosa Por eemplo, la clase videoclip del software de edi
video podran tener atributos punto-inicial y punto-final para indicar los puntos de
y fin del cltp (ntese que el video bruto cargado en el sistema puede ser mas
que el clip que se usa) Los mtodos establecerPuntolnicial() y establecerPuntoFinal:
porcionan los nicos medios para configurar los puntos de inicio y fin del clip.
cohesin alta. una clase de diseo cohesiva tiene un conjunto de respo
dades pequeo y enfocado, y aplica atributos y mtodos de manera sencilla
implementar dichas responsabilidades. Por ejemplo, la clase Videoclip del
re para la edicin de video podra contener un conjunto de mtodos para videoclip. Mientras cada mtodo se enfoque slo en atributos asociados con cl
clip se mantendr la cohesin.
CAPTULO 9
261
PlanodePlonta
tipo
dimensiones exteriores
ogregorCmoro( l
ogregorPared{ }
ogregorVenlono( )
borrorSegmenlo( )
dibujar()
Cmara
1
tipo
id
C<:tmpodevisin
ngulodebsquedo
Coofigurocinacercomiento
~1
Segm-,nto
Coordenadoinicio
Coordenodofin
obtenerTipo( )
dibujar()
f
1
S99mentodepard
000
Ventona
.,
.....
"'
S Una forma menos formal de enunciar la Ley de Demter es: "Cada unidad debe hablar slo con sus
amigos; no con extraos."
262
PARTE DOS
..
Vinod: Yo tambi-.
--~c&v1
&'
El modelo de diseo
tiene cuatro elementos
importantes: datos,
arquitectura,
componentes e
interfaz.
El modelo de diseo puede verse en dos dimensiones diferentes, como se ilustra ...
la figura 9.4. La dimensin del proceso indica la evolucin del modelo de diseo ca:forme se ejecutan las tareas de diseo como una parte del proceso del software. dimensin de abstracdn representa el grado de detalle a medida que cada eleme:to del modelo de anlisis se transforma en un equivalente del diseo y despus se
refina de una manera iterativa. En la figura, la lnea punteada indica la frontera en..~
los modelos de anlisis y diseo. En algunos casos se distingue con claridad entre :
modelos de anlisis y diseo; en otros, el modelo de anlisis se combina con el diseo y la distincin resulta menos obvia.
Los elementos del modelo del diseo utilizan muchos de los diagramas en u _
aplicados en el modelo de anlisis. La diferencia es que estos diagramas estn renados y elaborados como parte del diseo; se proporciona un mayor detalle para
implementacin especfica y se resaltan la estructura y el estilo arquitectnicos, :~
componentes que residen dentro de la arquitectura y las interfaces entre los com~
nentes y con el mundo exterior.
"llS ~ ocera1 de si el diseo es ne<esmio o evitable estn bastante fuero de lugar. el disefte es ilevitaWe. la
Sin embargo, es importante mencionar que los elementos del modelo anotados
lo largo del eje horizontal no siempre se desarrollan de una manera secuencial. ::.la mayora de los casos, el diseo arquitectnico preliminar establece la platafonr_
y lo siguen el diseo de interfaz y el diseo al nivel de componentes, los cuales _
menudo se realizan en paralelo. El modelo de despliegue con frecuencia se retras..
hasta que el diseo ha sido desarrollado por completo.
CAPTULO 9
263
Alto
, ...... -~isit
,o
w
"2
..
CII
,, -e
,o
e
j
Oiogromos de clase
Paquets de on61isis
Moi:lelo,CRC
D~~~~~rC:,~~~
Diagramas
de doto.s
de flujo
Diogromo1 de flujo
de control
Narrativos de
procesamiento
DiogromoJ de close
Paquetes e anlisis
Moilelos CRC
D~~~~g~,~~~~
O,ogromos e estado
1 Realizaciones de clase
de diseo
Subsistemas
Oiairamos de
co oborocin
)..._cte..Aol 1
D1a9romas
de secuencia
t-Diseo de interfose
tcnica
Diseo de nave9oci6n
Diseo de IGU
iy
Diagramas de secuencia
.........i-- .. ................
Dia9romos de colaboroci6n
Diagramas de componente
Clases de diseo
Diagramas de actividad
Diagramo, de secuencio
ases e no
aetivida!'.l
1agromos e secuencia
8!09romas
Elementos
orquitect6nicos
Elementos
de interfoz
.. -......................
Diagramas de secuencio
ea9ro~o'd~ s;omponente
~~~6C~,~~i6~
. . . .
Realizaciones de clase
ele diseo
Rsfinamisntos a:
si stemasd
Requisitos:
Restriccionef
lnteroperobi idod
Objetivos y
configuroci6n
Diagramas de componente
Clases de diseo
Diagramas de actividad
l?elinami,mlos a:
R~ti~~~if;es de clases
Boto
D~~~~g6r~~~~
Dxgramas ~e flujo
e datos
D;fe~~~~~~ de flujo
1
Narrativas de
procesamiento
Diagramas de estado
Elementos al nivel
de componenles
---
Subsistemas
Diagromas de despliegue
Elementos al nivel
del despliegue
9.4. l
Al igual que otras actividades de la ingeniera del software, el diseo de datos (algunas veces llamado arquitectura de datos) crea un modelo de datos o informacin que
se representa con un alto grado de abstraccin (la visin de los datos del cliente/usuario). Despus, este modelo de datos se refina en representaciones que de manera
progresiva tienen una implementacin especfica y que pueden procesarse mediante el sistema basado en computadora. En muchas aplicaciones de software la arquitectura de los datos tendr una profunda influencia sobre la arquitectura del software que los debe procesar.
La estructura de los datos siempre ha sido una parte importante del diseo del
software. Al nivel de los componentes del sistema, las estructuras del diseo de
datos y los algoritmos con que se manipulan son esenciales para la creacin de aplicaciones de alta calidad. Al nivel de aplicacin, la traduccin de un modelo de datos
(obtenido como una base de la ingeniera de requisitos) a una base de datos es esencial para alcanzar los objetivos de negocio de un sistema. Al nivel de negocios, la
264
PARTE DOS
&'
cada caso, el diseo de datos juega un papel importante. El diseo de datos se explica con mayor detalle en el captulo JO.
"'
c&v1
El modelo
arquitectnico se
derivo del dominio de
aplicacin, del modelo
de onlisis y de los
estilos y patrones
disponibles.
9.4.2
ir.-
forma y las relaciones entre ellas, y las puertas y ventanas que permiten el mo miento hacia y desde los cuartos. El plano de planta proporciona una visin glob;;:
de la casa. Los elementos del diseo arquitectnico dan una visin general del soware.
"El pblico esl ms fumiliorizodo con el diseo molo que con el bueno. En efecto, est coodi<ionodo opefer el mol lseo poi~~
con lo que vive. lo nuevo es omenozante, lo viejo es segmo.
26 5
TelfonoMvil
PDAln<ilmbrico
1
1
1
~,,
'
',
1
',
PoheldControl
\
\
\
I
I
I
I
\
pontallalCD
indicadoreslfD
.--- - - - - ~ Teclado
cara cterstica sTeclado
bocina
int rfas nalmbrica
leerGolpedeTecla( )
decodificarTeclo()
desplegarEstatus( J
'
<<Interfaz>>
luzLEDs()
Teclado
enviarMensajeControl( J
eerGolpedeTeclo()
decodificarTecla()
6 No resulta poco comn que las caractersticas de la mterfaz cambien con el tiempo. Por lo tanto. un
diseador debe asegurar que la especificacin para la mteaz se mantenga actualizada.
266
PARTE DOS
EaHif:iliM1
--...1t.-
ca.te111C1111!rlllse
inxioomuy
dmu disallo
delo 111.
clase. El UML define una interfaz de la siguiente manera [OMGOI]: "Una interfaz es
un determinante de las operaciones (pblicas] visibles de manera externa de uru::
clase. componente u otro clasificador (incluidos los subsistemas) sin especificaci"
de estructura interna". Dicho de un modo ms simple, una interfaz es un conjun~..
de operaciones que describe parte del comportamiento de una clase
acceso a esas operaciones.
y proporcion:
La clase PaneldeControl (figura 9.5) proporciona el comportamiento asociadcon un teclado y, por lo tanto, debe implementar operaciones de leerTeclaPresionado
y decodijiauTecla( ). Si estas operaciones se suministrarn a otra clase (en este case
a PDAinalmbrico y TelfonoMvil), resulta intil definir una interfaz como .:.
que se muestra en la figura. La interfaz llamada Teclado se muestra como un este
reotipo de <<interfaz>> o como un crculo pequeo y etiquetado que se conecta _
la clase con una lnea. La interfaz se define sin atributos y con el conjunto de operaciones necesarias para lograr el comportamiento de un teclado.
'<'. ,
;:.. t
_ _... fllll Cllllllln las personas cuoodo trotan de disear algo completmnente aprtlM
C 11 la ...... de los "8 son completamente tontos."
. , .. . . .
La lnea punteada con un tringulo abierto en su extremo (figura 9 .5) indica que
y armarios
Tambin describen los pisos que se usarn, los moldes que se aplicarn, y cualquie:
otro detalle asociado con el cuarto. El diseo al nivel de componentes para software describe por completo el detalle interno de cada componente del software. Par;:
C APiTtJLO 9
267
-----EJ
lograrlo el diseo al nivel de componentes define estructuras de datos para todos los
objetos de datos locales, as como detalle algortmico para todo el procesamiento
que ocurre dentro de un componente y una interfaz que permite el acceso a todas
las operaciones de los componentes (comportamientos).
,,.
Dentro del contexto de la ingeniera del software orientada a objetos, un componente se representa a manera de diagrama en UML como se muestra en la figura 9.6.
En esta figura se representa un componente llamado ManejoSensor (parte de la
funcin de seguridad de HogarSeguro). El componente est conectado a una clase
llamada sensor, la cual est asignada a ste mediante una flecha punteada. El componente Manejosensor realiza todas las funciones asociadas con los sensores de
HogarSeguro, entre las que se encuentran su monitoreo y configuracin. En el captulo 11 se presenta una explicacin ms a fondo acerca de los diagramas de componente.
Los detalles de diseo de un componente se pueden modelar a muchos grados distintos de abstraccin. En la representacin del procesamiento lgico se puede utilizar
un diagrama de actividad. El flujo detallado de procedimiento para un componente
puede representarse, ya sea mediante un pseudocdigo (una representacin del tipo
de lenguaje de programacin que se describe en el captulo 11), o de algn formato
diagramtico (por ejemplo, un diagrama de actividad o un diagrama de flujo).
268
UhiiU
Diagrama de
despliegue
enUMLpara
HogarSeguro.
PARTE DOS
Panel de control
5eAidor de CPI
.-
~'S;.,;Jmll
_____,/
- AccesoPropietorio
,...._
Vigilancia
"'
C~VE
Los diogromos de
despliegue comienzan
en un formato
descriptor, donde el
entorno de despliegue
se describe en
trminos generales.
Despus se utilizo un
fomioto de instoncio y
se describen de
mero ex~icito los
elementos de lo
ClfflJUfOn.
... tlllle yralnn, loma ooa ~ relajacin. Cuando regreses ol trahojo, to juicio ser ms SIIJIII' T alae
. . _ parque eatonces el trabajo parece ms pequea, uno mayor porte del mismo puede
llilila yla falla de armona yproporcin se observo con ms focitidod:"
ser_.
CAPTULO 9
269
Los mejores diseadores en cualquier campo de trabajo tienen la misteriosa habilidad de vislumbrar patrones que caracterizan un problema y los patrones correspondientes que pueden combinarse para crear una solucin. A travs del proceso de
diseo, un ingeniero de software debe buscar toda oportunidad para reutilizar patrones de diseo existentes (cuando cumplen las necesidades de un diseo) en vez de
crear nuevos.
9.5.1
lar el patrn.
270
PARTE DOS
para que sea factible encontrar un patrn apropiado. Por ltimo, la gua asoci:.
con el uso de un patrn de diseo indica las ramificaciones de las decisiones diseo.
......
"
,.es palronls
estn all1ldio bornear, lo que significo que siempre debes termilarlos y adaplDrfo$ aIII ptapio
'
Los nombres de los patrones de diseo deben elegirse con cuidado. Uno de
problemas tcnicos clave en la reutilizacin de software es la falta de habilidad p_...
encontrar patrones reutilizables existentes, a pesar de que existen cientos o miles ..,_
patrones. La bsqueda del patrn "correcto" tiene un apoyo inmenso si se cue:1:!.
con un nombre significativo del patrn.
Qu tipos
de patrones
de diseo estn
disponibles para
el ingeniero de
sohware?
CAPTULO 9
271
272
[AMBO I J Ambler, s.. The Object Primer. cambridge Univ. Press, 2a. ed., 2001.
[APP98J Appleton, 8., "Pattems and software: Essential Concepts and Terminology", xm
obtenerse en http://wwwenteract.com/-bradapp/docs/pattems-intro.html.
[ARI...02] Arlow, J. e l. Neusdadt, UML and the Unified Proeess, Addson-Wesley, 2002.
[BEL81] Belady, L, prlogo de Software Design, Methods and Techniques (L J. Peters, autor) 'i
don Press, 1981.
[FOWOOJ Fowler, M . et al., Refactoring: tmproving the Design of Existing Code, Addison-\\
2000.
(GAM951 Gamma, E. et al., Design Pattems, Addison-Wesley, 1995.
[GAR951 Garlan, D. y M . Shaw, #An lntroduction to software Architecture", en Advances
SOjh,vare Engineering and Knowledge Engineenng, vol. I r,,. Ambriola y G. Tortera, eds.) \Scientific Publishing Company, 1995.
[GRA87J Grady, R. 8 . y D. L. casswell, Software Metrics: Establishing a Company-Wide Pros-=
Prentice-Hall. 1987.
UAC75] Jackson, M. A., Prindples ofProgram Design, Acadernic Press, 1975.
[UE03] Lieberherr, K., "Demeter: Aspect-Oriented Programming", mayo de 2003, disponibl..::
http://www.ccs.neu.edu/home/lieber /LoD.html.
[MAI03J Maioriello, J ''What Are Design Pattems and Do I Need Them?", developer.com. 2
disponible en http://www.developer.com/design/article.php/ 1474561.
[MCG91 J McGlaughlin, R . "SOme Notes on Program Design", en Software Engineering Notes
16, nm. 4, octubre de 1991, pp. 53-54.
[MYE78] Myers, G., Composite Strudured Design, Van Nostrand, l 978.
[OMGOIJ Object Management Group, OMG Unijied Modeling Language Specificati.on, versin
septiembre de 2001.
[PAR72J Parnas. D. L., "On Criteria to be used in Decomposing Systems into Modules",
vol. 14, nm. 1, abril de 1972, pp. 221-227.
[ROS751 Ross, D., J Goodenough y C. lrvine, "SOftware Engineering: Process, Principies
Goals", en IEEE Computer, vol. 8, nm. 5, mayo de 1975.
[SCH02] Schmuller. J.. Teach Yourself UML, SAMS Publishing, 2002.
[SHA96] Shaw, M. y D. Garlan, software Architecture, Prentice-HaU, 1996.
[STA02) " Metaphor", en The Stanford HO Leammg Space, 2002, http:/ /hci.stanford.edU,::,.
concepts/metaphor.html.
[STE74J Stevens, w., G. Myers y L Constantine, "Structured Design", en IBM systems Jouma..
13, nm. 2, 1974, pp. 115- 139.
[WIR71J Wirth, N., " Program Oevelopment by Stepwise Refinement", en C4CM, vol. 14, n::l.
1971 , pp. 221 - 227.
CAPTULO 9
273
9.1. Se disea un software cuando se "escribe" un programa? Qu es lo que hace que el diseo de software sea diferente a la generacin de cdigo?
9.4. Examinar el conjunto de tareas presentadas para un diseo. Cundo se evala la calidad
dentro del conjunto de tareas? Cmo se logra esto?
9.5. Dar ejemplos de tres abstracciones de datos y abstracciones procedimentales que puedan
utilizarse para manipularlas.
9.6. Describir con argumentos propios la arquitectura de software.
9 . 7 . sugerir un patrn de diseo relacionado con una categora de cosas cotidianas (por ejemplo, productos electrnicos, automviles, aparatos). Documentar el patrn con ayuda de la
plantilla que se presenta en la seccin 9.5.
9 .8 . Existe algn caso en el que los problemas complejos requieran de menos esfuerzo para
resolverse? Cmo afectara ese caso el argumento para la modularidad'
9 .9. se debe implementar un diseo modular como software monolitico? Cmo se puede
lograr esto? El desempeo es la nica justificacin para la implementacin del software monoltico?
9 . 1o. Explicar la relacin entre el concepto de ocultacin de informacin como un atributo de
modularidad efectiva y el concepto de independencia del mdulo.
9 . 11. Cmo se relacionan los conceptos de acoplamiento y portabilidad del software? Dar
ejemplos que apoyen la explicacin.
9 . 12. Aplicar un "enfoque de refinamiento paso a paso" para desarrollar tres grados diferentes
de abstraccin procedimental para uno o ms de los siguientes programas: a) Desarrollar una
mquina que expida cheques que, al dar una cantidad numrica en dlares, imprima la cantidad en palabras que por lo general se requiere en un cheque; b) resolver de manera iterativa la
raz de una ecuacin trascendental; e) desarrollar una tarea simple que planee algoritmos para
un sistema operativo.
9.13. Realizar una pequea investigacin sobre programacin extrema y escribir un texto
breve acerca de la refabricacin para un proceso de desarrollo de software gil.
9.14. Visitar un depsito de patrones de diseo (en la web) y navegue por unos minutos a travs de los patrones. Elegir uno y presentarlo ante los compaeros de clase.
Donald Norman ha escrito dos libros (The Design of Everyday Things, Doubleday, 1990, y The
Psychology of Everyday Things, HarperCollins, 1988) que se han convertido en clsicos en la
bibliografia sobre diseo y "debe" leerlos cualquiera que disee cualquier cosa que usen los
humanos. Adams (Conceptual Blockbusting, 3a. ed., Addison-Wesley, 1986) ha escrito un libro
que es una lectura esencial para los diseadores que qu'eran ampliar su manera de pensar. Por
ltimo, un texto clsico de Polya (How to So/ve Jt, Princeton University Press, 2a. ed., 1988) proporciona un proceso de resolucin de problemas genrico que puede ayudar a los diseadores
de software al enfrentarse con problemas complejos.
Dentro de la misma tradicin, Winograd et al. C&mgmg Design to Software, Addison-Wesley,
1996) analiza los diseos de software que funcionan, los que no funcionan y por qu. un libro
fascinante editado por Wixon y Ramsey (Field Methods Casebook for Software Design, Wiley,
274
PARTE DOS
1996) sugiere mtodos de investigacin de campo (muy parecidos a los que utilizan los arum
plogos) para entender cmo los usuarios finales hacen el trabajo que hacen, y despus ofrec:
una gua para disear el software que satisfaga sus necesidades. Beyer y Holtzblatt (Contex....;
Design: A Customer-Centered Approach to ~ems Designs, Academic Press, 1997) ofrecen et.. il
visin del diseo de software que integra al cliente-usuario en cada aspecto del proceso .:-...
diseo de software.
McConnell (Code Complete, Microsoft Press, 1993) presenta una excelente exposicin de
aspectos prcticos de disear software para computadora de alta calidad. Robertson (Sur:;
Program Design, 3a. ed., Kboyd y Fraser Publishing, 1999) ofrece una til explicacin introo...:
toria del diseo de software para quienes comienzan su estudio acerca del tema. Fowler ) ~
colegas (Rejactoring: lmproving the Design oJExisting Code, Addison-Wesley, 1999) exponen te:
nicas para el mejoramiento incremental de los diseos de software.
En la dcada pasada se han escrito muchos libros sobre diseos basados en patrones pare
ingenieros de software. Gamma y sus colegas [GAM95] han escrito el libro fundamental so:: :,
el tema. Otros libros de oouglass (Rea/-Tfme Design Pattems, Addison-Wesley, 2002), Metsl::"'
(Design Pattems Applied, Wrox Press, 2002), Marinescu y Roman (EJB Design Pattems, v.r
2001) sitan patrones de diseo en ambientes de aplicacin y lenguajes especficos. Ader.--.zs.
los libros clsicos del arquitecto Christopher Alexander (Notes on the synthesis ofForm, Harva:!
University Press. 1964, y A Pattem La.nguage: Towns, Buildings, Construction, Oxford Univers;::I:
Press. 1977) debe leerlos el diseador de software que pretenda comprender a fondo los ~ ~
nes de diseo.
En Internet se dispone de una amplia variedad de fuentes de informacin sobre ingenie""
de diseo. Una lista actualizada de referencias en la red mundial relevantes para el diseo software y la ingeniera de diseo puede encontrarse en el sitio web de SEPA:
http://www.mhhe.com/pres.sm.an.
DISEO
ARQUIJECTNICO
....289
.276
I diseo se ha descrito como un proceso de varios pasos ert el cual las re~
presentaciones de la estructura de los datos y el programa, las caractenstkas de la informacin y el detalle procedimental se sintetizan a partir de
los requisitos. Esta descripcin la ampla Freeman (FRESO]:
fDJiseo es una actividad relacionada con la toma.de decisiones, a menudo de. naturaleza estructural. Comparte con la prograrnacit'I una preocupacin relacionada con
abstraer la representacin de la informacin y las secuencias del procesamiento, pe~
ro el grado de detalles es muy diferente en los extremos. J;l diseo construye representaciones coherentes y bien planeadas de los programas, que se concentran en las
interrelaciones entre las partes al nivel ms elevado y las operaciones lgicas et'I tos
niveles inferioresT
276
,a....._ de un
,i.-
.. se
10.1.1
bus""
Qu es la arquitectwa?
277
Pero qu pasa con la arquitectura del software? Bass, Clement y Kazman [BAS03]
definen este trmino elusivo de la siguiente manera:
La arquitectura del software de un programa o sistema de cmputo es la estructura o las
estructuras del sistema, que incluyen los componentes del software, las propiedades visibles externamente de esos componentes y las relaciones entre ellos.
.
Esta definicin destaca el papel de los "componentes del software" en cualquier
representacin arquitectnica. En el contexto del diseo arquitectnico, un componente de software es algo tan simple como un mdulo del programa o una clase
orientada a objetos, pero tambin se extiende para incluir bases de datos y middleware que permita configurar una red de clientes y servidores.
En este libro, el diseo de la arquitectura del software considera dos niveles de la
pirmide del diseo (figura 9.1): el diseo de datos y el diseo arquitectnico. En el
contexto del anlisis anterior, el diseo de los datos permite representar el componente de datos de la arquitectura en sistemas convencionales y definiciones de clase (atributos y operaciones de encapsulamiento) de los sistemas orientados a objetos. El diseo arquitectnico se concentra en la representacin de la estructura de
los componentes del software, sus propiedades e interacciones.
l 0.1.2 Por qu es importcmte la arquitectura?
En un libro dedicado a la arquitectura del software, Bass y sus colegas [BAS03J identifican tres razones clave por las cuales la arquitectura del software es importante:
Las representaciones de la arquitectura del software permiten la comunicacin entre todas las partes (participantes) interesadas en el desarrollo de un
sistema de cmputo.
La arquitectura destaca las decisiones iniciales relacionadas con el diseo que
tendrn un impacto profundo en todo el trabajo de la ingenieria del software
que le sigue y, Jo que tambin resulta importante, en el xito final del sistema
como entidad operacional.
La arquitectura "constituye un modelo relativamente pequeo e intelectualmente comprensible de cmo est estructurado el sistema y cmo trabajan
juntos sus componentes" [BAS03J
278
La accin de diseo de datos traduce los objetos de datos definidos como parte
modelo de anlisis (capitulo 8) en estructuras globales al nivel de componentes
software y, cuando es necesario, una arquitectura de base de datos al nivel de
cacin. En algunas situaciones debe disearse y construirse una base de datos~
cficamente para un nuevo sistema. Sin embargo, en otras, se emplean una o
bases de datos existentes.
i'dlf: . Fw1
!n el siguentasilio
Weo ~ obtillne
illformod6n (bl(a de
laste~~
okmndedo~:
.............
IWWW.
cea.
Otras /ecru.
CAPTULO 10
279
DISEO ARQUITECfNICO
Minera y almacenamtento
de datos
Objetivo: Los herromientos de lo minera de
ayudon en lo identificocin de relociones entre
s que describen un objeto de datos especfico o un
-""1o de objetos de dotos. los herromientas poro el
~=enomienlo de dotos oyudon en el diseo de modelos
... ..TI almacn de dotos.
Almacenamiento de datos:
lndustry Warehouse 5tudio, desorrollodo por Sybase
(www.sybose.com), proporciona uno infroestructura de
olmocn de dotos empoquetodo que "sirve como
lrompolnN poro iniciar el diseo de un almocn de dotos.
IFW Business /ntelligence Suite, desarrollado por
Modelwore (www.modelwarepl.com), es un conjunto de
modelos, herramientas de software y diseos de base
de datos que "proporcionan un camino rpido al
a lmacn de datos y a l diseo y la implementacin de
centros de acopio de datos".
Una lista extensa de herramientas y recursos de minera y
almacenamiento de datos se encontrar en el Data
Worehousing lnformotion Center (www.dwinfocenter.org).
2 . Deben identificarse todas las estructuras de datos y las operaciones que se reali-
zarn. El diseo de una estructura de datos eficiente debe tener en cuenta las
operaciones que se realizarn en la estructura de datos. Los atributos y operaciones encapsulados dentro de una clase satisfacen este principio.
El autor no respalda las herramientas expuestas; slo representan una muestra de esta categora.
En casi todos los casos los nombres son marcas registradas de sus respectivos desarrolladores.
280
mcx
Estos principios forman una base para un enfoque de diseo de datos, al nivel componentes, que se integre a las actividades de anlisis y diseo.
Cuando un constructor estadounidense usa la frase "colonial con una sala al centr-r
(centre hall colonia]) para describir una casa, la mayora de quienes estn famil:.:.
zados con las casas en Estados Unidos evocar una imagen general del aspecto _
la casa y de su plano general. El constructor ha usado un estilo arquitectnico ca.mecanismo descriptivo para diferenciar la casa de otros estilos (por ejemplo, ma:.
en A, rancho elevado, cape Cod). Pero algo ms importante es que el estilo arquite
tnico tambin es una plantilla para la construccin. Resulta necesario proporcioc
mayores detalles de la casa. Se deben especificar sus dimensiones finales, agregcaractersticas personalizadas. determinar los materiales de construccin, perc
estilo ("colonial con sala al centro") es el que gua el trabajo del constructor.
CAPTULO 10
DISEO ARQ.UITECl'NICO
281
10.3. l
una base de datos) se encuentra en el centro de esta arquitectura; otros componentes tienen acceso a l y cuentan con la opcin de actualizar, agregar, eliminar o, por
otra parte, modificar los datos de ese almacn. En la figura 10. l se ilustra un estilo
tpico centrado en datos. El software cliente tiene acceso a un almacn central. En
algunos casos ste es pasivo. Es decir, el software cliente accede a los datos independientemente de cualquier cambio hecho a los datos o a las acciones de otro software cliente. Una variacin de este enfoque transfonna el depsito en un "pizarrn"
que enva notificaciones al software cliente cuando cambian los datos de inters para el cliente.
Arquitectura
centrada en
datos.
Software
Softw<we
d iente
Software
denle
d ienle
Software
cliente
Software-
Software
cliente
cliente
Software
diente
Filtro
Filtro
Filtro
Filtro
Tuberas y filtros
Filtro
Filtto
filtro
CAPTULO 10
283
DJSEO ARQUITEC!NICO
cuenta si los componentes tienen flujo ascendente o descendente; est diseado para esperar la entrada de datos con cierta forma y producir su salida (al siguiente filtro) de una forma especifica. Sin embargo, no es necesario que el filtro conozca el
funcionamiento de los filtros vecinos.
ProglQl'IIO principal
Su=ma
co
Subprogromo
de oplicoci(,
OI'
Subprograma
de oplicocin
Subprogromo
controlodor
Subprogromo
Sobprogr<:uno
de oplicocin
de oplicacin.
Subprograma
de aplicacin
284
PARTE DOS
Arquitectura orientada a objetos. Los componentes de un sistema encapst.. los datos y las operaciones que deben aplicarse para manipular los datos. La co:-inicacin y coordinacin entre componentes se consigue mediante el paso de meT\Sa' ~
Arquitectura estratificada. En la figura 10.4 se ilustra la estructura bsica de
arquitectura estratificada. Hay varias capas definidas; cada una de ellas realiza :-,e.
raciones que se acercan progresivamente aJ conjunto de instrucciones de la m("::
na. En la capa externa los componentes sirven a las operaciones de interfaz de us..:
rio. En la capa interna los componentes sirven como interfaz con el sistema opc:z
tivo. Las capas intermedias proporcionan servicios de utilera y de software de a;-::
caciones.
Estos estilos arquitectnicos slo son un pequeo subconjunto de los que ~
ne el diseador de software. 2 Una vez que la ingeniera de requisitos define las
racteristicas y restricciones del sistema que habr de construirse, podrn elegirse
estilo arquitectnico o la combinacin de estilos que mejor combinen con las ca:tersticas y restricciones. En muchos casos ser apropiado ms de un estilo y poo:
disearse y evaluarse distintas opciones. Por ejemplo, en muchas aplicaciones
base de datos se combina un estilo por capas (apropiado para casi todos los s
mas) con una arquitectura centrada en datos.
2 Consltese [BOSOOJ. [HOFOOJ, [BAS03J, (SHA97], (BUS96J y [SHA96J para contar con un analis:s
tallado de los estilos y patrones arquitectnicos.
CAPTULO 10
285
DISEO ARQUITECIN!CO
el espacio.
Jamie: Bueno, eso no es cierto. Hay ierQrquQS de
clase... piensa en la erarqua (09re9ad6n) q hicimos
para el objeto PlanoCasa [figuro 9.3]. Una arquitectu
ro orientada a objetos es uno combinocio de esa
estructvr<:i y las interconexiones (ya sobes, coloboraei
nes) entre las clases. lo mostraremos al describir por
completo b atributo$ y las operaciones, los mensajes
que se intercambian y la estructura de las doses,
Ed: Voy a dedicar una hora a correlociQllQr \ir'ld orqui
lectura de llamada y r~romo, loego regresor aqu y
pensar en lo arquitectura orientada o objetos.
Jamie: Doug no tendr prQblema con 8$0. l dijo q~
debemos considerar orquitectvros alternos. Por cierto~ no
hay ninguna razn poro no combinar amhcs orquitectu
ros.
meneas, fachada de la casa, colocacin de puertas y ventanas) variarn considerablemente, pero una vez que se ha tomado la decisin de la arquitectura general de
la casa, el estilo se impondr al diseo.4
Los patrones arquitectnicos difieren un poco.s Por ejemplo, cada casa (y todo estilo arquitectnico para casas) emplea un patrn cocina, el cual define la necesidad
de colocar los articulos bsicos de cocina, un fregadero, alacenas y, posiblemente,
Esto indica que tendr una sala central y un pasillo, que las habitaciones estarn colocadas a la izquierda y la derecha de la sala, que la casa tendr dos lo ms) pisos, que los dormitorios estarn en
la planta alta, etc. Estas "reglas" se imponen una vez que se ha tomado la decisin de usar el estilo
colonial con sal a al centro.
Es importante observar que no hay un acuerdo universal sobre la terminologa. Algunas personas
(por ejemplo, [BUS96)) usan los trminos estilos y patrones como sinnimos, mientras que otros hacen la sutil distincin sugerida en esta seccin.
286
~,
C~VE
Uno arquitectura del
softwore tiene wrios
patrones
orquilectnicos que
PARTE DOS
reglas para ubicar cosas relacionadas con el flujo de trabajo en la habitacin. Ad<:
ms, el patrn podra especificar la necesidad de cubiertas y acabados, iluminaci'"
interruptores de pared o una isla central, pisos, etc. Obviamente, hay ms de un a.seo de cocina, pero todo diseo se concebir dentro del contexto de la "soluci&que sugiere el patrn cocina.
Como ya se indic, los patrones arquitectnicos para el software definen un e""'foque especfico para el manejo de alguna caracterstica de comportamiento del ~
tema. Bosch [BOSOOJ define varios patrones arquitectnicos. En los siguientes pr!':fos se presentan ejemplos representativos.
Concurrencia. Muchas aplicaciones deben manejar varias tareas de manera tal cr~
simulen paralelismo (es decir, esto ocurre cada vez que un solo procesador mane _
varias tareas "paralelas" o componentes). Una aplicacin tiene varias maneras .:.z
manejar la concurrencia, y cada una se presenta mediante un patrn arquitectrv
diferente. Por ejemplo, un enfoque consiste en usar un patrn de manejo de pr~
sos del sistema operativo que ofrece caractersticas integradas del sistema opera.::
vo que permiten la ejecucin concurrente de los componentes. El patrn tambin corpora funcionalidad del sistema operativo que maneja la comunicacin entre
procesos, la calendarizacin y otras funciones requeridas para alcanzar la Cf'CO
rrencia. Otro mtodo sera definir un calendarizador de tareas al nivel de aplicad
un patrn calendarizador de tareas contiene un conjunto de objetos activos, y e.a-..
uno de ellos incluye una operacin tic() [BOSOOJ. El calendarizador invoca peri~camente tic() para cada objeto, que luego realiza las funciones que debe realizar:;.:
tes de regresar el control al calendarizador, mismo que invoca de nuevo la ope::
cin tic( J para el siguiente objeto concurrente.
Persistencia. Los datos persisten si sobreviven despus de la ejecucin del pror..r.-
so que los cre. Los datos persistentes se almacenan en una base de datos o ur ;:,:
chivo; en un momento posterior, otros procesos tienen la opcin de leerlos o ~
ficarlos. En los entornos orientados a objetos la idea de un objeto persistente exte:i-de un poco ms el concepto de persistencia. Los valores de todos los atributos
objeto, el estado general de ste y otra informacin complementaria se almace.:para su aplicacin y recuperacin posterior. En general, se emplean dos patrones quitectnicos para lograr la persistencia: 1) un patrn de sistema de administroa
de base de datos que aplica las capacidades de almacenamiento y recuperacin de
sistema de administracin de base de datos a la arquitectura de la aplicacin o
un patrn de persistencia al nivel de la aplicacin que construye caractersticas de p:o
sistencia en la arquitectura de sta (por ejemplo, el software de procesamientc .
palabras que maneja su propia estructura de documento).
Distnl>ucin. El problema de la distribucin dirige la manera en que se comun..::;:
287
tablecido para dirigir el problema de la distribucin es el de corredor. Un corredor acta como "intermediario" entre el componente cliente y un componente servidor. El
cliente enva un mensaje al corredor (que contiene toda la informacin apropiada
para que se realice la comunicacin), el cual completa la conexin. CORBA (captulo 30) es un ejemplo de una arquitectura de corredor.
Antes de elegir cualquiera de los patrones arquitectnicos indicados en los prrafos anteriores, debe evaluarse si es apropiado para la aplicacin y el estilo arquitectnico general, adems de evaluar su facilidad de mantenimiento, confiabilidad, seguridad y desempeo.
10.3.3 Organizacin y refinamiento
Debido a que el proceso de diseo suele dejar a un ingeniero de software con varias
opciones arquitectnicas, es importante establecer un conjunto de criterios de diseo para evaluar un diseo arquitectnico. Las siguientes preguntas [BAS0.3] proporcionan una visin especifica del estilo arquitectnico que se ha derivado.
Control. Cmo se maneja el control dentro de la arquitectura? Existe una jerarqua de control distintiva y, si es as, cul es la funcin de los componentes dentro
de esta jerarquia de control? Cmo transfieren los campos el control dentro del sistema? Cmo se comparte el control entre los componentes? Cul es la topologa
del control (es decir, cul es la forma geomtrica que asume el control)? Est sincronizado el control o los componentes operan asincrnicamente?
Datos. Cmo se comunican los datos entre los componentes? El flujo de datos
es continuo o los objetos de datos se pasan espordicamente al sistema? Cul es el
modo de transferencia de los datos (por ejemplo, los datos se pasan de un componente a otro o estn disponibles globalmente para compartirse entre los componentes del sistema)? Existen componentes de datos (por ejemplo, un pizarrn o almacn) y, de ser as, cul es su papel? Cmo interactan los componentes funcionales
con los de datos? Los componentes de datos son pasivos o activos (es decir, interactan activamente con otros componentes del sistema)? Cmo interactan los
datos y el control dentro del sistema?
Estas preguntas proporcionan al diseador una evaluacin temprana de la calidad
del diseo y sientan las bases para un anlisis ms detallado de la arquitectura.
288
PARTE DOS
nas del software, el diseador especifica la estructura del sistema al definir y refi=los componentes del software que implementan la arquitectura. Este proceso prosi:i;
de manera iterativa hasta que se obtiene una estructura arquitectnica completa.
,,
~
C~VE
El contexto
arquitectnico
represento lo manero
en que el software
interacto con los
entidades externos a
sus timites.
Cmo inter
actan los
sistemas &ntre s?
.z
nan los datos o el procesamiento necesarios para completar la funciona li~del sistema de destino.
Sistemas superordinodos
.----....
Diagrama de
contexto
arquitectnico
(adaptado de
[BOSOO]).
Sistema de destino
Uses
Pares
Usan
ctores
Sistemas subordinados
CAPTULO 10
289
DISENO ARQUITECTNJOO
Sistemas al nivel de par: los que interactan de igual a igual (es decir, la informacin la producen o consumen los pares y el sistema de destino).
un arquetipo es una clase o un patrn que representa una abstraccin central importantsima en el diseo de una arquitectura para el sistema de destino. En general, se
requiere un conjunto relativamente pequeo de arquetipos para disear incluso sistemas relativamente complejos. La arquitectura del sistema de destino la integran
Producto
Sistemo bosodo
HogorSeguro
en Internet
Panel de
control
Propietario
Sistema de destino:
funcin de seguridad
funcin de
Uso
vigllanda
Pares
290
arquetipos, que representan elementos estables de la arquitectura pero que pued!:dar paso a instancias de muchas maneras diferentes, con base en el comportarme
to del sistema.
En muchos casos, los arquetipos se derivan al examinar las clases de anlisis c.
finidas corno parte del modelo de anlisis. Si se contina el anlisis de la funcir ~
seguridad casera de HogarSeguro se definirian los siguientes arquetipos:
Nodo. Representa una coleccin cohesiva de elementos de entrada y salida
en la funcin de seguridad casera. Por ejemplo, un nodo estara integrado P'w
1) varios sensores y 2) varios indicadores de alarma (salida).
Detector. Una abstraccin que abarca todo el equipo de sensores que alimenta informacin en el sistema de destino.
Indicador. Una abstraccin que representa todos los mecanismos (por ejerplo, sirena de alarma, luces parpadeantes, timbre) para indicar que est oc..rriendo una condicin de alarma.
Controlador. Una abstraccin que descnbe el mecanismo que permite el a:mado o desarmado de un nodo. Si los controladores residen en una red tie:-~
la capacidad de comunicarse entre s.
Cada uno de estos arquetipos se describe con la notacin UML, como se muestra et
la figura 10.7.
Recurdese que los arquetipos forman la base de la arquitectura pero son abstrar
ciones que deben refinarse an ms a medida que avanza el diseo arquitectr.
Por ejemplo, Detector podra refinarse en una jerarqua de clase de sensores.
10.4.3 Refinamiento de la arquitectura en componentes
A medida que se refina la arquitectura del software en componentes, la estruct..J:t
del sistema empieza a emerger. Pero cmo se eligen estos componentes? Para =~
iihfiiD
Relaciones
UMLparalos
mquetipos de
la funcin de
ls.,o
....
seguridad de
HogarSeguro
(adaptado de
CBOSOOD.
munico con
1
.... ~ . . Ir
'
CAPTULO l O
291
DISEO ARQUITECTNIOO
ponder, el diseador de la arquitectura empieza con las clases descritas como parte
del modelo de anlisis. 6 Estas clases de anlisis representan entidades dentro del dominio de la aplicacin (negocio) que deben atenderse dentro de la arquitectura del
software. Por tanto, el dominio de la aplicacin es una fuente para la derivacin y el
refinamiento de los componentes. Otra fuente es el dominio de la infraestructura. La
arquitectura debe adecuarse a muchos componentes de infraestructura que habilitan los componentes de la aplicacin, pero que no tienen conexin de negocios con
el dominio de la aplicacin. Por ejemplo, los componentes de administracin de memoria, de comunicacin, de base de datos y de administracin de tareas suelen integrarse en la arquitectura del software.
La interfaz descrita en el diagrama de contexto de la arquitectura (seccin 10.4.1)
indica que uno o ms componentes especializados procesan los datos que fluyen por
la interfaz. En algunos casos (por ejemplo, una interfaz grfica de usuario) debe disearse una arquitectura completa de subsistemas con muchos componentes.
*la estructura de un smema de software proporciona lo ecologa en que noce, maduro y muere ti cdigo. Un h6bitut
llietl .._ pennite el xito en lo evolucin de todos los componentes necesarios de un sistema de S11flwore."
lt.tottts
Continuando con la funcin de seguridad casera de HogarSeguro, se definir el
conjunto de componentes de nivel superior que atienden la siguiente funcionalidad:
Administracin de comunicacin externa: coordina la comunicacin de la fun -
control.
Manejo del detector: coordina el acceso a todos los detectores conectados al
sistema.
Procesamiento de alarma: verifica todas las condiciones de alarma y acta so-
bre ellas.
Cada uno de estos componentes de nivel superior tendra que elaborarse iterativamente y luego posicionarse dentro de la arquitectura general de HogarSeguro. Para
cada uno se definiran clases de diseo (con los atributos y las operaciones apropiadas) . Sin embargo, es importante observar que los detalles de diseo de todos los
atributos y las operaciones slo se especificaran hasta la realizacin del diseo en
el nivel de componentes (captulo 11).
En la figura 10.8 se ilustra la estructura arquitectnica general (representada como
un diagrama de componentes UML) . El componente Manejo de comunicacin externa
6
Si se elige un enfoque convencional (no orientado a objetos\, es posible derivar los componentes del
modelo de flujo de datos. En la seccin 10.6 se analizar este enfoque.
292
PARTE DOS
DireciOf'
HagarSeguro
~-
''
Manejo de
Seleccin
de funcin
''
'
<!omunicocin
externo
,,
,,
Interfaz grfica
de usuario
'
''
''
''
''
'
,,
Vigilancia
,,
Admini
de lo ces::
Interfaz de
Internet
Procesamiento
de pone!
de control
Procesamiento
de alarmo
CAPTULO l O
293
DISEO ARQ.UITECTNIOO
-''
'
''
''
''
''
'
''
''
''
s _
''
Interfaz de
Internet
',,
',,
PrQCesarniento
depone!
de control
,,
,,
,
,,
,,
,,
,,
Com11nicaci6n
telef6nico
Colendorzodor
funciones de
despl~ue CP
Diseo arquitectnico
Objetivo: Los herramientas de diseo
arquitectnico modelan lo estructuro general del
.iore al representar interfases, dependencias,
'9IIXJOlleS e inlerocciones de los componentes.
Senso,
Alarmo
7 Las herramientas expuestas slo representan una muestra de esta categora. En casi todos los casos los nombres son marcas registradas por sus respectivos desarrolladores.
294
PARTE DOS
En el mejor de los casos, el diseo produce varias opciones arquitectnicas que s-evalan para determinar cul es la ms apropiada respecto al problema que hahde resolverse. En las siguientes secciones se analizaran diseos arquitectnicos a.
ternos.
ltC.W.
El Instituto de Ingeniera del Software (SEi, por sus siglas en ingls) ha desarrollac.
un mtodo de anlisis de compensacin para la arquitectura (MACA) [KAZ98] que .:'.
fine un proceso de evaluacin iterativo para las arquitecturas del software. Las s:
guientes actividades de anlisis del diseo se realizan iterativamente:
~Gllnlfo
..........
...,..._........,
sobreWICAse
OOll!ldlert
.....
CAPTULO 10
DISEO ARQUITECINICO
295
que son sensibles varios atributos. Por ejemplo, el desempeo de una arquitectura cliente-servidor sera muy sensible al nmero de servidores (el desempeo aumentar, dentro
de cierto rango, al aumentar el nmero de servidores) ... Por tanto, el nmero de servidores es un punto de compensacin para esta arquitectura.
Estos seis pasos representan la primera iteracin MACA. Con base en los resultados
de los pasos 5 y 6 ser posible eliminar algunas opciones arquitectnicas, modificar
una o ms de las arquitecturas restantes y representarlas con ms detalle,
aplicar de nueva cuenta los pasos de MACA.8
y luego
de la arquitectura
El mtodo de anlisis de la arquitectura del software (MAAS) es una alternativa a MACA y vale la pena
que los lectores interesados en el anlisis arquitectmco lo examinen Un articulo sobre MAAS se
descarga de http:/ /www.sei.cmu.edu/publications/ articlest saam -metho-propert-sas.htm.
296
PARTE DOS
u y v que se
Las dependencias compartidas y de flujo que seala Zhao son similares al conc
de acoplamiento descrito en el captulo 9. Acoplamiento es un concepto importante
diseo que se aplica al nivel de arquitectura y de componentes. En el captulo 15
expondrn mtricas simples para evaluar el acoplamiento.
CAPTULO 10
297
DISEO ARQUITECfNICO
10.6.1
Flujo de transformacin
La informacin debe entrar y salir del software en una forma lgica para "la realidad
externa". Por ejemplo, los datos escritos en un teclado, los tonos de una linea telefnica y las imgenes de video en una aplicacin multimedia son medios de informacin de la realidad externa. Estos datos externos deben convertirse en una forma
interna para el procesamiento. La informacin ingresa en el sistema por rutas que
298
PARTE DOS
transforman los datos externos en una forma interna. Estas rutas se identifican e
mo flujo de entrada. En el ncleo del software ocurre una transicin. Los datos~
trantes se pasan por un centro de transfonnadn y empiezan a moverse por rutas e
ahora los llevan "fuera" del software. Al desplazamiento de los datos por estas n.
se Je denomina flujo de salida. El flujo general de datos ocurre de manera secuend
y sigue una o unas cuantas rutas "en linea recta". 9 Cuando un segmento de un a.;grama de flujo de datos muestra estas caractersticas est presente el flujo de tran5'
formacin.
10.6.2 Flujo de transaccin
Al flujo de informacin suele caracterizarlo un solo elemento de datos, llamado t:-:::
sacdn, que dispara otro flujo de datos por una de muchas rutas. Cuando un diag"T
ma de flujo de datos (DFD) asume la forma mostrada en la figura 1O.lo est prese-rc
el flujo de transaccin.
Al flujo de transaccin lo caracterizan los datos que se desplazan por un carr
entrante que convierte la informacin proveniente del exterior en una transaca
sta se evala y, con base en su valor, se inicia el flujo por una de muchas ruta.,
accin. Al elemento que concentra y distribuye el flujo de informacin, del que~
nan muchas rutas de accin, se le denomina centro de transaccin.
Debe observarse que, dentro del DFD de un sistema grande, tienen que estar:--,
sentes los flujos de transformacin y transaccin. Por ejemplo, en una transacc
orientada a flujo, el flujo de informacin por un camino de accin puede tener
ractersticas del flujo de transformacin..
M Hli8(1)
1
FluJo de
transacct6n.
Una correlacin obvia para este tipo de flujo de informacin es la arquitectura de flujo de datos
crita en la seccin 10.3.1. Sin embargo, hay muchos casos en que esta arquitectura tal vez nos
mejor eleccin para un sistema complejo. Entre los ejemplos se incluyen sistemas que expe~
tarn cambios sustanciales con el tiempo o sistemas en los cuales el procesamiento asociad~
CAPTULO 10
299
DISEO ARQUITECTNJOO
se refina
., este
se debe
esfuerzo por
;bujas que
De~liegue
de pqnel~
Panel de
control
cootrol
Uneo
sensores
telefnico
t O Slo se considera una parte de la funcin de seguridad de HogarSeguro que usa el panel de control.
No se tendrn en cuenta otras caractersticas expuestas al principio de este libro y en este captulo.
300
DFD de nivel
1 para la
funcin de
segurtdadde
HogarSeguro.
Panel
de control
Comandos
..__ __. de~uorio
__.- - - - - - y otos.,.. .... -
....
....
.... _
- - .....
~;;
~,
.....
',,
' ' ~,
_ _______
''
.......
__.
''
f
f
I
I
1
/ ln~rm~~in
- - -nf~cil> __ .... //de esp1egue
Sensores - - Estotus
-----
de sensores
de sensores
Tipo de alarmo
lr;:=1:
de=.
'"'-1
~
Tonos de
nmero telefnico
DFD de nivel 2
que retina la
transformacin
morutorear
sensores.
CAPTULO 10
DISEO ARQUITECTNICO
301
Informacin de configuracin l
71 \
Datos de configuracin
Cdigo de
condicin de
alarmo, ID de sensores,
informacin de calendario
Tonos de nmero
telefnico
ticas de flujo global (de todo el software) con base en la naturaleza prevaleciente del
DFD. Adems, se aslan las regiones locales del flujo de transformacin o transaccin. Estos subjlujos se aprovechan para refinar la arquitectura del programa derivado de una caracterstica global descrita antes. Por ahora, la atencin se centrar slo en el flujo de datos del subsistema monitorear sensores descrito en la figura 10.14.
Al evaluar el DFD (figura 10.14) se aprecia que los datos entran al software por
una ruta de entrada y salen por tres rutas de salida. No participa un centro de transaccin distintivo (aunque la transformacin establece condiciones de alarma que
podran percibirse como tales). Por tanto, se supondr una caracterstica general de
transformacin para el flujo de la informacin.
302
PARTE DOS
Los limites de flujo en este ejemplo se ilustran como curvas sombreadas que m
rren verticalmente por el flujo de la figura 10.14. Las transformaciones (burbu;-_
que constituyen el centro de transformacin caen dentro de los dos lmites som~
dos que corren de arriba abajo en la figura. Podra respaldarse el argumento de :;es posible reajustar un limite (por ejemplo, podra proponerse un lmite de tluic
entrada que separe leer sensores y adquirir infonnadn de respuesta). En este paso de _
seo debe resaltarse la seleccin de lmites razonables, no la larga iteracin sobrt
posicin de los limites.
No se debe odoptor
un enfoque dogmtico
en esto etopo. To/ vez
seo necesario establecer dos oms contro/odores paro
procesamiento o
clculo de entrado,
con bose en Jo comp/eiidad del sistema
que habr de construirse. Si el sentido
comn dicto este e~
foque, sese!
41/Mllilb
Factorizacin
de primer
nivel para
supervsar
sensores.
303
en la parte superior de la estructura del programa y coordina las siguientes funciones subordinadas de control:
Un controlador de procesamiento de informacin entrante, llamado controlador
de entrada de sensores, coordina la recepcin de todos los datos de entrada.
Un controlador de flujo de transformacin, llamado controlador de condiciones
de alarma, supervisa todas las operaciones de los datos en forma adecuada
para el trabajo interno (por ejemplo, un mdulo que invoca varios procedimientos de transformacin de datos).
un controlador de procesamiento de informacin saliente, llamado controlador de salida de alarma, coordina la produccin de informacin de salida.
Aunque una estructura de tres picos se desprende de la figura 10.15, flujos complejos en sistemas grandes llegan a pedir dos o ms mdulos de control para cada
una de las funciones genricas de control descritas. El nmero de mdulos en el primer nivel debe limitarse al mnimo posible para realizar las funciones de control y
aun mantener buenas caractersticas de independencia funcional.
Paso 6. Realice una "factorizacin de segundo nivel". La factorizacin de segundo nivel se logra al correlacionar las transformaciones individuales (burbujas) de
una DFD con los mdulos apropiados dentro de la arquitectura. Si se empieza en el
limite del centro de transformacin y se desplaza hacia fuera por rutas de entrada y
Juego por rutas de salida, las transformaciones se correlacionarn en niveles subordinados de la estructura del software. En la figura 10.16 se muestra el enfoque general de la factorizacin de segundo nivel.
Aunque en la figura 10.16 se ilustra una correlacin uno a uno entre transformaciones de DFD y mdulos de software, suelen ocurrir correlaciones diferentes. Es posible combinar dos o hasta tres burbujas y representarlas como un componente, o
expandir una sola burbuja en dos o ms componentes. Consideraciones prcticas y
medidas de la calidad del diseo dictan el resultado de la factorizacin de segundo
nivel. La revisin y el refinamiento producen cambios en la estructura, pero sirven
como diseo de "primera iteracin"
La factorizacin de segundo nivel para el flujo de entrada se realiza de la misma
manera. La factorizacin se realiza nuevamente al desplazarse hacia fuera, desde el
limite del centro de transformacin en el lado del flujo de entrada. El centro de transformacin del software del subsistema monitorear sensores se correlaciona de manera un poco diferente. Cada conversin de datos o transformacin de datos de la parte de la transformacin del DFD se correlaciona con un mdulo que est subordinado al controlador de transformacin. En la figura 1O. 17 se muestra una arquitectura
de primera iteracin completa.
Los componentes correlacionados de la manera anterior y mostrados en la figura 10.17 representan un diseo inicial de la arquitectura del software. Aunque el
nombre de los componentes indica una funcin, debe escribirse una breve explica-
304
Factorizacin
de segundo
nivel para
supemsar
sensores.
Generar
despliegue
1iifH1,j U
Generar pulsos
poro lneo
nmero
telefnico
Generar
despliegue
Generar
pulsos
poro lneo
305
Paso 7. Refinar la arquitectura de primera iteracin empleando diseo heurlstico para mejorar la calidad del software. Siempre es posible refinar una arquitectura de primera iteracin si se aplican conceptos de independencia funcional
(captulo 9). Los componentes se expanden o contraen para producir una factorizacin sensible, una buena cohesin, un acoplamiento mnimo y, lo que es ms importante, una estructura que se implemente sin dificultades, se pruebe sin confusin y
se mantenga sin problemas.
Los refinamientos los determinan los mtodos de anlisis y evaluacin descritos
brevemente en la seccin 10.5, adems de las consideraciones prcticas y el sentido
comn. Por ejemplo, hay ocasiones que el controlador del flujo de datos de entrada
resulta totalmente innecesario, que se requiere algn procesamiento de entrada en
un componente subordinado al controlador de transformacin, que no puede evitarse el acoplamiento elevado debido a los datos globales, o que no logran alcanzarse
las caracteristicas ptimas de la estructura. Los requisitos del software, junto con el
juicio humano, deben servir para tomar la decisin final.
El objetivo de los siete pasos precedentes es desarrollar una representacin arquitectnica del software. Es decir, una vez definida la estructura, es posible evaluar y
refinar la arquitectura del software al tener un panorama general de l. Las modificaciones hechas en este momento requieren poca informacin adicional, pero tendrn un fuerte impacto en la calidad del software.
El lector debe hacer una breve pausa y considerar la diferencia entre el enfoque
del diseo descrito y el proceso de "escribir programas". Si el cdigo es la nica representacin del software, el desarrollador tendr gran dificultad para evaluar o refinar a voluntad, en un nivel global u holstico. En realidad, tendr dificultad para
"ver el bosque entre los rboles".
306
PARTE DOS
PRCfiCA DE LA
Ecl: Simplificacin, ~!
Jamie: As es. Y mienfrm hac:amos ~ _..
bueno idea reducir los componantes
kirmar-.,..,.,
ii+HiiIO
Estructura refinada del
programa
para
superv1sar
sensores.
CAPTULO 10
DISEO ARQUITECfNICO
307
de datos, tipo de comando, hace que el flujo de datos se expanda hacia fuera del
concentrador. Por tanto, la caracterstica general del flujo de datos est orientada a
la transaccin.
Debe observarse que el flujo de informacin a lo largo de dos de las tres rutas de
accin acomoda el flujo de entrada adicional (por ejemplo, parmetros y datos del
sistema son entradas del camino de accin "configurar"). Todas las rutas de accin
fluyen en una sola transformacin, desplegar mensajes y estatus.
Los pasos del di seo para la correlacin de transacciones son similares y en algunos casos idnticos a los pasos para correlacin de transformaciones (seccin
10.6.3). Una diferencia importante se encuentra en la correlacin del DFD con la estructura del software.
~E
El camino entrante (es decir, el camino del flujo en que se recibe la transaccin) y
todas las rutas de accin deben estar aislados. Es necesario evaluar la caracterstica de
flujo individual de cada camino de accin. Por ejemplo, el camino "contrasea" (mostrado dentro de un rea sombreada en la figura 10.19) tiene caractersticas de transformacin. El flujo de entrada, de transformacin y de salida se indican con lmites.
308
PARTE DOS
Datos de
configuracin
Parmetros y datos sin trabajar
del sistema
lnformacir
de desplieg..e
cin subordinados. cada camino de flujo de accin del DFD se correlaciona COI"'
estructura que corresponde a sus caractersticas de flujo especficas. Este proc
ilustra esquemticamente en la figura 1020.
Si se toma en cuenta el flujo de datos del subsistema de interaccin con el
rio, la factorizacin de primer nivel para el paso 5 se muestra en la figura 10.21
burbujas leer comandos del usuario y activar/ desactivar sistema se correlaciona;
rectamente con la arquitectura sin necesidad de mdulos de control inmediat..
centro de transaccin, invocar comando de procesamiento, se correlaciona dire
mente con el mdulo despachador del mismo nombre. Se crean controladores la configuracin del sistema y el procesamiento de la contrasea, como se ilustra e
figura 10.21 .
CAPTULO 10
DISEO ARQUITECINJCO
309
Ruto de
recepcin .__,.
tra caractersticas de transformacin clsicas. Se ingresa una contrasea (flujo entrante) y se transmite a un centro de transformacin donde se compara contra las
contraseas almacenadas. Si no se obtiene una coincidencia, se producen una alarma y un mensaje de precaucin (flujo saliente) . El camino "configurar" se dibuja de
manera similar empleando correlacin de transformaciones. En la figura 10.22 se
muestra la arquitectura del software resultante.
Paso 7 . Refinar la arquitectura de primera iteracin empleando diseo heurstico para mejorar la calidad del software. Este paso para la correlacin de
transacciones es idntico al de transformaciones. En ambos enfoques de diseo, cri-
310
PARTE DOS
Arquitectwa
de primera
iteracin para
el subsistema
de Interaccin
con el usuario.
Ptoducir
IMflSOje de !P
no es v61idr
CAPTULO l O
DISEO ARQUITECTNIOO
311
tructura de datos menos compleja que sirva adecuadamente para los requisitos de
informacin.
La arquitectura del software proporciona un concepto holstico del sistema que ha-
312
PARTE DOS
[AH083] Aho. A. V., J. Hopcroft y J. Ullmann, Data Structures and Algorithms, Addison-Wes;:,s
1983.
[All.97] Allen R., "A Formal Approach to software Architecture", tesis de doctorado, camegie Mc::r
University, Nmero de reporte tcniro: CMU-CS-97-144, 1997.
[BAROOJ Barroca. L. y P. Hall (eds.), Software Arr:hitecture: Advances and Applications, Spri~
Verlag, 2000.
[BAS03) Bass, L., P. Clements y R. Kazman, Software Architecture in Practice, 2a. ed.. Add!s
Wesley, 2003.
[BOSOO] Bosch, J.. Design & Use o/Software Arclutectures, Addison-Wesley, 2000.
[BUS96) Buschmann, F., Pattem-Oriented Software Arclutecture, Wiley, 1996.
[DATOOJ Date, c. J. An Introduction to Database systems, 7a. ed., Addison-Wesley, 2000.
[DIKOO] Dikel, D. D. Kane y J. Wilson, Software Architecture: Organizational Principies and
tems, Prentice-Hall, 2000.
[FRESO] Freeman, P., "The Context of Design", en Software Design Techniques, 3a. ed. (P. Free,:.;::
y A. Wasserman, eds.), IEEE Computer SOciety Press, 1980, pp. 2-4.
[GAR94] Garlan D. R. Allen y J. Ockerbloom, "Exploiting Style in Architectural Design En, _
ments", en Proceedings ofSIGSOFT '94 Symposium on the Foundations o/Software~
ring, 1994.
[GAROOJ Garlan D., R. T. Momoe y D. Wile, H Acme: Architectural Description of componen
sed Systems", en Foundations of Component-Based Systems, G. T. Leavens y M. Sita
(eds.), Cambridge University Press, 2000.
[HOFOO] Hofmeister, C., R. Nord y D. Soni, Applied Software Architecture, Addison-Wesley
[HOFOIJ Hofmann: C. et al., "Approaches to Software Architecture", se descarga de: http
seer.nj.nec.com/84015.html.
[KAZ98J Kazman, R. et al., The Architectural D:adeoffAna lysis Method, Software Engin
Institute, CMU/SEl-98-TR-008, julio de 1998.
[KIM98) Kimball, R., L. Reeves, M. Ross y w. Thomthwaite, The Data Warehouse Lif~ ~
kit: Experl Methods for Designing, Developing, and Dep/oymg Data Warehouses, Wile}
[LAN02) Land R. A Brief Survey of software Architecture, reporte tcnico, Departamento de
niera de Cmputo, Universidad Malardalen, Suecia, febrero de 2002.
[LUC95J Luck.ham D. C. et al., "Specification and Analysis of System Architecture Using le
en IEEE Transactions on Software Engineering, ejemplar "Special lssue on Software Are
ture", 1995.
[MAT96) Mattison, R.. Data Warehousing: Strategies, Techno/ogies, and Techniques, McGrcr.
1996.
IMYE78] Myers, G., Composite Structured Design, Van Nostrand, 1978.
[PRE981 Preiss, B. R., Data Structures and Algorithms: With Object-Oriented Design Patter:::;;
C++, Wiley, 1998.
[SHA96J Shaw. M. y D. Garlan, SoftwareA.rchitecture, Prentice-Hall, 1996.
[SHA97) Shaw, M. y P. Clements, HA Field Guide to Boxology: Preliminary Classificatior
chitectural Styles for software Systems", en Proc. COMPSAC, Washington, DC, agosto de
[WAS80) Wasserrnan, A., "Principies of Systematic Data Design and Implementation, e-;
ware Design Techniques (P. Freeman y A. Wasserrnan, eds.). 3a. ed., IEEE computer
Press, 1980, pp. 287-293.
[YOU791 Yourdon, E. y L Constantine, Structured Design, Prentice-Hall, 1979.
[ZHA98J Zhao, J., "On Assessing the Complexity of Software Architectures", en Proc. Jntl. S...
Architecture Workshop, ACM, Orlando, FL, 1998, pp. 163-167.
CAPTULO lo
DISEO ARQUITECl'NJCX)
313
10.2. Escribir un artculo de tres a cinco pginas que presente directrices para seleccionar estructuras de datos basadas en la naturaleza del problema. Empezar delineando las estructuras
de datos clsicas encontradas en el trabajo del software y luego describir los criterios para seleccionar, a partir de stas, tipos particulares de problemas.
10.3. Explicar la diferencia entre una base de datos que sirve a una o ms aplicaciones de negocios convencionales y un almacn de datos.
10.4. Presentar dos o tres ejemplos de aplicaciones para cada uno de los estilos arquitectnicos indicados en la seccin 10.3.1.
10.5. Algunos de los estilos arquitectnico indicados en la seccin J 0.3. 1 son de naturaleza jerrquica, otros no. Elaborar una lista de cada tipo. Cmo se implementaran los estilos arquitectnicos que no son jerrquicos?
10.6. Los trminos estilo arquitectnico, patrn arquitectnico y marco conceptual suelen encontrarse en el anlisis sobre la arquitectura del software. Investigar un poco (utilizar la Web) y describir la diferencia entre cada uno de estos trminos y sus contrapartes.
10.7. Seleccionar una aplicacin con la que se est familiarizado. Responder cada una de las
preguntas planteadas para control y datos en la seccin 10.3.3.
10.8. Investigar la MACA (visitar el sitio Web de SEi) y presentar un anlisis detallado de los
seis pasos presentados en la seccin 10.5. l.
10.9. Algunos diseadores sostienen que todos los flujos de datos deben considerarse orientados a la transformacin. Analizar la manera en que esta convencin afectar la arquitectura
del software que se deriva cuando un flujo orientado a la transaccin se trata como transformacin. Utilizar un flujo de ejemplo para ilustrar puntos importantes.
10.1 O. Si no se ha hecho, completar el problema 8.1 O. Emplear los mtodos de diseo descritos en este captulo para desarrollar una arquitectura del software para el PHTRS.
10.11. Empleando un diagrama de flujo de datos y una descripcin del procesamiento, describir un sistema de cmputo que tenga distintas caractersticas de flujo de transformacin. Definir los lmites del flujo y correlacionar el diagrama de flujo de datos con la arquitectura del
software empleando la tcnica descrita en la seccin l 0.6.3.
10.12. Empleando un diagrama de flujo de datos y una descripcin del procesamiento, describir un sistema de cmputo que tenga distintas caractersticas de flujo de transaccin. Defina
los lmites del flujo y correlacione el diagrama de flujo de datos con la arquitectura del software
empleando la tcnica descrita en la seccin 10.6.4.
314
PARTE DOS
=-
http:/ /www.mhhe.cotn/pressman.
DISEO AL NIVEL
DE COMPONENTES
l diseo al nivel de componentes se presenta despus. de que se ha completado la primera iteracin del diseo arquitectnico. En esta etapa ya se
han establecido los datos generales y la estructura del programa. El objetivo es traducir el modelo de diseo en un software operacional. Pero el grado de
abstraccin del modelo de diseo existente es relativamente elevado, y el del programa operacional, bajo. La traduccin llega a ser desafiante, abriendo la puerta
para el ingreso de errores sutiles que resultan diflciles de encontrar y corregir en
etapas posteriores del proceso de software. En una famosa conferencia, Edsgar
Dijkstra, una <le las personas que ms ha contribuido a nuestra <:omprensin del
diseo de software, afirm [DIJ72]:
E
..317
....321
...32S
.. ...340
....322
.....324
-dlrl .
340
laii...., ..322
di-
ejemplo, grfica, tabular o t,asada en texto) que se traduzca fcilmente en cdigo fuente. Independientemente del mecanismo con que se represente el diseo
al nivel de componentes, las estructuras de datos, las interfaces y los algoritmos
definidos deben adecuarse a diversas lneas generales de diseo bien definidas,
que ayuden a evitar errores a medida que evoluciona el diseo procedimental.
En este captulo se examinaran esas lneas generales y los mtodos disponibles
para seguirlas.
315
316
PARTE DOS
CAPTULO 11
317
318
PARTE DOS
iifhlH
Elabol'ac16n
deun
Trobojolmprerno
componente
de diseo.
colcularCO>lodeTrobool()
lmpnm,ry po,onrobooj 1
<<interfaz>>
coiculotlroboo
,
,
,
<<in.teNaz>>
in.c,or Trabajo
consm,irO,denTrobojo{)
-if1CarPrionclod( }
posorTrobojoAProduccin( 1
numeroOePoginos
..,.....,o0ei.ooo.
tipol'opel
pesol'opel
lomonoPopel
colori'opel
ompliocon
requisoo,Color
coroderiiticosProducdon
opcione.O..trtbucion
opco.,..,Encuodernodo
po,toda.Almocen
refine
pnondod
cos1oTololTrobojo
numetaOT
colcula.Co.ioPogino( 1
olculotCo,IOPopel()
colculorCa.lOProd(}
colculotCO>loTrobojoTotal( }
con,1niit0rclenTrabajo( 1
f8Y!sotf'rior,docl( 1
posorTrobojoAl'rodvcc,on()
CAPTULO 11
319
control que coordina la invocacin de todos los dems componentes del dominio del
problema, 2) como componente del dominio del problema que implementa una funcin completa o parcial requerida por el cliente, o 3) como componente de infraestructura responsable de funciones que soportan el procesamiento requerido en el dominio del problema.
Como los componentes orientados a objetos, los componentes del software convencional se derivan del modelo de anlisis. Sin embargo, en este caso el elemento
de datos orientado al flujo del modelo de anlisis sirve como base para la derivacin.
Cada transformacin (burbuja) representada en los niveles inferiores del diagrama
de flujo de datos (captulo 8) se correlaciona directamente (seccin 10.6) con una jerarqua de mdulos. Los componentes de control (mdulos) residen cerca de la parte superior de la jerarqua (arquitectura) y los componentes del dominio del problema
tienden a residir haca la parte inferior de la jerarqua. Para lograr una modularidad
efectiva, se aplican conceptos de diseo como la independencia funcional (captulo
9) a medida que se elaboran los componentes.
se descubre que un sistemo complejo que funciono ho evolucionado opartir de-111t sl$18IIIO $lmplt
..... llndollaba.
Este proceso de elaboracin del diseo de componentes convencionales se ilustra considerando de nuevo el software que se habr de construir para un sofisticado
centro de fotocopiado. Un conjunto de diagramas de flujo de datos se derivara durante el modelado del anlisis. Se supondr que stos se correlacionan (seccin
10.6) dentro de la arquitectura que se muestra en la figura l l .2. Cada recuadro representa un componente de software. Tmese en cuenta que los recuadros con pantalla gris tienen una funcin equivalente a las operaciones definidas en la clase 'lrabajolmprenta analizada en la seccin 11 .1.1. Sin embargo, en este caso cada operacin se representa como un mdulo separado que se invoca como se muestra en
la figura. Con otros mdulos se controla el procesamiento y, por tanto, son componentes de control.
Durante el diseo al nivel de componentes, se elabora cada mdulo mostrado en
la figura 11.2. La interfaz del mdulo se define de manera explcita. Es decir, se representa cada objeto de datos o de control que fluye por la interfaz. El algoritmo que
permite que el mdulo realice su funcin est diseado con el enfoque de refinamiento paso a paso analizado en el captulo 9. El comportamiento del mdulo suele representarse con un diagrama de estado.
Para ilustrar este proceso considrese el mdulo CalcularCostoPagina. Su objetivo
es calcular el costo de impresin por pgina a partir de las especificaciones del cliente. Los datos necesarios para realizar esta funcin son: nmero de pgines en el documento, nmero total de documentos que se producirn, impNtsin por una o ambas caras, color
320
PARTE DOS
o blanco y negro y tamao. Estos datos se pasan a caJcularCostoPagina mediante la terfaz del mdulo. ste usa los datos y determina un costo por pgina que se bax
en el tamao y la complej idad del trabajo (una funcin de todos los datos pasados ._
mdulo con la interfaz). El costo por pgina es inversamente proporcional al ta::o del trabajo y directamente proporcional a su complejidad.
ifrP.ii
Sistema de
administracin
de trabajo
Grfica de
esbuctura
deun sistema convencional.
'
,
, ,
''
'
Seleccionar
lo funcin
de manejo
de trabajo
leer datos
de trabajo
ae impresin
,,
, ,
Construir
costo
de trabajo
orden
de trabajo
Enviar
trabajo
o produccin
'
Calcular costo
de pgina
Calcular coslo
de papel
Calcular costo
deprod.
Revisar
prioridad
Posar trobap
a
produc:aaa
CAPTULO 11
obtenerDotosTrobojo
321
Componen/e de diseo
ColculorCostoPogino
occesorBDCostos
Mdvlo eloorado
CostoPagina
entro: numeroP09inos
entro: numeroDocumenlo$
entro; lodos 1, 2
entro: color t, 2, 3, 4
entrQ: tomooPagina A, B, C, D
sale; costo de p69ino
entra: 1amooTrabajo
(mtrQ: color 1, 2, 3, 4
entra: tamooPogina - A, B, C, D
sale: CBP
sole: SF
obtenerDatosTtobajo (nvmeroPaginas,
numeroDocumentos, lado$, color,
tomaQl'ogino, cosk>Pogino)
accesorBDCostos{tamaoTrobojo, color,
tomooPogino, CBP, Sf)
calculotCostoPagino( ) - - - - - - - - - - - - -
rrn ..
tamao de trabctfo
numer0Pa9ittas nvmeroDocumentos;
buscar costo bQsi; <ie pgina (CBPJ >
aceesarBDCostos {TT, color);
buscar factor de tamao (Fn >
accesarBDCoslos (TT, color, tamao
factor de romplejidad de trabajo (Fcn ..
1 + l(lado&-Wco$t0Lodo +- FTJ
costoPogind CBP " FCT
322
PARTE DOS
se comuniquen con otros en uno red o dentro de un sisfemo complejo. Quienes desean usar ingeniera del software
basado en componentes o medido que avanza el proceso
de software cuentan con tres estndares competidores:
11 .2.1
CAPTULO 11
323
ihterUZ>>
Sensor
leer{)
habilitar( 1
inhobilitQr( }
- -- -- - ~
O-ro<
probar()
'
~-----------r------------r----------r----------
1
1
1
$el1sorPuertos/
Ventanas
SensorHumo
DetectorMovimento
S,,,,o,<:clo,
1 S,,,,o,C02
Por ejemplo, suponga que la funcin de seguridad HogarSeguro usa la clase Detector que debe revisar el estatus de cada tipo de sensor de seguridad. Es probable
que con el tiempo aumenten el nmero y los tipos de sensores de seguridad. Si la lgica de procesamiento interno est implementada como una secuencia de construcciones si-entonces-si_no (if-then-else), donde cada una atiende un tipo de sensor diferente, la adicin de un nuevo tipo de sensor requerir lgica de procesamiento interno adicional (un si-entonces-si_no adicional). Esto es una violacin del PAC.
Una manera de cumplir con el PAC en el caso de la clase Detector se ilustra en
la figura 11.4. La interfaz sensor presenta una vista consistente de sensores para el
componente Detector. Si se agrega un nuevo tipo de sensor no se requieren cambios en la clase Detector (componente). Se preserva el PAC.
M I ~ Cubiculo de Vinod.
Shakira: No bromees.
324
PARTE DOS
M. No hay~ necesidad de
Deledo,:.
mente propuso Barbara Liskov [US88], sugiere que un componente que use una
se principal debe seguir funcionando apropiadamente si, en cambio, se pasa al
ponente una clase derivada. El PSL exige que cualquier clase derivada de una e
principal se apegue a cualquier contrato implcito entre la clase principal y los
ponentes que la usan. En el contexto de esta explicacin, un "contrato'' es una
didn previa que debe ser verdad despus de que el componente usa una clase :
cipal y una condidn posterior que debe ser cierta despus de que el componente
una clase principal. Cuando un diseador crea clases derivadas, tambin deben
tarse a las condiciones previas y posteriores.
tracciones son el lugar donde un diseo se puede extender sin grandes complica..x:,
nes. Cuanto ms dependa un componente de otros componentes concretos (e;,
gar de abstractos, como la interfaz), ms dificil ser extenderlos.
Principio de segregacin de la inteaz (PSI). "Es mejor tener muchas inte:especjicas del cliente que una interfaz de propsito general." [MAROO] Hay mucho-
sos en que varios componentes de cliente usan las operaciones proporcionadas por
clase de servidor. El PSI sugiere que el diseador debe crear una interfaz espec..:.
zada para servir a cada categora importante del cliente. Slo las operaciones imtantes para una categora especial de clientes deben especificarse en la interfaz
ra esos clientes. Si varios clientes necesitan las mismas operaciones, deben esp:
ficarse en cada una de las interfaces especializadas.
Por ejemplo, piense en la clase PlanoCasa que se usa en Hogarseguro para
dones de seguridad y vigilancia. En el caso de las funciones de seguridad, Pla.noe.
sa slo se emplea durante las actividades de configuracin y utiliza las operadw
colocarDispositivO( ), mostrarDispositivo( ), agruparDispositivo() y eliminarDisposiC'
para colocar, mostrar, agrupar y eliminar sensores del plano. La funcin de vigilr
de HogarSeguro usa las cuatro operaciones indicadas para seguridad, pero sl,,,
quiere operaciones espaciales para manejar las cmaras: mostrarPV() y mostrarm
CAPTULO 11
325
positivo(). Por tanto, el PSI sugiere que los componentes de cliente de las dos funcio-
Principio del cierre comn (PCC). "Las clases que cambian juntas deben permanecer juntas." [MAROOJ Las clases deben empaquetarse de manera que sean un todo coherente. Es decir, cuando las clases se empaquetan corno parte de un diseo, deben
atender la misma rea de funciones o comportamientos. Cuando alguna caracterstica de esa rea debe cambiar, es probable que slo deban modificarse las clases del
paquete. Esto lleva a un control de cambios y a un manejo de las versiones ms efectivos.
Principio comn de la reutilizacin (PCR). "Las clases que no se reutilizan juntas
no deben agruparse juntas." (MAROOJ Cuando una o ms clases cambian en un paquete, tambin cambia el nmero de versin del paquete. Todas las dems clases o
los dems paquetes que dependen de ese paquete deben actualizarse ahora a la versin ms reciente del paquete y probarse para asegurar que la nueva versin funciona sin incidentes. Si no hubo cohesin al agrupar las clases, es posible que cambie
una clase que no tenga relacin con las dems. Esto requerir un proceso innecesario de integracin y prueba. Por ello, slo deben incluirse en un mismo paquete las
clases que se reutilizarn juntas.
'
326
PARTE DOS
Qvse
debe tomar
en cuenta cuando
se nombran los
'compo11911tes?
liMliit
Cohesin de
capa.
Panel de control
2 Es improbable que una persona de marcadotecnia o de la organizacin del cliente (un tipo
tecedentes tcnicos) examine el detalle de la infonnacin de diseo.
CAPiTtJLO 11
327
enfoque ms formal del recuadro UML y la flecha con lnea de guiones; 2) porrazones de consistencia, las interfaces deben fluir desde la izquierda del recuadro del
componente; 3) slo deben mostrarse las interfaces relevantes del componente en
cuestin, aunque estn disponibles otras. Estas recomendaciones pretenden simplificar la naturaleza visual de los diagramas de componentes UML.
11.2.3 Cohesin
En el captulo 9 se describi la cohesin como la "funcin nica" de un componente. En el contexto del diseo al nivel de componentes para sistemas orientados a objetos, la cohesin implica que un componente o una clase slo encapsula atributos y
operaciones relacionadas estrechamente entre s y con la clase del propio componente. Lethbridge y Laganire [LETOI] definen varios tipos diferentes de cohesin
(que aparecen en la lista ordenados segn su grado de cohesin):3
En general, mientras mayor sea el grado de cohesin, ms fcil ser implementar, probar y mantener el componente.
328
PARTE DOS
dloc6maro.
Jme nlUeSll'o grficomente lo om
1o anara.
Ed: A qu te refies?
CAPTULO 11
329
ct..c:uidado.
11.2.4 Acoplamiento
:'?llci6n se
- diseo de
de datos
yolos df
;,cedmentales
-pl!!or los es
de dotas. Sin
no deben
330
CAPTULO 11
331
Paso 2. Identificar todas las clases de diseo que corresponden al dominio de la infraestructura. Estas clases no se describen en el modelo del anlisis y
a menudo faltan en el modelo arquitectnico, pero deben describirse en este punto.
Como ya se ha indicado, entre las clases y los componentes de esta categora se incluyen componentes de interfaz grfica de usuario, del sistema operativo, de administracin de objetos y datos, y otros.
Paso 3a. Especificar los detalles del mensaje cuando las clases o los componentes colaboran. El modelo del anlisis emplea el diagrama de colaboracin
para mostrar la manera en que las clases de anlisis colaboran entre s. A medida
que avanza el diseo al nivel de componentes, a veces es til mostrar los detalles de
estas colaboraciones al especificar la estructura de mensajes que se pasan entre los
objetos de un sistema. Aunque esta actividad de diseo es opcional, puede usarse
como precursora de la especificacin de interfaces que muestran la manera en que
se comunican y colaboran los componentes del sistema
332
Diagrcuna de
TrobojoProduccin
colaboracin
con envio de
mensajes.
OrdenTrobojo
ColoTrobojo
de argumentos)
donde una (condicin guardia] est escrita en lenguaje de restriccin de objeto 'C"t.
por sus siglas en ingls)~ y especifica cualquier conjunto de condiciones que de:_
cumplirse antes de enviar el mensaje; expt88in de seouencia es un valor entero (u ...
indicador de orden, como 3.1.2) que indica el orden secuencial en que se envia
mensaje; (valor devuelto) es el nombre de la informacin que devuelve la operacir
vocada por el mensaje; nombre del mensaje identifica la operacin que se invoca y
ta de argumentos) es la lista de los atributos que se pasan a la operacin
Paso 3b. Identificar las interfaces apropiadas para cada componente. Er.
contexto del diseo al nivel de componentes, una interfaz UML es un "grupo de e-raciones externamente visibles (es decir, pblicas). La interfase no contiene est::"
tura interna; no tiene atributos ni asociaciones... " [BEB02]. Definida de manera rformal, una interfaz es el equivalente a una clase abstracta que proporciona una
nexin controlada entre las clases de diseo La elaboracin de una interfaz se
tra en la figura 11.1. En esencia, las operaciones definidas para la clase de diseo
tn ordenadas en una o ms clases abstractas. cada operacin dentro de la d...:::
abstracta (la interfaz) debe tener cohesin es decir, debe mostrar procesarni
que se concentra en una funcin o subfuncin limitada.
Tomando como referencia la figura 11 l, podra argumen tarse que la interfaz
ciarTrabajo no muestra suficiente cohesin. En realidad, realiza tres subfunciones
CAPTULO 11
333
lmprimirTrobojo
OrdenTrabaj
nTrobojo
0---
atrbvlcs apropiads
<<interfot>>
ioitjorTrobojo
COMltuirOrdenTrobojoj )
TrobooPr<>dvccin
ColoTrabajo
olribvtos optQpk,<k,s
revsorProridod( )
'
ferentes: construir una orden de trabajo, revisar la prioridad del trabajo y pasar un
trabajo a produccin. El diseo de la interfaz debe refactorizar. Un enfoque sera reexaminar las clases del diseo y definir una nueva clase OrdenTrabajo que se ocupara de todas las actividades asociadas con la elaboracin de una orden de trabajo. La
operacin construirorden1i:abaj0() se vuelve una parte de esa clase. De igual manera,
se podra definir una clase FilaTrabajo que incorporara la operacin revisarPrioridad( ).
Una clase TrabajoProduccion abarcara toda la informacin asociada con un trabajo
de produccin que se pasar a la planta de produccin. La interfaz iniciatlrabajo tomara entonces la forma mostrada en la figura 11.7. Ahora esta interfase es cohesiva,
y se concentra en una sola funcin. Las interfaces asociadas con TrabajoProduccion, ordenTrabajo y FilaTrabajo tienen una sola funcin.
Paso 3c. Elaborar atributos y definir los tipos y las estructuras de datos necesarios para implementarlos. En general, las estructuras y los tipos de datos con
que se describen atributos se definen dentro del contexto del lenguaje de programacin que habr de usarse para la implementacin. UML define el tipo de datos de un
atributo empleando la siguiente sintaxis:
nombre : tipo-expresin = valor-inicial {propiedad cadena}
Tipo-pesopapel: strlng
= "A"{contiene 1 de 4 valoree: A, B. C o D}
334
PARTE DOS
que define npo-pesopepel como una variable de cadena variable inicializada con el 1-lor A y que toma uno de cuatro valores del conjunto (A,B,C,D}.
Si un atributo aparece varias veces en varias clases de diseo, y tiene una estr.._
tura relativamente compleja, es mejor crear una clase separada para acomoda-atributo.
Lo eloborodn se uso
fJOS-O oposa men/ros
CAPiTuLO 11
335
Validar entrado
de atributos
occesarDBPopel(peso)
regreso a costoPapelPorPagina
Tamao= B
Tamao= C
costoPope!PorPagina =
costoBasePorPa ina*'l.4
=D
costoPapelPorPa_gino
costoBasePorPa i na* 1.6
Tamao
El color
es personalizado
IP p .
ar agino =
costoBasePorPagina* l. 14
El color es estndar
Oevvlve
(costoPopelPorPa ina)
336
PARTE DOS
cin entre estados (impulsados por los eventos) se representan empleando una ~
fica de estado UML [BEN02] como se ilustra en la figura 11.9.
La transicin de un estado (representado por un rectngulo con esquinas red=
deadas) a otro ocurre como consecuencia de un evento que toma esta forma
nombre-evento (liste-parametros) [condicion-gueNlia) / expresion de accion
entrodoDotoslncomplelos
conslruirDolosTrobajo
entrar/leerDotosTrobajo{ 1
solir/desplegorOalosTrobojo( l
hacer/revisorConsisllllncia( ) ,
incluir/entrodciDotos
...
cok:ulareostoTrabajo
.,
., ,
,,
' '
' '
''
'
enlror/colculorTrobao
soli1/9uordor cos!oTotolTrobao
1
formorTrobojo
enlror/construirTroboo
so!ir/guordor nmeroOT
hacer/
fechoEntregoAceptodo (el d ie nte est autorizado)/
estimodoTrobajolmpresion
1
1emitrTrobajo
entror/remitirTrobojo
solir/iniciorTrobajo
hacer/colocar en ColoTrobojo
CAPTULO 11
337
Es importante observar que el modelo de componentes a menudo contiene informacin que no resulta inmediatamente obvia en otros de componentes de diseo.
Por ejemplo, el cuidadoso examen de la grfica de estado de la figura 11.9 indica que
el comportamiento dinmico de la clusula nabajolmprenta depende de dos aprobaciones del cliente, derivadas de los datos de costos y la calendarizacin del trabajo de impresin. Sin aprobaciones (la condicin guardia asegura que el cliente tiene
autorizacin para aprobar) no se remitir el trabajo de impresin porque no hay manera de alcanzar el estado remitiJTrabajo.
Paso 7 . Factorizar todas las representaciones del diseo al nive l de componentes y siempre deben considerarse alternativas. A lo largo del libro se ha
destacado que el diseo es un proceso iterativo. El primer modelo al nivel de componentes que se cree no ser tan completo, consistente o exacto como la ensima
iteracin que aplique al modelo. Es esencial usar la refactorizacin mientras se realiza el trabajo de diseo.
Adems, un diseador no debe tener una visin estrecha. Siempre hay soluciones
opcionales para el diseo, y los mejores diseadores toman en cuenta todas (o casi
todas) antes de definir el modelo de diseo final. Desarrollan opciones y examinan
cada una de manera cuidadosa, empleando los principios del diseo y los conceptos
presentados en los captulos 5, 9 y 11.
338
PARTE DOS
,ro.,
~~
cfAv1
= "si"
CAPTULO 11
339
Esta declaracin OCL define una invariante (condiciones que deben existir antes (pre]
UML/OCL
Herramientas representativas6
5
6
gris.org/), do soporte o UML y OCL completo, e incluye varios herramientas de ayudo poro el diseo, que
van ms all de lo generacin de diagramas UML y expresiones OCL.
Sin embargo, en el captulo 29 se presentar una exposicion ms amplia del OCL (presentada en el
contexto de los mtodos formales)
Las herramientas mencionadas aqu representan una muestra de esta categora. En casi todos los
casos los nombres de las mismas son marcas registradas de sus respectivos desarrolladores.
PARTE DOS
--,
'!e'
C~VE
lo progromoci6n es
lloclurodo es uno tcnico de dise~o que res
tringe el flujo de lo l-
mentocin. Para comprender este proceso, pinsese en la manera en que est lt:"
do esta pgina. No se leen letras individuales sino que se reconocen patrones o;-
pos de palabras o frases formados por varias letras. Las construcciones estruct
das son grupos lgicos que le permiten a un lector reconocer elementos p r ~
mentales de un mdulo, en lugar de leer el diseo o cdigo lnea por linea. La e
prensin se mejora cuando hay patrones lgicos fcilmente reconocibles.
CAPTULO 11
.._. ._
Primera
.. torea
.._. . ._
Siguiente
.. tarea
Secuencia
341
......
.._
sientoncessi_no (interfaxthenelse)
Repeticin
En la figura 11.1 O se ilustran tres construcciones estructuradas. La secuencia se representa como dos cajas de procesamiento conectadas por una lnea (flecha) de control. La condicin, tambin llamada si-entonces-si.}10, se describe como un diamante
de decisin que, si es verdadero, causa que ocurra la parte-entonces del procesamiento, y si es falso, invoca la parte si_no. La repeticin se representa empleando dos
formas ligeramente diferentes. La parte hacer mientras prueba una condicin y ejecuta una tarea de bucle de manera repetitiva, siempre y cuando la condicin siga
siendo verdadera. Una parte repetir hasta ejecuta primero la tarea de bucle, luego
prueba una condicin y repite la tarea hasta que la condicin falla. La construccin
de seleccin (o seleccionar-caso) que muestra la figura es en realidad una extensin de
si-entonces-si_no. Sucesivas decisiones prueban un parmetro hasta que ocurre una
condicin verdadera y se ejecuta la ruta de procesamiento de la parte de caso.
En general, el uso dogmtico y exclusivo de las construcciones estructuradas introduce ineficiencia cuando se requiere un escape de un conjunto de bucles anidados o de condiciones anidadas. Lo que es ms importante, la complicacin adicional
de todas las pruebas lgicas junto con la ruta de escape llega a oscurecer el flujo de
control del software, aumenta la posibilidad de error y tiene un impacto negativo en
la legibilidad y la capacidad de mantenimiento. Qu podemos hacer?
Se le dejan dos opciones al diseador: 1) se redisea la representacin procedimental para que la "rama de escape" no sea necesaria en una ubicacin anidada del
flujo de control, o 2) se violan las construcciones estructuradas de una manera controlada; es decir, se disea una rama restringida fuera del flujo anidado. La opcin 1
es obviamente el enfoque ideal, pero la 2 puede acomodarse sin infringir el espritu
de la programacin estructurada.
342
PARTE DOS
PRACilCA DE LA INGENIERIA.DELSOF?WAR.E
se encuentran dentro
de un componente.
l . Presentar una lista de todas las acciones que puedan asociarse con un
dimiento (o mduJo) especifico.
En la figura 11 .11 se ilustra una representacin de una tabla de decisin""""'".-nada con el anterior caso de uso informal. Cada una de las seis reglas indica
las seis condiciones viables. como regla general, la tabla de decisin se usa
nera efectiva para complementar otras notaciones de diseo procedmental
CAPTULO 11
343
Reglas
Condiciones
2
V(T) V (T)
1
Cliente regular
Cliente plato
V (T) V (T)
Cliente especial
Sin de$cuento
V (T) V (T)
Cliente oro
Acciones
V (TJ
V (T)
V (T)
))
'
1~
"'"
-.,,;'
.
..
!i-.,,;'
-.,,;'
344
PARTE DOS
agua y temperatura (por ejemplo, rompimiento del horno cuando el propietario es.a
ausente en el invierno), produce un timbre de alarma y llama a un sistema de moc
tores, generando un mensaje de voz sintetizado. En el PDL siguiente ilustramos a.
gunas de las construcciones importantes anotadas en secciones anteriores.
Recuerde que PDL no es un lenguaje de programacin. El diseador puede ad~
tarlo como se requiera sin preocuparse por errores de sintaxis. Sin embargo, el diseo del software de supervisin tendria que revisarse (se observa algn problema>y refinarse antes de que pueda escribirse el cdigo. El siguiente PDL8 proporcio--.2
una elaboracin del diseo procedimental para una versin anterior de un CO!l\P'>
nente de manejo de alarmas.
componente manejoAlarma
El objetivo de este componente es manej81' los intemJptores y las entradas del panel
control a partir de los sensores por el tipo y actuar en cualquier condicin de alarma
sea encontrado.
establecer valores por def'ecto para estatus8istema (valor devuelto). todos los ~
tos de datos
inicializar todos los puertos del sistema II reiniciar todo el hardware
revisar interruptoresPanelConttol (ipc)
si ipc
si ipc
entonces telefono.mensaje
= mensaje [tipoAlarma]
= "condicinAlarma"
parernpieza
procedimiento al.arma con "encendido", alarmaTiernpo8egundos
invocar procedimiento telfono fijar en tipoAlarme, nrnerolelfono
partermina
si_no omitir
termina si
termina ha08t'par&
termine manejoAlarma
El nivel de detalle que representa el PDL se define localmente. Algunas personas prefieren
ur-
cripcin orientada al lenguaje ms natural, mientras que otras prefieren algo ms parecido a digo
CAPTULO 11
345
Obsrvese que el diseador del componente de manejo de alarma ha usado las construcciones parempieza..partermina que especifica un bloque paralelo. Todas las tareas
especificadas en el bloque parempieza se ejecutan en paralelo. En este caso, no se toman en cuenta los detalles de implementacin.
..,....,.,,..;ia
-mientas representativas9
S ' desarrollado por Coine, Forber y Gordon
::-p://www.cfg.com/pdl81 /lpd.html), do soporte o lo
prender y revisar. Adems, la notacin debe mejorar la capacidad de "codificar en" para que el cdigo, en realidad, se convierta en un subproducto natural del diseo. Por
ltimo, la representacin de diseo debe tener la capacidad de darle mantenimiento
fcilmente para que el diseo siempre represente el programa de manera correcta.
una pregunta natural que surge en cualquier anlisis de la notacin de diseo sera: Cul notacin es realmente mejor, dados los atributos indicados lneas antes?
Cualquier respuesta es subjetiva y est abierta al debate. Sin embargo, parece que el
lenguaje de diseo de programas ofrece la mejor combinacin de caractersticas. El
PDL puede incrustarse directamente en los listados de cdigo fuente, mejorando la documentacin y facilitando ms el mantenimiento del diseo. La edicin se hace en
cualquier editor de texto o sistema de procesamiento de palabras, ya existen procesadores automticos, y la posibilidad de "generacin automtica de cdigo" es buena.
Sin embargo, de esto no se desprende que cualquier otra notacin sea necesariamente inferior a PDL, o que "no sea buena" en atributos especficos. La naturaleza
Las herramientas expuestas aqu el autor no las respalda ; slo representan una muestra de las herramientas incluidas en esta categora. En casi todos los casos. los nombres de las herramientas son
marcas registradas de sus respectivos desarrolladores
346
PARTE DOS
grfica de los diagramas de actividad y los de flujo proporciona una perspectiva s.:tbre el flujo de control que muchos diseadores prefieren. El contenido tabular preo
so de las tablas de decisin es una herramienta excelente para aplicaciones orier
das a tablas. Y muchas otras representaciones de diseo (por ejemplo, nidos de ~
tri), no presentados en este libro, ofrecen sus propios beneficios nicos. En el ar
sis final, la eleccin de una herramienta de diseo estar relacionada de manera restrecha con factores humanos que con atributos tcnicos.
zc
lle suficiente para servir como gua en la generacin de cdigo fuente en leng:
programacin. Para lograr esto, el diseador usa una de varias notaciones c.:
o que representan detalles al nivel de componentes en formatos grficos, ld:..,.....;.;.111
o de texto.
CAPTULO 11
347
La programacin estructurada es una filosofa de diseo procedimental que restringe el nmero y tipo de construcciones lgicas para representar el detalle del algoritmo. El objetivo de la programacin estructurada es ayudar al diseador a definir algoritmos que sean menos complejos y, por tanto, ms fciles de leer, probar y
mantener.
[AMB02] Ambler, S., "UML Component Diagramming Guidelines", disponible en http://www.modelingstyle.info/, 2002.
[BEN02] Bennett, S., S., McRobb y R. Farmer, Object-Oriented Analysis and Design. 2a. ed., McGraw-Hill, 2002.
[B0H66J Bohm, C. y G. Jacopini, "Flow Diagrams, Turing Machines and Languages with Only
l\vo Formation Rules", en CACM, vol. 9, nm. 5, mayo de 1966, pp. 366-371.
[CAl751 Caine, S. y K. Gordon, "PDL-A Too! for Software Design", en Proc. National Computer
Conference, AFIPS Press, 1975, pp. 271-276.
LDIJ65J Dijkstra, E., "Programming Considered as a Human Activity", en Proc. 1965 IFIP congress,
North-Holland Publishing Co., 1965.
[DIJ72) Dijkstra, E, "The Humble Programmer", 1972 ACM Turing Award Lecture, CACM, vol. 15,
nm. 10, octubre de 1972, pp. 859-866.
[DIJ76) Dijkstra, E., "Structured Programming", en Software Engineering, concepts and Techniques
u. Buxton et al., eds.), Van Nostrand-Reinhold, 1976.
[HUR83J Hurley, R. B., Decision Tables in Software Engineering, Van Nostrand-Reinhold, 1983.
[LETOIJ Lethbridge, T. y R. Laganiere, Object-Oriented Software Engineering: Practica/ Software
Development using UML and Java, McGraw-Hill, 2001.
[LTS881 Liskov, B., "Data Abstraction and Hierarchy", en SIGPLAN No/ices, vol. 23, nm. 5, mayo
de 1988.
[MAROOJ Martn, R., "Design Principies and Design Patterns", descargado de http:/ /www.objectmentor.com, 2000.
[OMGOJJ OMG Unijied Modeling Specijication. Object Management Group, version 1.4, septiembre de 2001.
[WAR98] Warmer, J. y A. Klepp, Object Constraint Language: Predse Modeling with UML, AddisonWesley, 1998,
11 .1. El trmino componente suele ser dificil de definir. Primero proporcinese una definicin
genrica y luego definiciones ms explcitas para software orientado a objetos y convencional.
Por ltimo, eljanse tres lenguajes de programacin con los que se est familiarizado e ilstrese la manera en que cada uno define un componente.
11 .2. Por qu son necesarios los componentes de control en el software convencional y no lo
son en el orientado a objetos?
11 .3. Descnbase el paradigma orientado a objetos mediante argumentos propios. Por qu es importante crear abstracciones que sirvan como interfaz entre componentes?
11 .4 . Descrbase el DIP mediante argumentos propios. Qu pasarla si un diseador depende
excesivamente de las concreciones?
11 .5. Seleccinense tres componentes que se hayan desarrollado recientemente y evalense
los tipos de cohesin de cada uno. Si se tuviera que definir el principal beneficio de una cohesin elevada, cul seria?
348
Los principios de diseo, los conceptos, las lineas generales y las tcnicas para clases
ponentes orientados a objetos se revisan en muchos libros sobre ingeniera de softwart:
lisis y diseo orientados a objetos. Entre las muchas fuentes de informacin se en
Bennett y sus colegas [BEN02]. Larman (Applying UML and Pattems, Prentice-Hall, 200
ridge y Laganiere [LETOIJ y Nicola y sus colegas (Streamlined Object Modeling: Patterand Jmplementation, Prentice-Hall, 2001), Schach (Object-Oriented and Classical sojtl....
~
neering, quinta edicin, McGraw-Hill, 2001 ), Dennis y sus colegas (Systems Analysis a:Jt.
sign: An Object Oriented Approach wilh UML, Wiley, 2001), Graham (Object-Oriented
Principies and Practice, Addison-Wesley, 2000), Richter (Designing Flexible Object-Oner.
tems with UML, Macmillan, 1999), Stevens y Pooley (Using UML: SOflware Engineering
jects and Components, edicin revisada, Addison-Wesley, 1999) y Riel (Object-Orientol
Heuristics, Addison-Wesley, 1996).
El concepto de diseo por contrato es un til paradigma de diseo. Libros de Mitdd
Kim (Design by contract by Example, Addison-Wesley, 2001) y Jezequel y sus colegas
Pattems and Contracts, Addison-Wesley, 1999) analizan este tema en forma detallada
(Design Pattems Java Workbook, Addison-Wesley, 2002) y Shalloway y Ttott (Design Pt.
plained: A New PeISpecl'ive on Object-Oriented Design, Addison-Wesley, 2001) toman erel impacto de los patrones en el diseo de componentes de software. La iteracin de
esencial para la creacin de diseos de alta calidad. Fowler (Refactoring: Improving ;,
of EXisting Code, Addison-Wesley, 1999) proporciona una gua til que puede aplicarse z
da que evoluciona el diseo.
El trabajo de Linger, Milis y Wilt (Structured Programming-Theory and Practice "
Wesley, 1979) sigue siendo un tratado definitivo sobre el tema. El texto contiene un ~
adems de explicaciones detalladas de las ramificaciones de la programacin estr:
CAPTULO 11
349
Otros libros que se concentran en los temas de diseo procedimental para sistemas tradicionales son los de Robertson (Simple Program Design, tercera edicin, Course Technology, 2000),
Farrell (A Guide to Programming Logc and Design, course Technology, 1999), Bentley (Program
ming Pearls, 2a. edicin, Addison-Wesley, i999) y Dahl (Structured Programming, Academic
Press, 1997).
Relativamente, pocos libros recientes se han dedicado en exclusiva al diseo al nivel de
componentes. En general, los libros de lenguaje de programacin atienden el diseo procedimental con algn detalle, pero siempre en el contexto del lenguaje que se introduce en el libro.
Hay disponibles cientos de ttulos.
Una amplia variedad de fuentes de informacin sobre diseo al nivel de componentes se
encuentra en Internet. Una lista actualizada de referencias en World Wide Web que resultan relevantes para el diseo al nivel de componentes se encuentra en el sitio Web de SEPA:
http:/ / www.mhhe.com/ pressman.
CAPTULO
12
CONCEPTOS
CLAVE
0<cesibi1iclod .315
anilsls ele
lo tarea ..... .35&
llllllsis del
fkljo de trabajo .364
eklborodn 11e
tarea ........363
DISEO DE LA INTERFAZ
DE USUARIO
1 plano de una casa (su diseo arquitectnico) no estara completo sin
representacin de puertas. ventanas y conexiones de agua, electricidad
lfono {sin mencionar la televisin por cable). Las "puertas, ventanas )
nexiones" del software de computacin integran el diseo de la interfaz
usuario_
El diseo de la interfaz se concentra en tres reas: l} el diseo de inte
entre componentes de software; 2) el diseo de interfases entre el softv,
otros productores y consumidres de informacin que no son humanos (es
clr, otras entidades externas), y 3) el diseo de la interfaz entre un ser h
(es decir, el usuario) y la computadora. Este captulo se concentrar excl
mente en la tercera categora de diseo de Ja interfaz: la del usuario.
En el prlogo de su libro clsico acerca del diseo de interfaces de UStZ:
Ben Shneiderman (SHN90] afirma:
Los problemas que refiere Shneiderman son reales. Es cierto que las
ces grficas de usuario, las ventanas, los iconos y las selecciones hechas
ratn han eliminado gran parte de los ms terribles problemas relaciona
las interfases. Pero aun en un "mundo de ventanas", todo mundo ha ene...___... ,
CAPTULO 12
351
interfases de usuario diflciles de aprender y usar, confusas, poco intuitivas, imperdonables y, en muchos casos, totalmente frustrantes. Sin embargo, alguien dedic
tiempo y energa a la construccin de tales interfaces, y es improbable que el constructor haya generado estos problemas a propsito.
El diseo de la interfaz de usuario requiere el estudio de las personas y el conocimiento tecnolgico adecuado. Quin es el usuario? Cmo aprende a interactuar
con un nuevo sistema de cmputo? Cmo interpreta la informacin que produce el
sistema? Qu espera del sistema? stas son slo algunas de las muchas preguntas
que deben plantearse y responderse como parte del diseo de la interfaz de usuario.
En su libro sobre el diseo de interfaces, Theo Mantel [MAN97] acu tres "reglas de
oro" para el diseo de la interfaz:
352
PARTE DOS
Definir los modos de interaccin de forma que el usuario no realice acc:io--nes innecesarias o indeseables. un modo de interaccin es el estado actua..
la interfaz. Por ejemplo, si se elige corrector ortogrfico en un men de un proc:.s
dor de palabras, el software pasa a un modo corrector ortogrfico. No hay nin:,
razn para obligar al usuario a que permanezca en este modo si desea editar e.
to. Debe darse al usuario la opcin de entrar y salir de l sin esfuerzo.
Oculte al usuario ocasional los elementos tcnicos internos. La inter.z:be llevar al usuario al mundo virtual de la aplicacin; no es necesario que e
el sistema operativo, las funciones de administracin de archivos u otros secre'.':I
la tecnologa de cmputo. En esencia, la interfaz nunca debe requerir que el
interacte en el nivel "interno" del equipo (por ejemplo, nunca debe pedirse
usuario escriba comandos del sistema operativo desde el interior del sofu.
aplicacin).
353
"Siempre he deseado quemi computadora seo Ion fl de monejor como mi telfono. Mi4ese4'~ ha vuelto realkfal
Ya no StlflO IJSflf mi telfono."
Reducir la demanda de memoria a corto plazo. Cuando los usuarios participan en tareas complejas, la demanda de memoria a corto plazo se torna importante. La interfaz se debe disear para que reduzca la necesidad de recordar acciones y
resultados anteriores. Esto se logra al proporcionar pistas visuales que permitan al
usuario reconocer acciones anteriores sin tener que recordarlas.
Definir valores por defecto que tengan significado. El conjunto inicial de valores por defecto debe tener un sentido para el usuario promedio, pero tambin contar con la posibilidad de especificar sus preferencias. Sin embargo, debe disponer de
una opcin "restablecer" que le permita volver a definir los valores por defecto originales.
Desglosar la informacin de manera progresiva. La interfaz debe organizarse jerrquicamente. Es decir, la informacin sobre una tarea, un objeto o algn comportamiento debe presentarse primero en un grado alto de abstraccin. Despus de
que el usuario se interese por seleccionar algo con el ratn, deben presentarse ms
detalles. Un ejemplo comn en muchas aplicaciones de procesamiento de palabras
es la funcin de subrayado. se trata de una entre varias funciones ubicadas en el men estilo de texto. Sin embargo, no aparecen todas las posibilidades de subrayado. El
usuario debe seleccionar subrayado para que se presenten a continuacin todas las
opciones disponibles (como subrayado sencillo, doble, de guiones, etc.) .
354
e'ICOnton
prototipo de ambos.
Vinod: Buena ideo... Juego . . ., . que el dienla
decido.
"los am que tienen aspectos diferentes debenaduar de manerad"ISlinta. las que tienen el mismo aspecto, .W.
arigual.
CAPTULO 12
355
permitan al usuario conocer el contexto del trabajo que realiza. Adems, el usuario
debe tener la capacidad de determinar de dnde viene y cules son sus opciones para la transicin a una nueva tarea.
356
PARTE DOS
12,2
de~-
jf:!Jii:'1
Uno excelentl fuente
,dseno. illalfes de
ilSIJCllio se lUl1IIIII
en www.flllt.
ca.
El proceso general para analizar y disear una interfaz de usuario empieza cor _
creacin de diferentes modelos de funcin del sistema (como se percibe desde el ~
terior). Luego se delinean las tareas orientadas al ser humano y el equipo que se -:-quieren para lograr el funcionamiento del sistema; se toman en cuenta los temas diseo que se aplican a todos los diseos de interfaces; se emplean herramientas-::-
ra crear prototipos e implantar finalmente el modelo de diseo, y los usuarios ti.les evalan la calidad del resultado.
sarrolla una imagen mental que suele denominarse modelo mental del usuario o_
cepcin del sistema, y quienes implementan el sistema crean un modelo de la i ~
mentacin. Por desgracia, es posible que estos modelos difieran significativame::::
entre s. El papel del diseador de la interfaz es reconciliar estas diferencias y~
var una representacin consistente de la interfaz.
El modelo del usuario establece el perfil de los usuarios finales del sistema. F
Hosro un usuario
principiante quiere
accesos directos;
hastu los usuarios
espordicos ycon
conocimiento suelen
necesiror una guio.
Hoy que dorles lo que
necesitan.
construir una interfaz de usuario efectiva, "todo diseo debe empezar por la o..
prensin de quines son los usuarios de destino, incluidos sus perfiles de edad
xo, habilidades fisicas, educacin, antecedentes culturales o tnicos, motivada-objetivos y personalidad" [SCH90]. Adems, es posible distribuir a los usuarios er
siguientes categoras:
Principiantes. No tienen conocimientos de la sintaxis' del sistema
y cuentar
Conocimiento de semntica alude al sentido inherente de la aplicacin (una comprensin de '.;::ciones que se realizan, el significado de entrada y salida, y las metas y los objetivos del sister
CAPTULO 12
357
semntica suficientes para llegar al "sindrome del usuario avanzado" (es decir. individuos que buscan combinaciones de teclas y mtodos abreviados para interactuar).
Un modelo del diseo de todo el sistema incorpora datos. arquitectura, interfaz y
representaciones procedimentales del software. La especificacin de requisitos establece ciertas restricciones que ayudan a definir el usuario del sistema, pero el diseo de la interfaz slo suele ser incidental en relacin con el modelo del diseo. 3
El modelo mental del usuario (percepcin del sistema) es la imagen del sistema
que los usuarios finales llevan en la mente. Por ejemplo. si se pidiera al usuario de
un sistema determinado de diseo de pginas que describiera la operacin, la percepcin del sistema determinara la respuesta. La precisin de la descripcin depender del perfil del usuario (por ejemplo, los principiantes daran cuando mucho una
respuesta incompleta) y de la familiaridad general con el software en el dominio de
la aplicacin. Un usuario que comprenda por completo el diseo de pginas, pero
que haya trabajado con el sistema una sola vez en realidad podra proporcionar una
descripcin ms completa de su funcionamiento que el principiante que ha pasado
semanas tratando de aprender el sistema.
tareas.
3
Asi no es como deben ser las cosas. En muchos casos. el diseo de la interfaz es tan importante
como el diseo arquitectnico y el nivel de componentes
358
12.2.2
El proceso
4. Validacin de la interfaz.
La espiral que se muestra en la figura 12.1 indica que cada una de estas tareas .::;
rrir ms de una vez, y cada pasada por la espiral representa la elaboracin ad. nal de los requisitos y el diseo resultante. En casi todos los casos, la activida.:.
construccin incluye la creacin de prototipos (la nica manera prctica de v~
lo que se ha diseado).
El anlisis de la interfaz se concentra en el perfil de los usuarios que interac
rn con el sistema. Se registrarn el grado de habilidad, la comprensin del tra!:
y la disposicin general ante el nuevo sistema; y se definirn diferentes categ..
de usuarios.
ifrPifl
El proceso de
diseo dela
interfaz de
usuario.
Validacin
de lo interfaz
Implementacin
CAPTULO 12
359
alcanzar los objetivos del sistema (sobre un nmero de pasadas iterativas por la espiral). El anlisis de tareas se expone de manera ms detallada en la seccin 12.3.
El anlisis del entorno del usuario se concentra en el ambiente fisico de trabajo.
Entre las preguntas que deben responderse estn las siguientes:
Dnde se localizar fisicamente la interfaz?
El usuario estar sentado, de pie o realizar otras tareas sin relacin con la
interfaz?
El hardware de la interfaz tiene restricciones de espacio o iluminacin. o lo
afecta el ruido?
Hay factores humanos especiales determinados por factores ambientales?
La informacin reunida como parte de la actividad de anlisis se utiliza para crear
un modelo del anlisis para la interfaz. Tomando este modelo como base, se inicia
la actividad de diseo.
El objetivo del diseo de la interfaz es definir un conjunto de objetos y acciones
(Y sus representaciones en pantalla) que permitan que el usuario realice todas las tareas definidas, de manera tal que cumplan todos los objetivos de facilidad de uso que
define el sistema. El diseo de la interfaz se estudia con mayor detalle en la seccin
12.4.
Por lo general, la actividad de construccin empieza al crear un prototipo que permita evaluar los escenarios de uso. A medida que contina el proceso de diseo iterativo, pueden usarse herramientas de desarrollo de la interfaz de usuario (consulte
el recuadro de la seccin 12.4) para completar la construccin de la interfaz.
La validacin se concentra en 1) la capacidad de la interfaz para implementar correctamente todas las tareas del usuario, acomodar todas las variaciones de las tareas y cumplir todos los requisitos generales del usuario; 2) la facilidad del uso y el
aprendizaje de la interfaz, y 3) la aceptacin por el usuario de que la interfaz es una
herramienta til para su trabajo.
Como ya se ha observado, las actividades descritas en esta seccin ocurren de
manera iterativa. Por tanto, es innecesario tratar de especificar cada detalle (para el
modelo de anlisis o de diseo) en el primer paso. Los siguientes pasos del proceso
dan lugar al detalle de la tarea, la informacin del diseo y las caractersticas operativas de la interfaz.
4
Un principio clave de todos los modelos de procesos de ingeniera del software reza: es mejor comprender el problema antes de tratar de disear una solucin. En el ca4
Resulta razonable argumentar que esta seccin debi colocarse en el captulo 8, porque ali! se estudia el anlisis de requisitos. Se ha incluido aqu porque el anlisis y el diseo de la interfaz estn
ntimamente relacionados, y porque el lmite entre ambos es muy difuso.
360
PARTE DOS
12.3. l
Cmo s lo
que los
usuarios quieren
de la interfaz?
tcONSU09'
Solxe todo, dedq,ese
tiempo abotu can
mente sign& ~ h
fOO'YOOO de las
USOOlOS est de
ocueroo.
Ya se ha indicado que cada usuario tiene una imagen mental del software (o perce
cin del sistema) que podra ser diferente de la imagen mental de otros. Adems
probable que la imagen mental del usuario sea muy diferente del modelo del d
que tiene el ingeniero. El diseador slo lograra que coincidan la imagen me:-'"
el modelo del diseo si trabaja para comprender a los propios usuarios, ademzs
la manera en que ellos usarn el sistema. Es posible usar informacin de una
variedad de fuentes disponible para lograr esto:
Cmo aprendemos
sobre lo demogrofio y
los coroctersticos de
los usuoos fino les?
361
casos de uso. En captulos anteriores se indic que el caso de uso describe cmo
un actor (en el contexto del diseo de la interfaz, un actor siempre es una persona)
interacta con un sistema. Cuando se usa como parte del anlisis de tareas, el caso
de uso se desarrolla para que muestre la manera en que el usuario final realiza alguna tarea especfica relacionada con el trabajo. Casi siempre, el caso de uso se escribe de manera informal {un solo prrafo) en primera persona. Por ejemplo, supngase que una pequea empresa de software quiere construir un sistema de diseo
asistido por computadora explcitamente para diseadores de interiores. Para comprender mejor cmo hacen su trabajo, se pide a diseadores de interiores reales que
describan funciones especficas del diseo. Cuando se les pregunta: "cmo decide
362
Este caso de uso proporciona una descripcin elemental de una tarea de traba';.
portante para el sistema de diseo asistido por computadora. A partir de l, el
niero de software extraer tareas y objetos, adems del flujo general de la inte"ii:.
cin. Adems. tambin es posible concebir otras caractersticas del sistema
agradaran al diseador de interiores. Por ejemplo, podrian tomarse fotografias
tales del panorama de cada ventana. As, cuando se haga una representacir df
imagen de la habitacin se mostrara la vista real en cada ventana.
HOGARSEGURO
cl.
CAPiTULO 12
363
editor
Elaboracin de la tarea. En el captulo 9, se analiz la elaboracin paso a paso (tambin denominada descomposicin funcional o refinamiento paso a paso) como
mecanismo para refinar las tareas de procesamiento requeridas para que el software realice alguna funcin deseada. El anlisis de la tarea para el diseo de la interfaz emplea un enfoque elaborativo para apoyar la comprensin de las actividades
humanas a las que debe adecuarse la interfaz de usuario.
El anlisis de la tarea se aplica de dos maneras. Como ya lo hemos indicado, un
sistema interactivo, computacional, suele usarse para reemplazar una actividad manual o semiautomtica. Con el fin de comprender las tareas indispensables para alcanzar el objetivo de la actividad, un ingeniero humano5 debe comprender las tareas
que las personas realizan actualmente (al usar un mtodo manual) y luego relacionarlas con un conjunto similar (pero no necesariamente idntico) de tareas que se
implementan en el contexto de la interfaz de usuario. Como opcin, el ingeniero humano puede estudiar una especificacin existente para una solucin computarizada
En muchos casos, un ingeniero de software realiza las tareas descntas en esta seccin. Lo ideal es
que esta persona tenga capacitacin en ingeniera hwnana y en diseo de interfaces de usuario.
PARTE DOS
Aunque lo elaboracin
del c4sto seo tH, oo
muebles para dibujar contornos a escala en el plano; 3b) usar las plantillas de c1
sorios para dibujarlos a escala en el plano; 4) mover los contornos de los muebles
accesorios para obtener el mejor lugar 5) rotular todos los contornos de muebles y
cesorios; 6) dibujar las dimensiones para mostrar la ubicacin; 7) generar la vtsa
dimensinal en perspectiva para el cliente. Un enfoque similar se usara para
una de las otras tareas importantes.
Es posible refinar an ms de la subtareas I a 7 De la I a la 6 se realizarn ~
nipular la informacin y ejecutar acciones dentro de la interfaz de usuario. Por
parte, el software tiene la capacidad de realizar automticamente la subtarea que representarta poca interaccin directa del usuario.6 El modelo del dise d!:
interfaz debe acomodar cada una de esas tareas para que sea consistente con d
delo del usuario (el perfil de un diseador de interiores "tpico") y la percepc
sistema (lo que el diseador de interiores espera de un sistema automatizado
Anlisis del flujo de trabajo. cuando distintos usuarios, cada uno repr~
do diferentes papeles, utilizan una interfaz de usuario, a veces es necesario
all del anlisis de la tarea y la elaboracin de objetos y aplicar el anlisis del
trabajo. Esta tcnica permite que un ingeniero de software comprenda cmo
liza un proceso de trabajo cuando se involucran varias personas (y papeles
en una compaa que pretende automatizar el proceso de prescribir y envia
camentos que se venden con receta. Todo el proceso 7 girar alrededor de u-a
6 Sm embargo, tal vez ste no sea el caso. Es probable que el diseador de interiores quiera
car la perspectiva del dibujo, el tamao o el uso del color y otra informac16n. El caso de
cionado con las representaoones de dibuos en perspectiva proporcionarla la informad
necesita atender en esta tarea.
365
l. Cada usuario implementa diferentes tareas con la interfaz; por tanto, el concepto de la interfaz diseada para el paciente ser diferente del aplicado a los
farmacuticos o mdicos.
2. El diseo de la interfaz para farmacuticos y mdicos debe tener acceso a la
informacin de fuentes secundarias (como acceso a inventarios de farmacia y
a la informacin acerca de medicamentos alternos por parte del mdico), adems de desplegar esta informacin.
3. Es posible elaborar an ms muchas actividades indicadas en el diagrama de
lnea de flotacin mediante anlisis de la tarea, elaboracin de objetos, o ambas opciones (por ejemplo, prescripcin de resurtido podra relacionarse con
una entrega por correo, o una visita a la farmacia o a un centro especial de
distribucin de medicamentos).
366
PARTE DOS
Farmacutico
Paciente
Solicila que se
Mdico
Delemtlno
eslatus de lo recela
Se rev$0 expediente
del paciente
Resurtidos
restantes
Se apruebo
resurtido
Nose
permite resurtido
Recibe notificacin
hoy existencias
Se evalo
meckocin alterna
Sin existencias
de que no
Alternativa
En existencia
Recibe fecho/hora
poro recoger
N inguno
Recoge
Se
el medicamento
re$Urte receto
@
Recibe soli<:itud
de 1r al mdico
disponible
CAPTULO 12
367
"Es mucho mejor odaptor lo tecnologa ol usuario que obligar a ste a adoptarse a lo tecnologa.
larry._
12.3.3 Anlisis del contenido de la pantalla
Las tareas del usuario identificadas en la seccin anterior llevan a la presentacin de
diferentes tipos de contenido. En el caso de aplicaciones modernas, el contenido de la
pantalla va de informes basados en caracteres (por ejemplo, hojas de clculo), pantallas grficas (por ejemplo, un histograma, un modelo 3-D, la fotografa de una persona) o informacin especializada (como archivos de audio o video). Las tcnicas
de modelado del anlisis estudiadas en el captulo 8 identifican los objetos de datos de
salida que produce una aplicacin. Estos objetos de datos son: 1) generados por componentes (no relacionados con la interfaz) en otras partes de la aplicacin; 2) adquiridas de los datos almacenados en una base de datos a la que se tiene acceso desde la
aplicacin, o 3) transmitida de sistemas externos a la aplicacin en cuestin.
En este paso del anlisis de la interfaz se consideran el formato y la esttica del
contenido (tal como se despliega en la interfaz). Entre las preguntas que se habrn
de plantear se encuentran las siguientes:
Hay diferentes tipos de datos asignados a ubicaciones consistentes en la
pantalla (por ejemplo, las fotos siempre aparecen en la esquina superior derecha de la pantalla)?
El usuario puede personalizar la distribucin del contenido en la pantalla?
Se ha asignado una apropiada identificacin en pantalla a todo el contenido?
Cmo se segmenta un informe largo para facilitar su comprensin?
Habr mecanismos disponibles para desplazar directamente al resumen de
informacin en conjuntos grandes de datos?
Se cambiar el tamao de la salida grfica para que quepa dentro de los lmites de la pantalla o el monitor que habr de usarse?
Cmo se usar el color para mejorar la comprensin?
Cmo se presentarn al usuario los mensajes de error y los avisos de precaucin?
A medida que se responden estas (y otras) preguntas se establecern los requisitos
para la presentacin del contenido.
tersticas fsicas del lugar de trabajo, el tipo de equipo que emplea y sus relaciones de trabajo con los dems. Si los productos que se disean no se amoldan al entorno, es posible
que su uso resulte dificil o frustrante.
368
PARTE DOS
Una vez finalizado el anlisis de la interfaz, se han identificado con detalle todas
tareas (objetos o acciones) que requiere el usuario final, y comenzar la activida:!
diseo de la interfaz. Esta etapa, como todo el diseo de la ingeniera del so.
es un proceso iterativo. Cada paso del diseo de la interfaz se da varias veces
cada uno de ellos se elabora y refina informacin desarrollada en los pasos a:
res.
Aunque se han propuesto muchos modelos diferentes para el diseo de la
faz de usuario (por ejemplo, [NOR86J, [NIEOOJ), todos sugieren alguna comb
de los siguientes pasos:
1. Con base en la informacin desarrollada durante el anlisis de la infonr
CAPTULO 12
369
"El diseo interac!ivo[es) una mezcla integrado de ortes grficas, tecnologa y psicologa.n
12.4.1
Un paso importante en el diseo de la interfaz es la definicin de los objetos que sta tendr y las acciones que se les aplicarn. Para realizarlo se analizan los casos de
uso de manera muy parecida a la descrita en el captulo 8. Es decir, se escribe una
descripcin de un caso de uso. Luego se aslan los nombres (objetos) y los verbos
(acciones) para crear una lista de objetos y acciones.
Una vez definidos los objetos y las acciones, que se han elaborado de manera iterativa, se organizan por tipo. Se identifican objetos de destino. origen y aplicacin.
Un objeto de origen (como el icono de un informe) se arrastra y coloca en un objeto
de destino (por ejemplo, un icono de impresora). La implicacin de esta accin es
crear un informe impreso. Un objeto de aplicacin representa datos especficos de la
aplicacin que no se manipulan directamente como parte de la interaccin con la pantalla. Por ejemplo, en una lista de correo se almacenan nombres para un envio de
correspondencia. La propia lista podra ordenarse, combinarse o purgarse (acciones
de men), pero no arrastrarse ni colocarse mediante interaccin del usuario.
Una vez que el diseador queda satisfecho con un objeto importante y que se han
definido las acciones (para una iteracin de diseo) se realiza el formato de la pan talla. Como otras actividades de diseo de la interfaz. el formato de la pantalla es un
proceso interactivo; en l se elabora el diseo grfico y se colocan los iconos, la definicin de texto descriptivo en pantalla. la especificacin y la asignacin de nombres a las ventanas. adems de la definicin de los elementos primarios y secundarios de los mens. Si una metfora de la realidad es apropiada para la aplicacin, se
especifica en este momento, y el diseo se organiza de manera tal que satisfaga la
metfora.
Un breve ejemplo de los pasos del diseo indicados anteriormente se obtiene
imaginando el contexto en que se sita un usuario del sistema HogarSeguro analizado en captulos anteriores. A continuacin se presenta un caso de estudio preliminar (escrito por el propietario) para la interfaz.
Caso de uso preliminar. Quiero tener acceso a mi sistema Hogarseguro desde cualquier
lugar remoto va Internet. Empleando software de navegador que opera en mi notebook
(men tras estoy trabajando o viajando) puedo determinar el estado del sistema de alarmas,
armar o desarmar el sistema, reconfigurar zonas de seguridad y ver diferentes habitaciones de la casa con las cmaras de video preinstaladas.
Para tener acceso a HogarSeguro desde un lugar remoto proporciono una identificacin
y una contrasea. Estos elementos definen los niveles de acceso (por ejemplo, no todos
los usuarios pueden reconfigurar el sistema ni proporcionar seguridad). Una vez validado,
puedo revisar el estatus del sistema y cambiarlo al armar o desarmar HogarSeguro. Puedo
reconfigurar el sistema al desplegar un plano de la casa. ver cada uno de los sensores de
370
Con base en este caso de uso se identifican las tareas del propietario, los objel s
los elementos siguientes:
ve imgenes de video
desplaza o acerca las cmaras de video
Los objetos (en negritas) y las acciones (en cursivas) se extraen de la lista de
del propietario. La mayor parte de los objetos indicados son objetos de la ap
Sin embargo, ubicacin de las cmaras de video (un objeto de origen
SE
tra y coloca en cmara de video (un objeto de destino) para crear una imagm:
t<oNsuoS.
Aunque las
herramientas
outomaNzados son
hles en el desarrollo
de protohpos de
Formato, en ocasiones
todo lo que se
necesito es lpiz y
pope/.
CAPTULO 12
371
,-Ac~s; Configurar
Sistema
Hogar$eguro
Conector
Cmoro dt v.~
SA
Ci
Prime! piso
S ~SQr~Vt!l/tana
O Ot,~lor ~ mavimiefllc /ro;,,:> 111()S/radaj
C' IJbkf6.a de ,;Mk1ta 4B !lfdJ;o
Acercar DI 11, 11
zoom
/ H11111 Dezplozor
1111111 lll(A/eor
11 HI III U
372
PARTE DOS
otros patrones)
c~d:::::lalll
CAPTULO 12
373
adores no prestan atencin a estos temas hasta una etapa relativamente tarda del
proceso de diseo (en ocasiones el primer atisbo de un problema se presenta hasta
que se dispone de un prototipo operacional). como resultado, a veces se tiene iteracin innecesaria, demoras del proyecto y frustracin del cliente. Es mucho mejor
abordar cada uno como elemento de diseo y tomarlo en cuenta al principio del diseo de software, cuando los cambios son fciles y el costo es bajo.
un error comn que comete lo gente cuando trota de d~eor oigo a pruebo de tontos es subestimar la ingenuidad de
los verdaderamente tontos."
Doagla, Adams,
<;_.
nempo de respuesta. El tiempo de respuesta del sistema es la primera queja sobre muchas aplicaciones interactivas. En general, se mide desde el punto en que el
usuario realiza alguna accin de control (como oprimir la tecla Retum o hacer clic
con el ratn) hasta que el software responde con la salida o la accin deseada.
Funciones de ayuda. Casi todos los usuarios de un sistema de cmputo interactivo necesitan ayuda de vez en cuando. En algunos casos, basta con una simple pregunta dirigida a un colega con experiencia. En otros, tal vez la nica opcin sea una
investigacin detallada en un conjunto de varios volmenes de "manuales de usuario". Sin embargo, en casi todos los casos el software moderno proporciona funciones de ayuda en lnea que permiten al usuario obtener una respuesta a sus preguntas o resolver un problema sin dejar la interfaz.
Deben atenderse varios temas de diseo [RUB88] cuando se toma en cuenta una
opcin de ayuda.
La ayuda estar disponible para todas las funciones del sistema y en todo
momento durante la interaccin con ste? Entre las opciones se incluye ayuda
slo para un subconjunto de todas las funciones y acciones o ayuda para todas las funciones.
Cmo necesitar la ayuda el usuario? Entre las opciones se incluyen men
de ayuda, una tecla especial de funcin o un comando AYUDA.
374
PARTE DOS
Manejo de errores. Los mensajes de error y los avisos de precaucin son rr."
noticias" que se entregan a los usuarios de sistemas interactivos cuando algo sale -En el peor de los casos, los mensajes de error y los avisos de precaucin ofrece
formacin intil o que puede malinterpretarse y que slo sirve para aumentar la
tracin del usuario. Algunos usuarios de computadora han encontrado un emx ~
forma "La aplicadn XXX se ha vistoforzada a cerrarse porque se ha encontrado u;del tipo 1023". En algn lugar debe existir una explicacin del error l 023; de lo ce
rio, por qu habran asignado los diseadores ese identificador? Sin emba.7
mensaje de error no proporciona una indicacin real de lo que estuvo mal ni
de buscar la informacin adicional. Un mensaje de error presentado de esta r-:
no hace nada por aliviar la ansiedad del usuario ni ayuda a corregir el probleir:.
oc
1.a illterfaz con el infierno: 'Para corregir este error yseguir adelante, e5Crlbo cualquier nmero prilllO de 11
tos. .."
Qu
caractersticas
debe tener un
Nbuen mensaje
de error?
El mensaje debe describir el problema en un lenguaje que el usuario e El mensaje debe proporcionar consejos constructivos sobre la manera ~
cuperarse del error.
El mensaje debe indicar cualquier consecuencia negativa del error (por e:
la posibilidad de que se corrompan los archivos de datos) para que el u.sz:::::
asegure que no han ocurrido (o para que los corrija si ya ocurrieron).
El mensaje debe acompaase de una pista visual o auditiva. Es decir .::.
nerarse un bp junto con el despliegue del mensaje, o ste debe parpa..
momentneamente o desplegarse en un color que se reconozca fci!=
como "color de error".
CAPTULO 12
375
Como a nadie le gustan las malas noticias, a pocos usuarios le gustarn los mensajes de error, sin importar lo bien diseados que estn. Pero un enfoque adecuado para los mensajes de error har mucho por mejorar la calidad de un sistema interactivo y reducir de manera importante la frustracin del usuario cuando ocurran los
problemas.
376
Internacionalizacin. Los ingenieros de software y sus administradores subestiman invariablemente el esfuerzo y las habilidades necesarias para crear interfases
de usuario que atiendan las necesidades de usuarios de otras localidades o que hablan diferentes idiomas. Con demasiada frecuencia, las interfases se disean para
una localidad y un idioma y luego se espera que funcionen en otros pases. El rete
para los diseos de interfases es crear software "globalizado"; las interfaces de usuario deben disearse para contener un ncleo genrico de funciones que se entregue.a todos los usuarios. caracteristicas adicionales de localidad penniten a la interfapersona1izarse para un mercado especfico.
Los ingenieros de software cuentan con varias pautas para la internacionalizacin (como [IBM03]). Estas pautas atienden amplios problemas de diseo (como la:
diferencias en formato de pantalla en varios mercados) y temas discretos de imple
mentacin (por ejemplo, diferentes alfabetos pueden crear rotulacin y requisitos de
espacio especiales). El estndar Unicode [UNI03]) se ha desarrollado para atender c.
desalentador desafio de manejar docenas de idiomas naturales con cientos de carac
teres y simbolos.
HetTamientas de representacin 10
1O Las herramientas expuestas aqu slo representan una muestra de esta categoria. En casi todos
casos los nombres de las mismas son marcas registradas de sus respectivos desarrolladores.
CAPTULO 12
377
Una vez que se ha creado un prototipo de interfaz de usuario operacional, debe evaluarse y determinar si satisface las necesidades del usuario. La evaluacin puede
abarcar un espectro de grados de formalidad que va desde una "prueba de manejo"
informal, en la cual un usuario proporciona retroalimentacin informal, hasta un estudio diseado formalmente, el cual emplea mtodos estadsticos para la evaluacin
de cuestionarios que llena una poblacin de usuarios finales.
El ciclo de evaluacin de la interfaz de usuario asume la forma mostrada en la figura 12.4. Despus de completado el diseo se crea un prototipo de primer nivel. A
continuacin, el usuario evala este prototipo' 1 y hace comentarios directos al diseador acerca de la eficacia de la interfaz. Adems, si se utilizan tcnicas formales de
evaluacin (por ejemplo, cuestionarios, hojas de evaluacin), es probable que el diseador obtenga informacin de estos datos (por ejemplo, del 80 al 100 por ciento
de los usuarios rechaza el mecanismo para guardar archivos de datos). Las modificaciones al diseo se hacen basndose en la informacin que proporciona el usuario, y as se crea un prototipo de segundo nivel. El ciclo de la evaluacin contina
hasta que ya sean innecesarias ms modificaciones al diseo de la interfaz.
DiSo
preliminar
Construir
lnterfot
prototipo #1
Con$troir
interfaz
prototipo #n
El usuario
Se realizan
modificaciones
evaluo
lo interfaz
al diseo
Diseo de interfaz
El diseador
estudio
lo evaluacin
completo
11 Es importante notar que los expertos en diseos ergonmomico y de interfaz tambin pueden dirigir revisiones de la interfaz. Dichas funciones se llaman evaluaciones heursticas o ensayos cognitivos.
378
PARTE DOS
El enfoque de creacin de prototipos resulta eficaz, pero es posible evaluar la calidad de una interfaz de usuario antes de construir un prototipo? Si se descubren pcr
sibles problemas y se corrigen en las primeras etapas, se reducir el nmero de bucles en el ciclo de evaluacin y se acortar el tiempo de desarrollo. Si se ha creadc
un modelo de diseo de la interfaz, es posible aplicar varios criterios de evaluacicr
[MOR81J en las primeras revisiones del diseo:
J.
diseo se relaciona con la carga de memoria que recae en los usuarios del
sistema.
res-
puesta con escala de valoracin (subjetiva), 4) escala de Likert (por ejemplo, CO'""
pletamente de acuerdo, un poco de acuerdo), 5) respuesta con porcentajes (subje
va) o 6) respuesta abierta.
Si se desean datos cuantitativos, puede aplicarse una forma de anlisis de estrdio del tiempo. Se observa a los usuarios durante la interaccin y se usan los da
(como el nmero de tareas completadas correctamente en un periodo estndar, t'E
cuencia y secuencia de acciones, tiempo que pasa "mirando" la pantalla, nmer
tipo de errores, tiempo de recuperacin de errores, tiempo dedicado al uso de la a:-da y cantidad de referencias de ayuda por periodo estndar) como gua para la P"'
dificacin de la interfaz.
Un anlisis completo de los mtodos de evaluacin de la interfaz de usuario ""f'c
basa el alcance de este libro.
se
[MAN97] y [HAC98).
12 ,A Rgsuyu
Es posible afirmar que la interfaz de usuario es el elemento ms importante de sistema o producto de cmputo. Si la interfaz est mal diseada la capacidad ~
usuario se ver muy reducida para aprovechar las ventajas de una aplicacin :.
efecto, una interfaz dbil puede llevar al fracaso una aplicacin bien diseada y e
una implementacin slida.
CAPTULO 12
379
[APP03) Apple Computer, People with Spedal Needs, 2003, disponible en http://www.apple.com/
disability/.
fBAROl] Borchers, J.. A Pattern Approach to lnteraction Design, Wiley 2001 .
[CON95) constantine, L "What DO Users Want? Engineering Usability in software", en Windows Tech
Joumal, diciembre de 1995, disponible en http:// www.torUse.com.
[DON99J Donahue, G., s. Weinschenck y J. Nowicki, "Usability is Good Business" . Compuwarc
Corp., julio de 1999, disponible en http://ww w.compuware.com.
[DUY02J vanDuyne, D. , J. Landay y J. Hong, The design of Sitcs, Addison-Wesley, 2002.
[HAC981 Hackos, J. y J. Redish, U.ser and Task Ana/y.sis far Interface Design, Wiley, 1998.
[1BM031 IBM, OvemewofSojlvvare Globalizadon, 2003, disponible en http://oss.sottware.ibm.com
/icu/userguide/ I l 8n.html.
[LEA88] Lea, M., "Eva I ualing User Interfaces Designs", en U.ser Interface Design Jor Computer
systems, Halstead Press (Wiley), I 988.
[MAN97) Mande!, T., The Elements of Userlnterface DesJgn, Wiley, 1997.
[MIC03) Microsoft Accesability Technologyfar Everyone, 2003, disponible en htt:/ / www.micro sott.com/enable/.
fMON84J Monk, A. (ed). Fundamentals of Human -Computer lnteraction, Academic Prcss, 1984.
[MOR8 l J Moran, T. P., "The Command Language Grammar A Represcntation for the U.ser Interface oflnteraclive Computer Systems", en lnU. Joumalof'1an-MachineStudies, vol. 15, pp. 3-50.
[NJEOO] Nielsen, J.. Desgning Web Usability, New Riders Publishing, 2000.
[NOR86J Norman, D. A., "Cognitive Engineering. en Usercentered systems Design, Lawrence
Earlbaum Associates, 1986.
380
PARTE DOS
[RUB88) Rubn, T., User Interface Design for Computer Systems, Haldstead Press (Wiley), I 988.
[SHN90J Shneiderman. B., Desigmng lhe User Interface, Addison-Wesley, 3a. ed., I 990.
[TID991 Tidwell. J.. "Common Ground: A Pattem Language for HCI Design", disponible ~
http:/ /www.mit.edu/@jtidwell/ interaction_pattems.html, mayo de 1999.
[TID02J Tidwell, J., "IU Pattems and Techniques" disponible en http://time.tripper.com/mp,::. tems/index.html, mayo de 2002.
[UNI03J Unicode Inc., The Unicode Home Page, 2003, disponible en http://www.unicode.o~
[W3C03J World Wide Web Consortium, Web Content Accesability Guidelines, 2003, disponible ~
http://www.w3.org/TR/2003/ Vvord-WCAG20-20030624/.
[vVELOJJ vanWelle M., '1nteraction Design Pattems", disponible en http://www.welie.com/paf
tems/, 2001 .
12.9 . Desarrollar un conjunto de formatos de pantalla con una definicin de elementos pn:pales y secundarios del men para el sistema del problema 12.5.
12.10. Desarrollar un conjunto de formatos de pantalla con una definicin de los elemer:::!;
principales y secundarios del men para el sistema HogarSeguro. Es posible aplicar un enfoque.......,
rente del que se muestra para el formato de pantalla en la figura 15.3.
12.11. Describir un enfoque propio de las funciones de ayuda del usuario para el anlisis
tareas que se hayan realizado como parte del problema 12.5.
12.12. Proporcionar algunos ejemplos que ilustren por qu debe tomarse en cuenta la va
bilidad del tiempo de respuesta.
12.13. Desarrollar un enfoque que integre automticamente los mensajes de error }' funcin de ayuda para el usuario. Es decir, que el sistema reconozca automticamente el -de error y proporcione una ventana de ayuda con sugerencias para corregirlo. Realizar un d...
o de software razonablemente completo que tome en cuenta las estructuras de datos y los
goritmos apropiados.
12.14. Desarrollar un cuestionario de evaluacin de interfaces que contenga 20 pregur
genricas aplicables a la mayor parte de las interfaces. Pdase que I O compaeros de e'
completen el cuestionario para un sistema interactivo que todos usen. Resumir los resultad<
informar de ellos a su clase.
381
bleday, 1990) tiene que decir sobre la psicologa de un diseo efectivo se aplicar a las interfaces de usuario. Es una lectura recomendada para cualquier persona que tome con seriedad el
diseo de interfaces de alta calidad.
Las interfaces grficas del usuario son ubicuas en el mundo moderno de la computacin. Ya
sea empleada por un cajero automtico, un telfono mvil, una PDA, un sitio Web o una aplicacin de negocios, la interfaz de usuario proporciona una ventana al software. Por ello, abundan los libros sobre el diseo de interfaces. Todos los siguientes libros tratan sobre facilidad de
uso, conceptos de interfaz de usuario, principios y tcnicas de diseo, adei;ns de que contienen
muchos ejemplos tiles: Galitz (The Essential Guide to User Inte,jace Design, Wiley, 2002), Cooper (About Face 2.0: The Essentials of User Interface Design, IDG Books, 2003), Beyer y Holtzblatt
(Contextual Design: A Costumer Centered Approach to systems Design, Morgan-Kaufmann, 2002).
Raskin (The Human lnte,jace, Addison-Wesley, 2000), Constantine y Lockwood (Sojhvarefor Use,
ACM Press, 1999) y Mayhew (The Usability Engineering lifecydc, Morgan-Kaufmann, 1999).
Johnson (GUI Bloopers: Don'ts and Do's for Soflware Developers and Web Designers, MorganKaufmann, 2000) proporciona una guia til para quienes aprenden mejor al examinar contraejemplos. un libro que se disfruta, de Cooper (The Inmates Are Running the Asylum, Sams Publishing, 1999). analiza por qu los productos de alta tecnologa nos atraen y la manera de disear
unos que no Jo hagan.
El anlisis y modelado de tareas son actividades fundamentales del diseo de interfaces.
Hackos y Redish (HAC98J han escrito un libro dedicado a estos temas y proporcionan un mtodo detallado para concentrarse en el anlisis de tareas. Wood (User Interface Design: Bridging the
Gap from User Requirements to Design, CRC Press, 1997) aborda la actividad de anlisis para interfaces y la transicin a las tareas de diseo.
La actividad de evaluacin se concentra en la facilidad de uso. Los libros de Rubin (Handbook of Usability Testing; How to Plan, Design, and Conducl EjJective Tests, Wiley, 1994) y Nielsen
(Usability Inspection Methods, Wiley, 1994) abordan el tema con gran detalle.
En un libro nico, que podra parecer muy interesante a los diseadores de producto, Murphy
(Front Panel: Designing SoflwareJor Embedded User Tnter[aces, R&D Books, 1998) ofrece una gua
detallada para el diseo de interfaces destinadas a sistemas incrustados y aborda los peligros
de seguridad inherentes a los controles, el manejo de maquinaria pesada y las inlerfaces para
sistemas mdicos o de transporte. El diseo de la interfaz para productos incrustados tambin
se estudia en el libro de Garrett (Advanced Instrumentation and Computer 1/0 Design: Real-Time
System Computer Tnterfacc Engineering, IEEE, 1994).
En Internet se encuentra una amplia variedad de fuentes de informacin sobre el diseo de
la interfaz de usuario. Una lista actualizada de referencias en la World Wide Web relevantes para el diseo de la interfaz de usuario se encuentra en el sitio Web SEPA:
http:/ /www.mhhe.com/pressman.
CAPTULO
13
CONCEPTOS
CLAVE
aheriosde
finaltGda 389
depuracin .409
~pecificocin
de prueba 401
8$frategia
convendoctGI 386
estrategia
o(ientado
a olietos 402
GIP ........ .386
prma
ESTRATEGIAS DE PRUEBA
DEL SOFTWARE
dt hllfflO 399
prteba de
rentes de pruebas vara tanto como los diferentes enfoques de desarrollo. Durame
integradn .. .394
muchos aos, la nica defensa contra los errores de programacin fueron el disefu>
prueba de
regresin .... .398
que
prueba ele
pn1eba de
y filosofas distintos.
pruebas olfa/
beta ... . ... ,40S
VyV . .384
ticipocin del diente? stos y muchos otras preguntas se respondern cuando desarrolle una es
lro1egio de pruebo del software.
Quin lo hace? El efe de proyecto, los ingenieros de software o los especiolistas en pruebas
son quienes desarrollan la estrategia poro a
383
zan de manera sistemtica. Por tanto, se debe definir una plantilla para las pruebas
del software (un conjunto de pasos en que se puedan incluir tcnicas y mtodos
especficos del diseo de casos de prueba).
Se han propuesto varias estrategias de prueba del software en distintos libros;
todas proporcionan al desarrollador del software una plantilla para pruebas y todas
tienen las siguientes caracteristicas genricas:
Para realizar pruebas efectivas un equipo de software debe efectuar revisiones tcnicas formales y efectivas (captulo 26). Esto eliminar muchos
errores antes de que empiece la prueba.
La prueba comienza al nivel de componentes y trabaja "hacia fuera", hacia la
384
de los requisitos del cliente). Una estrategia debe servir como gua para el pre.
nal y fijar un conjunto de guas para el jefe de proyecto. Debido a que los pas e:
la estrategia de prueba son simultneos, cuando empieza a aumentar la presi:':
las fechas lmite debe tenerse la opcin de medir los avances y buscar que los
blemas aparezcan Jo antes posible.
No se deben tener
descuidos ni
considero! que los
pruebas son uno 'md
de seguridad' que
utropam todos los
errores que ocumJn
debido olo op/icocin
de prcticas dbiles de
ingeniera del
softwo1e. No lo son.
Debe pone/Se espedol
cuidado en lo calidad
y detecdn de emJ1es
en todo el proceso de
lo ingeniera del
software.
i'rabar es la parte inmtoble de cualquier esfuerzo responsable POf desarrollar un sistema df.softwofe:
Debe indicarse que hay una fuerte divergencia de opinin acerca de los tipos de prueba que
tuyen una "validacin". Algunas personas creen que toda prueba es una verificacin, y que:..
dacin se realiza cuando el usuario revisa y aprueba los requisitos, y ms delante, cuando el SL
est en condiciones de operar otras personas consideran que ta prueba de la unidad y la ucin (secciones 13.3.1 y 13.3.2) constituyen la verificacin y que las pruebas de alto nivel
das ms adelante en este capitulo) son la validacin.
(a.
CAPinJLO 13
385
junto con una administracin y una medicin slidas aportan la calidad, que se confirma durante las pruebas.
Miller [MIL77] relaciona la prueba del software con el aseguramiento de la calidad al afirmar: "lo que motiva la prueba de los programas es la confirmacin de la
calidad del software con mtodos que se puedan aplicar de manera econmica y
efectiva en sistemas grandes y pequeos".
386
PARTE DOS
El papel de un grupo independiente de prueba (GIP) consiste en eliminar los 1blemas propios de dejar que el constructor pruebe lo que l mismo ha constn..._:
Si no existe un G/P
dentro de uno
organizacin, tendr
que odopta,se su
punto de vishJ propio.
Al aplicar lo pruebo se
debe traror de destruir
el software.
ra presente. Despus de todo, al personal del GIP se le paga para que encueerrores.
Sin embargo, el ingeniero del software no debe simplemente entregar el pr~
ma al GIP y alejarse. El desarrollador y el GIP deben trabajar unidos en todo el :-yecto de software para asegurar la realizacin de pruebas exhaustivas. Mier
stas se realizan, el desarrollador debe estar disponible para corregir los errores
se descubran.
.......
e primer error que comete lo gente es pensar que el equipo de pruebas es responsable de asegurar lo calidad:
El GIP es parte del equipo del proyecto de desarrollo del software, ya que pa:pa en el anlisis y diseo y adems sigue participando (al planear y especificar
cedimientos de prueba) en todos los pasos de un proyecto grande. Sin embarg:
muchos casos el GIP informa a la organizacin de aseguramiento de calidad del sware, por lo que obtiene un grado de independencia que sera imposible si
parte de la organizacin encargada de la ingeniera del software.
Cul es la
estrategia
general para la
prueba del
software?
387
Pruebas
Pruebo de integracin
/ ~---------------------..
Cdigo
"Direccin"
de la prueba
388
389
boug: Muchochos,,van ~ ~ mH
Vinod (sonriendo): Lo onticipatln lo es lbdo enel
negocio del software, .jefe.
integran clases dentro de una arquitectura orientada a objetos, se ejecuta una serie
de pruebas de regresin para descubrir errores debidos a la comunicacin y colaboracin entre clases (componentes) y a los efectos colaterales que origina la adicin
de nuevas clases (componentes). Por ltimo, se prueba el sistema como un todo para
asegurarse de que se descubran errores en los requisitos.
390
PARTE DOS
Cules
directrices
llevan a una
estrategia de
prueba del
software que
tengo xito?
Comprender cules son los usuarios del software y desarrollar un perfil par..
categora de usuario. Los casos de uso que describan el escenario de interaccicr
cada clase de usuario reducen el esfuerzo general de prueba, ya que concen::prueba en la utilizacin real del producto.
tG.
391
..frobor nicomentt los requisitos del usuario final es como inspeccionar un edificio considerando nicamente el
traboo recdizodo por el diseador de interiores, ocosto de los cimientos, los vigas y lo plomera.n
392
PARTE DOS
13.3.1
Prueba de unidad
Consideraciones sobre la prueba de unidad. En la figura 13.3 se ilustrar manera esquemtica las pruebas que se aplican como parte de la prueba de unidad ~
interfaz del mdulo se prueba para asegurar que la informacin fluye apropiadamer _
hacia dentro y hacia fuera de la unidad de programa sujeta a prueba. Se examinan _
estructuras de datos locales para asegurar que los datos temporales mantenen la Lgridad durante todos los pasos de la ejecucin de un algoritmo. Se recorren todos
caminos independientes (caminos de base) en toda la estructura para asegurar C' ~
Cules
errores se
encuentran
comnmente
durante la prueba
de unidad?
Prueba de
urudad.
todas las instrucciones de un mdulo se hayan ejecutado por lo menos una vez. ~
prueban las condiciones lmite para asegurar que el mdulo opera apropiadame:en los lmites establecidos para restringir el procesamiento. Y, por ltimo, se pr_
ban todos los caminos de manejo de errores.
Es necesario probar el flujo de datos en la interfaz del mdulo antes de ini
cualquier otra prueba. Si los datos no entran ni salen apropiadamente, todas
dems pruebas resultarn intiles. Adems. durante la prueba de unidad deben r ~
rrerse las estructuras de datos locales y evaluarse (si es posible) el impacto le:
sobre los datos globales.
Durante la prueba de unidad, una tarea esencial es la prueba selectiva de las rutas %
ejecucin. Se deben disear casos de prueba para descubrir errores debidos a cla..
incorrectos. comparaciones errneas o flujos de control inapropiados. Entre los e-
rtl
L:tJ
lnlerfoz
393
res ms comunes en los clculos se encuentran los siguientes: l) aplicacin incorrecta o mal entendida de la precedencia aritmtica, 2) operaciones de modo mezcladas, 3) inicializacin incorrecta, 4) falta de precisin, y 5) representacin simblica incorrecta de una expresin. La comparacin y el flujo de control estn estrechamente acoplados entre s (es decir, el flujo cambia con frecuencia despus de una
comparacin). Los casos de prueba deben descubrir errores como: 1) comparaciones
entre diferentes tipos de datos, 2) operadores lgicos o precedencia de stos aplicados incorrectamente, 3) expectativa de igualdad cuando los errores de precisin
hacen que sea poco probable, 4) comparacin incorrecta de variables, 5) terminacin inapropiada o inexistente de bucles, 6) falla en la salida cuando se encuentra
una iteracin divergente, y 7) variables de bucle modificadas de manera inapropiada.
La prueba de lmites es una de las tareas ms importantes de la prueba de unidad.
Con frecuencia, el software falla en sus lmites. Es decir, a menudo los errores ocurren cuando se procesa el ensimo elemento de una matriz de n dimensiones, cuando se evoca la i-sima repeticin de un bucle con i pasos, cuando se encuentra el
valor mximo o mnimo permisible. Es muy probable descubrir errores en los casos
de prueba que se ejercen sobre la estructura de datos, el flujo de control y los valores de datos ubicados apenas abajo de los mximos o mnimos, sobre stos y apenas arriba de ellos.
Un buen diseo impone que se prevean las condiciones de error y que se configuren rutas de manejo de errores para modificar la ruta o terminar limpiamente el
procesamiento cuando ocurra un error. Yourdon [YOU75J llama a este enfoque antierror. Por desgracia, existe la tendencia a incorporar el manejo de errores en el software y, con ello, a no probarlo nunca. Una historia real servir como ejemplo:
Un sistema de diseo asistido por computadora se desarroll bajo contrato . En un mdulo de procesamiento de transacciones, un bromista prctico puso el siguiente mensaje
de manejo de errores despus de una serie de pruebas condicionales que invocaban varias ramas del flujo de control: ERROR! NO HAY FORMA DE QUE PUEDA LLEGAR
HASTA AQUf. E~te "mensaje de error" lo descubri un cliente durante la capacitacin
del usuario!
Entre los posibles errores que deben probarse cuando se evale el manejo de
errores se encuentran los siguientes: 1) la descripcin del error es ininteligible, 2) el
error indicado no corresponde al encontrado, 3) la condicin de error causa la intervencin del sistema operativo antes de que se dispare el manejo de errores, 4) el procesamiento de la condicin de excepcin es incorrecto, 5) la descripcin del error no
proporciona informacin suficiente para ayudar a localizar la causa del error.
394
lfaihifi
Entorno de
n'8rl0z
prueba de
unidad.
diseo proporciona una gua para establecer casos de prueba que probable
descubrirn errores en cada una de las categoras analizadas. cada caso de p
debe relacionarse con un conjunto de resultados esperados.
Debido a que un componente no es un programa independiente, para cada
ba de unjdad se debe desarrollar software controlador, de resguardo, o de
tipos. En la figura 13.4 se ilustra el entorno para la prueba de unidad. En cas; p
Hoy situaciones en
395
une?" El problema, por supuesto, consiste en "unir" (crear la interfaz). En una interfaz es posible perder datos, un mdulo podra tener un efecto adverso e inadvertido
sobre otro, la combinacin de subfunciones tal vez no produzca la funcin principal
deseada, la imprecisin aceptable en elementos individuales podra ampliarse hasta
grados inaceptables y las estructuras globales de datos podran presentar problemas.
Es triste, pero la lista sigue y sigue.
La prueba de integracin es una tcnica sistemtica para construir la arquitectura del software mientras, al mismo tiempo, se aplican las pruebas para descubrir
errores asociados con la interfaz. El objetivo es tomar componentes a los que se
aplic una prueba de unidad y construir una estructura de programa que determine
el diseo.
A menudo se tiende a intentar una integracin que no sea incremental; es decir,
a construir el programa mediante un enfoque de "big bang". Se combinan todos los
componentes por anticipado. Se prueba todo el programa como un todo. Y se produce el caos! Se encuentra una gran cantidad de errores. La correccin es dificil, porque resulta complicado aislar las causas debido a la extensin del programa completo. Una vez corregidos esos errores, aparecen otros nuevos y el proceso contina
en un ciclo que parece interminable.
La integracin incremental es la anttesis del enfoque del "big bang". El programa
se construye y prueba en pequeos incrementos, en los cuales resulta ms fcil aislar y corregir los errores, es ms probable que se prueben por completo las interfaces y se vuelve factible la aplicacin de un enfoque de prueba sistemtica. En los
siguientes prrafos se expondrn varias estrategias diferentes de integracin incremental.
396
PARTE DOS
iiMlifiJ
Integracin
descendente.
-- -- --
-- --
r-:~-1
1
1
1
r-:;-1
Cules son
los pasos de
lo integracin descendente?
CAPTULO 13
397
nes) podra demostrarse antes de que otros elementos de la estructura se hayan integrado. La demostracin temprana de la capacidad funcional genera confianza en el
desarrollador y en el cliente.
La estrategia descendente no parece muy complicada, pero en la prctica llegan
a surgir problemas de logistica. El ms comn se presenta cuando se requiere procesamiento en los niveles inferiores de la jerarquia para probar de manera adecuada los niveles superiores. Al principio de la prueba descendente se reemplazan los
mdulos de bajo nivel con resguardos; por tanto, no fluirn datos importantes hacia
la parte superior de la estructura del programa. Quien aplica la prueba cuenta con
tres opciones: 1) retrasar muchas de las pruebas hasta que los resguardos sean
reemplazados con los mdulos reales, 2) desarrollar resguardos que realicen funciones limitadas que simulen los mdulos reales, o 3) integrar el software de la parte
inferior de la jerarqua hacia arriba.
El primer enfoque (retrasar las pruebas hasta no reemplazar los resguardos con
los mdulos reales) hace perder cierto control sobre la correspondencia entre prue-
Cules son
los pasos
!fll'I IDO integra
-
IIS(tndente?
l. Se combinan los mdulos de bajo nivel en grupos (tambin llamados construcciones) que realicen una subfuncin especfica del software.
2. Se escribe un controlador (un programa de control para pruebas) con el fin de
coordinar la entrada y la salida de los casos de prueba.
3. Se prueba el grupo.
combinan para formar los grupos J, 2 y 3. cada uno de ellos se prueba empleando
un controlador (mostrado como un recuadro con guiones). Los componentes de los
grupos I y 2 estn subordinados a M 0 Los controladores C1 y C2 se eliminan y los grupos interaccionan directamente con M .,. De igual manera, se elimina el controlador
398
PARTE DOS
iiMlifl
Integracin
ascendente.
Grupo 3
Grupo 1
Grupo 2
del grupo 3 antes de la integracin con el mdulo Mt>. M0 y M0 se integrarn fmente con el mdulo Me, y as sucesivamente.
C3
Prueba de regresin. Cada vez que se agrega un nuevo mdulo como panc
una prueba de integracin, el software cambia. se establecen nuevas rutas de
de datos, ocurren nuevas entradas y salidas y se invoca una nueva lgica de con
Estos cambios Uegan a causar problemas con funciones que antes funcionaban tA
Lo pruebo de
regresin es uno estrotegio importante poro
reducir *efectos
coloteroles*. Deben
aplicarse pruebas de
regresin codo vez
que se hago un
cambio importante o/
software (incluido lo
integracin de nuevos
componentes).
399
de
ambos tipos, permiten al ingeniero del software capturar casos de prueba y resultados para reproducirlos y compararlos despus. El conjunto de pruebas de regresin
(el subconjunto de pruebas que se aplicarn) contiene tres clases diferentes de casos
de prueba:
Una muestra representativa de pruebas que ejercern todas las funciones del
software.
Pruebas adicionales que se concentran en las funciones del software que
probablemente el cambio afectara.
Pruebas que se concentran en los componentes del software que han
cambiado.
A medida que avanza la prueba de integracin, la cantidad de pruebas de regresin
llega a volverse muy grande. Por tanto, el conjunto de pruebas de regresin debe
disearse para que slo incluya las que atienden una o ms clases de errores en cada
una de las funciones principales del programa. Resulta poco prctico e ineficiente
repetir cada prueba para todas las funciones del programa despus de que se ha presentado un cambio.
Los componentes de software traducidos a cdigo se integran en una "construccin", la cual incluye todos los archivos de datos, las libreras, los mdulos reutilizables y los componentes de ingeniera que se requieren para
implementar una o ms funciones del producto.
2.
Se disea una serie de pruebas para exponer errores que impedirn que la
construccin realice apropiadamente su funcin. El objetivo es descubrir errores "paralizantes" que tengan la mayor probabilidad de retrasar el proyecto de
software.
3.
el soflwore
res. Sin embargo, las pruebas frecuentes dan a los jefes de proyecto y participantes
una evaluacin realista del avance de las pruebas de integracin. McConnell
[MC096J describe as la prueba de humo:
400
tiva, pero debe tener la capacidad de exponer problemas importantes. La prueba de hwr
debe ser tan completa que si la construccin la aprueba, puede suponerse que sta es
suficientemente estable como para probarla de manera ms completa.
Trate lo consttucrin diario como si fuero el corazn del proyecto. Si no fiene coroz6n, el proyecto est rooer1L
Jilll
Opciones estratgicas. Ha habido mucha discusin (por ejemplo, (BEISlas ventajas y desventajas relativas de las pruebas de integracin ascende:- ~
cendente. En general, las ventajas de una estrategia tienden a convertirse e:-
ih/ i1Htlf1
Apunmdores a
comen11Jrios sobre
eslrolegios de pruebo
se encontrorn en:
www.qalilks.<ot1.
401
cendentes para los niveles superiores de la estructura del programa, junto con pruebas ascendentes para los niveles subordinados.
a. es un
..ctulo crtico
, por qu
*nfificarse?
El plan de prueba describe la estrategia general de integracin. La prueba se divide en fases y construcciones que atienden caractersticas especificas del funcionamiento y el comportamiento del software. Por ejemplo, la prueba de integracin para
un sistema de diseo asistido por computadora se dividira en las siguientes fases de
prueba:
Interaccin del usuario (seleccin de comandos, creacin de dibujos, representacin del despliegue, procesamiento de errores y representacin).
Manipulacin y anlisis de datos (creacin de smbolos, asignacin de dimensiones, rotacin, clculo de propiedades fisicas).
Procesamiento y generacin de despliegue (despliegues bi y tridimensionales,
imgenes y grficas).
Administracin de base de datos (acceso, actualizacin, integridad,
desempeo).
Cada una de estas fases y subfases (denotadas entre parntesis) delinean una amplia
categora funcional dentro del software y suelen relacionarse con un dominio especifico dentro de la arquitectura del software. Por tanto, las construcciones del programa (grupos de mdulos) se crean para que correspondan con cada fase. Los
siguientes criterios y las pruebas correspondientes se aplican para todas las fases de
prueba.
Contenido de la informadn. Se aplican las pruebas diseadas para descubrir errores asociados con estructuras de datos locales o globales.
PARTE DOS
Desempeo. Se realizan las pruebas diseadas para verificar los lmites de dese=
peo establecidos durante el diseo del software.
Un calendario para la integracin, el desarrollo de software de sobrecarga :
temas relacionados tambin se analizan como parte del plan de prueba. Se dete-::
nan las fechas de inicio y trmino para cada fase y se definen las "ventanas de _
ponibilidad" para los mdulos de prueba de unidad. Una breve descripcin del s.
ware de sobrecarga (resguardos y controladores) se concentra en las caractens1
que requieren esfuerzos especiales. Por ltimo, se describen el entorno y los re
sos de la prueba. Configuraciones poco comunes de hardware, simuladores exo_
y herramientas especiales de prueba son algunos de los muchos temas que tan:
podran analizarse.
A continuacin se describe el procedimiento detallado de prueba que se r
para completar el plan respectivo. Tambin se detalla el orden de integracir ~
pruebas correspondientes en cada paso de integracin. Adems, se incluyer
lista de todos los casos de prueba (anotados para referencia posterior) y los ~
dos esperados.
Una historia de resultados, problemas o peculiaridades de las pruebas r ~
registra en el Informe de prueba que puede adjuntarse a la Especificacin de
Si se desea, la informacin contenida en esta seccin ser vital durante el mar:::::
miento del software. Tambin se presentan referencias y apndices apropiad..s.
Como todos los dems elementos de una configuracin de software, el f..
de la especificacin de prueba puede amoldarse a las necesidades locales ~
organizacin de ingeniera del software. Sin embargo, es importante obsen.-a:r
una estrategia de integracin (contenida en el plan de prueba) y los detalles de
ba (descritos en el procedimiento de prueba) son ingredientes esenciales )
aparecer.
a mejor par1ipcllle de UllD pruebo no es el que encuen1TD ms errores... sino el que corrige lo mayor amtidad de ala:
CeaK_.,.
13.4. l
CAPTULO 13
403
unidad. Sin embargo, las unidades de prueba ms pequeas son las operaciones
dentro de la clase. Debido a que una clase puede contener varias operaciones diferentes y a que una operacin determinada puede existir como parte de varias clases
diferentes, deben cambiar las tcticas aplicadas para la prueba de unidad.
No es posible probar una sola operacin de manera aislada (el concepto convencional de prueba de unidad) sino como parte de una clase. Para ilustrarlo, considrese una jerarqua de clase en que se define una operacin X para la superclase y que
heredan varias subclases. Cada una de stas usa la operacin X, pero se aplica dentro del contexto de los atributos privados y las operaciones que se han definido para
la subclase. Dado que el contexto en que se emplea la operacin X vara en formas
sutiles, es necesario probar la operacin en el contexto de cada una de las subclases. Esto significa que si se prueba la operacin X de manera independiente (el enfoque de la prueba de unidad convencional) se podr usar de manera deficiente en el
contexto orientado a objetos.
La prueba de clase para el software orientado a objetos es el equivalente a la
prueba de unidad para el software convencional. A diferencia de sta, que tiende a
concentrarse en el detalle algortmico de un mdulo y en los datos que fluyen por la
interfaz del mdulo, la prueba de clase para el software orientado a objetos se orienta mediante las operaciones que encapsula la clase y en el comportamiento de estado de la clase.
...intos de doses
responden ouno
";:do oun evento.
;?Uebos basados
.A uso se
::-tentron en los
:WS que no
,dioron mucho con
-:is doses.
404
&l
'~
c&v1
13.5.1
La validacin del software se logra mediante una serie de pruebas que demu
que se cumple con los requisitos. Un plan de prueba delinea la clase de prueba.;
se aplicarn, y un procedimiento de prueba define los casos de prueba espec.
Tanto el plan como el procedimiento se disean para asegurar que se satis.
todos los requisitos funcionales, que se alcanzan todas las caractersticas de
portamiento, que se cumple con todos los requisitos de desempeo, que la
mentacin es correcta y que se cumple tambin con todos los requisitos de facf:
de uso y otros requisitos especificados (por ejemplo, portabilidad, compatib..
recuperacin de errores, facilidad de mantenimiento).
Despus de que se ha dirigido cada caso de prueba de validacin, existir t-.
dos condiciones posibles: I) la caracteristica de funcionamiento o desempee
ple con la especificacin y se le acepta, o 2) se descubre una desviacin de la
cificacin y se crea una lista de deficiencias. La desviacin o el error descub,~
CAPTULO 13
ESTRATEGJASDEPRUEBAOEI..SO..~
405
esta etapa de un proyecto rara vez se corrige antes de la fecha de entrega. A menudo es necesario negociar con el cliente un mtodo para resolver las deficiencias.
"Si se rerurre o~ sufkientes, todos los errores sern superficiales (por ejemplo, si hoy unu buse kr Miderllemenfe
gnm4e de ~rsonos que realizan los pruebas beta y de codesarrollodores, cosi todo$ lS problemas se catferizarat,. 1
nipkfomente y 111 <Ofreccin ser obvia para alguien).
l!l ,)
,. ( ,,i/
PARTE DOS
406
*"'*fflK
.--paro
,..~~
fresco.
od C
lo
~..1- 1..:.:
--~~-
Vtn : reo que lenemcl$ ,_....jo~Doug: Estoy seguro de 9$0, pero un grupo
iodependiente de pruebo nos dar un punlo de vista
"Al iglal que la muerte ylos impuestos, los pruebas son desogro-dobles e inevitables."
CAPTULO 13
407
un problema clsico de la prueba del sistema es "sealar con el dedo". Esto ocurre
cuando se descubre un error y el desarrollador de cada elemento del sistema culpa a
los dems. En lugar de caer en este absurdo, el ingeniero del software debe anticiparse a posibles problemas con la interfaz y I J disear rutas de manejo de errores que
prueben toda la informacin proveniente de otros elementos del sistema, 2) aplicar
una serie de pruebas que simulen datos incorrectos u otros posibles errores en la interfaz del software, 3) registrar los resultados de las pruebas como "evidencia" en el caso
de que se Je culpe, y 4) participar en la planeacin y el diseo de pruebas del sistema
para asegurar que el software se ha probado adecuadamente.
En realidad, la prueba del sistema abarca una serie de pruebas diferentes cuyo propsito principal es ejercitar profundamente el sistema de cmputo. Aunque cada
prueba tiene un propsito diferente, todas trabajan para verificar que se hayan integrado adecuadamente todos los elementos del sistema y que realizan las funciones
apropiadas. En las siguientes secciones se examinarn los tipos de pruebas del sistema [BEI84J que valen la pena para sistemas basados en software.
fallar de varias maneras y a verificar que la recuperacin se realice apropiadamente. Si la recuperacin es automtica (la realiza el propio sistema) debe evaluarse que
sean correctos la reinicializacin, los mecanismos de respaldo del sistema, la recu peracin de datos y el nuevo arranque. Si la recuperacin requiere intervencin
humana, se debe evaluar el tiempo medio de reparacin (TMR) para determinar si se
encuentra dentro de lmites aceptables.
408
PARTE DOS
Durante la prueba de seguridad, quien la aplica desempea el papel del individ-que desea entrar en el sistema. Todo se vale! Debe tratar de obtener contraserpor cualquier medio externo; podra atacar el sistema con software personaliza:::.
diseado para burlar cualquier defensa que se haya construido; podra saturar el s
tema, negando as el servicio a otros; podra producir errores intencionales en el SS'
ma para tratar de tener acceso durante la recuperacin; podra revisar datos sin ,;,leccin, con la idea de encontrar la clave de acceso al sistema.
Si se dan el tiempo y los recursos suficientes, una buena prueba de seguridad
minar por irrumpir en el sistema. El papel del diseador del sistema es que el ce
de la irrupcin sea mayor que el valor de la informacin que habr de obtenerse
"Si est tratando dt encontrar vtrdocleros errores del sistema y no ha sometido su software o una verdadera prua
de resistencia, entonces ste es el momentode empezar.
lorisW.
Una variante de la prueba de resistencia es una tcnica denominada prue__
sensibilidad. En algunas situaciones (la ms comn de ellas ocurre con los a =
mos matemticos), un rango muy pequeo de datos contendidos dentro de los
tes de los datos vlidos para un programa puede causar procesamiento extre-:::
incluso errneo, o una fuerte degradacin del desempeo. Las pruebas de sens
dad tratan de descubrir combinaciones de datos dentro de las clases de entrad:
das que causen inestabilidad o procesamiento inapropiado.
409
Planeaein y administracin
de pruebas
Objetivo: Estos herramientas ayudan al
de software a planear la estrategia de prueba que
"'O de elegirse y a manejar el proceso de prueba a
oo que se aplica.
llacnica: las herramientas de esta categora atienden
.oneacin y el almacenamiento de la prueba, la
x:- ...,stracin y el control, el seguimiento de los
sitos, la integracin, el rastreo de errores y la
z-erocin de informes. Los jefes de proyecto las uson
complementar las herramientas de planeacin.
.enes aplican las pruebas usan estas herramientas para
:t:near actividades de prueba y controlar el flujo de
~cin a medida que avanza el proceso de prueba.
Herramientas representativa s2
OTF (Object Tesfing Framework), desarrollado por MCG
Software lnc. (www.mcgsoft.com), proporciona un
marco conceptual para la administracin de conjuntos
de pruebas para objetos Smalltalk.
QADirector, desarrollado por Compuware Corp.
(www.compuware.com/qacenter), proporciona un solo
punto de control para administrar todas las fases del
proceso de prueba.
TestWorks, desarrollado por Software Reasearch lnc.
(www.soft.com/Products/index, html), contiene un
conjunto plenamente integrado de herramientas de
prueba, incluidas algunas que sirven poro el manejo y
la generacin de informes de las pruebas.
Las herramientas expuestas aqu slo representan una muestra de esta categora. En casi todos los
casos los nombres de las mismas son marcas registradas de sus respectivos desarrolladores.
410
PARTE DOS
"En cuanto empemmos la programocin, descubrimos, pero nuestra sorpresa, que no ser fcil conseguir el progrque tenemos en men1e. Es necesariodesmbrir lo depuracin. Reoierdo el momento exocto en que me di C1J8111o de que
magastar gran parte de mi vida, opartir de ese momento, en encontror los errores de mis propios programas.
Mnrke Wilkes, clescabre 11 depttadt ea 1Mt
13.7.1
El proceso de depuracin
El proceso de
depuracin.
Cosos
de prueba
Pruebas
adicionales~
Pruebas
de regresin
"-
Correccione~
Causas
sospechados
~--------
Resultados
Depuracin
Causas _ _ identificados
....__ _ __.
411
Por qu es tan dificil la depuracin? Con toda probabilidad, la respuesta se rela ciona ms con la psicologa humana (consulte la siguiente seccin) que con la tecnologa del software. Sin embargo, ciertas caractersticas de los errores ofrecen
algunas pistas:
6. Tal vez sea dificil reproducir con exactitud las condiciones de entrada (por
ejemplo, una aplicacin en tiempo real en que no est definido el orden de
entrada).
-iodos soben que depurar es dos veces ms difcil que escribir el programo. Por tonto, si oplto todo su inteligeilcio
poro-tittibitlo, cmo espera siquiera depurarlo?#
13. 7 .2
'.f
Consideraciones psicolgicas
Por desgracia, hay evidencia de que las destrezas para la depuracin son innatas en
el ser humano. Ciertas personas son buenas para ella; otras no. Aunque la evidencia
experimental sobre la depuracin est abierta a muchas interpretaciones, se han
reportado grandes variaciones en la habilidad para la depuracin en programadores
con educacin y experiencia similares.
412
PARTE DOS
HOGARSEGURO
.~
m.llii
Depuradn
LG escena: Cubculo de Ed
~ s e ~ lo codillcacio y la prueba de unidad.
1- 1!dOrNt Ed y Shokito, integrantes del equipo de
~ OEII software de HogarSeguro.
LG conversacin:
Id: S, pero...
Shakira (enhunclo en el cubicul9): A ver, plll
el problema?
Ed: Es complic:odo. Yadems he edodo revisando_..
durante, cunto?, cinco horas. No vos o encontrarto.
413
y un aparato en
buen estado en el enchufe bajo sospecha Y as_se siguen alternando hiptesis y pruebas.
jp primilr poso poru torregir un programa es hacer que folle repetidamente (enel ejemplo ms simple ~ble)}ii
1,
' T. Dff
"
Tcticas de depuracin. La categora de depuracin por la fuerza bruta tal vez
sea el mtodo ms comn y menos eficiente para aislar la causa de un error del software. Los mtodos de depuracin por la fuerza bruta se aplican cuando todo Jo
dems falla. Al aplicar una filosofia de "dejemos que la computadora encuentre el
error", se hacen descargas de memoria, se invocan seales en tiempo de ejecucin
y se carga el programa con instrucciones de salida. En algn lugar del pantano de
informacin que se produce se espera encontrar una pista que pueda conducir a la
causa de un error. Aunque la gran cantidad de informacin producida conduzca
finalmente al xito, lo ms frecuente es que haga desperdiciar tiempo y esfuerzo.
El rastreo hacia atrs es un enfoque de depuracin muy comn, que se utiliza con
xito en pequeos programas. Empezando en el sitio donde se ha descubierto un
sntoma, se recorre hacia atrs el cdigo fuenle (manualmente) hasta hallar el sitio
de la causa. Por desgracia, a medida que aumenta el nmero de lneas del cdigo, la
cantidad de caminos hacia atrs se vuelve tan grande que resulta inmanejable.
El tercer enfoque para la depuracin (eliminacin de causas) lo determina la induccin o deduccin e introduce el concepto de particin binaria. Los datos relacionados
con el error se organizan para aislar las causas posibles. Se elabora una "hiptesis
de la causa" y se aprovechan los datos ya mencionados para probar o desechar la
hiptesis. Como opcin, se elabora una lista de todas las causas posibles y se aplican pruebas para eliminar cada una de ellas. Si las pruebas iniciales indican que
determinada hiptesis de causa es prometedora, se refinan los datos para tratar de
aislar el error.
Depuracin automatizada. Cada uno de los enfoques de depuracin anteriores
complementan las herramientas de depuracin que proporcionan soporte semiautomatizado al ingeniero de software mientras se intentan estrategias de depuracin.
Hailpern y Santhanam (HAI02J resumen el estado de estas herramientas cuando
indican: " ... se han propuesto muchos nuevos enfoques y se dispone de muchos
entornos de depuracin comerciales. Los entornos de desarrollo integrado (EDI) proporcionan una manera de capturar algunos de los errores por defecto especficos del
lenguaje (por ejemplo, caracteres faltantes de fin-de-instruccin, variables indefinidas, etc.) sin requerir compilacin." Un rea que ha atrapado la imaginacin de la
industria es la visualizacin de las construcciones de programacin necesarias como
medio de anlisis de programas [BAE97] Se cuenta con una amplia variedad de
compiladores de depuracin, ayudas dinmicas para la depuracin ("trazadores"),
generadores automticos de casos de prueba y herramientas de correlacin de refe-
414
~ Depuracin
~ Objetivo: Estas herramientos proporcionan
ayudo automatizada o quienes deben depurar
problemas de sofiware. El objetivo es proporcionar
conocimiento dificil de obtener si se afronto el proceso de
depuracin manualmente.
imenaz
Herramientas representativas:4
Jprobe ThreadAnalyzer, desarrollado por Sitraka
(www.sitroka.com), ayudo en la evaluacin de
problemas de subprocesos: bloqueos, detenciones y
condiciones de carrera que representan serios peligros
para el desempea en aplicaciones de Java.
C++ Test, desarrollado por Parasoft (www.porasaft.com),
es una herromiento de pruebo de unidad que soporto
un amplio rango de pruebas en cdigo C y C++. los
Cuando corri
ja un error,
qu preguntas
debo hacerme?
Las herramientas expuestas aqu representan una muestra de esta categora. En cas todos
sos los nombres de las mismas son marcas registradas de sus respectivos desarrolladores.
El concepto de programacin por pares (recomendada como parte del modelo de proceso._
CAPTULO 13
415
2. Cul es el "siguiente error" que podra mtroducirse con la correccin que est a
punto de realizarse? Antes de la correccin se debe evaluar el cdigo fuente (o
mejor an, el diseo) para evaluar el acoplamiento entre las estructuras lgicas y de datos. Si la correccin se realiza en una seccin del programa con un
acoplamiento elevado, debe tenerse mucho cuidado cuando se haga cualquier
cambio.
3. Qu debi hacerse para evitar este error desde el principio? Esta pregunta es el
primer paso hacia el establecimiento de un enfoque estadstico de aseguramiento de la calidad del software (captulo 26). Si se corrige el proceso junto
con el producto, se eliminar el error del programa actual y de todos los programas futuros.
La prueba ocupa el mayor porcentaje del esfuerzo tcnico en el proceso del software. Apenas se empiezan a comprender las sutilezas de la planeacin, la ejecucin y
el control sistemticos de las pruebas.
El objetivo de la prueba del software es descubrir errores; se cumple planeando y
ejecutando una serie de pasos (pruebas de unidad, integracin, validacin y sistema). Las pruebas de unidad e integracin se concentran en la verificacin funcional
de cada componente y en la incorporacin de componentes en la arquitectura del
software. La prueba de validacin demuestra el cumplimiento con los requisitos del software, y la prueba del sistema valida el software una vez que se ha incorporado a un
sistema mayor.
Cada paso de prueba se completa mediante una serie de tcnicas sistemticas de
prueba que ayudan a disear los casos de prueba. Cada paso de prueba ensancha el
grado de abstraccin con que se considera el software.
A di ferencia de la prueba (una actividad sistemtica y planeada), la depuracin
debe considerarse un arte. La actividad de depuracin empieza con la indicacin sintomtica de un problema y debe rastrear la causa del error. Entre los muchos recursos
disponibles durante la depuracin, el ms valioso es el consejo de otros integrantes
del equipo de ingeniera del software.
La necesidad de crear software de la mayor calidad exige un enfoque de prueba
ms sistemtico. Para citar a Dunn y Ullman [DUN82] :
Lo indispensable es una estrategia general que abarque el espacio de prueba estratgico
con una metodologa tan deliberada como lo era el desarrollo sistemtico en que se basaban el anlisis, el diseo y la codificacin.
416
PARTE DOS
417
Casi todos los libros sobre la prueba del software analizan estrategias junto con mtodos para
el diseo de casos de prueba. Todos los siguientes libros analizan los principios, los conceptos,
las estrategias y los mtodos de prueba: Craig y Kaskiel (Systematic Software Testing, Artech
House, 2002). Tamres (Jntroducing Software Testing, Addison-Wesley, 2002), Whittaker (How To
Break Software. Addison-Wesley, 2002), Jorgensen (Software Testing: A Crajtman's Approach, CRC
Press, 2002). Splaine y sus colegas (The Web Testing Handbook, Software Quality Engineering
Publishing, 2001), Palton (Software Testng, Sams Publishing, 2000), Kaner y sus colegas (TesUng
Computer Software, segunda edicin, Wiley, 1999). Black (Managing the Testing Process. Microsoft
Press, 1999) y Perry (Surviving the Top Ten Challenges of Software Testing: A People-Oriented
Approach, Dorset House, 1997) tambin atienden las estrategias de prueba del software.
Para los lectores interesados en mtodos de desarrollo gil de software, Crispin y House
(Testing Extreme Programming, Addison-Wesley, 2002) y Beck (Test Driven Development: By
Example, Addison-Wesley, 2002) presentan estrategias y tcticas de prueba para Programacin
Extrema. Kamer y sus colegas (Lessons Leamed in Software Testing, Wiley, 2001) presentan una
coleccin de ms de 300 "lecciones" pragmticas (directrices) que toda persona dedicada a la
prueba de software debe aprender. Watkins (Testing IT: An Ojf-the Shelf Testing Pmcess,
Cambridge University Press, 200 I) establece un marco conceptual de prueba efectivo para todos
los tipos de software desarrollado y adquirido.
Lewis (Software Testing and Continuous Qualig, Improvment, CRC Press, 2000) y Koomen y sus
colegas (Test Process Improvment. Addison-Wesley, 1999) analizan estrategias para la mejora
continua del proceso de prueba.
Sykes y McGregor (Practica/ Guide to Testing Object-Oriented Software, Addison-Wesley, 2001 ),
Bashir y Goel (Testing Object-Oriented Software, Springer-Verlag, 2000), Binder, Testing ObjectOriented ~lems, Addison-Wesley, I 999}. Kung y sus colegas (Testing Object-Oriented Software,
IEE Computer Society Press, 1998) y Marick (The Crajt of Software Testing, Prentice Hall, 1997)
presentan estrategias y mtodos para prueba de sistemas orientados a objetos.
Directrices para la depuracin se encuentran en libros de Agans (Debugging: The Nine
Indispensable RulesJor Finding EVen The Most Elusive Hardware and Software Problems. AMACON,
2002), Tells y Hsieh (The Science of Debugging, The Coreolis Group, 2001), Robbins (Debugging
Applications, Microsoft Press, 2000) y Dunn (Software Defect Removal, McGraw-Hill, 1984).
Rosenberg (How Debuggers Work, Wiley, 1996) atiende la tecnologa de las herramientas de depuracin. Younessi (Object-01iented Defect Management o/Software, Prentice-Hall, 2002} presenta tcnicas para administrar los defectos que se encuentran en sistemas orientados a objetos. Beizer
[BEI84J presenta una interesante "taxonoma de los errores que puede llevar a mtodos efectivos
para la planeacin de pruebas. Ball (Debuggmg Embedded Microprocessor systems, Newnes
Publishing, 1998) atiende la naturaleza especial del software incrustado de microprocesador.
En Internet se encuentra una amplia variedad de fuentes de informacin sobre estrategias de
prueba del software. Una lista actualizada de referencias en la World Wide Web que resultan
relevantes para las estrategias de prueba del software se encuentran en el sitio Web SEPA:
http://www.mhhe.com/pressman.
CAPTULO
14
C O NCEPTOS
CLAVE
co11pltjidacl
cidomtlco 426
focilldlll de
pr11tbo 419
grficas de
flujo 423
prill
ICflYalntt ...436
patrones 4S6
pnebos
basados en el
tSCNio 444
basados en
fallas 443
ele 11.des 432
ele caja lilanca .423
ele a. _,.. .433
de lo estrvctlnl
de coatrol 430
de .nivel de
doft . .....447
TCNICAS DE PRUEBA
DEL SOFTWARE
Las pruebas deben provocar culpa? ,Las pruebas son realmente des
La respuesta es no!
En este captulo se analizaran tcnicas para el diseo de casos de p
software. Este tipo de diseo se concentra en un conjunto de tcnicas
creacin de casos de prueba que cumplan con obetivos generales y con
trategias de prueba analizadas en el captulo 13.
olljetos 441
1m ~ de todo componente ~
Md6n, ~ i e n l o y desempeo.
411
419
En el captulo 5 se analizaron los objetivos y principios fundamentales de las pruebas. Se recordar que el objetivo de las pruebas es encontrar errores y que una buena prueba es la que tiene una alta probabilidad de encontrar un error. Por tanto,
cuando un ingeniero de software disee e implemente un sistema o un producto de
cmputo, debe tener en mente la facilidad de prueba. Al mismo tiempo, las propias
pruebas deben mostrar un conjunto de caractersticas para alcanzar el objetivo de
encontrar la mayor cantidad de errores con un mnimo de esfuerzo.
1'odo "'programo h0<e oigo bien; pero tal vezseo lo que no queremos que hago.
...
420
PARTE DOS
Cules
son las
caracterstkas de
la facirtclad de
prueba?
"Los errores son ms comunes en el software, tienen ms capodod de expondirse y representan mas problemas
en otras tecnalogios.
421
1. Una buena prueba tiene una elevada probabilidad de encontrar un error. Alcanzar este objetivo requiere que la persona que aplica la prueba comprenda el
software y trate de desarrollar una imagen mental de la manera en que puede
fallar. Lo ideal es probar los tipos de fallas. Por ejemplo, un tipo de falla posible en una interfaz grfica de usuario es la incapacidad de reconocer la posicin correcta del ratn; por tanto, se diseara un conjunto de pruebas para
probarlo tratando de evidenciar un error en el reconocimiento de su posicin.
2. Una buena prueba no es redundante. El tiempo y los recursos destinados a las
pruebas son limitados. No hay razn para realizar una prueba que tenga el
mismo propsito que otra. Cada prueba debe tener un propsito diferente
(aunque las diferencias sean sutiles).
3 . Una buena prueba debe ser "la mejor de su clase" [KAN9.3]. En un grupo de
pruebas con un objetivo similar y recursos limitados podra optarse por la ejecucin de un solo subconjunto de ellas. En este caso, debe usarse la prueba
que tenga la mayor probabilidad de descubrir un tipo completo de errores.
4. Una buena prueba no debe ser ni muy simple ni demasiado compleja. Aunque a
veces es posible combinar una serie de pruebas en un caso de prueba, los posible efectos colaterales asociados con este enfoque podran enmascarar errores. En general, cada prueba debe ejecutarse por separado.
,,
"'
en otros polabr0$... lo c;perqcin ~ detecto que lo controwo no'~Vftd'o, as{ que l'IO es,
probable que 6789 nos mue$fre 'lgo nV!JVQ,
Ed: Yo s lo que quiel'es decir.
"
Vinod: No estoy trotando .d& ~r puntib... tt,lo,._
tenemos tiempo limitoclo poro fc:\s ~ s , d, moa'o qvt
es bueno ideo ejecutor pruebos que tengan uno olta prrr
bobiliclod de encontrar nuevos et~.
Ed: No hoy problema .. Pensar un p:o in6a en esto.
-~?
422
PARTE DOS
14,
~,
CLAYE
Los pruebas de cojo
blanco slo pueden
disearse despus del
diseo al nivel de
componentes (o
cdigo fuente). Es
necesorio que los
detalles lgicos del
programo estn
disponibles.
...
, ,_
"Slo hay uno regla pcl"O disear casos de prueba: abarcar lodos los funciones, perono disear demasiados t1ISG5.
A primera vista, parecera que toda prueba de caja blanca completa llevar.:: programa 100 por ciento correcto. Todo lo que se necesita hacer es identifica
los caminos lgicos, desarrollar casos de prueba para ejercitarlos y evaluar 'l::
dos; es decir, generar casos de prueba para comprobar exhaustivamente la lgi,....
programa. Por desgracia, la prueba exhaustiva presenta ciertos problemas de
tica (consltese el anlisis del recuadro). Sin embargo, la prueba de caja bla!'
Prueba exhaustiva
Considrese un programo de cien lneas en
lenguaje C. Despus de alguno declaracin bsico de datos, el programo contiene dos bucles anidados
que se ejecutan de l o 20 veces codo uno, lo que depende
de lo condicin especificado en lo entrado. Dentro del bucle interno se requieren cuatro construcciones si-entonces
si_no (ifthenelse }. El programo tendr alrededor de 101'
posibles rulas de ejecucin!
Poner este nmero en perspectiva requiere suponer que
se ha desarrollado un procesador de pruebo mgico (m
2 Los trminos prueba funcional y prueba estructurada suelen usarse en lugar de prueba de ~
y de caja blanca, respectivamente
423
debe desecharse nunca como imprctica. Es posible seleccionar y comprobar un nmero limitado de rutas lgicas importantes; adems de probar la validez de las principales estructuras de datos.
todo de diseo que usa la estructura de control descrita como parte del diseo al nivel de componentes para derivar los casos de prueba. Al emplear los mtodos de
prueba de caja blanca, el ingeniero del software podr derivar casos de prueba que
1) garanticen que todos las rutas independientes dentro del mdulo se han ejercitado por lo menos una vez, 2) ejerciten los lados verdadero y falso de todas las decisiones lgicas, 3) ejecuten todos los bucles en sus lmites y dentro de sus lmites operacionales, y 4) ejerciten estructuras de datos internos para asegurar su validez.
La
prueba de la ruta bsica es una tcnica de prueba de caja blanca que propuso ini-
cialmente Tom McCabe [MCC76]. El mtodo de la ruta bsica permite que el diseador
de casos de prueba obtenga una medida de complejidad lgica de un diseo procedimental y que use esta medida como guia para definir un conjunto bsico de rutas de
ejecucin. Los casos de prueba derivados para ejercitar el conjunto bsico deben garantizar que se ejecuta cada instruccin del programa por lo menos una vez durante la prueba.
En realidad, el mtodo de la ruta bsica se aplica sm el uso de las grficas de flujo. Sin embargo. sirven como notacin til para comprender el flujo de control e ilustrar el enfoque.
424
PARTE DOS
mando como referencia la figura 14.2b, cada crculo, llamado nodo de grfica de
jo, representa una o ms instrucciones procedimentales. Una secuencia de reG...rdros de proceso y un diamante de decisin se correlaciona con un solo nodo. Las:.
chas en la grfica de flujo, llamadas aristas o enlaces, representan el flujo de cony son anlogos a las flechas de los diagramas de flujo. Una arista debe terminar
un nodo, aunque el nodo no represente ninguna instruccin procedimental ~
ejemplo, vase el smbolo en la grfica de flujo para la construccin if-then-else de
figura 14.1 ). Las reas que limitan aristas y nodos se denominan regiones. Cua~
se cuentan las regfones se incluyen las reas ubicadas fuera de la grfica.4
ifrhitl
Notacin de
grfica de
flujo.
Secuencio
Si
Mientras
Segn_seo
Hasta
jfrj/
'f
a) Diagrama de
1719~
~
[~
.11
[ I
]
a)
425
IF a OR b
then procedimiento x
else procedimiento y
ENDIF
426
lD complejidad
cidomtico es uno
mtrico que resulto
til poro predecir
cules mdulos tienen
ms probabilidad de
contener errores. Se
empleo poro lo planeocin de pruebas
adems del diseo de
cosos de pruebo.
Cmo se
<al<ula la
<omplepdod ddo
(un conjunto bsico). se habrn ejecutado los lados verdadero y falso de cada C"Struccin del programa. Debe observarse que un conjunto bsico no es nico. En "5
lidad, es posible derivar varios conjuntos bsicos diferentes de un diseo proced..
mental determinado.
Cmo se sabe cuntas rutas buscar? El clculo de la complejidad ciclomtica p
porciona la respuesta. La complejidad ciclomtica es una m trica de software
proporciona una medida cuantitativa de la complejidad lgica de un progra;Cuando se emplea en el contexto del mtodo de prueba de la ruta bsica, el calculado mediante la complejidad ciclomtica define el nmero de rutas indepe:
dientes en el conjunto bsico de un programa, y proporciona un lmite superior
ra el nmero de pruebas que deben aplicarse para asegurar que todas las instruaJc;
nes se hayan ejecutado por lo menos una vez.
La complejidad ciclomtica se basa en la teora grfica y se calcula de una de
maneras:
1. El nmero de regiones corresponde a la complejidad ciclomtica.
mti<a?
+2
&'
"~
C~VE
Lo complepdod
domttco proporciono
el lmite superior del
nmero necesario de
cosos de pruebo poro
gorontizor que codo
instruccin del
programo se hoyo
ejecutado por lo menos
uno vez.
=P +
= 11
aristas - 9 nodos + 2
=4
=4
HoGARSEGURO
la conversacin:
ll Y$Z ~
427
olvidomo$cfe lo pruebo de <jq bf<:lgca, integrar to iniciar la e"fec:U<;irt de las pruehgs de caja negro.
vN'NNI: La comp1eidad ciclomatri IV deGt. S6fo~1o V(G) poro c:oclo operocin dentro de c~dn ~ n "
'
son
(excasperada~ tY ~ e!Yjo
lS ms prflPeniOS Q ~
,
VdeG,
o,
, ,
: eOu'
l. Utilizando el diseo o el cdigo como base se dibuja la grfica de flujo correspondiente. En la creacin de una grfica de flujo se emplean los
simbolos y las reglas de construccin presentadas en la seccin 14.4. 1. Tom ando com o referencia el PDL para obtener promedio en la figura 14.4, se
crea una grfica de flujo numerando esas instrucciones en PDL, que se correlacionarn o mapearn en los nodos correspondientes de la grfica de flujo.
En la figura J 4.5 se muestra la grfica de Oujo resultante.
2. Determnese la complejidad cidomtica de la grfica de flujo resultante. La complejidad ciclomtica, V(G), se determina al aplicar el algoritmo
descrito en la seccin 14.4.2. Debe indicarse que podra determinarse V(G) sin
desarrollar una grfica de flujo, si se cuentan todas las instrucciones condicio-
428
PARTE DOS
iihIICI
PROCEDIMIENTO promedio:
PDLcon
nodos
identificados.
~~~~=0:2
1 {
4
c..ma=O:
------00 WHllE """'l1J < > .999 AH1> ..,._."'1ndo < 100 S
..,._,entn,da en 1:
.,.,...,_ta,
6- <ll EN
w..io.ro>=........,AADwlorf~<=mmno
-+
EUIEcxnlti,
e<
---.t.. lotel...ado en 1:
.....,. =
wlorfll
ENOIF
.._._, .. 1.. 1:
9 ENOOO
IF lotel.wlclo > O 10
l2
= 6 regiones
V(G) = 17 aristas - 13 nodos+ 2
V(G)
V(G)
1.
= 5 nodos predicado +
=6
1=6
ruta 2: 1-2-10-12-13
ruta 3: 1-2-3-10-11-13
ruta 4: 1-2-3-4-5-8-9-2-...
ruta 5: l -2-3-4-5-6-8-9-2-...
ruta 6: 1-2-3-4-5-6-7-8-9-2-...
429
Los puntos suspensivos( ...) que siguen a las rutas 4, 5 y 6 indican que es
aceptable cualquier ruta que se recorra en el resto de la estructura de control.
A menudo vale la pena identificar nodos predicado como apoyo para derivar
los casos de prueba. En este caso, los nodos 2, 3, 5, 6 y 1O son nodos predicado.
4. Preprense los casos de prueba que forzarn la ejecucin de cada ruta en el conjunto bsico. Es necesario seleccionar los datos de manera tal
que se establezcan apropiadamente las condiciones de los nodos predicado, a
medida que se prueba cada ruta. Cada caso de prueba se ejecuta y compara
con los resultados esperados. Una vez completados todos los casos, la persona que aplica la prueba puede estar segura de que todas las instrucciones del
programa se han ejecutado por lo menos una vez.
Es importante observar que es imposible probar algunas rutas independientes
(como la ruta l en nuestro ejemplo) por separado. Es decir, en el flujo normal del
programa no puede obtenerse la combinacin de los datos requeridos para recorrer
la ruta. En tales casos, estas rutas se ejercitan como parte de otra prueba del camino.
ecfado
nodo
'
5
Grfica de fluo
Matriz de grfica
430
PARTE DOS
Qu es una
matriz de
grfica y cmo se
extiende para
usarla en la
prueba?
4Jn ror dsico es pnstur ms olenn o la ejecu<in de lm pruebos que osu diseo.
431
E1 <Operador relacional> E2
donde E1 y E2 son expresiones aritmticas y <operador relacional> es uno de los siguientes: < ,~. =,*(desigual), > o;;,,. Una condicin compuesta la integran dos o
ms condiciones simples, operadores booleanos y parntesis. Se supone que entre
los operadores booleanos permitidos en una condicin compuesta se incluyen OR (I).
AND (&) y NOT (-.). Una condicin sin expresiones relacionales se considera una expresin booleana. Por tanto, los posibles tipos de elementos en una condicin incluyen un operador booleano, una variable booleana, un par de parntesis (que encierran una condicin booleana simple o compuesta). un operador relacional o una expresin aritmtica.
Si una condicin es incorrecta, entonces por lo menos un componente de la condicin es incorrecto. Por tanto, entre los tipos de errores en una condicin se incluyen los presentes en el operador booleano (operadores booleanos incorrectos/faltantes/adicionales), en la variable booleana, en los parntesis booleanos, en los
operadores relacionales y en la expresin aritmtica. El mtodo de prueba de condicin se concentra en la prueba de cada condicin del programa para asegurar que
no contiene errores.
432
No es realista
asegurar que lo
prueba del flu;o de
dotos se usoro de
manero ex/enso
cuando se pruebo un
sistema grande.
Sin embargo, puede
usarse de uno manero
orientada oun blanco
en reas de software
que estn boio
sospecha.
PARTE DOS
Una estrategia simple de prueba de flujo de datos consiste en solicitar que e=.
cadena DU sea cubierta por lo menos una vez. Esta estrategia se denomina est.
gia de prueba DU. Se ha mostrado que sta no garantiza la cobertura de todas las
mas de un programa. Sin embargo, slo en raras situaciones no se garantiza que
rama est cubierta por una prueba DU, como en las construcciones if-then-else
entonces-si_no) en que la parte then no tiene definicin de alguna variable y la _
te else no existe. En esta situacin, la rama else de la instruccin ifno estn~
riamente cubierta por la prueba DU. se han estudiado y comparado varias es:.:gias de prueba de flujo de datos (por ejemplo, (FRA88]. [NTA88], (FRA931). A los
tares interesados se les recomienda que consideren consultar esas referencz.s
bliogrficas.
Clases de
bucles.
Bucles anidados
Bucles simples
Bucles
concatenados
Bucles
no estructurados
433
Bucles simples. El siguiente conjunto de pruebas se aplica a bucles simples, donde n es el nmero mximo de pasos que permite el bucle.
1. Omitir por completo el bucle.
= 1, n, n + l
Bucles anidados. Si se fuese a extender el enfoque de prueba de los bucles simples a los anidados, el nmero de pruebas posibles crecera geomtricamente a medida que aumente el nivel de anidamiento. Esto generara un nmero poco prctico
de pruebas. Beizer [BEI90) sugiere un enfoque que ayudar a reducir el nmero de
pruebas:
1. Iniciar en el bucle ms interno. Asignar a todos los bucles los valores mnimos.
2 . Aplicar pruebas de bucle simple al ms interno mientras se mantienen los externos en los valores mnimos del parmetro de iteracin (como el contador
de bucles). Agregar otras pruebas para los valores fuera de rango o excluidos.
3. Trabajar hacia fuera, conduciendo pruebas para el siguiente bucle, pero manteniendo todos los dems bucles externos en valores mnimos y otros bucles
anidados en valores "tpicos".
'ir probor
-~/os bucles
e ';;J(furodos.
~ro volver o
SE
=*is.
que definido para los bucles simples, si cada uno de los bucles es independiente. Sin
embargo, si dos bucles estn concatenados y el contador del bucle I se emplea como
valor inicial para el bucle 2, entonces los bucles no son independientes. Cuando los
bucles no lo son, entonces se recomienda el enfoque aplicado a los bucles anidados.
Bucles no estructurados. Siempre que sea posible, esta clase de bucles debe di searse nuevamente para reflejar el uso de las construcciones de programacin estructurada (captulo 11).
434
PARTE DOS
Las pruebas de caja negra tratan de encontrar errores en las siguientes categ
ras: 1) funciones incorrectas o faltantes, 2) errores de interfaz, 3) errores en estt"turas de datos o en acceso a bases de datos externas, 4) errores de comportamie.
to o desempeo, y 5) errores de inicializacin y trmino.
A diferencia de las pruebas de caja blanca, que se realizan al inicio del procese :r
prueba, las de caja negra tienden a aplicarse durante las ltimas etapas de la Pba (consltese el capitulo 13). Debido a que stas desatienden a propsito la esc-.c
tura de control, la atencin se concentra en el dominio de la informacin. Las p-...e
bas estn diseadas para responder las siguientes preguntas:
Cmo se prueba la validez funcional?
Cules
preguntas
responden las
pruebas de caja
negra?
14.6.1
En este caso el trmino "objetos se considera en el contexto ms amplio posible. Abarca ob1e:
tos, componentes (mdulos) tradicionales y elementos orientados a objetos del software de e
CAPTULO 14
435
a}
lo seleccin del men genero
(tiempo de generacin < 1.0 seg)
b}
Si se toma como referencia la figura, una seleccin del men en nuevoArchivo genera una ventana de documento. El peso del nodo de ventanaDocumento proporciona una lista de los atributos de la ventana que se esperaban cuando sta se gener. El peso del enlace indica que la ventana debe generarse en menos de 1.0 segundos. Un enlace indirecto establece una relacin simtrica entre la seleccin del
men nuevoArchivo y textoDocumento, y los enlaces paralelos indican las relaciones entre ventanaDocumento y textoD ocumento. En realidad, tendra que generarse una grfica mucho ms detallada como precursora del diseo de casos de
prueba. El ingeniero de software deriva entonces los casos de prueba al recorrer la
436
PARTE DOS
grfica y cubrir cada una de las relaciones mostradas. Estos casos de prueba se
searn en un intento de encontrar errores en cualquiera de las relaciones.
Beizer (BEI95] describe varios mtodos de prueba de comportamiento que us..::::
grficas:
Modelado del flujo de transaccin. Los nodos representan pasos de alguna tra=
saccin (por ejemplo, los pasos requeridos para hacer una reservacin en una ae:
lnea empleando un servicio en lnea) y los enlaces representan la conexin lg:
entre los pasos. El diagrama de flujo de datos (captulo 8) se utiliza para ayuda: .,.
la creacin de grficas de este tipo.
Modelado del flujo de datos. Los nodos son objetos de datos, y los enlaces s
las transformaciones que ocurren para traducir un objeto de datos en otro. Por e;:
plo, el nodo impuesto retenido por FICA (IRF) se calcula a partir de salario
437
condicin de entrada es un valor numrico especfico, un rango de valores, un conjunto de valores relacionados o una condicin booleana. Las clases de equivalencia
se definen de acuerdo con las siguientes directrices:
1. Si una condicin de entrada especifica un rango, se definen una clase de equivalencia vlida y dos no vlidas.
2. Si una condicin de entrada requiere un valor especfico, se definen una clase
de equivalencia vlida y dos no vlidas.
3. Si una condicin de entrada especifica un miembro de un conjunto, se definen
una clase de equivalencia vlida y otra no vlida.
4 . Si una condicin de entrada es booleana, se definen una clase de equivalencia vlida y otra no vlida.
Al aplicar .estas directrices para la derivacin de clases de equivalencia, se desarrollarn y ejecutarn los casos de prueba para cada objeto de los datos del dominio
de entrada. Los casos de prueba se seleccionan de modo que el mayor nmero de
atributos de clase de equivalencia se ejercita una vez.
Cmo
puedo crear
casos de prueba
IYL?
3. Aplicar las directrices 1 y 2 a las condiciones de salida. Por ejemplo, supngase que una tabla que compara presin y temperatura se requiere como salida
de un programa de anlisis de ingeniera. Los casos de prueba deben disearse para crear un informe de salida que produzca el nmero mximo (y mnimo) permisible para las entradas de la tabla.
438
PARTE DOS
"B cM Arialle Sesdl al despegar debido o unsimpledefecto (error} del software que se relacionaho con ID c. ,
versin de un valor de pl#IIO flotante de 64 bits en un entero de 16 bits. El cohete y sus cualro SCllilites cmean
SIIU'8 ymstaron 500 m~ de dlares. Una pruebo completo del sistema hubiera enconlnldo ti ert~ i-,o w '
11111a por 111Z0111S de presupuesto.
.
14.6.4 Prueba de tabla ortogonal
Hay muchas aplicaciones en las cuales el dominio de entrada es relativamente
tacto. Es decir, el nmero de parmetros es pequeo y los valores que cada ~
tro puede tomar estn claramente limitados. Cuando estos nmeros son muy .,
os (por ejemplo, tres parmetros de entrada toman tres valores discretos cacb
es posible considerar cada permutacin de entrada y probar exhaustivamente ;::
cesamiento del dominio de entrada. Sin embargo, a medida que crece el nlr:
valores de entrada, junto con el nmero de valores discretos para cada elem
&'
'~
c&v1
Lo pruebo de tablo
ortogonal permite
disear cosos de
pruebo que
proporcionan lo
mximo cobertura de
pruebo con un nmero
rozonoble de cosos de
pruebo.
CAPTULO 14
439
Tabla ortogonal L9
Para ilustrar el uso de la tabla ortogonal L9, considrese la funcin enviar de una
aplicacin de fax. se pasan cuatro parmetros, PI, P2, P3 y P4 a la funcin enviar.
Cada uno toma tres valores discretos. Por ejemplo, PI toma los valores:
P1 = 1, enviarlo ahora
PI
PJ = 3, enviarlo a medianoche
P2, P3 y P4 tambin podran tornar los valores 1, 2 y 3, representando otras funciones de enviar.
Si se eligiera una estrategia de prueba "un elemento de entrada a la vez", se especificaran las siguientes secuencias de prueba (Pl, P2, P3, P4): (1, 1, 1, 1), (2, 1, 1,
1), (3, 1, 1, )), (1,2, 1, 1), (1,3, 1, 1), (1, 1,2, 1), (1, 1,3, 1), (), 1, l,2)y(1 , 1, 1,3).
Phadke [PHA97] evala estos casos de prueba al afirmar:
Estos casos de prueba slo son tiles cuando se est seguro de que los parmetros de
prueba no interactan. Detectarn fallas de lgica donde un solo valor de parmetro hace que el software funcione mal. Se trata defallas de modalidad simple. Este mtodo no detecta fallas de lgica que provoquen un mal funcionamiento cuando dos o ms parmetros
toman ciertos valores simultneamente; es decir, no detecta interacciones. Por tanto, su
capacidad para detectar fallas est limitada.
Dado el nmero relativamente pequeo de parmetros de entrada y valores discretos es posible aplicar una prueba exhaustiva. El nmero de pruebas requeridas es 34 =
81 (grande, pero manejable) . Se encontraran todas las fallas asociadas con permutacin de elementos de datos, pero el esfuerzo requerido es relativamente alto.
El enfoque de prueoa de tabla ortogonal permite proporcionar buena cobertura de
prueba con un nmero considerablemente menor de casos de prueba que la estrategia exhaustiva. En la figura 14.10 se muestra una tabla ortogonal L9 para la funcin enwar de fax.
A continuacin se presenta la evaluacin de Phadke [PHA97] acerca de las pruebas aplicadas con la tabla ortogonal:
PARTE DOS
440
Uh/lCIH
Tabla
ortogonal L9.
Coso
Pormelros de pnebo
de pruebo
p
P2
P3
P,
.4
Detecta y aisla todas las fallas de modalidad simple. Una falla de modalidad 5C'.,
ple es un problema consistente con cualqwer nivel de cualquier parmetro simple
ejemplo. si todos los casos de prueba del factor PI = l causan una condicin de errar
trata de una falla de modalidad sunple. En este eemplo, las pruebas 1, 2 y 3 {figura 1~
mostrarn errores. Al analizar la informacin acerca de cules pruebas muestran erra::s.
se identifican cules valores de parmetros causan la falla . En este ejemplo, al notar
las pruebas 1, 2 y 3 causan errores. se aisla [el procesamiento lgico asociado con e:-mz
lo ahora {PI = 1)1 como la fuente del error. Este aislamiento de la falla es importar e
ra corregirla
Fallas multimodales. Las tablas ortogonales (del lipo mostrado) slo aseguran la
leccin de fallas de modalidad simple y doble Sin embargo, estas pruebas tambin~
tan muchas fallas mult1modales.
Mecnica : Estos herromienlc>s coen en dos amplios cale~ : pn,ebos estticos y dinmicos. Se emplean tres ti-
441
La arquitectura del software orientado a objetos genera una serie de subsistemas separados en capas que encapsulan las clases que colaboran entre s. Cada uno de estos elementos del sistema (subsistemas y clases) realiza funciones que ayudan a
cumplir con los requisitos del sistema. Es necesario probar un sistema orientado a objetos en diferentes niveles para descubrir errores que podran ocurrir a medida que
las clases colaboran entre si y los subsistemas se comunican entre las capas de la
arquitectura.
En el aspecto estratgico, la prueba orientada a objetos es similar a la de los sistemas convencionales, pero es diferente en el aspecto tctico. Debido a que los modelos de anlisis y diseo orientados a objetos tienen una estructura y un contenido
similares al programa orientado a objetos resultante, la "prueba" podra empezar con
la revisin de estos modelos. Una vez que se ha generado el cdigo, la prueba orientada a objetos real empieza por Jo "pequeo", con una serie de pruebas diseadas
para ejercitar las operaciones de clase y examinar si existen errores a medida que
una clase colabora con otra. Cuando las clases se integran para formar un subsistema, se aplica la prueba basada en el uso, junto con los enfoques basados en fallas,
para ejercitar plenamente las clases que colaboran entre s. Por ltimo, se emplean
los casos de uso para descubrir errores al nivel de validacin del software.
El diseo convencional de casos de prueba lo determina el concepto entrada-proceso-salida del software o el detalle algortmico de mdulos individuales. La prueba
Las herramientas expuestas aqu slo representan una muestra de esta categorla. En casi todos los
casos los nombres de las mismas son marcas registradas de sus respectivos desarrolladores.
442
PARTE DOS
h~-
----~
ffiii h:iJN:'&1
cioo4t m1kules Yt&-
14.7.l
443
14. 7 .3
:,siste en
crear
"asis sobre un
:le fallos
.uego idear
;:::ro probar
_:esis,
"Si se quiere y espero que un programo funcione, lo ms probable es que se veo un programa funcionando (y que~;
pasen por oho los fullas)."
(em 1(1111er et "1.
De la seccin 14.7.3 a la 14. 7.6 se ha adaptado de un articulo de Brian Marick publicado en el grupo de noticias de Internet componente.testing Esta adaptacin se incluye con el permiso del autor. Para conocer mayor informacin sobre estos temas consltese [MAR941. Debe observarse que
las tcnicas analizadas de las secciones 14.7.3 a 14 7 6 son aplicables al software convencional.
444
14.7.4
Aunque se hoyo
probodo por com~eto
uno clase de base, an
se tendr que probar
todos los doses
derivados de ello.
~,
c&v1
lo pruebo bosoda en
escenarios descubrir
errores que ocurren
~conel
~-
sos de prueba son ms complejos y realistas que las pruebas basadas en fall~
445
Este escenario describe dos cosas: una prueba y necesidades especficas del usuario.
Las necesidades del usuario son obvias: 1) un mtodo para imprimir pginas individuales, y 2) un mtodo para imprimir un rango de pginas. A medida que se aplica
la prueba, debe probarse la edicin despus de imprimir (y a la inversa). La persona
que aplica la prueba espera descubrir que la funcin de impresin causa errores en
la funcin de edicin; es decir, que las dos funciones del software no tienen la independencia apropiada.
446
PARTE DOS
~
~~
cfAv1
Lo pruebo de
estructuro de superficie
es anlogo olo pruebo
de caja negro. Lo de
esttucturo de fondo es
similor a lo de cojo
blanco.
alg-
reas del usuario (o que la interfaz tenga comandos intiles). En una interfaz
tada a objetos el responsable de la prueba podra emplear todos los objet--s
una lista de verificacin de una prueba.
Las mejores pruebas se derivan cuando el diseador observa el sistema
manera nueva o poco convencional. Por ejemplo, si el sistema o el prodlk.
una interfaz basada en comandos, las pruebas ms completas se derivarar;
seador del caso de prueba pretende que las operaciones sean independien=o.
objetos. Deben plantearse preguntas como: "El usuario desear usar esta ~
(que slo se aplica al objeto escner) mientras trabaja con la impresora~
portar cul sea el estilo de la interfaz, el diseo de casos de prueba que eierestructura de superficie debe usar objetos y operaciones como pistas que cea tareas omitidas.
La estructura a fondo representa los detalles tcnicos internos de un p
orientado a objetos. Es decir, la estructura que se comprende al examinar e
el cdigo, o ambos. La prueba de estructura de fondo est diseada para eje~
pendencias, comportamientos y mecanismos de comunicacin que se har
CAPTULO 14
447
cido como parte del modelo de diseo (captulos 9- 12) para el software orientado a
objetos.
Los modelos de anlisis y diseo son la base de la prueba de estructura de fondo.
Por ejemplo, el diagrama de colaboracin UML o el modelo de despliegue describe
las colaboraciones entre objetos y subsistemas que tal vez no sean visibles externamente. El diseador de casos de prueba pregunta entonces: hemos capturado (como prueba) algunas tareas que ejercitan la colaboracin indicada en el diagrama de
colaboracin? Si no es as, por qu?
Esto representa la secuencia de prueba mnima para Cuenta. Sin embargo, podra presentarse una amplia variedad de comportamientos distintos dentro de esta
secuencia.
abrir configurar depositar [ depositar
rrar
Caso de prueba r 1: abrir configurar depositar depositar saldar sumar retirar ce1Tar
caso de prueba r 2 : abrir configurar depositar retirar depositar saldar limiteCredito retirar cerrar
stas y otras pruebas de orden aleatorio se aplican para ejercitar diferentes historiales de instancias de clase.
448
PARTE DOS
HOGARSEGURO
l'nleba de da.se
la weaam Cubculo de Sholro.
d. lrpno del soltwor. ,HogorSeguro que e$ln trobo, , . an el cli.i'io de cmos de prueba para lo funcin
de IIIQUriclad.
nr a
&a l'INlftlQ
- cw.
De_.
-,.cilaf6
. .a
...
#1: ......,....,....... . . , , .
Cvles
opciones de
prueba estn
disponibles al
aivel de dase?
de particin'
La particin basada en el estado ordena en categoras las operaciones de
partir de su capacidad para cambiar el estado de la clase. Si se piensa una
en la clase Cuenta, las operaciones de estado incluyen depositar() y rearar(
tras que las que no son de estado incluyen saldar( ), sumar( ) y limiteCred1
pruebas estn diseadas de manera que ejercitan por separado las operad
cambian de estado y las que no lo hacen. Por tanto,
Caso de prueba p 1: abrir configurardepositar depositarretitar retirar cerrar
Caso de prueba p~ abrirconfigurar depositar sumar &miteCreditoretirar c.,,_
CAPTULO 14
449
prueba p2 ejercita
operaciones que no cambian de estado (aparte de las que se encuentran en la secuencia de prueba mnima).
La particin basada en atributos ordena en categoras las operaciones de clase basadas en los atributos que utilizan. En el caso de la clase cuenta, los atributos saldar
El diseo de casos de prueba se vuelve ms complicado cuando empieza la integracin del sistema orientado a objetos. En esta etapa debe empezar la prueba de colaboracin entre clases. Para ilustrar la "generacin de casos de prueba de interclase"
[KIR94], se expande el ejemplo del sistema bancario presentado en la seccin 14.8
para que incluya las clases y colaboraciones indicadas en la figura 14.11. La direccin de las flechas en la figura indica la direccin de los mensajes. Y las etiquetas individuales indican las operaciones que se invocan como consecuencia de la colaboracin indicada por los mensajes.
Como en la prueba de clases individuales, la prueba de colaboracin entre clases
se lleva a cabo al aplicar mtodos aleatorios y de particin, adems de pruebas basadas en el escenario y de comportamiento.
450
Diagrama de
torjetolnsertodo
verificorCuenlo
contraseo
YerificorNIP
deposilor
verificorf'olitico
retirar
solicitorRetiro
$OlicitorDeposito
eslotusCuento
.----fo,--..,.de--.. terminar . . . - - - - - infoCuento - - - - lnlef z _,_
Cajero
Banco
uwor o ...,
Aulomotico
coero olllom1ico - - obrirCue nto
verificorEs1o"1u
" s- - - -depositolnic10""''""'"_ __
estotusDeposito
outonzorTorjeto
limiteCredito
delpochorf.ctivo
de$0ulorizor
tipoCuento
,mprimirEstodoCuenlo
cerrorCuenlo
soldar
leerlnloTo~eto
retira r
obtenerMontoEfectivo
deposita r
cerrar
colaboracin
de clases
para una
apllcac16n
bancaria
(adaptado de
CKIR94D.
Cojera
l
El
lnfo
Volidocion
p:::ea
451
Debe notarse que esta secuencia es idntica a la secuencia de la prueba mnima tratada en la seccin 14.9.1. La secuencia de la prueba adicional se agrega a la sucesin mnima,
Caso de prueba s2 :
Es posible derivar an ms casos de prueba para asegurar que todos los comportamientos de la clase se hayan ejercitado adecuadamente. En situaciones en que el
comportamiento de la clase da como resultado la colaboracin con una o ms clases, se utilizan varios diagramas de estado para registrar el flujo del comportamiento del sistema.
Abrir
vocior
Cuento
configurar Cuento
configurar
CuerifQ
depositar (inicial)
depositar
soldor
Credito
infoCuento
retirar
retirar (final)
Cuento
muerta
Cuento
inactivo
452
PARTE DOS
tcoNsuo9"
14.10.1
interfaces grficas de usuario (GUI, por sus siglas en ingls) plantean ctesa:
teresantes a los ingenieros de software. Debido a los componentes reutilizables
porcionados como parte de los entornos de desarrollo de la GUI, la creacin de
terfaz de usuario consume menos tiempo y es ms precisa (captulo 12). Pero
mo tiempo ha crecido la complejidad de las GUJ, lo que dificulta ms el dise
ejecucin de casos de prueba.
Las
hlf:iiNii
dmle/srilor.
...
www.ast-
:e
res, es posible derivar una serie de pruebas estndar. Las grficas de mod
estado finito se usan para derivar una serie de pruebas que ejerciten objetos
ficos de datos y programas que resultan relevantes para la GUI.
Debido al gran nmero de permutaciones asociadas con las operaciones
GUI, la prueba debe reducirse empleando herramientas automatizadas. En
mos aos ha aparecido en el mercado una amplia serie de herramientas de de GUI. Para un mayor anlisis al respecto consulte el captulo 12.
CAPTULO 14
453
aspectos de desempeo relacionados con el proceso de transaccin, la posible presencia de varias plataformas de hardware diferentes, la complejidad de la comunicacin en red, la necesidad de servir a varios clientes desde una base de datos centralizada (o, en algunos casos, distribuida) y los requisitos de coordinacin impuestos al servidor se combinan para que la prueba de las arquitecturas de software
cliente/servidor resulte considerablemente ms dificil que la prueba de aplicaciones
independientes. En realidad, estudios recientes de la industria indican un aumento
importante en el tiempo y costo de la prueba cuando se desarrollan entornos cliente/servidor.
En el temo de los prebos existe uno bueno dosis desimilitudentre lossistemas trodidonol yditntl!/~rvd0t .
KeltykirM ;.
En general, la prueba del software cliente/servidor se presenta en tres niveles diferentes: 1) aplicaciones de cliente individuales se prueban en una modalidad "desconectada"; la operacin del servidor y la red no se toman en cuenta; 2) el software
de cliente y las aplicaciones asociadas del servidor se prueban en conjunto, pero las
operaciones de red no se ejercitan de manera explcita; 3) se prueba toda la arquitectura cliente/servidor, incluida la operacin y el desempeo de la red.
Aunque muchos tipos diferentes de prueba se conducen en cada uno de estos niveles de detalle, los siguientes enfoques de prueba suelen encontrarse para aplicaciones cliente/servidor:
Pruebas de funcionalidad de la aplicacin. La funcionalidad de las aplicaciones de cliente se prueba empleando los mtodos analizados en este captulo. En esencia, la aplicacin se prueba de manera independiente.
Pruebas de servidor. Se prueban las funciones de coordinacin y manejo de
datos del servidor. Tambin se considera el desempeo del servidor (tiempo
de respuesta y procesamiento total de los datos).
Pruebas de base de datos. Se prueba la exactitud e integridad de los datos
almacenados en el servidor. Se examinan las transacciones que realizaron las
aplicaciones de cliente para asegurar que los datos se almacenan, actualizan
y recuperan apropiadamente. Tambin se prueba la funcin de archivado.
Pruebas de transaccin. se crea una serie de pruebas para asegurar que
cada clase de transacciones se procesa de acuerdo con sus requisitos. Las
pruebas se concentran en determinar si es correcto el procesamiento y en aspectos del desempeo (por ejemplo, tiempos de procesamiento de las transacciones y volumen de stas).
Pruebas de comunicaciones de red. Con estas pruebas se verifica que la
comunicacin entre los nodos de la red ocurre de manera correcta y que el
paso de mensajes, las transacciones y el trfico de la red relacionado se realiza sin errores. Tambin es posible realizar pruebas de seguridad de la red como parte de estas pruebas.
454
PARTE DOS
9 Debe observarse que los perfiles operacionales pueden aplicarse para probar todos los tipos
quitecturas del sistema, no slo la cliente/ servidor.
455
456
PARTE DOS
-HMHiiUd1
\Ju!llodores oms de
70 patrones de pruebo
seexooflllrOn en
www~
~
~~
c&vE
Los potrones de pruebo
oyudon oun equipo de
software o
comunicarse mejor
sobre lo pruebo y
kmlin ocomprender
mep kis fuerzas que
fea OIII em,que
e5jjEtO de iruelxi.
457
Aunque estos beneficios sean "leves", no deben perderse de vista. Buena parte de la
prueba del software, incluso durante las ltimas dcadas, ha sido una actividad ad
hoc. Si los patrones de prueba ayudan a un equipo de software a comunicarse de
manera ms efectiva, a comprender las fuerzas motivadoras que llevan a un enfoque especfico de prueba y a considerar el diseo de los casos de prueba como una
actividad en evolucin, se habr logrado mucho.
Los patrones de prueba se describen de manera muy parecida a los de anlisis y
diseo (captulos 7 y 9). Se han propuesto docenas de patrones de prueba (por ejemplo, [B1N99l, [MAR02]). Los siguientes tres patrones (presentados en forma resumida), proporcionan ejemplos representativos:
Nombre del pa'n: testigo par
Resumen: Patrn orientado a procesos, testigo par describe una tcnica anloga a la programacin par (captulo 4), en la cual dos responsables de una pruebas trabajan de manera conjunta para disear y ejecutar una serie de pruebas aplicables a actividades de prueba
de unidad, integracin o validacin.
Un anlisis completo de los patrones de prueba est ms all del alcance de este libro. El lector interesado debe consultar [BIN99] y [MAR02] para conocer mayor informacin sobre este importante tema.
14.12 IIIVMIH
El objetivo principal del diseo de casos de prueba consiste en derivar un conjunto
de pruebas que tenga la mayor probabilidad de descubrir errores en el software. Alcanzar este objetivo requiere emplear dos categoras diferentes de tcnicas de diseo de casos de prueba (aplicables a sistemas convencionales y orientados a objetos):
las pruebas de caja negra y de caja blanca.
Las pruebas de caja blanca se concentran en la estructura de control del programa. Los casos de prueba se derivan para asegurar que todas las instrucciones del
programa se ejecuten por lo menos una vez durante la prueba, y que todas las condiciones lgicas se ejerciten. La prueba de la ruta bsica, una tcnica de caja blan-
458
PARTE DOS
ca, aprovecha las grficas del programa (o matrices de grficas) para derivar un ~
junto de pruebas linealmente independientes que aseguren una cobertura. La Fba de condicin y de flujo de datos ejercitan an ms la lgica del programa _
prueba de bucle complementa otras tcnicas de caja blanca al proporcionar un
cedirniento para ejercitar bucles con grados diversos de complejidad.
Las pruebas de caja negra estn diseadas para validar requisitos funcional~
importar el funcionamiento interno de un programa. Estas tcnicas de pru~
concentran en el dominio de la informacin del software, derivando casos de .
ba mediante particin de los dominios de entrada y salida de un programa en '
tal que proporcione cobertura completa. La particin equivalente divide el dode entrada en clases de datos que probablemente ejercitarn una funcin espec..
del software. El anlisis de valores limite prueba la capacidad del programa para
nejar datos en los lmites de aceptabilidad. La prueba de tabla ortogonal pro:x:
na un mtodo eficiente y sistemtico de probar sistemas con nmeros pequef_
parmetros de entrada.
Aunque el objetivo general de la prueba orientada a objetos (encontrar el :ro mximo de errores con una cantidad mnima de esfuerzo) es idntico a: l::
prueba del software convencional, la tctica para la prueba orientada a obje-~
fieren un poco. El concepto de prueba se ensancha para incluir la revisin de
delo de anlisis y diseo. Adems, el eje de la prueba se desplaza del comnr.-.__.
procedimental (el mdulo) hacia la clase. El diseo de pruebas para una clase diversos mtodos: prueba basada en fallas, aleatoria y de particin. Cada uno .;e
tos mtodos ejercita las operaciones encapsuladas por la clase. Las secue~
prueba estn diseadas para asegurar que se ejerciten operaciones relevan;.cs.
examina el estado de la clase, representado por los valores de sus atributos, pa;
terminar si existen errores.
La prueba de integracin se realiza mediante una estrategia basada en el us.=:
te tipo de prueba construye el sistema en capas, empezando con las clases
usan clase de servidor. Los mtodos de diseo de casos de prueba de int
tambin pueden emplear pruebas aleatorias y de particin. Adems, se utiliza.bas basadas en el escenario y derivadas de modelos de comportamiento para
una clase y sus colaboradores. Una secuencia de prueba da seguimiento al ::
las operaciones entre las colaboraciones de clases.
Los mtodos de prueba especializados abarcan una amplia serie de opc
software y reas de aplicacin. La prueba para interfaces grficas de usuario
quitecturas cliente/servidor, de la documentacin y funciones de ayuda y de
mas en tiempo real requieren directrices y tcnicas especializadas.
Los desarrolladores de software con experiencia suelen decir: "La prueba
termina, slo se transfiere del ingeniero del software al cliente. cada vez q"-~
usa el programa, est realizando una prueba". Al aplicar el diseo de casos de
ba, el ingeniero de software logra pruebas ms completas y, por tanto, desecorrige el mayor nmero de errores antes de que empiecen las "pruebas del
459
[AMB95J Ambler. S., "Using Use casesH, en SOftware Development, julio de 1995, pp. 53-61.
[BEI90} Beizer, B., Software TesUng Techniques, segunda edicin, Van Nostrand-Rcinhold, 1990.
[BEI95] Beizer, B., Black-Box TesUng, Wiley, 1995.
[BIN94] Binder, R. V., "Testing Object-Oriented Systems: A Status Report", en American Programmer; vol. 7, nm. 4, abril de 1994, pp. 23-28.
[BIN99] Binder, R., Testing Object-Oriented systems: Models, Patterns, and Too/s, Addison-Wesley,
1999
[DEU79] Deutsch, M., "Verification and Validation", en SOftware Engineering (R. Jensen y C. Tonies, eds.}, Prentice-Hall, 1979, pp. 329-408.
[FRA88) Frankl, P. G. y E. J. Weyuker, "An Applicable Family of Data Flow Testing Criteria", en
IEEE Trans. SOftware Engineeiing, vol. SE-14, nm. l O, octubre de 1988, pp. 1483-1498.
(FRA93] Frankl, P. G. y S. Weiss, "An Experimental Comparison of the Effectiveness of Branch
Testing and Data Flow", en IEEE Trans. Software Engineering, vol. SE-19, nm.8, agosto de
1993, pp. 770-787.
[KAN93] Kaner, C., J. Falk y H. Q. Nguyen, Testing Computer Software, segunda edicin, Van Nostrand-Reinhold, 1993.
[KANOI] Kaner, C., "Pattern: Scenario Testing" (borrador), 2001, disponible en http:/ /www.testing.com/test-pattems/patterns/pattem-scenario-testing-kaner.html.
[KIR94J Kirani, S. y W. T. Tsai, "Specification and Verification of Object-Oriented Programs",
Technical Report TR 94-64, Computer Science Department, University of Minnesota, diciembre de 1994.
[LANOIJ Lange, M., "lt's Testing Time! Pattems for Testing Software", junio de 2001, disponible
para descarga en http:/ /www.testing.com/test-patterns/pattems/index.html.
(LIN94] Lindland, O. l. et al.. "Understanding Quality in Conceptual Modeling", en IEEE Software,
vol. 11, nm. 4, julio de l 994, pp. 42-49.
[MAR94] Marick, B., The Crafl o/Software Testing. Prentice-Hall, 1994.
[MAR02J Marick, B., "Software Testing Pattems", 2002, http://www.testing.com/test-pattems/
index.html.
[MCC76J McCabe, T., "A Software Complexity Measure", en IEEE n-ans. SOftware Engneering, vol.
SE-2, diciembre de 1976, pp. 308-320.
[MGR94) McGregor, J. D. y T. D. Korson, "Integrated Object-Oriented Testing and Development
Processes", CACM, vol. 37, nm. 9. septiembre de 1994, pp. 59-77.
[MUS93J Musa, J.. "Operational Profiles in Software Reliability Engineering", en IEEE Software,
marzo de 1993. pp. 14-32.
[MYE79J Myers, G., The Art of SOJtware Testing, Wiley, 1979.
[NTA88J Ntafos, S. C., "A Cornparison of Sorne Structural Testing Strategies", en IEEE n-ans. Software Engineering, vol. SE- 14, nm.6, junio de 1988, pp. 868-874.
[PHA89] Phadke, M.S., Quality Engneering Using Robust Design, Prentice-Hall, 1989.
[PHA97] Phadke, M. S., "Planning Efficient Software Tests". Crosstalk, vol. 1o. nm. 1O, octubre
de 1997, pp. 11-15.
]TAI89J Tai, K. C., "What to Do Beyond Branch Testing". ACM Software Engineering Notes, vol. 14,
nm. 2, abril de 1989, pp. 58-61.
460
PARTE DOS
PRCTICA DE LA INGENlERA
oa sonwARE
14.3 . Al lector le es posible pensar en alguna prueba adicional de caractersticas que nanalizaron en la seccin 14.7?
14.4 . Seleccionar un componente de software que el lector haya diseado e implementad..
cientemente. Disear un conjunto de casos de prueba que aseguren que todas las instruc~
se hayan ejecutado con la prueba de la ruta bsica.
14.5 . Especificar. disear e implementar una herramienta de software que calcule la com:dad ciclomtica para el lenguaje de programacin que se elija. Aplicar la matriz de grfic
mo estructura operativa de datos en el diseo.
14.6. Lase Beizer [BEI95] y determnese la manera en que el programa que se desarro'
el problema 14.5 puede extenderse para acomodar varios pesos de enlace. Extindase la ..~
mienta para procesar probabilidades de ejecucin o tiempos de procesamiento de enlaces
14. 7. Disese una herramienta automatizada que reconozca bucles y los ordene en
rias, como se indica en la seccin 14.5.3.
14.8. Extindase la herramienta descrita en el problema 14.7 para generar casos de prucaa
ra cada categora de bucle, una vez encontrada. Ser necesario desarrollar esta funcin ::
nera interactiva con el encargado de la prueba.
14.9. Ofrzcanse por lo menos tres ejemplos en que la prueba de caja negra dara la ,q.r.;,c,..~
de que "todo est bienu, mientras que las pruebas de caja blanca descubriran un error por lo menos tres ejemplos en que suceda lo contrario: la prueba de caja blanca darla la
sin de que "todo est bien", mientras que las pruebas de caja negra descubriran un err.x:
u
14. 1o. La prueba exhaustiva (en caso de que sea posible en programas muy pequeos
tiza que el programa es totalmente correcto?
14.11 . En palabras propias, describase por qu la clase es la menor unidad razonable
prueba dentro de un sistema orientado a objetos.
14. 12. Por qu se tienen que volver a probar subclases que crean instancias a partlT
clase existente si sta ya se ha probado por completo? Es posible usar los casos de p
seados para la clase existente?
14. 13. Aplquense pruebas aleatorias y de particin a tres clases definidas en el dise"
tema HogarSeguro. Prodzcanse casos de prueba que indiquen las secuencias de operao::
se invocarn.
14. 14. Aplquense pruebas de clase mltiple y prubense derivados del modelo de c
miento para el diseo HogarSeguro.
14. 15. Prubese un manual de usuario (o una funcin de ayuda) de una aplicacin cr...e
con frecuencia. Encuntrese por lo menos un error en la documentacin.
461
duce u n nivel de rigor matemtico que a menudo se omite en otros tratamientos de pruebas. su
ltimo libro [BEI95] presenta un tratamiento conciso de mtodos importantes. Peny (Ejfective
Melhods Jor Software Tesling, Wiley-QED, 1995) y Friedman y Voas (Software Assessment: Reliablity, Safety, Testability, Wiley, 1995) presentan buenas introducciones a las estrategias y tcticas
de prueba. Mosley (The Handbook of MIS Application Software Testing, Prentice-Hall, 1993) analiza temas de prueba para sistemas de informacin grandes, y Marks (Testing Very Big Systems.
McGraw-Hill, 1992) analiza los aspectos especiales que deben tomarse en cuenta cuando se
prueban sistemas de programacin importantes.
Sykes y McGregor (Practica! Guide Jor Testng Object-Oriented Software, Addison-wesley,
2001), Bashir y Goel (Testing Object-Oriented Software, Springer-Verlag. 2000), Binder (Test.ing
Object-Oriented systems, Addison-Wesley, 1999), Kung y sus colegas (Testing Object-Oriented
Software, IEEE Computer Society Press. I 998). Marick (The Craft of Soflvvare Testng, PrenticeHall, 1997) y Siegel y Muller (Objecl-Oriented Software Testing: A Hierarchical llpproach, wiley,
1996) presentan estrategias y mtodos para probar sistemas orientados a objetos.
La prueba del software es una actividad que ocupa muchos recursos. Por ello, muchas organizaciones automatizan partes del proceso de prueba. Libros de oustin, Rashka y Poston (Automated Sojlware Testing: Introducton, Management, and Performance, Addison-Wesley, 1999),
Graham y sus colegas (Softvvare Test Automation, Addison-Wesley, 1999), y Poston (Automatng
Specijicaton-Based Software Testing, IEEE Computer Society, 1996) analizan herramientas, estrategias y mtodos para pruebas automatizadas.
Varios libros consideran los mtodos y las estrategias de prueba en reas de aplicacin especializadas. Gardiner (Testing Safety-Related Software: A Practica/ Handbook, Springer-Verlag,
1999) ha editado un libro que aborda la prueba de sistemas de seguridad crtica. Mosley (dient/
Server Software Testing on the Desk Top and the Web, Prentice-Hall, 1999) analiza el proceso de
prueba para clientes. servidores y componentes de red. Rubin (Handbook of Usability Testing, Wiley, 1994) ha escrito una gua til para quienes deben ejercitar interfaces humanas.
Binder JBIN99) describe casi 70 patrones de prueba que cubren mtodos de prueba, clases/
grupos. subsistemas, componentes reutilizables, marcos conceptuales y sistemas, adems de
automatizacn de pruebas y prueba de base de datos especializada. Una lista de estos patrones se encontrar en www.rbsc.com/pages/TestPattemList.htm.
Una amplia variedad de fuentes de informacin sobre los mtodos de diseo de casos de
prueba est disponible en Internet. Una lista actualizada de referencias en la World Wide Web
que tienen relevancia para las tcnicas de prueba se encuentra en el sitio Web SEPA:
CAPTULO
15
C O NCEPTOS
CLAVE
ailldclCl 464
fO<lom
lleM<CoB . 464
lndkadorts .. .461
1aedcin . 4J 1
atrllitos . 471
jlt'in<lpios , .469
mis ......467
cf, cdigo .493
clemC1Dtetti.mifflto 496
de madelo
de-anarists . 474
ele modelo
de diseo
479
orientadas
a objetos .. 481
butos de entidades reales para definirlas de acuerdo con reglas claramente establcci
das .. , En las ciencias fisicas, la medicina y, ms recientemente, las ciencias soc ahora podemos medir atributos que se consideraban imposibles de medir . Por
puest, estas mediciones no tienen el mismo refinamiento que casi todas tas de
ciencias flSicas... pero existen (Y muchas decisiones importantes se toman con
en ellas] Sentimos que la obligacin de tratar de "medir lo inmedible" para me
nuestra comprensin de entidades particulares es tan importante en la ingeniena
software como en cualquier otra disciplina.
pintos
de funcin 474
mo un todo, las mtricas del prododo se cono,tron en atn'bufos especficos de los productos
trabajo de la iogenierio del software y se
Ion o medido que se realizan los tore:;
(anlisis, diseo, (odficacin y pruebo).
Quin lo hace? los ingenierotdesoftware
los mtricas del producto como apoyo
construir sohwore de mayor calidod.
Por qu es ifflPC"'lante? Siempre in
drn elementos cualitativos en la creac or
software. El problerno es que no bosta
evoluoci6n cualitativo. Un ingeniero de so
CAPTULO 15
463
Aunque las mtricas del producto para el software de computadora no suelen ser
absolutas, proporcionan una manera sistemtica de evaluar la calidad a partir de un
conjunto de reglas definidas con claridad. Tambin proporcionan al ingeniero de
software informacin inmediata y en el sitio; no posterior al hecho. Esto permite al
ingeniero descubrir y corregir problemas potenciales antes de que se conviertan en
defectos catastrficos.
En este capitulo se analizarn las mediciones con que se evala la calidad del producto mientras se disea o construye. Estas medidas de atributos internos del producto proporcionan al ingeniero de software una indicacin en tiempo real de la eficacia de los modelos de anlisis, diseo y cdigo; tambin aportan indicativos de la
efectividad de los casos de prueba y la calidad general del software que habr de construirse.
Hasta los desarrolladores de software exhaustos estn de acuerdo en que es importante crear software de alta calidad. Pero, cmo se define la calidad? En el sentido
ms amplio, calidad del software es el cumplimiento de los requisitos de funcionalidad
y desempeo explcitamente establecidos, de los estndares de desarrollo explcitamen-
te documentados y de las caractersticas implcitas que se esperan de todo software desarrollado profesionalmente.
Es indudable que esta definicin podra modificarse o extenderse y debatirse interminablemente. En cuanto a los objetivos de este libro, la definicin sirve para destacar tres puntos importantes:
1. Los requisitos del software son la base de las medidas de calidad. La falta 12
concordancia con estos requisitos es una falta de calidad.'
2. Los estndares especificados definen un conjunto de criterios de desarrd~
que guian la ingeniera del software. Si no se siguen los criterios, el resu'
ser, casi seguramente, la falta de calidad.
3. A menudo se soslaya un conjunto de requisitos implicitos (por ejemplo, e
seo de alcanzar la facilidad de uso). Si el sonware cumple con sus requis.
explicitas pero no con los implcitos, la calidad del sonware estar en dt.La calidad del software es una compleja combinacin de factores que variarr
diferentes aplicaciones y los distintos clientes que las solicitan. En las siguiente-dones se identifican los factores que afectan la calidad del software y se d..................
las actividades humanas que deben desarrollarse para alcanzarla.
15.1.1
Los factores que afectan la calidad del software se dividen en dos grandes grupa:
los que se miden directamente (por ejemplo, defectos descubiertos durante ia
ba), y 2) los que slo se miden indirectamente (por ejemplo, facilidad de usr
mantenimiento). En cada caso debe presentarse una medicin. Se debe com software (programa, datos, documentos) con algn conjunto de datos y obte- algn indicio sobre la calidad.
McCall, Richards y Walters fMCC77] propusieron una clasificacin til de '
tares que afectan la calidad del software. Estos factores, que se muestran en ~
ra 15.1, se concentran en tres aspectos importantes de un producto de softwarecaractersticas operativas, su capacidad para experimentar cambios y su ca'3:::C:..II
para adaptarse a nuevos entornos.
Si se toman como referencia los factores indicados en la figura 15. l, Meca
colegas proporcionan las siguientes descripciones:
Factores de
la calidad
del software
deMcCall.
Facilidad de mantenimiento
Flexibilidad
Facilidad de pruebo
Portabilidad
Facilidad de reutilizacin
lnteroperabilidad
Correccin
Facilidad de uso
Confiabilidad
Eficiencia
Integridad
Es importante indicar que la calidad se extiende a las caractersticas tcnicas de los modele:
lisis y diseo, as como a la realizacin del cdigo fuente de stos. Modelos de alta calia:
sentido tcnico) darn lugar a software de alta cahdad, desde el punto de vista del cliente
465
Correccin. El grado en que el programa cumple con su especificacin y satisface los ob-
precisin requerida. [Debe observarse que se han propuesto otras definiciones de confiabilidad ms completas (consltese el captulo 26)).
Eficiencia. La cantidad de cdigo y de recursos de cmputo necesarios para que un progra-
ma realice su funcin.
Integridad. El grado de control sobre el acceso al software o los datos por parte de las personas no autorizadas.
Facilidad de uso. El esfuerzo necesario para aprender, operar y preparar los datos de en-
re o software a otro.
Facilidad de reutilizacin. El grado en que un programa (o partes de l) puede reutilizarse
Es dificil, y en algunos casos imposible, desarrollar medidas directas2 de estos factores de la calidad. En realidad, muchas de las mtricas que definen McCall et al. slo se miden subjetivamente. Es comn que las mtricas adquieran la forma de una
lista de comprobacin que se emplea para "asignar una graduacin" a atributos especficos del software [CAV78].
Una medida directa indica que slo es posible contar un valor que proporciona una indicacin directa del atributo que se examina. Por ejemplo, el "tamao" de un programa se mide directamente
al contar el nmero de lneas de cdigo.
PARTE DOS
con los siguientes subatributos: facilidad de anlisis, facilidad de cambio, estaby facilidad de prueba.
Portabilidad. La facilidad con que se lleva el software de un entorno a otro
1, Cidquier adividacl se vuelve oealivo ruando lopersono quehace las cosas las hco bien, omeo,:
15.1.3 La transicin a un concepto cucmtitativo
En las secciones anteriores se analiz un conjunto de factores cualitativos pa.:z
"medicin" de la calidad del software. El esfuerzo por desarrollar medidas pre
de la calidad del software en ocasiones se frustra por la naturaleza subjetiva
actividad. cavano y Mccall [CAV78] analizan esta situacin:
La determinacin de la calidad es un factor clave en todas las actividades diarias (conc"'"'
software. Se necesita una definicin ms precisa de la calidad del software para resol. _
CAPTULO 15
467
este problema, adems de un medio para derivar medidas cuantitativas, a partir de la calidad del software, para realizar un anlisis objetivo ...
Jst:tom0 la~n !1t lo temperatura empiezo con un dedo ndice.'. ydo lugar oescalos, hemimientas ylbkas
15.2. l
Aunque medida, medicin y mtrica son trminos que suelen utilizarse de manera intercambiable, es importante observar las sutiles diferencias entre ellos. En el contexto de la ingeniera del software una medida proporciona una indicacin cuantitativa
de la extensin, la cantidad, la dimensin, la capacidad o el tamao de algn atributo de un producto o proceso. Medicin es el acto de determinar una medida. El Glosario de estndares del IEEE [IEE93] define mtrica como una "medida cuantitativa del
grado en que un sistema, componente o proceso posee un atributo determinado".
Cuando se ha recopilado un solo tipo de datos (por ejemplo, el nmero de errores
descubiertos dentro de un solo componente del software) se ha establecido una medida. La medicin ocurre como resultado de la recopilacin de uno o ms puntos de
datos (por ejemplo, se investigan varias revisiones de componentes y pruebas de unidad para reunir medidas del nmero de errores encontrados en cada uno). Una mtrica de software relaciona de alguna manera las medidas individuales (por ejemplo, el
nmero promedio de errores encontrados en cada revisin o prueba de unidad).
un ingeniero de software recopila medidas y desarroUa mtricas para obtener los
indicadores. Un indicador es una mtrica o una combinacin de mtricas que proporcionan conocimientos acerca del proceso del software, un proyecto de software
o el propio producto. Un indicador proporciona conocimientos que permiten al jefe
468
U#lfildf1
Htwst Zuse ho
recOj)ilado ~on
contidod~
informacin sobre
mfcos de l)fOOIJ<IO
en tlt.o...._..
l,t/..ase/.
CAPTULO 15
469
Cada uno de los "retos" indicados aqu debe tomarse con cautela, pero no hay razn para restarle mritos a las mtricas tcnicas. 3 La medicin es esencial si se desea alcanzar la calidad.
Formulacin. La derivacin de medidas y mtricas apropiadas para la representacin del software que se considera.
Recoleccin. El mecanismo con que se acumulan los datos necesarios para
derivar las mtricas formuladas.
Anlisis. El clculo de las mtricas y la aplicacin de herramientas matemticas.
Interpretacin. La evaluacin de las mtricas en un esfuerzo por conocer mejor la calidad de la representacin.
Retroalimentacin. Recomendaciones derivadas de la interpretacin de las mtricas del producto transmitidas al equipo del software.
Las mtricas del software slo sern tiles si estn caracterizadas de manera efectiva
y se validan para probar su valor. Los siguientes principios [LET03J son representativos de muchos otros que podran proponerse para caracterizar y validar las mtricas:
es proporoa:JIIO(imiento, no
~probacin
"""'ico slido.
3
Aunque la crtica de mtricas especficas es comun en la bibliografia, muchas de esas criticas se concentran en aspectos esotricos y pierden de ,'lSta el pnncipal objetivo de las mtricas en la realidad:
ayudar al ingeniero de software a establecer una manera sistemtica y objetiva de conocer a fondo
su trabajo y, como resultado, mejorar la calidad del producto.
470
J-/f:ifr 6?1
P,:
Van SOlingen y Berghout [SOL99) sugieren que el objetivo es casi siempre "comprencL.
mejorar" la actividad del proceso o el atributo del producto.
CAPTULO 15
471
P2 :
cada una de estas preguntas debe responderse de manera cuantitativa, empleando una o ms medidas y mtricas. Por ejemplo, una mtrica que proporciona una indicacin de la cohesin (captulo 9) de un componente arquitectnico sera til para
responder P1 La complejidad ciclomtica y las mtricas analizadas en la seccin
15.4.l o 15.4.2 proporcionaran conocimientos a fondo para P2
En realidad, tal vez haya diversos objetivos de medicin con preguntas y mtricas
relacionadas. En cualquier caso, las mtricas elegidas (o derivadas) deben cumplir
con los principios de medicin analizados en la seccin 15.2.3 y los atributos de medicin analizados en la seccin 15.2.5. Si se desea obtener mayor informacin sobre
OPM, el lector interesado debe consultar [SHE98J o [SOL99].
15.2.5
Se han propuesto cientos de mtricas para el software de computadora, pero no todas proporcionan soporte prctico para el ingeniero de software. Algunas exigen
mediciones demasiado complejas; otras son tan esotricas que pocos profesionales
podran comprenderlas, y otras ms violan las nociones intuitivas bsicas de lo que
es el software de alta calidad.
Ejiogu [EJI91] define un conjunto de atributos que toda mtrica efectiva del software debe abarcar. La mtrica derivada y las medidas que llevan a ella deben ser:
Mecanismos efectivos para la retroalmentacin de alta calidad. Es decir, la mtrica debe llevar a un producto final de la ms alta calidad.
Aunque casi todas las mtricas de software satisfacen estos atributos, algunas mtricas de uso comn no cumplen con una o dos de ellas. Un ejemplo es el punto de
funcin (el cual se estudia en la seccin 15.3.1), que es una medida de la entrega de
"funcionalidad" por parte del software. Se puede argumentar5 que el atributo consis-
472
PARTE DOS
tente y objetiva falla porque tal vez un tercero, que sea independiente, no logre derr
el mismo valor del punto de funcin que un colega que utilice la misma informac
acerca del software. Debemos rechazar entonces la medida de punto de funcin~ respuesta es por supuesto que no! El punto de funcin proporciona conocimie;tiles y, por tanto, valores distintos, aunque no satisfaga algn atributo a la perfecc
tnico.
Mtricas al nivel de componente: miden la complejidad de los componer ~
sa
es la naturaleza de las
CAPTULO 15
473
Mtricas para pruebas. Estas mtricas ayudan a disear casos de prueba efectivos
dote,
orientados o objetos.
Vinod: VO'/ o dedicar un poco de tiempo a 1'8YSQfla$ 'f
o hocer algunos recomendaciones... 8e$16n d e ~
(Ed y Jomie asienten $n mucho enlusiasmo.J
474
15.3.1
....
Enlo$~-
w.ii.~
~
r1!111JCffllldelos
-fudn:
........
. ,....
.............
es
tualizar archivos lgicos internos (ALl). Las entradas deben distinguirse de .as
sultas, que se cuentan por separado.
Nmero de salidas externas (SE). Cada salida externa se deriva en el
de la aplicacin y proporciona informacin al usuario. En este contexto,
Desde que Albrecht dio a conocer su trabajo original, se han escrito cientos de libros ertculos sobre PF. En [IEP03] se encontrar una bibliografia muy valiosa.
tan son un poco ms complejas. El lector interesado deber consultar [IFPOI] para co
talles.
475
Factor de ponderacin
Simple Promedio Complejo
Conteo
i::J
CJ
i::::J
CJ
10
15
[::::J
10
. C3
[:JE)
.u
-. [!:J
CJ
IZil
Total de conteos
Nmero de archivos de interfaz externos (AIE). Cada archivo de interfaz externo es un agrupamiento lgico de datos externo a la aplicacin pero que proporciona datos que podran usarse en sta.
Una vez que se han recolectado los datos, se completa la tabla de la figura 15.2 y
se asocia un valor de complejidad con cada conteo. Las organizaciones que usan
mtodos de punto de funcin desarrollan criterios para determinar si una entrada
determinada es simple, promedio o compleja. No obstante, la determinacin de la
complejidad es un poco subjetiva.
Para calcular los puntos de funcin (PF) se usa la siguiente relacin:
PF
= conteo total x
(15.1)
donde conteo total es la suma de todas las entradas de PF obtenidas de la figura 15.2.
F; (i = l a 14) sonfactores de ajuste de valor basados en las respuestas a las siguientes preguntas [LON02]:
4 . El desempeo es crtico?
5 . El sistema se ejecutar en un entorno existente que tiene un uso pesado de
operaciones?
7. La entrada de datos en lnea requiere que la transaccin de entrada se construya en varias pantallas u operaciones?
9. Las entradas, las salidas, los archivos o las consultas son complejos?
10. Es complejo el procesamiento interno?
11. El cdigo diseado ser reutilizable?
476
PARTE DOS
Uno~dPf
.,.$8~
.,....,
$11 ......
"
f ........
fl/pa/fp/.
cin simple del modelo de anlisis, que se muestra en la figura 15.3. Ah se repre:9
ta un diagrama de flujo de datos (captulo 8) dentro del software HogarSeguro. La cin maneja la interaccin con el usuario aceptando una contrasea de ste para
tivar o desactivar el sistema, y permite consultas sobre el estado de las zonas de
guridad y varios sensores de seguridad. La funcin despliega una serie de mensa ...
enva seales de control apropiadas a varios componentes del sistema de segur.:
Se evala el diagrama de flujo de datos para determinar un conjunto de med..:'.ii::
clave del dominio de in formaci n que se requieren para calcular la mtrica del ~
to de funcin. En la figura se muestran tres entradas externas (contrasea,
de pnico y activar/ desactivar) junto con dos consultas externas (consulta
zona y consulta de sensor). Se muestra un ALI (archivo de configuracin
sistema). Tambin estn presentes dos salidas de usuarios (mensajes y es
del sensor) y cuatro AJE (sensor de prueba, configuracin de zona, activar
desactivar y alerta de alarma) . En la figura 15.4 se muestran estos datos, ._
con la complejidad apropiada.
El conteo total que se muestra en la figura 15.4 debe ajustarse empleando la ec
cin (15.1):
PF = conteo total x (0.65
+ 0.01 x 1: (F,)]
ii+i/lFI
Modelo de fiuJo
de datos para
el softwme
HogarSeguro.
U$vorio
SubslsteniO
monitoreo
y respuesto
Datos de c-0nfigurocin del sistemo l
CAPTULO 15
477
factor de ponderacin
Simple Promedio Complejo
Conteo
OJ
OJ
OJ
OJ
WJ
Ol
CD
CD
10
15
10
()
Total de conteos
- CI}
!E
O!}
donde conteo total es la suma de todas las entradas de PF obtenidas de la figura 15.4,
y F; (i = 1a 14) son factores de ajuste de valor. Para los objetivos de este ejemplo, supngase que I (F) es 46 (un producto moderadamente complejo) . Por tanto:
PF = 50
Con base en el valor proyectado del PF derivado del modelo de anlisis, el equipo del proyecto puede estimar el tamao implementado general de la funcin de interaccin del usuario de HogarSeguro. Supngase que los datos del pasado indican
que un PF se traduce a 60 lneas de cdigo (se va a usar un lenguaje orientado a objetos) y que se producen 12 PF por cada persona-mes de esfuerzo. Estos datos histricos proporcionan al jefe del proyecto informacin importante que sirve para la
planeacin y que se basa en el modelo de anlisis ms que en estimados preliminares. Supngase, adems, que los proyectos anteriores han encontrado un promedio
de tres errores por punto de funcin durante las revisiones del anlisis y el diseo, y de
cuatro errores por punto de funcin durante las pruebas de unidad e integracin. Estos datos ayudarn a los ingenieros de software a evaluar el grado en el que han
completado sus actividades de revisin y prueba.
Uemura y sus colegas [UEM99) sugieren que los puntos de funcin tambin pueden calcularse a partir de diagramas UML de clase y secuencia (captulos 8 y I O) . El
lector interesado debe consultar [UEM99] para conocer ms detalles.
"& lugar dt slo musitar acerco de cul 'nuevo mtrico' podra aplicarse... debemos plonteqmos la PJegunkl bsim:
478
01
"~
c&v1
Al medir los
coroctersticos de lo
especificacin es
posible obtener un
conocimiento
cuantitativo de lo
especificidad y el grodo
de ovonce.
n, = n + nn
donde n es el nmero de requisitos funcionales y nnr el de no funcionales (como
desempeo).
Para determinar la especificidad (falta de ambigedad) de los requisitos, na.-.,
al. sugieren una mtrica basada en la consistencia de la interpretacin de los reres de cada requisito:
01=nu/n,
donde nwes el nmero de requisitos que todos los revisores interpretaron de la
ma manera. cuanto ms cercano est el valor de O a 1, menor ser la ambi de la especificacin.
El grado de avance de los requisitos funcionales se determina al calcular la
cin
0 2 = n/[n, x ns]
donde nu es el nmero de requisitos de funcin nica; n1, el nmero de entradas (
los) definidos o implcitos en la especificacin, y n5, el nmero de estados es
La relacin 0 2 mide el porcentaje de funciones necesarias que se han especifica:!:-
donde ne es el nmero de requisitos que se han validado como correctos, y rrequisitos que an no se validan.
479
=f 2out()
(l 5.2)
= V(i)/fou1() + IJ
(15.3)
= S(i) + D(i)
Dependencia
hacia Juera
(15.4)
se define como el nmero de mdulos inmediatamente subordinados al
480
PARTE DOS
iiM/IFIJ
Mtricas de
morfologa.
Profundidad
481
5 2 = el nmero de mdulos cuya funcin correcta depende de la fuente de entrada de datos o que produce datos que se usarn en otro lugar (en general, los mdulos de control. entre otros. no se contaran como parte de 5 2)
5 3 = el nmero de mdulos cuya funcin correcta depende del procesamiento
anterior
S4 = el nmero de elementos de base de datos (incluye objetos de datos y todos los atributos que definen objetos)
objetos
individuales)
57
= el nmero de mdulos con una sola entrada y salida (con excepcin del
procesamiento, no se considera una salida mltiple)
Una vez que se han determinado los valores del S 1 al S 7 para un programa de computadora, es posible calcular los siguientes valores intermedios:
= 1; de lo contrario, D 1 =
O.
=t-
(53 /S,)
=l-
(57/51)
Una vez determinados los valores intermedios, se calcula el ICED de la siguiente manera:
ICED = !. wD
(15.5)
Se determina el valor de ICED para los diseos anteriores y se compara con un diseo que est en desarrollo. Si el ICED es significativamente menor que el promedio,
lo indicado es realizar trabajo de diseo y revisin adicionales. De igual manera, si se
van a realizar cambios importantes en un diseo existente, podr calcularse el efecto de esos cambios sobre el ICED.
482
tivamente los requisitos del cliente). Pero, a medida que aumenta el tamao .
complejidad del modelo de diseo orientado a objetos, un concepto ms objetive z
las caractersticas del diseo beneficiaria al diseador experimentado (que obtend:2
conocimientos adicionales) y al principiante (que obtendra una indicacin de la :.e
lidad que de otra manera no estara disponible) .
En un tratamiento detallado de las mtricas del software para sistemas orie:-_
dos a objetos, Whitmire (WH197] describe nueve caractersticas distintivas y mer.s>
rabies de un diseo orientado a objetos:
Cules
caraderisti
cas pueden medir
se cuando se eva
'la un diseo
orientado a obje
tos?
Suficiencia. Whitmire define suficiencia como "el grado en que una abstracc:
posee las caractersticas que se le piden, o el grado en que un componente de dis::
o posee caractersticas en su abstraccin, desde el punto de vista de la aplicaciw
actual". Expresado de otra manera, se pregunta: Cules propiedades debe tener e:,
ta abstraccin (clase) para que sea til? [WHI97]. En esencia, un componente de c.
seo (por ejemplo, una clase) es suficiente si refleja plenamente todas las propiec.:
des del objeto de dominio de la aplicacin que se est modelando (es decir, que
abstraccin, o clase, posee las caractersticas que debe tener).
__ ,.......
'1llldios las decisiones para las que tena que depender del foklore olos 111~ puedo lolllarlas ahn
CAPTULO 15
483
planteando la pregunta: Cules propiedades se requieren para representar plenamente el objeto del dominio del problema? Debido a que los criterios para el grado
de avance consideran diferentes puntos de vista, indican indirectamente el grado en
que puede reutilizarse el componente de abstraccin o diseo.
Similitud. Esta medida indica el grado en que dos o ms clases son similares en
cuanto a su estructura, funcin, comportamiento o propsito.
Volatilidad. Como ya se ha visto en este libro, los cambios de diseo ocurren
cuando los requisitos se modifican o cuando las modificaciones se presentan en otra
parte de una aplicacin, lo que produce una adaptacin obligatoria del componente
del diseo en cuestin. La volatilidad de un componente de diseo orientado a objetos mide la probabilidad de que ocurra un cambio.
En realidad, las mtricas del producto para sistemas orientados a objetos no slo
se aplican al modelo de diseo, sino tambin al de anlisis. En las secciones que siguen se explorarn las mtricas que proporcionan una indicacin de la calidad al nivel de clase orientada a objetos y al nivel de operacin.
medidas y mtricas de una clase individual, la jerarqula de clase y las colaboraciones de clase sern invaluables para un ingeniero de software que debe valorar la calidad del diseo. En captulos anteriores se vio que la clase encapsula operaciones
(procesamiento) y atributos (datos). La clase suele ser el "predecesor" de las subclases (a veces denominadas descendientes) que heredan sus atributos y operaciones.
Con frecuencia, la clase colabora con otras clases. Cada una de estas caractersticas
se utiliza como base de la medicin.9
Chidamber y Kemerer [CHI94J propusieron uno de los conjuntos de mtricas de
sojtware orientado a objetos al que se hace referencia con mayor frecuencia. A me-
Debe observarse que an se debate en la bibliografia tcnica la validez de algunas de las mtricas
analizadas en este capitulo. Quienes defienden la teora de la medicin, exigen un grado de formalismo que algunas mtricas orientadas a objetos no proporcionan. Sin embargo. es razonable determinar que las mtricas indicadas proporcionan conoamientos tiles para el ingeniero de software.
484
nudo denominadas coleccin de mtricas de CK, los autores proponen seis mtrias
de diseo basado en clases para sistemas orientados a objetos. 10
El nmero de mtodos
y su complejidod esln
directo mente
conelocionodos con el
esfuerzo requerido
poro probar uno clase.
Lo herencia es ooo
corocterstico
extremadamente
poderoso que puede
cousor problemas si se
empleo sin cuidado.
sese el APH y otras
mtricos poro obtener
uno leduro de lo
compleidod de los
;erorquos de clase.
l;c,
=-
Uhlifj.j
Jerarqua
deuna
clase.
e,
1o Chidamber y Kemerer usan el trmin o mtodos en lugar de operadones. La forma en que emplea: t:..
trmino se refleja en esta seccin.
485
Nmero de descendientes (NDD). Un descendiente es una subclase que se encuentra inmediatamente subordinada a otra en la jerarqua de clases. Si se toma como referencia la figura 15.6, la clase
C22 y C23). A medida que crece el nmero de descendientes, se incrementa la reutilizacin, pero podra diluirse la abstraccin que representa la clase predecesora si alguno de los descendientes no es un miembro apropiado de la clase predecesora. A
medida que aumenta el NDD, tambin lo hace la cantidad de pruebas (requeridas pa-
Acoplamiento entre clases de objetos (AECO). El modelo de conjunto de respuesta de una clase (CRC), expuesto en el captulo 8, se emplea para determinar el
valor de AECO. En esencia, AECO es el nmero de colaboraciones enlistadas, para
una clase, en su tarjeta de ndice CRC. 11 A medida que AECO aumenta, es probable
que disminuya la facilidad de reutilizacin de una clase. Valores elevados de AECO
tambin complican las modificaciones y la prueba que asegura que esas modificaciones se han hecho. En general, para cada clase deben mantenerse los valores de
AECO en el valor ms bajo que sea razonable. Esto es consistente con la directriz
general para reducir el acoplamiento en el software convencional.
rKeptos de
~toy
: :=i se aplican al
:n convencional
;;ienmdo a
'JS. Mantngase
ti oeoplomiento
'17 la cohesin de
i:2s yoperaciones.
Respuesta para una clase (RPC). El conjunto de respuesta para una clase es un
"conjunto de mtodos que tiene la posibilidad de ejecutarse como respuesta a un mensaje que recibe un objeto de esa clase" [CHI94]. La RPC es el nmero de mtodos en
el conjunto de respuesta. A medida que la RPC aumenta, el esfuerzo requerido para
probar tambin lo hace, debido a que crece la secuencia de prueba (captulo 14).
Tambin se desprende que, a medida que la RPC aumenta, se incrementa la complejidad del diseo general de la clase.
Falta de cohesin en mtodos (FCM). Cada mtodo dentro de una clase, e, tiene acceso a uno o ms atributos (tambin denominados variables de instancia). La
FCM es el nmero de mtodos que acceden a uno o ms de los mismos atributos. 12
Si ningn mtodo accede a los mismos atributos, entonces FCM = o. Para ilustrar el
caso donde FCM * o, imagnese una clase de seis mtodos. Cuatro de ellos tienen
uno o ms atributos en comn (es decir, acceden a atributos comunes). Por tanto,
FCM ""4. Si la FCM es alta, los mtodos pueden acoplarse entre s mediante atributos. Esto aumenta la complejidad del diseo de clase. Aunque hay casos en que re-
11 Si las tarjetas de ndce CRC se desarrollan manualmente, el grado de avance y la consistencia deben evaluarse antes de determinar el AECO de manera confiable
12 La definicin formal es un poco ms compleja. Consltese CHl941 para conocer ms detalles
486
sulta justificable un valor elevado para la FCM . Lo deseable es mantener alta la cohesin; es decir, conservar baja la FCM. 13
13 La mtrica FCM proporciona conocimientos tiles en algunas situaciones, pero puede malintel'p"'tarse en otras. Por ejemplo, mantener el acoplamiento encapsulado dentro de una clase aumenta
cohesin del sistema como un todo. Por tanto, por Jo menos en un sentido importante, un FCM ir
elevado en realidad sugiere que una clase puede tener una mayor cohesin, no una menor.
437
=1
M; (C;)/1 Ma(C1)
donde la sumatoria se presenta desde i = 1 hasta Te. Te se define como el nmero total de clases en la arquitectura; e, es una clase dentro de la arquitectura y
Ma(C;)
= Md(C;) + M; (C,)
donde
Ma(C,)
MJC;)
El valor de MFH (el atributo de factor de herencia, AFH, se define de manera anloga) es un indicativo del impacto de la herencia en el software orientado a objetos.
'1l an61isis ~ sof1warecietlildo oolijetos poro evaluarsu calidad se est volviendo codovezm$ mporto:nfe ,t
. , ... el porodio,no forienlodo a objetos}sigueganando popularidad.
'
R~I Harnse, ,tlll.
Factor de acoplamiento (FA). Al principio de este capitulo se indic que el acoplamiento es una indicacin de las conexiones entre elementos de un diseo orientado a objetos. El conjunto de mtricas del diseo orientado a objetos define el acoplamiento de la siguiente manera:
FA
Te)
= 1 hasta T, y desde j = l
es_cliente = 1, si y slo si existe una relacin entre la clase cliente, Ce, y la clase servidor, C5 , y Ce * C5
488
PARTE DOS
Tamao de la clase (TC). El tamao general de una clase se determina con las
siguientes medidas:
489
Seales de superunin. Estas muestras de datos son comunes a todas las porciones de datos de un mdulo.
capacidad de unin. La capacidad de unin relativa de una seal de unin es directamente proporcional al nmero de porciones de datos que une.
Bieman y Ott desarrollan mtricas para cohesin funcional fuerte, cohesin funcional
dbil y adhesividad (que se relacona con el grado en que las seales de unin integran
las porciones de datos). Estas mtricas se interpretan de la siguiente manera [BIE94J:
Todas estas mtricas de cohesin abarcan valores de o a 1. Tienen un valor de o cuando
un procedimiento cuenta con ms de una salida y no muestra atributo alguno de cohesin
indicado por una mtrica particular. Un procedimiento sin seales de superunin (es decir, sin muestras comunes a todas las porciones de datos). tiene Ocohesin funcional fuerte (no hay muestras de datos que contribuyan a todas las salidas). Un procedimiento sin
seales de unin (es decir, sin muestras comunes a ms de una porcin de datos, en procedimientos con ms de una porcin de datos) muestra Ocohesin funcional dbil y O adhesividad (no hay muestras de datos que contribuyan a ms de una salida).
La cohesin funcional fuerte y la adhesividad se encuentran cuando las mtricas de
Mtricas de acoplamiento. El acoplamiento del mdulo proporciona una indicacin de la "conectividad" de un mdulo con otros mdulos. con datos globales y con
el entorno exterior. En el capitulo 9 se analiz el acoplamiento desde el punto de vista cualitativo.
490
PARTE DOS
Dhama [DHA95] ha propuesto una mtrica para el acoplamiento del mdulo qu:
abarca el acoplamiento de flujo de datos y de control, el global y el de entorno. La..
medidas necesarias para calcular el acoplamiento del mdulo se definen a partir d
cada uno de los tres tipos de acoplamiento indicados antes. En el caso del acopt:;
miento de flujo de datos y de control,
ma = k/M
donde k es una constante de proporcionalidad y
M=~+~x~+~+~x~+~+~x~ + w+r
Los valores de k, a, by e deben derivarse empricamente.
A medida que el valor de ma aumenta, disminuye el acoplamiento general del ,..
dulo. Para lograr que la mtrica de acoplamiento suba a medida que aumenta el ::do de acoplamiento, se define una mtrica de acoplamiento revisada
e= l -ma
donde el grado de acoplamiento aumenta a medida que lo hacen las medidas eecuacin (15.6).
CAPTULO 15
491
McCabe y Watson [MCC94] identifican varios usos importantes para las mtricas
de complejidad:
Las mtricas de complejidad se utilizan para predecir la informacin crtica acerca de la
confiabilidad y la facilidad de mantenimiento de sistemas de software a partir del anlisis
automtico del cdigo fuente (o la informacin del diseo procedimental]. Las mtricas de
complejidad tambin ofrecen retroalimentacin durante el proyecto de software para ayudar a controlar [la actividad del diseo]. Durante las pruebas y el mantenimiento, ofrecen
una informacin detallada acerca de los mdulos de software para ayudar a detectar reas
de posible inestabilidad.
Tamao promedio de operacin (TOprom) Aunque las lneas de cdigo podran usarse como indicador del tamao de operacin, la medida de lneas de cdigo adolece de una serie de problemas analizados en el captulo 22. Por ello, el
nmero de mensajes que enva la operacin proporciona una opcin al tamao de
operacin . A medida que aumenta el nmero de mensajes enviados por una sola operacin, es probable que las responsabilidades no se hayan asignado bien dentro de
la clase.
Complejidad de la operacin (CO). La complejidad de una operacin se calcula empleando cualquier mtrica de complejidad propuesta para el software convencional [ZUS90]. Debido a que las operaciones deben limitarse a una responsabilidad
especifica, el diseador debe esforzarse por mantener la CO lo ms baja posible.
492
PARTE DOS
,,. . . . ~lc!.l*OS un ptjncipio del diseo de interfaces de usuario si echa lo 'I"' en IHl laviidora. Si
. . . . . .. nod( quedar nmpio/
Los mtricos de
diseo de lo interfaz
son adecuados, pero
sobre todo lo dems,
es necesario asegurarse plenamente de
que lo interfaz le
gusto alos usuarios
fino/es y de que stos
se sienten cmodos
con los interacciones
requeridos.
Kokol y sus colegas [KOK95J definen una mtrica de cohesin para las panta.
de la interfaz de usuario que mide la conexin relativa entre el contenido de ._
pantalla y el de otra. Si los datos (o el contenido adicional) presentados en una ;::talla pertenecen a un solo objeto importante de datos (como se defini dentro
modelo de anlisis), la cohesin de la interfaz para esa pantalla ser alta. Si se.
sentan muchos tipos diferentes de datos o contenidos y esos datos se relacionan_
diferentes objetos de datos, la cohesin de la interfaz de usuario ser baja. Los
tores proporcionan modelos empricos para la cohesin [KOK95].
Adems, las medidas directas de la interaccin con la interfaz de usuario se e
centran en la medicin del tiempo requerido para alcanzar un escenario o una ... ~
racin especficos, el tiempo requerido para recuperarse de una condicin de e:los conteos de operaciones o tareas especficas requeridas para alcanzar un case
uso, el nmero de objetos de datos o contenido presentados en una pantalla, la e'..
sidad y el tamao del texto y muchos otros. Sin embargo, estas medidas directas de;
estar organizadas para crear mtricas de interfaz de usuario que tengan un sigcado y que lleven a mejorar la calidad, la facilidad de uso, o ambos elementos G:.
interfaz de usuario.
Es importante observar que la seleccin de un diseo de interfaz grfica de us
rio puede determinarse a partir de mtricas como AF o la cohesin de pantalla .
interfaz de usuario, pero el rbitro final debe ser la entrada del usuario basada
prototipos de interfaz grfica de usuario. Nielsen y Levy [NIE94] reportan que "se
ne una probabilidad razonablemente grande de xito si se elige entre las interf;a
CAPTULO 15
493
La teora de Halstead de la "ciencia del software" [HAL77l propuso las primeras "le-
yes" analiticas para el software de computadora. 14 Halstead asign leyes cuantitativas al desarrollo de este software empleando un conjunto de medidas primitivas que
se derivan despus de que se ha generado el cdigo, o se estiman una vez que el diseo est completo. Las medidas son:
= n, log2 n, + n2 log2 n2
Se debe observar que V variar de acuerdo con el lenguaje de programacin y que representa el volumen de informacin (en bits) necesario para especificar un programa.
11 can(unto de regios que sigue el cerebrohumano [para el desarrollo de algorilmos] es ms rigid11 de fo qwe suele
. pellSIN..
En teora, debe existir un volumen mnimo para un algoritmo determinado. Halstead define una relacin de volumen, L, como la relacin entre el volumen de la forma ms compacta de un programa y el volumen real del programa. En realidad, L
siempre debe ser menor que 1. Desde el punto de vista de las medidas primitivas. la
rel acin de volumen se expresa como
14 Debe observarse que las "leyes" de Halstead han generado gran controversia, y muchos creen que
la teora tiene fallas. Sin embargo, se ha realizado la verificacin experimental de lenguajes de programacin seleccionados (por ejemplo, [FEL.89]1.
PARTE DOS
494
L = 2!n1
n2IN2
El trabajo de Halstead es sensible a la verificacin experimental, y se ha realizado una gran cantidad de investigacin sobre la ciencia del software. Para obtener
ms informacin, consltense [ZUS90], [FEN9l] y [ZUS97].
ua.,
~
~~
C~VE
Los mtricos de pruebo
se agrupon en dos
amplios cotegorfos:
1) los que troton de
predecir el nmero
proboble de pruebas
que se requieren o
voos niveles de
pruebo, y 2} los que
se concentron en lo
cobertura de lo pruebo
poro un componente
determinado.
proyecto (como el esfuerzo y el tiempo para las pruebas, los errores descubiertos, e
nmero de casos de prueba producidos) de proyectos anteriores y correlacionarlas
con el nmero de puntos de funcin que produce un equipo de proyecto. Este equ
po tiene la opcin posterior de proyectar "valores esperados" de estas caracterstica:.
para el proyecto actual.
Las mtricas del diseo arquitectnico proporcionan informacin sobre la faci~
dad o la dificultad asociada con la prueba de integracin (captulo 13) y la necesida
de contar con software especializado en pruebas (por ejemplo, resguardos y contrr
!adores). La complejidad ciclomtica (una mtrica de diseo al nivel de componerles} cae en el eje de las pruebas de camino bsico, un mtodo de diseo de casos e.;;
prueba presentado en el capitulo 14. Adems, la complejidad ciclomtica se emp,c::..a
para determinar los mdulos que sern candidatos a pruebas de unidad ms exter
sas. Los mdulos con elevada complejidad ciclomtica son ms propensos a em:
que los que tienen una menor complejidad. Por ello, la persona responsable de
prueba debe realizar un esfuerzo superior al promedio para descubrir errores en es
tos mdulos antes de integrarlos en un sistema.
15.6. l
Tambin es posible estimar el esfuerzo que requieren las pruebas mediante mtrica..
derivadas de las medidas de Halstead (seccin 15.5). Si se aplican las definiciones d.::
volumen, V, y el nivel de un programa, NP, el esfuerzo de Halstead, e, se calcula:as:
(15.-::
(15.7.:.
= e(k)/e(l)
(15.8
(15.7), y donde
CAPTULO 15
495
sumatoria en el denominador de la ecuacin (15.8) es la suma del esfuerzo de Halstead en todos los mdulos del sistema.
Falta de cohesin en mtodos (FCM). ts Mientras mayor sea el valor de FCM, deben
probarse ms estados para asegurar que los mtodos no generen efectos colaterales.
Porcentaje pblico y protegido (PYP). Esta mtrica indica el porcentaje de atributos de clase que son pblicos o estn protegidos. Valores elevados de PYP aumentan la probabilidad de efectos colaterales entre clases porque los atributos pblicos
o protegidos conllevan una alta probabilidad de acoplamiento (captulo 9). 16 Deben
disearse pruebas para asegurar el descubrimiento de estos efectos colaterales.
Integrantes de acceso pblico a datos (APD). Esta mtrica indica el nmero
de clases (o mtodos) al que tienen acceso otros atributos de clase, lo que es una
violacin del encapsulamiento. Valores elevados de APD conllevan la posibilidad de
efectos colaterales entre clases. Deben disearse pruebas para asegurar el descubrimiento de estos efectos colaterales.
Nmero de clases raz (NCR). Esta mtrica es un conteo de las distintas jerarquas de clase descritas en el modelo de diseo. Deben desarrollarse conjuntos de
prueba para cada clase raz y para la jerarqua de clases correspondiente. A medida
que aumente el NCR, tambin aumentar el esfuerzo de la prueba.
Dependencia hacia dentro (FIN). Cuando se aplica en el contexto orientado a
objetos, la dependencia hacia dentro para la jerarqua de herencia es un indicador
de herencia mltiple. FIN > 1 indica que una clase hereda sus atributos y operaciones a partir de una clase raz. Debe evitarse que FIN > 1 a toda costa.
Nmero de descendientes (NDD) y rbol de profundidad de herencia (APH). 17
Como se analiz en el captulo 14, es necesario volver a probar los mtodos de la
superclase de cada subclase.
496
A medida que el IMS se acerca a 1.0, el producto empieza a estabilizarse. El IMS ta.7
bin se aplica como mtrica para la planeacin de actividades de mantenimiento <k
software. El tiempo medio para producir una versin de un producto de softwa:puede correlacionarse con el IMS, y pueden desarrollarse modelos empricos para ..
esfuerzo de mantenimiento.
He rramientas representativa s 18
Krakafou Mefrics, desarrollada por Power Software
(www.powersoftware.com/ products). calculo mtricos
18 Las herramientas expuestas representan una muestra de esta categora. En casi todos los casos la.
nombres de las mismas son marcas registradas de sus respectivos desarrolladores.
CAPTULO 15
497
Las mtricas del software proporcionan una manera cuantitativa de evaluar la calidad de los atributos internos de un producto, lo que permite que un ingeniero de
software evale la calidad antes de construirlo. Las mtricas proporcionan los conocimientos necesarios para crear modelos efectivos de anlisis y diseo, un cdigo
slido y pruebas exhaustivas.
Para que resulte til en la realidad, una mtrica del software debe ser simple y calculable, persuasiva, consistente y objetiva. Debe ser independiente del lenguaje de
programacin y proporcionar retroalimentacin efectiva al ingeniero del software.
Las mtricas para el modelo de anlisis se concentran en la funcin, los datos y el
comportamiento (los tres componentes del modelo de anlisis). Las mtricas para el diseo consideran los aspectos del diseo de la arquitectura, al nivel de componentes
y de la interfaz. Las mtricas del diseo de la arquitectura consideran los aspectos estructurales del modelo de diseo. Las mtricas de diseo al nivel de componentes
indican la calidad del mdulo al establecer medidas indirectas para la cohesin, el
acoplamiento y la complejidad. Las mtricas de diseo de la interfaz de usuario proporcionan un indicio de la facilidad con que se usa la interfaz grfica del usuario.
Las mtricas para los sistemas orientados a objetos se concentran en la medicin
que puede aplicarse a las caractersticas de clase y diseo (localizacin, encapsulamiento, ocultamiento de informacin, herencia y tcnicas de abstraccin de objetos)
que convierten a la clase en nica.
Halstead proporciona un conjunto interesante de mtricas al nivel de cdigo fuente. Empleando el nmero de operadores y operandos presentes en el cdigo, se desarrolla una variedad de mtricas para evaluar la calidad del programa.
Pocas mtricas del producto se han propuesto para emplearlas directamente en
las pruebas del software y en el mantenimiento. Sin embargo, muchas otras mtricas del producto pueden aplicarse para guiar el proceso de prueba y como mecanismo para evaluar la facilidad de mantenimiento de un programa de cmputo. Una
amplia variedad de mtricas orientadas a objetos se ha propuesto para evaluar la facilidad de prueba de un sistema orientado a objetos.
BIEBBINCiIA$
[ALB79) Albrecht, A. J., "Measuring Application Development Productivity", en Proc. JBM Application Development Symposium, Monterey, CA, octubre de 1979, pp. 83-92.
[ALB83] Albrecht, A. J. y J. E. Gaffney, "Software Function, Source Lines of Code and Development Effort Prediction: A Software Science Validation", en IEEE Trans. Software Engineering,
noviembre de 1983, pp. 639-648.
[BAS84) Basili, V. R. y D. M. Weiss, "A Methodology for Collecting Valid Sotlware Engineerng
Data", en IEEE Trans. Software Engineering, vol SE-IO. 1984, pp. 728-738.
[BER95] Berard, E., "Metrics for Object-Oriented software Engineering", publicacin de Internet
en comp.software-eng, 28 de enero, 1995
[BIE94J Bieman, J. M. y L. M. Ott, "Measuring Functional Cohesion" en IEEE 1rans. Software En
gineering, vol. SE-20, nm. 8, agosto de 1994. pp 308-320
498
PARTE DOS
[B1N94J Binder, R. v., "Object-Oriented Software Testng", en CACM, vol. 37, nm. 9, septiemb'
de 1994, p. 29.
[BR196J Briand, L. c., S. Morasca y v. R. Basili. "Property-Based Software Engineering Measure
ment", en IEEE Trans. SOftware Engineering. vol. SE-22, nm. 1, enero de 1996, pp. 68-85
(CAR90J Card, D. N. y R. L. Glass, Measuring Software Design Quality. Prentice-Hall, 1990.
(CAV78J Cavano. J. P. y J. A. McCall, "A Framework for the Measurement of Software QualitJ
Proc. ACM Software Qua/ity Assurance Workshop, noviembre de 1978, pp. 133-139.
[CHA89l Charette, R. N. SOftware Engineering Risk Analysis and Management. McGraw-Hill/lnk
text, 1989.
[CHl94] Chidamber, S. R. y C. F. Kemerer, "A Metrics Suite for Object-Oriented Design", en IEfr.
1tans. Software Engineering, vol. SE- 20. nm. 6, junio de 1994, pp. 476-493.
[CHl98J Chidamber, s. R., D. P. Darcy y C. F. Kemerer, "Management Use of Metrics for Objec
Oriented Software: An Exploratory Analysis", en IEEE Itans. Software Engineering. vol. SE-1~
nm. 8, agosto de 1998, pp. 629-639.
[CHU95J Churcher, N. l. y M. J. Shepperd. "Toward a Conceptual Framework for Object-Orien...
Metrics". en ACM Software Engineering Notes, vol. 20, nm. 2, abril de 1995, pp. 69-76.
[CURSO) Curts, W., "Management and Experimentation in Software Engineering", en Proc. IEEE.
vol. 68, nm. 9, septiembre de 1980.
[DAV93] Davis, A. et al., "ldentifying and Measuring Quality in a Software Requirements Spec
fication", en Proc. First lntl. Software Melrics Symposium, IEEE. Baltimore, MD, mayo de 19'<
pp. 141 - 152.
[DEM81J DeMillo, R. A. y R. J. Lipton, "Sotlware Project Forecasting", en Software Melrics (A
Perlis, F. G. Sayward y M. Shaw, eds.). MIT Press, 1981, pp. 77-89.
[DEM82J DeMarco, T., Controlling Software Projects, Yourdon Press, 1982.
[DHA95J Dhama, H., "Quantitative Models of Cohesion and Coupling in Software", en Joumc.
Systems and Software, vol. 29, nm. 4, abril de 1995.
[EJ191] Ejiogu, L., Software Engineering with Formal Melrics, QED Publishing, 1991.
[FEL89J Felican, L. y G. Zalateu, "Validating Halstead's Theory for Pascal Programs", en lE.
1tans. Software Engineering, vol. SE-15, nm. 2, diciembre de 1989, pp. 1630-1632.
[FEN91J Fenton, N., Software Metrics, Chapman and Hall. 1991 .
[FEN94] Fenton, N., "Software Measurement: A Necessary Scientific Basis", en IEEE Trans. S.
ware Engineering, vol. SE-20, nm. 3, marzo de 1994, pp. 199-206.
(GRA87J Grady, R. B. y D. L. caswell, Software Metrics: Establishing a Company-Wde Progrc:Prentice-Hall, 1987.
[HAL77J Halstead, M., Elements of Software Scence. North-Holland, 1977.
[HAR98) Harrison, R.. s. J. CounselJ y R. v. Nithi, "An Evaluation of the MOOD set of Oba.
Oriented Software Metrics", en IEEE 1tans. Software Engineering, vol. SE-24, nm. 6, junio
1998, pp. 491-496.
[HET93J Hetzel, B., Making Software Measurement Work, QED Publishing, 1993.
[IEE93J IEEE Standard Glossary o/software Engineering Terrninology, IEEE, 1993.
(IEE94J Software Engineering Standards, edicin 1994, IEEE, 1994.
[IFPO I J Function Point Counting Practices Manual, versin 4 .1.1, lnternational Function Pe
Users Group, 2001, disponible en http://www.ifpug.org/publications/manual.htm
[IFP03] Function Point Bibliography/Reference Library, lnternational Function Point Us.
Group, 2003, disponible en http:/ /www.ifpug.org/about/bibliography.htm
(KOK95) Kokol, P., J. Rozman y V. Venuti, "User Interface Metrics", ACM SIGPIAN Notices, vol
nm. 4, abril de 1995, puede descargarse de: http://portal.acm.org/.
[KYB84J Kyburg, H. E., Theory and Measurement, Cambridge University Press, 1984.
[LET03J Lethbridge, T., comunicacin privada sobre mtricas de software, junio de 2003.
(LON02] Longstreet, D. "Fundamental of Function Point Analysis", Longstreet Consulting, Ir
2002, disponible en http:/ /www.ifpug.com/fpafund.htm.
fLOR94] Lorenz, M. y J. Kidd, Object-Oriented Software Metrics, Prentice-Hall, 1994.
[MCC76J McCabe. T. J., "A Software Complexity Measure", en IEEE Itans. Software Engineerr
vol. SE-2, diciembre de 1976, pp. 308- 320.
(MCC77J McCall, J., P. Richards y G. Walters, "Factors in Software Quality", tres volmenes,
AD-A049-014. 015, 055. noviembre de 1977.
499
15.1. La teora de la medicin es un tema avanzado que tiene una fuerte innuencia sobre las
mtricas del software. Utilizando [ZUS97). [FEN91], [KYB84J u otras fuentes, escribir un breve
ensayo que delinee los principales principios de la teora de la medicin. Proyecto individual: desarrollar una presentacin sobre el tema y presentarla ante la clase.
16 .2. Los factores de calidad de McCall se desarrollaron durante la dcada de 1970. Casi todos
los aspectos de la computacin han cambiado drsticamente desde que se desarrollaron; sin
embargo, los factores de McCall siguen aplicndose al software moderno. Podria llegarse a algunas conclusiones a partir de este hecho?
15 .3. Por qu no se puede desarrollar una sola mtrica que lo abarque todo para la complejidad o la calidad de un programa?
15.4. Trtese de desarrollar una medida o una mtrica tomada de la vida real que viole los atributos de las mtricas efectivas del software que se definieron en la seccin 15.2.5
15.5. Un sistema tiene 12 entradas externas, 24 salidas externas, campos para 30 consultas externas diferentes, maneja cuatro archivos lgicos externos y tiene interfaces con seis sistemas
heredados diferentes (6 AIE). Todos estos datos tienen una complejidad promedio, y el sistema
general es relativamente simple. Calclese el punto de funcin para el sistema.
16.6. El software para el Sistema X tiene 24 requisitos funcionales individuales y 14 no funcionales. Cul es la especificidad de los requisitos? En qu grado se ha completado?
15.7. Un importante sistema de informacin tiene 1140 mdulos; 96 mdulos realizan funciones de control y coordinacin, y 490 dependen de un procesamiento anterior. El sistema procesa
alrededor de 220 objetos de datos, cada uno con un promedio de tres atributos. Hay 140 elementos nicos de la base de datos y 90 segmentos diferentes de sta. Por ltimo, 600 mdulos
tienen puntos nicos de entrada y salida. Calclese el LCED del sistema.
15.8 . Una clase, X, tiene 12 operaciones. Se ha calculado la complejidad ciclomtica para todas las operaciones del sistema orientado a objetos, y el valor promedio de la complejidad del
mdulo es de 4. Para la clase X, la complejidad de la operacin I a la 12 es 5, 4, 3, 3, 6, 8, 2, 2,
5, 5, 4 y 4, respectivamente. Calclense los mtodos ponderados por clase.
500
PARTE DOS
15.9. Desarrllese una herramienta de software que calcule la complejidad ciclomtica de u::mdulo de lenguaje de programacin. Elijase el lenguaje que se desee.
15.1 o. Desarrolle una pequea herramienta de software que realice un anlisis de Halstea.;
sobre cdigo fuente en el lenguaje de programacin que se desee.
15.11. Un sistema heredado tiene 940 mdulos. La ltima versin requiri que 90 de ese
mdulos cambiaran. Adems, se agregaron 40 nuevos mdulos y se eliminaron 12 de esos m....
dulos. Calclese el indice de madurez del software para el sistema.
Hay un nmero sorprendentemente grande de libros dedicados a las mtricas del soflware, a...
que la mayor parte de ellos se concentra en las mtricas del proceso y el proyecto, por lo e;:
excluyen las mtricas del producto. Kan (Metrics and Models in Software Qualicy Engineering,
dison-Wesley, segunda edicin, 2002). Fenton y Pfleeger (Software Metrics: A Rigourous and Pr:tical Approach, Brooks-Cole Publishing, 1998) y Zuse [ZUS97) han escrito tratamientos coro;:
tos de las mtricas del producto.
Libros de Card y Glass [CAR90). Zuse [ZUS90], Fenton [FEN9 I L Ejiogu [EJI91 J. Moeller y P.:
lish (Software Metrics, Chapman y Hall, 1993) y Hetzel [HET93] atienden las mtricas del pro..
to con algn detalle. Ornan y Pfleeger /Applyig Software Metrics, IEEE Computer Society
1997) han editado una antologa de artculos importantes sobre las mtricas del software. A.
ms, vale la pena examinar los siguientes libros:
Conte, S. D., H. E. Dunsmore y V. Y. Shen, Software Engineering Metrics and Models, Be:min-Cummings, 1984.
Grady, R. B., Practica/ Software Metrics Jor Project Management and Process Improvemenl, ~
tice-Hall, 1992. Sheppard, M., Software Engineering Metrics, McGraw-Hill, 1992.
Denvir, Herman y Whitty presentan la teora de la medicin del software en una colea:editada de artculos (Proceedings ofthe International BCS-FACS Workshop: Formal Aspects of'
surement, Springer-Verlag, 1992). Shepperd (Foundations of Software Measurement, Pre
Hall, 1996) tambin atiende con cierto detalle la teora de la medicin. El estado actual de:.;
vestigacin se presenta en los Proceedings ofthe symposium on Software Metrics (IEEE, pub:
dos anualmente).
Un resumen muy completo de docenas de mtricas de software tiles se presenta en {IEE
En general, un anlisis de cada mtrica se ha reducido a los "primitivos" (las medidas) eser
les necesarios para calcular la mtrica y las relaciones apropiadas para realizar el clculc
apndice proporciona un anlisis y muchas referencias.
Whitmire [WHl97) presenta el tratamiento ms completo y matemticamente sofisticad.
las mtricas orientadas a objetos que se haya publicado a la fecha. Lorenz y Kidd [LOR94) y'dersen-Sellers (Object-Oriented Metrics: Measures of Complexicy, Prentice-Hall, 1996) ofrea.
nico libro adicional dedicado a las mtricas orientadas a objetos. Hutcheson (Software 1l
Fundamentals: Methods and Metrics, Wiley, 2003) presenta una guia til para la aplicacir
uso de mtricas para la prueba del software.
Una amplia variedad de fuentes de informacin sobre mtricas del software se enCUb
disponible en Internet. Una lista actualizada de referencias en la World Wide Web relevante,.
ra las mtricas del software se encontrar en el sito Web de SEPA:
http://www.mhhe.com/pressman.
,,
APLlC ACI
DE LA INGENIERA
WEB
"
.,
de
'
:~~
CAPTULO
CONCEPTOS
CX..AV f:
tntrlO$
dualidad .. .513
lngeltlenl Web
herr'dffllntos ,508
marco~trDNJI>
del proceso . JQ9
lores
p,<tko$ .. S12
preguntas
bsicas .Sil
WebApps
atributos . .504
categorios . .506
_L
CAPTULO 16
INGENIERA WEB
503
Esto conduce a una pregunta clave: se pueden aplicar principios, conceptos y mtodos de la ingeniera del software al desarrollo Web? Es posible aprovechar muchos de
ellos, pero su aplicacin puede requerir un giro un tanto diferente.
Pero qu ocurre si persiste un enfoque sin disciplina respecto al desarrollo Web?
En ausencia de un proceso disciplinado dirigido a desarrollar sistemas basados en
Web, existe una creciente preocupacin de que se enfrenten serios problemas en su
desarrollo, despliegue y mantenimiento exitosos. En esencia. la infraestructura de
aplicacin que se est creando en la actualidad puede conducir a una "Web enmaraada" conforme se adentra ms este nuevo siglo. Esta frase entraa un cmulo de
aplicaciones basadas en Web mal desarrolladas y que tienen muy altas probabilidades de fracaso. Peor an, conforme los sistemas basados en Web crecen con mayor
complejidad, una falla en uno puede propagar y propagar amplios problemas por
medio de muchos. Cuando esto ocurra, la confianza en toda la Internet ser sacudida. Peor an, podra conducir a una regulacin gubernamental innecesaria y mal
concebida, lo que provocar un dao irreparable a estas tecnologas nicas.
Para evitar una Web enmaraada y lograr mayor xito en el desarrollo y la aplicacin de sistemas basados en Web complejos y a gran escala, existe una apremiante necesidad de enfoques disciplinados y nuevos mtodos y herramientas con que
desarrollar, desplegar y evaluar los sistemas y aplicaciones basados en Web. Tales
enfoques y tcnicas deben considerar las caractersticas especiales de los nuevos
medios, los ambientes y escenarios operativos, y la multiplicidad de perfiles de usuario que colocan desafos adicionales al desarrollo de aplicaciones basadas en Web.
La ingeniera Web (!Web) aplica "slidos principios cientficos, de ingeniera y de
administracin, y enfoques disciplinados y sistemticos para el desarrollo, despliegue y mantenimiento exitosos de sistemas y aplicaciones basados en Web de alta calidad" [MUR99].
504
PARTE TRES
En los primeros das de la World Wide Web (circa 1990 a 1995) los "sitios Web" consistan en poco ms de un conjunto de archivos de hipertexto ligados que presentaban informacin mediante texto y grficos limitados. Conforme el tiempo pas, e
HTML aument al desarrollar herramientas (por ejemplo, XML, Java) que permitieron a los ingenieros Web ofrecer capacidades de clculo junto con informacin. Nacieron los sistemas y aplicaciones' basados en Web (se les referir de manera colectiva como WebApps). En la actualidad, las WebApps han evolucionado en sofistica
das herramientas de computacin que no slo proporcionan funcin por s mismas
al usuario final, sino que tambin se han integrado con bases de datos corporativas
y aplicaciones de negocios.
.......
'Tlfe l ~ en que veamos ciertn espee de estabilizacin, lo Web se hobr convettido ena'lgo 0iij4" ! UIIII
"'
Existe poco debate en cuanto a que las WebApps son diferentes a las mucha:
otras categoras de software informtico analizadas en el captulo 1. Powell resllf"' _
las diferencias principales cuando establece que los sistemas basados en Web "im
lucran una mezcla entre publicacin impresa y desarrollo de software, entre man..
ting e informtica, entre comunicaciones internas y relaciones externas, y entre a.;
te y tecnologa" [POW98]. En la gran mayora de las WebApps se encuentran los
guientes atributos.
Intensidad de red. Una WebApp reside en una red y debe satisfacer las neco
Se {JIJede argumentar
que uno aplicacin
tradicional dentro de
wolquiero de los
dominios de software
trotodos en el captulo
1puede mostrar esto
listo de atributos. Sin
embargo, los
WebApps casi siemp1e
/o hacen.
dades de una variada comunidad de clientes. Una WebApp puede residir en la lnk.
net (y, en consecuencia, permitir una comunicacin mundial abierta). Altemati ~
mente, una aplicacin puede colocarse en una Intranet (lo que implementa la corr
nicacin en una organizacin) o en una Extranet (comunicacin inter-red).
505
Disponibilidad. Aunque la expectativa de una disponibilidad del total es poco razonable, los usuarios de las WebApps populares con frecuencia demandan acceso
sobre una base de "2417 /365". Los usuarios en Australia o Asia pueden demandar
acceso durante momentos cuando las tradicionales aplicaciones de software domstico en Norteamrica pueden estar fuera de lnea por mantenimiento.
El cuidado continuo y la alimentacin permiten que un sitio Web crezca (en robustez e importancia). Pero, a diferencia del jardn, las aplicaciones Web deben satisfacer (y adaptarse a) las necesidades de alguien ms que el jardinero.
cin, las WebApps con frecuencia muestran un tiempo para comercializar que puede ser cuestin de unos cuantos das o semanas 2 Los ingenieros Web deben aplicar
2 Con las herramientas modernas se pueden producir elaboradas pginas Web en cuestin de unas
cuantas horas.
506
Se guridad. Puesto que las WebApps estn disponibles mediante el acceso a l..
red, es dificil, si no imposible, limitar la poblacin de usuarios finales que pueden te
ner acceso a la aplicacin. Con la finalidad de proteger el contenido confidencial
ofrecer modos seguros de transmisin de datos, se deben implementar fuertes me
dictas de seguridad a lo largo de la infraestructura que sustenta una WebApp y den
tro de la aplicacin misma.
Qu catego
ras de Web
Apps se encueatrat1
en el trabajo
IWeb?
Interaccin: la comunicacin entre una comunidad de usuarios ocurre por m..:dio de cuartos de charla, tableros de anuncios o mensajera instantnea.
Entrada del usuario: la entrada con base en formularios es el principal mecanismo para las necesidades de comunicacin.
Acceso a una base de datos: el usuario consulta una gran base de datos y extrae informacin.
Almacn de datos: el usuario consulta una coleccin de grandes bases de datos y extrae informacin.
Los atributos comentados en esta seccin, y las categoras de aplicacin destaca
das lineas arriba, representan importantes hechos de vida para los ingenieros wet
La clave es vivir dentro de las restricciones que imponen dichos atributos y aun
producir una WebApp exitosa.
as
CAPTIJLO 16
INGENIERA WEB
507
El desarrollo de sistemas y aplicaciones basados en Web incorpora modelos de proceso especializados, mtodos de ingenierla del software adaptados a las caractersticas del desarrollo de WebApps y un conjunto de importantes tecnologas habilitadoras. Los procesos, mtodos y tecnologas (herramientas) proporcionan un enfoque
en estratos de la IWeb que es conceptualmente idntico a los estratos de la ingeniera del software descritos en la figura 2.1.
"lo illflllerlo Web trato con enfoques disciplinados y sistemticos paro el desorrollb, de$plil!9.0ty$l!Jlenillliento de
liis 5Sftll10$ yplicoc:ioncs bosados en Web."
' :
16.2.1 Proceso
rr.pre es incre-
Sin embargo,
'118 el modelo
;xJede elegirse
_moyotfo de los
":15 de inge.veb.
Los modelos de procesos !Web (que se tratan con detalle en la seccin 16.3) adoptan la filosofa del desarrollo gil (captulo 4). El desarrollo gil enfatiza un enfoque
de desarrollo riguroso que incorpora rpidos ciclos de desarrollo. Aoyama [AOY98J
describe la motivacin para el enfoque gil en la siguiente forma:
Internet cambi la prioridad principal del desarrollo de software de qu a cundo. El reducido tiempo para el mercado se ha convertido en el limite competitivo por el que luchan
las compaas lderes. En consecuencia, reducir el ciclo de desarrollo es ahora una de las
misiones ms importantes de la ingeniera del software.
Aun cuando rpidos ciclos de tiempo dominan la reflexin acerca del desarrollo, es
importante reconocer que el problema todava debe analizarse, debe desarrollarse
un diseo, la implementacin debe proceder en una forma incremental y se debe iniciar un enfoque organizado de prueba. Sin embargo, dichas actividades del marco
de trabajo se deben definir dentro de un proceso que 1) adopte el cambio, 2) aliente
la creatividad y la independencia del equipo de desarrollo y fortalezca la interaccin
con los accionistas de la WebApp, 3) construya sistemas que utilicen pequeos equipos de desarrollo, y 4) subraye el desarrollo evolutivo o incremental mediante el uso
de cortos ciclos de desarrollo [MCDO I J.
16.2.2 Mtodos
El panorama de los mtodos de !Web abarca un conjunto de labores tcnicas que
permiten al ingeniero Web comprender, caracterizar y luego construir una WebApp
de alta calidad. Los mtodos de !Web (que se tratan con detalle en los captulos 18
al 20) se pueden categorizar de la siguiente manera:
Mtodos de comunicacin: definen el enfoque con que se facilita la comuni-
cacin entre ingenieros Web y los dems participantes de la WebApp (por ejemplo,
usuarios finales, clientes de negocios, expertos en problemas de dominio, diseadores
de contenido, lderes de equipo, gestores de proyecto). Las tcnicas de comunicacin
son particularmente importantes durante la recoleccin de requisitos y siempre que
sea evaluado un incremento en la WebApp.
508
PARTE TRES
Es importante notar
que muchos mtodos
/Web se han adoptado
directamente de sus
contrapartes de ingeniera del software.
Otros estn en sus
etopos formativas.
Algunos de estas
sobrevivirn; otros
sern descartados
conforme se sugieran
mejores enfoques.
tHPH:iiii:'1
Seenwentran
txcelentes rerucsos
poro tecnologio IWeb
en webdeveloptr.
,om yen www.
eborwin.wm/
webni!lkfl',
509
ware que habr de desarrollarse. Esta premisa tambin es cierta para un ingeniero
Web.
Si la inmediatez y la evolucin continua son atributos principales de una WebApp,
un equipo de ingeniera Web debe elegir un modelo de proceso gil (captulo 4) que
produzca liberaciones de WebApp a un ritmo vertiginoso. Por otra parte, si una WebApp
ser desarrollada durante un largo periodo (por ejemplo, una gran aplicacin de comercio electrnico) puede elegirse un modelo de proceso incremental (captulo 3) .
El desarrollo Web es un adolescente... al igual que lomayora de los adolescentes, quiere ser ceptado como lln
adulto ~fo,me intenta alejarse de sus podres. Si quiere alcanzar todo su potencial, debe tomor unas wonkls lecdl>lle$ del ms experimentado mundo del desarrollode software.*
D0119 Walloc ,tal.
La intensa naturaleza de las aplicaciones de la red en este dominio sugiere una
diversa poblacin de usuarios (que, por lo tanto, realizan demandas especiales acerca de respuesta y modelado de requisitos) y una arquitectura de aplicacin que puede ser altamente especializada (que en consecuencia realiza demandas acerca del
diseo). Puesto que con frecuencia las WebApps son conductoras de contenido, con
nfasis en la esttica, es probable que se proyecten actividades de desarrollo paralelas dentro del proceso IWeb e involucren un equipo de personal tanto tcnico como lego (por ejemplo, publicistas, diseadores grficos).
Las WebApps con frecuencia se entregan de manera incremental. Esto es, las actividades del marco de trabajo ocurrirn de manera repetida conforme cada
incremento se someta a ingeniera y se entregue.
2 . Los cambios ocurrirnjiecuentemente. Estos cambios pueden ocurrir como resultado de la evaluacin de un incremento entregado o como consecuencia
de cambiar las condiciones de los negocios.
510
PARTE TRES
3. Los plazos son cortos. Esto aminora la creacin y revisin de voluminosa documentacin de ingeniera, pero no excluye la simple realidad de que el an1sis crtico, el diseo y la prueba deben registrarse en alguna forma.
Adems, se deben aplicar los principios definidos como parte del "Manifiesto para e
desarrollo de software gil" (captulo 4). Sin embargo, los principios no son los die..
mandamientos. A veces es razonable adoptar el espritu de dichos principios sin (lU;.
sea necesario atenerse a la letra del manifiesto.
Con estos conflictos en mente se aborda el proceso de lWeb dentro del proces
genrico de marco de trabajo presentado en el captulo 2.
01
'~
cihvE
El modelo de proceso
genrico (inlToducido
en el copltulo 2) es
aplicable olo
ingeniera Web.
511
Pruebo de oceplo<:in
Uso del consumidor
Evoluocin del consumidor
Pion de ilerocin
Iteracin
Mode o de diseo
Contenido
Arquilectvro
Navegacin
lnlerfoz
Funcin
Configurocin
po1enc!Oles.
512
CiA inlphimenttcKtn~Ykil!!lO liltisten algunos de nosotros que creen que las mejores prdkas SOi intefesalltetaw-
Asegrese de que
1.15P).
l. Tomar tiempo para entender las necesidades del negocio y los objetivos del producto, incluso si los detalles de la WebApp son vagos. Muchos desarrolladores
de WebApps creen errneamente que los requisitos vagos (que son bastante
comunes) los liberan de la necesidad de asegurarse de que el sistema que estn a punto de someter a ingenieria tenga un propsito empresarial legtimo
El resultado final es (tambin con frecuencia) un buen trabajo tcnico que ccr
duce a la construccin del sistema equivocado por las razones equivocadas
para el pblico equivocado. Si los accionistas no pueden enunciar una neces
dad empresarial para la WebApp, debe procederse con extrema precaucin. s
los accionistas luchan por identificar un conjunto de objetivos claros para el
producto (WebApp), no debe procederse mientras ellos no concluyan.
2. Describir cmo interactuarn los usuarios con la WebApp aplicando un enfoquc
basado en escenarios. Se debe convencer a los accionistas para desarrollar c..
sos de uso (tratados a lo largo de la Parte 2 de este libro) para reflejar cmo
los diversos actores interactuarn con la WebApp. Entonces se pueden apro-
513
vechar dichos escenarios 1) para la planeacin y el rastreo del proyecto, 2) para guiar el anlisis y el modelado del diseo, y 3). como una entrada importante para el diseo de pruebas.
3. Desarrollar un plan del proyecto, incluso si es muy breve. El plan debe basarse
en un proceso de marco de trabajo predefinido aceptable para todos los participantes. Puesto que los plazos del proyecto son muy cortos, la dosificacin
del programa debe ser exacta; es decir, en muchas instancias el proyecto debe
514
PARTE TRES
Calidad de experiencia
www.qualityofexperience.org
Creacin de sitios Web asesinos
www.killersites.com/core.html
Todas los cosos en lo Web
www.pontos.org/atw
Nuevo diseo Web de SUN
www.sun.com/980113/ sunonnel
Tognazzini, Bruce: homepage
www.asktog.com
Webmonkey
hotwired .lycos.com/webmonkey/ design/?tw=design
Los meores sitios Web del mundo
www.worldbestwebsites.com
Ya/e University: gua de estilo Web de Yo/e
info.med.yale.edu/caim/manual
s.:
adaptan a las necesidades de cada proyecto. A todos los proyectos IWeb se les ap
ca un conjunto de actividades sombrilla similar al aplicado durante el trabajo de ugeniera del software: SQA, SCM, gestin del proyecto.
CAPTULO 16
INGENIERA WEB
515
[AOY98] Aoyama, M., ''Web-Based Agile Software Development", en IEEE Computer, noviembrediciembre, 1998, pp. 56-65.
[DAR99J Dart, s., "Containing the Web Crisis Using Configuration Management", en Proc. First
ICSE Workshop on Web Engineering, ACM, Los Angeles, mayo de 1999. (The Proceedings ofthe
First ICSE Workshop on Web Enginee1ing se publican en lnea en http:/ /fistserv.macarthur.
uws.edu.au/san/icse99-WebE/ICSE99-WebE-Proc/default.htm).
[FOWOJJ Fowler, M. y J. Highsmith, "The Agile Manifesto", en Software Development Magazine.
agosto de 2001, http://www.sdmagazine.com/documents/s=844/sdm0J 08a/Ol 08a.htm.
[MCDOIJ McDonald, A. y R. Welland. Agile Web Engineering (AWE) Process. Department of Computer Science, University of Glasgow, Technical Report TR-2001-98, 2001, se puede descargar desde http://www.dcs.gla.ac.uk/-andrew/TR-2001-98.pdf.
[MUR99J Murugesan, S., WebE Home Page, http://fistserv.macarthur.uws.edu.au/san/WebEHome, julio de 1999.
[NOR99J Norton, K., "Applying Cross Functional Evolutionary Methodologies to Web Development", en Proc. Firsc !CSE Workshop on Web Engineering, ACM, Los ngeles, mayo de 1999.
[POW981 Powell, T. A., Web Ste Engineering, Prentice-Hall, 1998.
[PRE98J Pressman, R. S. (moderador), "Can lnternet-Based Applications Be Engineered?", IEEE
Software, septiembre de 1998, pp. l 04- 11 O.
[QUIOIJ Quibeldey-Cirkel, K., "Checklist for Web Site Quality Assurance", en Quality Week Europe, 200 l, se puede descargar desde www.lbi.fh-darmstadt.de/-quibeldey/Projekte/QWE2001 /Paper_Quibeldey_Cirkel.pdf.
[WEI02J Weinschenk, s.. "Psychology and the Web: Designing for People", 2002, http://www.weinschenk.com/learn/facts.asp.
16.1 Existen otros atributos genricos que diferencien a las WebApps de las aplicaciones de
software ms convencionales? Jntntese mencionar dos o tres.
16.2 Cmo juzga el lector la "calidad" de un sitio Web? Hgase una lista, en orden descendente de prioridad, de l O atributos de calidad que consideren los ms importantes.
16.3 Realizar un poco de investigacin y escribir un artculo de dos a tres pginas que resuma
una de las tecnologias anotadas en la seccin 16.2.3.
16.4 Empleando un sitio Web real como ejemplo, ilustrar las diferentes manifestaciones del
"contenido" de la WebApp.
16.5 Revisar los procesos de ingeniera del soltware descritos en los captulos .3 y 4. Existe(n)
algn(os) otro(s) proceso(s) -distinto(s) al modelo de proceso gil- que pueda(n) ser aplicable(s)
a la ingeniera Web? Si la respuesta es afirmativa, indicar cul(es) proceso(s) y por qu.
16.6 Revisar la exposicin del "Manifiesto para desarrollo de software gil" presentado en el
captulo 4. Cul de los 12 principios funcionara bien para un proyecto de dos aos (que involucra a docenas de personas) que construir un gran sistema de comercio electrnico para una
compaa automotriz? Cul de los 12 principios funcionara bien para un proyecto de dos meses que construir un sitio informativo para una pequea firma de bienes races?
16. 7 Elaborar una lista de "riesgos" que serian probables durante el desarrollo de una nueva
aplicacin de comercio electrnico que se disea para \'ender telfonos celulares y servicios directamente por medio de la Web.
516
En aos recientes se han publicado cientos de libros que analizan uno o ms lemas de ingenie
ra Web, aunque relativamente pocos abordan todos los aspectos de la IWeb. Saruk.kai (Foundc
tions of Web Technology, Kluwar Academk Publishers, 2002) presenta una valiosa compilacir
de tecnologas que se requieren para la IWeb. Murugusan y Deshpande (Web Engineering: Me
naging Diversity and Complexity of Web Development, Springer-Verlag, 2001) han editado una ce
leccin de tiles articulas acerca de IWeb. Las actas de conferencias internacionales acerca ck
ingeniera Web y de ingeniera de sistemas de informacin Web las publica anualmente el lE.EI
Computer Society Press.
Flor (Web Business Engineering, Addison-Wesley, 2000) analiza el anlisis de negocios y
preocupaciones relacionadas que permiten al ingeniero Web comprender mejor las necesidade.
de los clientes. Bean (Engineering Global E-commerce Sites, Morgan Kaufman, 2003) presenta c.
reclrices para el desarrollo de WebApps globales. Lowe y Hall (Hypermedia and the Web: An E.
gineering Approach, Wiley, 1999) y Powell [POW98] ofrecen una cobertura razonablemente corpleta. u mar (Application Re-engineering: Building Web-Based Applications and Dealing with Leg<:Systems, Prentice-Hall, J997) aborda uno de los ms dificiles conflictos en la !Web: la reingen ~
ra de los sistemas heredados para hacerlos compatibles con los sistemas basados en Web. ~
Std. 2001-1999 define prcticas bsicas de JWeb.
EJ Internet hay disponible una gran variedad de fuentes de informacin acerca de ingen
ra Web. En el sitio Web de SEPA se puede encontrar una lista actualizada de referencias er
World Wide Web que son relevantes para la ingeniera Web:
http:// www.mhhe.com/pressman.
,,.
FORMULACIN Y PLANEACIN'
PARA INGENIERA WEB
urante.la tempestuosa dcada de 1990, el boom dela Internet gener ms
arrogancia que cualquier otro evento en la historia de las comput~d-Oras.
Los desarrolladores de WebApps en cientos de jvenes compaas punto-
.... .520
... . . .S36
...539
definido por reglas nuevas, los desarrolladores profesionales se estn dando cuenta
de que las lecciones acerca del desarrollo de sot\ware, 1preMidas en los das ptellios
al Jnternet, todava se aplican. Las pginas Web son interfaces de usuario, taprogramaci611 HTML es programa<;in, y las aplicaciones desplegadas en el .navegador son
Qstemas de software que pueden benelidarse de les prittcipios bsicos de la ingenie
ra del software.
518
17:l
.,
~~
C~VE
ln~enfoco
el sr:z ami>":
mIWP5ibles,
cqell'OS del pgocio
y~ iioo:mill
relocioncxlo.
5 19
Metas informativas: indican una intencin de proporcionar contenido informacin especficos al usuario final.
PARTE TRES
520
El examen de las respuestas a las preguntas planteadas puede conducir al establecimiento de una meta aplicable:
HogarSegurolnc.com consultar al usuario acerca de la instalacin (es decir: casa, oficina,
espacio de venta al menudeo) que ser protegida y realizar recomendaciones personalizadas acerca del producto y la configuracin que se utilizar.
Una vez identificadas todas las metas informativas y aplicables, se desarrolla un perfil de usuario. El perfil de usuario captura "caractersticas relevantes relacionadas
con los usuarios potenciales, que incluye sus antecedentes, escolaridad, preferencias
e incluso ms" [GNA991. En el caso de HogarSeguroinc.com, un perfil de usuario
identificara las caractersticas de un comprador tpico de sistemas de seguridad
(esta informacin la suministrara el departamento de mercadotecnia).
............
Una vez que se han desarrollado las metas y perfiles de usuario, la actividad de
formulacin se enfoca sobre una afirmacin del mbito para la WebApp. En muchos
casos, las metas ya desarrolladas se integran en la afirmacin del mbito. Adems
es til, no obstante, indicar el grado de integracin esperado de la WebApp. Esto es
con frecuencia es necesario integrar los sistemas de informacin existentes (por
ejemplo, una aplicacin existente de base de datos) con un planteamiento basado en
Web. Los temas de conectividad se consideran en esta etapa.
17.1.2 Recopilacin de requisitos para WebApps
Los mtodos para la recopilacin de requisitos se trataron en el capitulo 7. Aunque
esta actividad puede abreviarse para la ingeniera Web, los objetivos globales de la
recopilacin de requisitos propuestos para la ingeniera de software permanecen
inalterados. Adaptados para las WebApp, dichos objetivos se convierten en:
Identificar requisitos de contenido.
Identificar requisitos funcionales.
Definir escenarios de interaccin para diferentes clases de usuarios.
a. pasos
...... ,..
tle re<opilo
CII tle rtcpNSltos
1. Pedir a los clientes que definan las categoras de usuario y describan cada ca-
lmw.Af,s?
2. Comunicarse con los clientes para definir los requisitos bsicos de la WebApp.
tegora .
521
Definicin de las categoras de usuario . Se puede argumentar que la complejidad de la WebApp es directamente proporcional al nmero de categorias de usuario para el sistema. La definicin de una categora de usuario requiere formular un
conjunto de preguntas fundamentales:
Cul es el objetivo global del usuario cuando usa la WebApp? Por ejemplo, un
Al aprovechar las respuestas a estas preguntas se debe definir el ms pequeo conjunto razonable de clases de usuario. Conforme se avanza en la recopilacin de
requisitos, cada diferente clase de usuario debe encuestarse para obtener datos.
522
PARTE TRES
<.
d~.
. . ;ir-
*' ~ lo s,
~co,
" ~ li.omerdo
Ellos.tl<)s dirn que lo tendrn
listo y ~ enn'.le00$ de un mc,s,.. m\!ch0$
requisitos bc$sicJ,
Vltl ( Q ~ ) t Ooug,,. no me $ls
~ ,.. esto~ opretodoJ de tlemp y estQ...
.....~ ) ; Solo dale un da de to tiemx;,
Vincd. ~ o:>n los tipos de mrc~nio y
~ que especifiquen el contenido bsico, lo furich;
16 SM, el procedimiento usual.
,,
p a l ~ ,-,e el ~ Q * I ~ de personalizar
o~d.ftitoW~. ,, '"
"'
. . . . . . . . . #2: s~mQ.$qv~el ,
~ & UlO (Osa 1Jf! un tc'tico, Q$
guorlo ~ ttcwi
o r;
'
CAPTULO 17
523
grupo de usuarios finales y participantes representativos. El nmero de participantes puede ser mayor. Puesto que todos los usuarios pueden participar al
mismo tiempo, es posible recopilar ms informacin en un periodo ms corto.
Dado que todo el debate se basa en texto es automtico un registro contemporneo.
Entrevistas iterativas. Una serie de entrevistas breves, dirigida a usuarios repre-
WebApps con usuarios similares a los que usarn la WebApp que se desarrollar. Los usuarios se enlazan a la entrevista y responden una serie de
preguntas (usualmente reciben alguna recompensa por participar).
Construccin de escenarios. A usuarios seleccionados se les pide crear casos
524
.,......
"$ lo que itskt hadendo no lo puedes describir como un proceso, entonces no sabes lo que tils haciendo.
tcoNsuoS.
CONJUNTO DE TAREAS
ed
fu .
2 En los capltulos 7 y 8 se presentaron con detalle las tcnicas para desarrollar los casos de uso.
525
(con la
de uno hoa
en lugar
UML Esto
todos/os
del eJl)po
los feJ/1)~
d contenido
entregada
me;o, el
. filo de
~ocurrir.
Dada la inmediatez de las WebApps es razonable preguntar: en realidad se necesita gastar tiempo en la planeaciny administracin de un esfuerzo WebApp? No slo
se debera dejar evolucionar naturalmente a la WebApp, con poca o ninguna gestin
explicita? Ms de un desarrollador Web optara por poca o ninguna gestin, ipero
eso no hace que estn en lo correcto!
La figura 17. l presenta un cuadro adaptado de Kulik y Samuelson [KULOOJ que
indica cmo los "proyectos electrnicos" (e-projects, su trmino para los proyectos
WebApp) se comparan con los proyectos de software tradicionales. Al consultar la
figura, los proyectos de software tradicionales y los grandes proyectos electrnicos
tienen similitudes sustanciales. Dado que la gestin del proyecto se indica para los
proyectos tradicionales, parecera razonable argumentar que tambin estara indicada para los grandes proyectos electrnicos Los pequeos proyectos electrnicos
tienen caractersticas especiales que los diferencian de los proyectos tradicionales.
Sin embargo, incluso en el caso de los pequeos proyectos electrnicos, la planea-
PARTE TRES
526
electrnicos
limitado
Ponoromo de~riplivo
M&ddq en mese$
blancos de calioad
M&diada eo dfo$,
semoneis o me$es
En!O(;oda sobre control
derle~o
l:xplcito
Gestin de ~os
VidQ
inedio
De6al21'1\,eS
o m6,$ tl'to
de los enfregable
Riguroso
llet~olimentacin
Requere. esfuerzo
prooctivo
Expedito
Seobt1ene
autom4fi~mente <Je kl
Se obtiene tanto de
molltc aufbmltica como
p.or medio de sol1citud
de retroalimentacin
cin se debe realizar, se deben considerar los riesgos, se debe establecer un prog::ma y se deben definir controles de modo que eviten la confusin, la frustracin
fracaso.
en:ei 1IIUII actual,. ali,nentado por laWeb y centrado en lo red, uno necesito saber mudu, dt muchos femas.*
"'
17.3.1
Los actores
CAPTULO 17
527
res y sus papeles usualmente son bastante diferentes. Entre las muchas habilidades
que se deben distribuir entre los miembros del equipo !Web se encuentran: ingeniera del software basada en componentes. realizacin de redes, diseo arquitectnico y de navegacin, lenguajes/estndares de Internet, diseo de interfase humana,
diseo grfico, disposicin del contenido y pruebas de las webApps.
Los siguientes papeles3 se deben distribuir entre los miembros del equipo !Web:
Desarrolladores/ proveedores de contenido. Dado que el contenido controla inherentemente las WebApps, una funcin del equipo !Web se debe enfocar en la
generacin o recopilacin del contenido. Recurdese que el contenido abarca un
amplio abanico de objeto,s' de datos, por ello los desarrolladores/proveedores de
contenido pueden provenir de diversos mbitos (no de software).
Editores de web. El variado contenido que generan los respectivos desarrolladores/ proveedores se debe organizar para incluirlo en la WebApp. Adems. alguien
debe actuar como conexin entre el equipo tcnico que disea la WebApp y los desarrolladores/proveedores de contenido sin conocimientos tcnicos. Este papel lo
satisface el editor de Web, quien debe entender tanto el contenido como la tecnologa de la WebApp.
Ingeniero Web. El ingeniero Web se involucra en un amplio rango de actividades durante el desarrollo de una WebApp, que incluyen la obtencin de requisitos, el
modelado de anlisis, el diseo arquitectnico, de navegacin y de interfase, la
implementacin de la WebApp y las pruebas. El ingeniero Web tambin debe tener
una slida comprensin de las tecnologas de componentes, de las arquitecturas
cliente/servidor, de HTML/XML y de tecnologas de bases de datos, y un conocimiento prctico de los conceptos multimedia. de las plataformas hardware/software, de la seguridad de redes y de cuestiones de apoyo a sitios Web.
Expertos en dominios empresariales. Un experto en dominio empresarial
debe ser capaz de responder todas las preguntas relacionadas con metas, objetivos
y requisitos empresariales relacionados con la WebApp.
Especialista de soporte. Este papel se asigna a la persona (personas) que es
(son) responsable(s) del apoyo continuo a la WebApp. Puesto que las WebApps evolucionan continuamente, el especialista de soporte es responsable de las correcciones,
adaptaciones y mejoras al sitio, que incluyen actualizaciones de contenido, implementacin de nuevos procedimientos y formas, y cambios al patrn de navegacin.
Administrador. Usualmente llamado "web master", esta persona tiene la responsabilidad de la operacin diaria de la WebApp, lo que incluye: desarrollo e implementacin de polticas para la operacin de la WebApp, establecimiento de procedimientos de soporte y retroalimentacin, implementacin de seguridad y derechos de
acceso, medicin y anlisis de trfico del sitio Web coordinacin de los procedimientos de control de cambios (captulo 27) y coordinacin con el especialista de
3
528
PARTE TRES
soporte. El administrador tambin puede estar involucrado en las actividades tcnicas que realizan los ingenieros Web y los especialistas de soporte.
En el captulo 21 se tratarn con cierto detalle los lineamientos para la construcci:exitosa de los equipos de ingenieria del software. Pero, estos lineamientos se apLcan en el apretujado mundo de los proyectos WebApp? La respuesta es s.
Hace algn tiempo, en su xito de librera acerca de la industria de la comp1..
tacin, Tracy Kidder [KIDOO] cuenta la historia del heroico intento de una compafde computacin por construir una computadora para enfrentar el reto de un nue,
producto que fabric un competidor ms grande. 4 La historia es una metfora del e(F
po de trabajo, del liderazgo y del aplastante estrs que todos los tecnlogos encuer
tran cuando los proyectos crticos no avanzan tan suavemente como se plane.
Un resumen del libro de Kidder dificilmente le hace justicia, pero los siguiente
puntos clave [PICOl] tienen particular relevancia cuando una organizacin constr..
ye un equipo de ingeniera Web:
se debe establecer un conjunto de directrices de equipo. Dichas direttces abarcan lo que se espera de cada persona, cmo se lidiar con los problemas
qu mecanismos existen para mejorar la efectividad del equipo conforme avanza .
proyecto.
El liderazgo fuerte es una obligacin. El lder del equipo debe guiar medite el ejemplo y el contacto. Debe mostrar un grado de entusiasmo que impulse a
otros miembros del equipo "a endosarse" psicolgicamente al trabajo que enfren
El respeto hacia los talentos individuales es crucial. Nadie es bueno .
todo. Los mejores equipos utilizan las fortalezas individuales. Los mejores lderes
equipo permiten que los individuos tengan libertad para seguir una buena idea.
Cada miembro del equipo se debe comprometer. El protagonista prina
en el libro de Kidder le llama a esto "endoso".
Es fcil comenzar, lo dificil es mantener el impetu. Los mejores equipos mr
dejan que un problema "insuperable" los detenga. Los miembros del equipo desa.llan una solucin "lo suficientemente buena" y proceden, con la esperanza de que
impetu del progreso pueda conducirlos a una solucin todava mejor en el largo pla.:.
Una vez realizada la formulacin y que se han identificado los requisitos bsicos
la WebApp, la empresa debe elegir una de dos opciones de ingeniera Web: l
WebApp es subconlratada (outsourced): la ingeniera Web la realiza un tercer prcr ~
4
El libro de Kidder, The Sou/ of a New Machine, originalmente publicado en 1981, es una leciu:-.
tamente recomendable para cualquiera que intente realizar una carrera en la computacin y~
quienes ya la tienen!
CAPTULO 17
529
dor con experiencia, talento y recursos con los cuales no cuente la empresa; o 2) la
WebApp la desarrollan en casa ingenieros Web que sean empleados de la empresa.
Una tercera opcin (hacer algn trabajo de ingeniera Web en casa y subcontratar
otro trabajo) tambin es una posibilidad.
"(om&obsecv lbomas tlobbs en el siglo XVII, lo vida bojo los regios de los ponctdlos es slitorlo, pobre, pelig,ost,
atl8I 'f cerio. Lo vida en un PfOyecfo de softwore que corre pobremente; es solitooo, pobt&, pellgtow, (tuel y(Gil
a} Desarrollo en caso
bl De.arrollo subcontratodo
530
17 .4. l
No se supongo que,
puesto que se ha
subcontramdo uno
WebApp, las responsabilidades son
mnimos. Oe hecho,
es probable que se
requieron ms, no
menos, supervisin y
gestin.
. . . ~ de lortune SOO hon descubierto ol software como un moclelo de semcio (subt:onb'otlldol yIS16a
Estas preguntas no siempre son fciles de contestar, pero vale la pena considera:
algunos lineamientos.
Inicio del proyecto. Si la subcontratacin se elegir como la estrategia para desarrollar la WebApp, la organizacin debe realizar una serie de tareas antes de
buscar una empresa subcontratista que haga el trabajo:
Algunos personas
argumentan que et
diseo aproximado
es innecesario. Vase
como uno primero
ofer/tJ que el
proveedor subcontrotis/tJ puede modificar
y me;orar. Al menos
est comunicando sus
ideos acerco de aqu
se debe parecer el
resu/tudo final.
Aunque es dificil encontrar datos industriales confiables, puede afirmarse que este porcentaje :::t
considerablemente mayor que el que se observa en el trabajo de software convencional. En el ca,~
tulo 23 se ofrece una exposicin adicional acerca de la subcontratacin.
531
3. Elaborar un programa aproximado que incluya no slo las fechas finales de entrega, sino tambin fechas clave. Las fechas clave se deben adjuntar a las versiones de entrega (incrementos) de la WebApp conforme sta evolucione.
tista. En esencia, esta tarea aborda qu informacin, contactos y otros recursos se requieren de ambas organizaciones.
a varios
stas?
Seleccin entre los subcontratis tas candidatos. En los ltimos aos han surgido miles de compaas de "diseo Web" dedicadas a ayudar a las empresas que
desean establecer una presencia Web o aventurarse en el comercio electrnico.
Muchas se han vuelto adictas al proceso de !Web, pero muchas otras son poco ms
que hackers (intrusos informticos). Con la finalidad de elegir desarrolladores Web
candidatos. el contratante debe realizar algunas diligencias obligadas: 1) entrevistar
a los clientes antiguos para determinar el profesionalismo del vendedor Web, as
como su habilidad para cumplir con compromisos de plazos y costos, y su destreza
para comunicarse efectivamente; 2) determinar el nombre del ingeniero(s) Web jefe
de la empresa subcontratista para buscar proyectos anteriores exitosos (y, despus,
asegurarse de que esta persona tenga la obligacin contractual de estar involucrada
en su proyecto); y 3) examinar cuidadosamente ejemplos del trabajo del subcontratista que sean similares en apariencia y sentido (y rea de negocios) a la WebApp que
ser contratada. lncluso antes de que se ofrezca una solicitud de presupuesto, una
entrevista personal puede ofrecer un discernimiento sustancial de la "conexin"
entre el contratante y el subcontratista.
,a p o p ~, obtienes monos.
George Peppsd en el papel del <oronel John ..,Hannlal" Smith ,t1(serie televislva "- le, .._.,
Valoracin de la validez de las cotizaciones y la confiabilidad de las estimaciones. Puesto que existen relativamente pocos datos histricos y que el mbito de las WebApps es fluido en forma notoria, la estimacin es inherentemente res6
532
PARTE TRES
gosa. Por esta razn, algunos proveedores incorporarn mrgenes de seguridad sustanciales en cotizaciones para un proyecto. Esto es comprensible y apropiado. L:
pregunta no es si se ha obtenido la mejor solucin por la inversin. Ms bien, las pre
guntas deben ser:
La cotizacin de la WebApp ofrece un rendimiento sobre la inversin, direa...
Comprensin del grado de gestin del proyecto que puede esperar o reah
zar. La formalidad asociada con las labores de gestin del proyecto (que realizan
proveedor y la organizacin contratante) es directamente proporcional al tamar
costo y complejidad de la WebApp. Respecto a proyectos complejos y grandes se
necesario elaborar un programa del proyecto que defina las tareas del trabajo, .
puntos de comprobacin, el aseguramiento de la calidad del software, los product
de trabajo de ingeniera, los puntos de revisin del cliente y los hitos importantes
proveedor y el contratante tendrn que valorar el riesgo conjuntamente y elabo~
planes para mitigar, monitorear y manejar los riesgos considerados importanlf...:.
Los mecanismos para asegurar la calidad y el control de cambios se debern defi~
explcitamente por escrito. Se debern establecer mtodos para la comunicac
efectiva entre el contratante y el proveedor.
,,
&'
c&v1
En lo gestin del
mbito se congela el
trobojo que vaya o
reonzorse en un
ixremento. los
a::ibios se demoran
b::sm el 59riente
immenlo de lo
Evaluacin del programa del proyecto. Dado que los programas de desarro
de WebApps abarcan un periodo relativamente corto (por lo general menos de u:o dos meses para que se entregue el incremento), el programa para el desarro
debe tener una dosificacin muy precisa. Es decir: las tareas de trabajo y los h
menores se deben programar en un cronograma diario. Esta dosificacin prea:;
permite, tanto a la organizacin contratante como al subcontratista, reconoce:
hoja suelta de la agenda antes de que amenace la fecha de finalizacin.
Gestin del mbito. Como es enormemente probable que el mbito cambiar ce
forme avance el proyecto de la WebApp, el modelo de proceso IWeb es adaptable
incremental. Esto permite que el equipo de desarrollo del subcontratista "congele
mbito para un incremento, de modo que se pueda crear una liberacin operativa
la WebApp. El siguiente incremento puede abordar cambios en el mbito que ha
sugerido una revisin del incremento precedente, pero una vez que comience
segundo incremento el mbito nuevamente se "congela" de manera temporal. Es
enfoque permite que el equipo de la WebApp trabaje sin tener que acomodar tr
corriente continua de cambios, pero al mismo tiempo reconoce la evolucin cor
nua caracterstica de la mayora de las WebApps.
Los lineamientos sugeridos lneas atrs no intentan ser un recetario a prueba
tontos para la produccin a tiempo de WebApps de bajo costo. Sin embargo, ayuc..
CAPTULO 17
533
di, comerci ~ c a es
fa f.diodo... l trabajo
los usuorios pc!ll'$Ol)(lliCl!l'I el
Doug: Cloro.
534
PARTE TRES
Es importante
reconocer que los
posos analizados en
esta seccin se
pueden reo/izar rpidamente. En ningn
caso lo p/oneocin
/Web poro proyecros
de es/lJ tamao romo
ms del 5por ciento
del esfuerzo del
proyecro globo/.
Entender el mbito, las dimensiones de cambio y las restricciones del proyecto. Ningn proyecto, sin importar cun apretada sea la restriccin del tietr.
puede comenzar mientras el equipo del proyecto no entienda qu debe construir :.A
recopilacin de requisitos y la comunicacin con el cliente son precursores esenc
les para la planeacin efectiva de la WebApp.
Definir una estrategia de proyecto incremental. Ya se ha sealado que
WebApps evolucionan con el tiempo. Si la evolucin es descontrolada y catica
probabilidad de un resultado exitoso es pequea. Sin embargo, si el equipo esta1-.
ce una estrategia de proyecto que defina incrementos (liberaciones) de WebApp
proporcionen contenido til y funcionalidad a los usuarios finales, el esfuerz,..
ingeniera puede enfocarse con mayor facilidad.
Realizar anlisis de riesgo. En el captulo 25 se presenta una exposicin dd>llada del anlisis de riesgo para proyectos tradicionales de ingeniera del softwa.--c
Todas las labores de gestin de riesgo se realizan para proyectos IWeb, pero su er-:
que se abrevia.
Los riesgos que entraan el programa y la tecnologa dominan la preocupac
de la mayora de los equipos de ingeniera Web. Entre las muchas preguntas rela...
nadas con el riesgo que el equipo debe formular y responder estn: Los incremer
WebApp planeados pueden entregarse en los plazos definidos? Estos incremer
proporcionarn valor subsecuente para los usuarios finales mientras se realiza
ingeniera de incrementos adicionales? Cmo impactan las fechas de entrega
solicitudes de cambios? El equipo comprende los mtodos, tecnologas y he
mientas de ingeniera Web requeridos? La tecnologa disponible es adecuada pa:::
trabajo? Los cambios probables requieren la introduccin de nueva tecnologa?
Desarrollar una estimacin rpida. El eje de la estimacin para la mayora
los proyectos de ingeniera Web lo representan los conflictos macroscpicos, r
que los microscpicos. El equipo IWeb valora si los incrementos WebApp planea.:.
pueden desarrollarse con los recursos disponibles de acuerdo con las restriccicr
del programa definido. Esto se logra considerando el contenido y la funcin de <2
7 Aquellos lectores que no estn familiarizados con la terminologa y las prcticas bsicas de la
tin de riesgos debern consultar en este momento el captulo 25.
CAPTULO 17
535
incremento como un todo. Normalmente no se realizan rompimientos "microscpicos", funcionales o de trabajo, del incremento que sean seguidos por el clculo de
estimaciones puntuales de mltiples datos (vase el captulo 23).
Establecer un enfoque de gestin del cambio. La gestin del cambio se facilita mediante la estrategia de desarrollo incremental que se recomend para las
WebApps. Puesto que el tiempo de desarrollo para un incremento es corto, con frecuencia es posible demorar la introduccin de un cambio hasta el siguiente incremento, con la consiguiente reduccin de los efectos de demora asociados con los
cambios que se deben implementar "al vueloM En el captulo 27 se presenta la gestin de la configuracin y el contenido para las WebApps.
PARTE TRES
536
que realizan esta tarea, deben usar mediciones para mejorar el proceso de ingeniera Web y el producto. En el captulo 15 se analizaron los usos estratgicos y tcticc.:.
para la medicin de software en un contexto de ingeniera del software. Dichos USC'
tambin se aplican en la ingeniera Web.
En resumen, la medicin de software ofrece una base para mejorar el proceso ~
software, lo que aumenta la precisin de las estimaciones del proyecto, incremen
el rastreo del proyecto y mejora la calidad del software. La medicin de ingenier:
En general, el nmero
de medidos /Web que
se debe recopilar, ysu
compleiidod globo/,
debe ser direclllmenfe
propordonol o/
tomoo de Jo WebApp
nico, 2) proporcionar una base para la estimacin del esfuerzo, y .3) proporcionar Ul'l.'?
que se construir.
Las herramientas expuestas slo representan una muestra de esta categora. En casi todos los e:
sos los nombres de las mismas son marcas registradas de sus respectivos desarrolladores.
CAPTULO 17
537
En esta seccin se resume un conjunto de mediciones de esfuerzo comn y complejidad9 para las WebApps. Este conjunto puede destinarse al desarrollo de una
base de datos histrica para la estimacin del esfuerzo. Adems, la medicin de la
complejidad puede conducir a final de cuentas a una incapacidad para valorar cuantitativamente uno o ms atributos tcnicos de las WebApps discutidos en el captulo 16.
17.5.1
Los ingenieros Web dedican esfuerzo humano al realizar una diversidad de tareas de
trabajo conforme evoluciona una WebApp. Mendes y sus colegas [MENO I J sugieren
algunas posibles medidas de esfuerzo para WebApps. Algunas de (o todas) ellas
podrta registrarlas un equipo de ingeniera Web y luego aprovecharse en una base
de datos histrica con fines de estimacin (captulo 23).
Descripcin
esfuerzo de estructuracin
esfuerzo de intervinculocin
ploneocin de interfaz
construccin de interfaz
Esfuerzo de autora
Medida sugerida
Descripcin
esfuerzo de texto
esfuerzo de vinculacin
de pgina
esfuerzo de estructuracin
de pgina
+ esfuerzo de
538
Descripcin
esfuerzo de digitalizacin de
medios audiovisuales
Autora de programas
Medida sugerida
Descripcin
esfuerzo de programacin
esfuerzo de reutilizacin
HTMl, Javo
o implementaciones de leng_
Mediciones Web
Objetivo: Valorar lo formo en lo que se utilizo
uno WebApp, los categoras de usuarios y lo
facilidad de uso de lo WebApp.
ientas representativos10
, desarrollada por dicktracks.com
.-.clicktracks.com), es una herramienta de anlisis
archivos de acceso (log) que muestra el
=:r,x>rlamiento del visitante al sitio Web directamente
cginas de ste.
ce, desarrollada por Coremetrics
-.Coremetrics.com), es representativa de muchas
-:e--omientas que recopilan datos con los cuales se
539
En ocasiones, la mejor forma de aprender cmo hacer algo correctamente es examinar cmo no hacerlo! Durante la dcada pasada, muchas WebApps fracasaron
porque 1) un descuido del proyecto y el cambio en los principios de gestin (de cualquier manera informales) result en un equipo de ingeniera Web que "rebot en las
paredes"; 2) un enfoque ad hoc para el desarrollo de la WebApp fall y no produjo un
sistema operable; 3) un enfoque desdeoso hacia la recopilacin y anlisis de requisitos fracas en producir un sistema que satisfaciera las necesidades del usuario; 4)
un enfoque incompetente para el diseo fracas al intentar producir un desarrollo de
la WebApp que fuese utilizable, funcional, extensible (sustentable) y verificable; 5) un
enfoque equivocado para las pruebas fracas para producir un sistema que funcionase antes de su introduccin.
Con estas situaciones en mente, tal vez valga la pena considerar un conjunto de
las "peores prcticas" en la ingeniera Web, adoptadas de un articulo de Tom Bragg
[BRAOO]. Si su proyecto electrnico muestra cualquiera de ellas, es necesaria una
accin correctiva inmediata.
Peor prctica # 1: Se tiene una gran idea, as que se puede comenzar a construir
la WebApp ahora. No es necesario preocuparse en considerar si la WebApp est justificada por el negocio, si los usuarios realmente querrn usarla, si se comprenden
los requisitos del negocio. El tiempo es corto, tiene que comenzarse.
Realidad: Tmense unas cuantas horas o das y elabrese un caso de negocios
para la WebApp. Asegrese de que la idea la apoyan quienes la financiarn y quienes la usarn.
1O Las herramientas expuestas el autor no las respalda , slo representan una muestra de las herramientas incluidas en esta categora. En casi todos los casos los nombres de las herramientas son
marcas registradas de sus respectivos desarrolladores
540
PARTE TRES
Peor prctica #2: Las cosas cambiarn constantemente, as que no tiene caso tn:
tarde comprender los requisitos de la WebApp. Nunca se escriba algo (prdida de tierr
po). El apoyo debe basarse exclusivamente en la palabra oral.
Realidad: Es cierto que los requisitos de la WebApp evolucionan conforme cor
tinan las actividades de ingeniera Web. Tambin es ms rpido y simple obtenc
informacin de manera verbal. Sin embargo, un enfoque desdeoso respecto de
recopilacin y el anlisis de requisitos es un catalizador para ms cambio (inneu:
sario) todava.
Peor prctica #5: Pruebas? Por qu molestarse? Se le dar a unos cuantos UStarios finales y se dejar que ellos digan qu funciona y qu no.
Realidad: Con el tiempo, los usuarios finales s realizan "pruebas" exhausti
pero estn tan enojados por la falta de confiabilidad y el pobre desempeo que
dejan mucho antes de que los problemas sean corregidos (nunca regresan) .
En los captulos que siguen se considerarn los mtodos de ingeniera Web ;;ayudarn a evitar estos errores.
CAPTULO 17
541
El equipo !Web lo integra un grupo de miembros tcnicos y no tcnicos organizados en una forma que les brinda considerable autonoma y flexibilidad. Durante la
ingeniera Web se requiere gestin del proyecto, pero las tareas correspondientes
estn abreviadas y son considerablemente menos formales que las aplicadas en los
proyectos convencionales de ingeniera del software. Muchos proyectos WebApp se
subcontratan, pero existe una tendencia creciente hacia el desarrollo de WebApps en
casa. La gestin del proyecto para cada enfoque difiere tanto en estrategia como en
tcticas.
Las mediciones de la ingeniera Web estn en desarrollo, pero tienen el potencial
para ofrecer una indicacin de la calidad de la WebApp, proporcionar una base para
la estimacin del esfuerzo y permitir vislumbrar el xito de la WebApp desde el punto
de vista de los negocios.
[BRAOOJ Bragg, T., "Worst Practices for e-Business Projects: We Have Met the Enemy and He Is
Us!", Cutter IT Joumal, vol. 13, nm. 4, abril de 2000, pp. 35-39.
[CON02] Constantine, L. y L Lockwood, "User-centered Engineering for Web Applications", en
IEEE Software, vol. 19, nm. 2, marzo-abril de 2002, pp. 42-50.
[ETS02] Eisenberg, B., "How to lnterpret Web Metrics", en ClickZToday, marzo de 2002, disponible en http://www.clickz.com/sales/traffic/article.php/992351 .
[FUC02a] Fuccella, J., J. Pizzolato y J. Franks, "Finding Out What Users Want from your Web
Site", 1BM developerWorks, 2002, http://www-106.ibm.com/developerworks/library/moderator-guide/requirements.html.
[FUC02b] Fuccella, J. y J. Pizzolato, "Giving People What They Want: How to Involve Users in
Site Design", IBM developerworks, 2002, http://www- 106.ibm.com/developerworks/
library / design-by-feedback/ expectations.html.
[GNA99J Gnado, C. y F. Larcher, "A User-Centered Methodology for Complex and
Customizable Web Applications Engineering", en Proc. First ICSE Workshop in Web
Engineering, ACM, Los Angeles, mayo de 1999.
[HAN99) Hansen, S., Y. Deshpande y S. Murugesan, "A Skills Hierarchy for Web
Tnformation System Development", en Proc. First ICSE Workshop on Web Engineering,
ACM, Los Angeles, mayo de 1999.
[INA02J Inan, H. y M. Kean, Measuring the Success ofYour Web Site, Longman Publishing,
2002.
[KlOOOJ Kidder, T., The Soul of a New Machine, Back Bay Books (edicin reimpresa), 2000.
[KULOOJ Kulik, P. y R. Samuelsen, "e-Project Management for a New e-Reality", Project
Management Institute, diciembre de 2000, http://www.seeprojects.com/e-Projects/eprojects.html.
[LOW98J Lowe, D. y W. Hall (eds.), Hypertext and the Web-An Engineering Approach, Wiley,
1998.
[MENO!] Mendes, E., N. Mosley y s. Counsell, "Estimating Design and Authoring Effort",
en IEEE Multimedia, enero-marzo de 2001 , pp. 50-57.
[NOBOIJ Nobles, R. y K. Grady, Web Site Analysis and Reporting, Premier Press, 2001.
[PAT02] Patton, S., "Web Metrics That Matter", en ero, 15 de noviembre de 2002. disponible en http://www.computerworld.com / developmenttopics/websitemgmt/story/
o, 10801,76002,00.html.
[PIC01J Pickering, C., "Building an Effective E-Project Team", en E-Project Management
Advisory Service, Cutter Consortium, vol. 2, nm. 1 2001, http://www.cutter.com/
consortium.
[POW98l Powell, T.A., Web Site Engineering, Prentice Hall, 1998.
542
PARTE TRES
[RIGOI] Riggins, F. y S. Mitra, "A Framework for Developing E-Business Metrics Through fun~
nality Interaction", enero de 200 I, se puede descargar de http://digitalenterprise
org/ metrics/metrics.html.
[STE02J Sterne, J., Web Metrics: Proven Methods far Measuring Web Site Success, Wile'!
2002.
[TIL99) Tilley, S. y S. Huang, "On the Emergence of the Renaissance Software Engineer'
Proc. 1st TCSE Workshop on Web Engneerng, ACM, Los Angeles, mayo de 1999.
17.9. Revisense las caracterlsticas de los equipos de desarrollo gil analizados en el capitule
Se advierte que una organizacin en equipo gil es apropiada para la !Web? El lector realiza:z
algn cambio a la organizacin para el desarrollo de la WebApp?
1 7 .1 O. Descrbanse cinco riesgos asociados con la subcontratacin del desarrollo de Web ~
17 .11. Descr!banse cinco riesgos asociados con el desarrollo en casa de las WebApps.
17 .12. Considrense las mediciones para el esfuerzo de ingeniera Web tratadas en la secc
17.5.1. Intntese desarrollar cinco o ms mediciones adicionales para una o ms categoras
17. 13. La facilidad de navegacin a travs de un sitio Web es un indicador importante de la e
de la WebApp. Desarrllense dos o tres mediciones con las cuales pudiera indicarse la acilida<i
navegacin.
17 .14. Aprovechando una de las referencias sugeridas en la seccin 17.5.2, comente cm1.,
pueden aprovechar las mediciones con valor en los negocios para apoyar la toma de decisio:"'
pragmtica en stos.
CAPTULO 17
543
Flor (Web Business Engineering, Addison-Wesley, 2000) aborda el anlisis de negocios y las
preocupaciones relacionadas que permiten al ingeniero Web comprender mejor las necesidades
del cliente. La facilidad de uso de la WebApp es un concepto que subyace a mucha de la informacin definida como parte de la formulacin y la recopilacin de requisitos. Krug y Black
(Don't Make me Think: A Common sense Approach to Web Usability, Que Publishing, 2000) contiene muchas directrices y ejemplos que pueden ayudar al ingeniero Web a traducir los requisitos del usuario en una WebApp efectiva.
La gestin de proyecto para los proyectos IWeb parte de muchos de tos mismos principios y
conceptos aplicables en proyectos de software convencional. Sin embargo, agilidad es un lema.
wallace (Extreme Programmingfor Web Projects, Addison-Wesley, 2003) describe cmo se puede
aprovechar el desarrollo gil para la JWeb y contiene anlisis tiles de conflictos de gestin de
proyectos. Shelford y Remillard (Real Web Project Management, Addison-Wesley, 2003),
O'Connell (How to Run successfu/ Projects in Web Time, Arthec House, 2000}. Freidlein (Web
Project Management. Margan Kaufman, 2000) y Gilbert (90 Days to IAunch: Internet Projects on
Time and on Budget, Wiley, 2000) tratan una amplia variedad de temas de gestin de proyectos
para !Web. Whitehead (Leading a Software Development Team, Addison-Wesley, 200 t) presenta
muchos lineamientos tiles que pueden adaptar los equipos de ingeniera Web.
Las tcnicas para usar mediciones Web en la toma de decisiones empresariales se presentan en libros como los de Steme [STE02]. lnan [INA02], Nobles [NOB01l y Menasce y Almeida
(Capacity Planningfor Web services: Metrics, Models and Methods, Prentice-Hall, 2001 ). Las "peores prcticas" son consideradas por Ferry y Ferry {77 sure-Fire Ways to Kili a SOjtware Project,
iUniverse.com, 2000).
En Internet est disponible una amplia variedad de fuentes de informacin acerca de formulacin y planeacin para ingeniera Web. Una lista actualizada de referencias en la World Wide
Web, relevante para la formulacin y la planeacin, se encuentra en el sitio Web de SEPA:
http://www.mhhe.com/pressman.
CAPTULO
18
CONCEP'l'OS
CLAVE
anlisis
de navega<ln .56l
anlisis
le relacin 560
6{1,ol de datos, .552
ARN .. . 560
COSOS de SO ,$47
lrlll'(!UQ
de Uiarl9 , , .546
modelo
de anUslf , , .S45
modelo de
configuracin .5S9
modelo
de contenido .SS 1
modelo
de interaccin . .554
modelo
relaciones de
contenido 552
'
>
>
CAPTULO 18
545
El anlisis de requisitos para las WebApps abarca tres grandes tareas: formulacin,
recopilacin de requisitos, 1 y modelado de anlisis. Durante la formulacin se identifican la motivacin (metas) y los objetivos bsicos para la WebApp, y tambin se definen las categoras de usuarios. Cuando comienza la recopilacin de requisitos se
intensifica la comunicacin entre el equipo de ingeniera Web y los accionistas (por
ejemplo, clientes, usuarios finales). Los requisitos de contenido y funcionales se enlistan y se desarrollan los escenarios de interaccin (casos de uso) escritos desde el
punto de vista del usuario final. La intencin es establecer una comprensin bsica
de por qu se construir la WebApp, quin la usar y qu problema) resolver a sus
usuarios.
1 En el capitulo 17 se abordan con detalle la formulacin y la recopilacin de requisitos.
54
PARTE TRES
"Los ptindpios de ingeniera acerca de planear antes de disear y diseor antes de cnslruir han resistido trufa transicntNno16gkoprevio; tambinsobrevivirn oesto transicin."
Y/Jltts ffphrey
18.1.1
La jerarqua de usuario
Las categoras de usuario (con frecuencia llamados actores) que se muestran e.:
la figura 18.1 indican la funcionalidad que ofrecer la WebApp; adems, sealan
necesidad de que se desarrollen casos de uso para cada usuario final (actor) an~
do en la jerarqua. En la misma figura, el usuario de Hogarsegurolnc.com en
parte superior de la jerarqua representa la clase (categora) de usuario ms gene.
y se refina niveles abajo. Un visitante es un usuario que visita el sitio pero no ser
gistra. Tales usuarios usualmente buscan informacin general, comparan compras
de alguna otra forma estn interesados en contenido o funcionalidad "gratuitos"
usuario registrado dedica tiempo para ofrecer informacin y se le considera
contacto (junto con otros datos demogrficos que solicitan las entradas de los i
mularios). Las subcategoras para los usuarios registrados incluyen:
Jerarqua de
usuarios para
Usuario de
HogarSegurolnc.com
HogarSegu-
rolnc.com.
Visitante
Usuario
registrado
Cliente
nuevo
Personal
de servicio
al cliente
Cliente
existente
CAPTULO 18
547
funcionolidod dej)efsonolizocin _ _ _ _ _
... ---,
L---L ----------------,
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
Las tcnicas para desarrollar casos de uso se analizaron con detalle en capllulos anteriores de este
libro (vanse los captulos 7 y 8).
Aunque es posible desarrollar descripciones mas fonnales de casos de uso, la necesidad de agilidad
para la !Web con frecuencia excluye este enfoque
548
Conforme aece el
tamao de uno
WebApp, ye/
modelado de anlisis
se vuelve ms
riguroso, los cosos de
uso preliminares
presentados aqu
sern expandidos poro
ajustarse de manero
ms cercana al
formato sugerido en
la seccin 8.5 del
capftu/o 8.
nea instalar Hogarseguro: nmero de habitaciones y su tamao, tipo de habitacin, nmero de pisos, nmero de puertas exteriores y ventanas. La WebApp permitir construir U:"
plano de la casa aproximado al conjuntar formas delineadas de las habitaciones para cada piso. El usuario ser capaz de nombrar al plano de la casa y guardarlo para una refe
rencia futura (vase caso de uso: guardar conjiguradn).
caso de uso: seleccionar componentes HogarSeguro
Entonces la WebApp recomendar componentes de producto (por ejemplo: paneles d.!
control, sensores, cmaras y otras caractersticas (por ejemplo, funcionalidad basada ~
PC implementada en software) para cada habitacin y la entrada exterior. Si el usuario snlicita opciones, la WebApp las proporcionar si existen. El usuario obtendr informac10.
descriptiva y de precios para cada componente de producto. La WebApp crear y mostrar una factura de materiales conforme se seleccionen varios componentes. El usua,..
tambin podr nombrar la factura de materiales y guardarla para referencia futura (vas,
caso de uso: guardar configuracin).
Caso de uso: guardar configuracin
La WebApp permitir guardar los datos de personalizacin de modo que el usuario puec
ro que eligi para l. Lograr esto requiere que el usuario proporcione un identificador.:.co para el plano de la casa y la factura de materiales. Tambin proporcionar u-u
contrasea (password) de configuracin especial que debe validarse antes de que puec
tener acceso a la informacin guardada.
CAPTULO 18
549
describo.-,
,,,,_,.o1
S.horon: Som, hoJ sido urr tato lac6nico t'1 tU$ d.crip:,
'
<
PARTE TRES
550
nera externa. Los casos de uso se organizan en paquetes funcionales, y cada paquete se valora [CONOOJ para garantizar que es:
Cmo se
valoran los
paquetes de casos
de uso agrupados
por la funcin
usuario?
18 2 EL MODELA,PQ PI
1
#Xiris ;;;wf'.iP,$
Qu tipos
de activida
des de anlisis
ocurren durante el
modelado de una
WebApp?
CAPTULO 18
551
La informacin recopilada durante las tareas de estos cuatro anlisis se debe re-
visar, modificar cuando se requiera y luego organizarse en un modelo que pueda pasarse a los diseadores de WebApp.
El modelo en s mismo contiene elementos estructurales y dinmicos. Los elementos estructura/es identifican las clases de anlisis y los objetos de contenido que se
requieren para crear una WebApp que satisfaga las necesidades de los clientes. Los
elementos dinmicos del modelo de anlisis describen cmo interactan los elementos estructurales, entre ellos y con los usuarios finales .
.,, M[Lcs WebAp,$] exilosos permiten que los clientes solisfagon mejor sus necesidades, ms rpido oms baroto por s
, mispos, que el ttobajor a 1Jovs del empleado [de una compaa] paro los usuarios finules."
El modelo de contenido contiene elementos estructurales que proporcionan una importante visin de los requisitos de contenido para una WebApp. Dichos elementos
estructurales incluyen objetos de contenido (por ejemplo: texto, imgenes grficas,
fotografias, imgenes de video, audio) que se presentan como parte de la WebApp.
Adems, el modelo de contenido incluye todas las clases de anlisis: entidades visibles para el usuario que se crean o manipulan conforme ste interacta con la WebApp.
una clase de anlisis incluye atributos que la describen, operaciones que afectan el
comportamiento requerido de la clase y colaboraciones que permiten la comunicacin de la clase con otras clases.
Al igual que otros elementos del modelo de anlisis, el modelo de contenido se
deriva a partir de un examen cuidadoso de los casos de uso desarrollados para la
WebApp. Los casos de uso se analizan gramaticalmente para extraer objetos de contenido y clases de anlisis.
18.3.1
'
c&v1
...aieto de contenido
~ ..ill~uier artculo de
~ocin cohesiva
se presentar a un
.s.xirio final. Usual
~te, los objetos de
::'lfenido se extroen
los casos de uso.
552
PARTE TRES
Ser capaz de obtener informacin descriptiva y de precios para cada componente de producto.
Aunque no existe referencia directa al contenido. est implcita. El ingeniero Wet
podra reunirse con el autor del caso de uso y comprender en forma ms detallad..
lo que significa "informacin descriptiva y de precios". En este caso, el autor del cas...
de uso puede indicar que "informacin descriptiva" incluye 1) una descripcin general del componente en un prrafo; 2) una fotografia del componente; 3) una descripcin tcnica del componente en varios prrafos; 4) un diagrama esquemtico de
componente que muestre cmo encaja en un sistema HogarSeguro tpico; y 5) u:breve video que muestre cmo instalar el componente en una configuracin doms
tica tpica.
Es importante advertir que cada uno de estos objetos de contenido debe desarrc
liarse (con frecuencia a travs de desarrolladores de contenido que no son ingenie
ros Web) o adquirirse para integrarlo en la arquitectura de la WebApp (analizada e
el captulo 19).
i,
&l
~~
C~VE
Un rbol de dotos
represento uno
jerorquo de objetos de
contenido.
DescripclnD!Mrkefing
rbol de
datos para un
componente
porteNmero
Fotogrof!o
porteNombre
Descripc611Tcnlco
HogarSeguro.
Esquema
componente
descripcin
\/ideo
precio
PrecioMoyoristo
PrecioMinoristo
CAPTULO 18
553
Un rpido anlisis gramatical del caso de uso identifica dos clases candidatas (subrayadas): ComponenteDeProducto y FacturaDeMateriales. En la figura 18.4 se
muestra una primera descripcin de cada clase.
La clase ComponenteDeProducto abarca todos los componentes de HogarSeguro que se pueden comprar para personalizar el producto destinado a una instalacin particular. Es una representacin generalizada de Sensor, Cmara, Paneldecontrol y CaracteristicadeSOftware. Cada objeto de c omponenteDeProducto
contiene informacin que corresponde al rbol de datos que se muestra en la figura
18.3 para la clase. Algunos de estos atributos de clase son articules de datos sencillos o compuestos, y otros son objetos de contenido (vase la figura 18.3). Tambin
se muestran las operaciones relevantes para la clase.
La clase FacturaDeMateriales abarca una lista de componentes que cliente
nuevo ha seleccionado. FacturaDeM ateriales es en realidad un agregado de ArticuloFdM (muchas instancias de ArticuloFdM comprenden una FacturaDeMateriales): una clase que construye una lista compuesta de cada componente que se
comprar y de atributos especficos acerca del componente, como se muestra en la
figura 18.4.
4 En el captulo 8 se presentaron en forma deta llada los mecanismos para identificar y representar las
clases de anlisis. Si todava no se ha hecho, el captl.Ulo 8 debe revisarse en este momento.
554
Uhlli:i
Clases de
Foctu~DeMateriales
anlisis para
ComponentedeProclucto
el caso de
uso: seleccionar componentes
dentilcod<1r
f)f<;iOfolal
podeNmero
porteNombre
portellpo
descripcin
precio
creorNuevoArtculoO
obl'enerD<!scrtn()
obrenerEsp,!'11 cnco()
HogarSeguro.
,,"
~
&l
1
Cma!'(I
Pane1DeCon1Tol
~r
l '.~lculorPr~io{)
o
o.
l
Sensor
ogrearE'lltodaO
horrar!:ntrodoO
edlc:ir!:ntrodaO
nombreO
guorclorO
C11roctSc,ftware
ArtculQFdM
contidod
pr11cio
agr~orol&loO
l;,orrQrdefloO
18, 4 tL HPPBLP
QE;
JNTERA,cc16w
Casos de uso. Los casos de uso son el elemento dominante del modelo de i'r
raccin para las WebApps. No es raro describir 1oo o ms casos de uso cuand<'
5 Cada uno de stos es una importante notacin UML que se describi en el captulo 8.
:Piona de
lo coso
Cliente
nuevo
1 Describir
Componente
de Produelo
555
:Factura De
Materiales
1
1
Almoc4~ dt
>lana de
lo coso
1
1
1
1
:
~------+-------
:
1
1
: habilacin t Colocar
1
: habitacin
1
1en plano de
1
1 la coso
Almacn
de FdM
1
r----!-,e--,----,'----,,,--,-L-,--,--,-.,---!----'
~- _____ ~Guardar conf~urocin pion~de la planto ~ ______ ~
1
~ - - - - - - : - - - - - - : ------rar~5irofd~
1
1
t
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
anlisis (los elementos estructurales de un sistema que definen los diagramas de clase). Dado que las clases de anlisis se extraen de las descripciones de caso de uso,
existe la necesidad de garantizar que hay una forma de realizar un seguimiento entre las clases definidas y los casos de uso que describen la interaccin del sistema.
En captulos anteriores se apreci que los diagramas de secuencia proporcionan
un vnculo entre las acciones descritas en el caso de uso y las clases de anlisis (entidades estructurales). Conallen [CONOOJ seala esto cuando escribe: "La mezcla de
elementos dinmicos y estructurales del modelo [de anlisis] es el vnculo clave en
la capacidad de seguimiento del modelo y se debe considerar muy seriamente."
En la figura 18.5 se muestra un diagrama de secuencia para el caso de uso seleccionar componentes HogarSeguro. El eje vertical del diagrama muestra las acciones
que se definen dentro del caso de uso. El eje horizontal identifica las clases de anlisis que se usan conforme procede el caso de uso. Por ejemplo, un cliente nuevo primero debe describir cada habitacin de la casa (el asterisco a continuacin de "describir habitacin" indica que la accin es iterativa). Para lograr esto, el cliente nuevo
responde preguntas acerca del tamao de la habitacin, puertas y ventanas, etctera. una vez definida una habitacin, se coloca en un plano de la casa. Entonces el
cliente nuevo describe la siguiente habitacin o procede a la siguiente accin (guardar la configuracin del plano de la planta). El movimiento a travs y hacia abajo del
diagrama de secuencia enlaza cada clase de anlisis con las acciones del caso de
uso. Si en el diagrama se pierde una accin de caso de uso, el ingeniero Web debe
reevaluar la descripcin de las clases de anlisis para determinar si una o ms clases se han perdido. Es posible crear diagramas de secuencia para cada caso de uso
una vez que se definen las clases de anlisis para el caso de uso.
Diagramas de estado. El diagrama de estado UML (captulo 8) ofrece otra representacin del comportamiento dinmico de Ja WebApp conforme sucede una nter-
556
o
A
...
'
-Volida, v~orio:
Cliente
nuevo
~SOQ(O
ersonolizocin completo
L,
LJ 1"1-
...
__J volidoda
u,uorio
c;:ontro$eO volidodo
'
'
J'.r..,;oot,o,
~e6eccionor contenido
L-..J
Elmd<>,i,tooia' ~ P B,lo"
Moe,lrq; 1$lru<:eloo, 1'6,lta>
eroradd/~-,io vol,d<)do
h~: pr<e.o -.leccin llOlfl!rio
,alido/>er.!i\ali;i<:in i.o,,indo
~
descriptivo
D,,fi,,ithobil<>ticin
Hobitoein o definir
:;=,....n
~
GvoJor plqna de b ;o,o
Selec:donoc contenido
, de\criptivo
Estado ,i,~a '.ellra<lo li,to"
._
Mt.testro; ,1':dicodor olmocitnomienlQ
....
n1tod,;,/guordat hobllo<.i6n
-.l<cil)na</o "" pla09 de la ,Jonia
hoce;
Plo"9 de lo pk,,,10
~fid<>/9uordodo<:ample1lld<>
"""""
Seleco
cootr
'descr-
--
accin. Al igual que la mayora de las representaciones de modelado utilizadas eingeniera Web (o en la ingeniera del software), el diagrama de estado puede re-sentarse en diferentes grados de abstraccin. La figura 18.6 muestra la vista su
(mayor grado de abstraccin) de un diagrama de estado parcial para la interac
entre un cliente nuevo y la WebApp de Hogarsegurolnc.com.
En el diagrama de estado que se muestra se identifican seis estados observa::
externamente: validar usuario, seleccionar accin del usuario, personalizar, dejir
bitacin, construir plano de la casa y guardar plano de la casa. El diagrama de
indica las acciones que se requieren para mover al cliente nuevo de un estado a
la informacin que se muestra conforme se ingresa un estado, el procesamientc
ocurre dentro de un estado y la condicin de salida que provoca una transia...un estado a otro.
Puesto que los casos de uso, los diagramas de secuencia y los diagramas ~
tado muestran informacin relacionada, es razonable preguntar por qu son r
sarios los tres. En algunos casos no lo son. Los casos de uso tal vez sean sufi~
en algunas situaciones. Sin embargo, los casos de uso proporcionan una visi'"
bien unidimensional de la interaccin. Los diagramas de secuencia presenta:segunda dimensin que en esencia es ms de procedimiento (dinmica). Los
mas de estado proporcionan una tercera dimensin que se refiere ms al comp
miento y contiene informacin acerca de los patrones de navegacin potenG
CAPTULO 18
557
Prototipo de la interfaz de usuario. La plantilla de la interfaz de usuario, el contenido que presenta, los mecanismos de interaccin que implementa y la esttica
global de las conexiones usuario-WebApp, tienen mucho que ver con la satisfaccin
del usuario y la aceptacin global de la WebApp. Aunque se puede argumentar que
la creacin de un prototipo de interfaz de usuario es una actividad de diseo, es una
buena idea realizarla durante la creacin del modelo de anlisis. Mientras ms rpido se pueda revisar la representacin fsica de una interfaz de usuario, mayor ser
la probabilidad de que los usuarios finales obtengan lo que quieren. En el captulo 12
se aborda el anlisis de la interfaz de usuario y su diseo.
Puesto que las herramientas de desarrollo de la WebApp son abundantes, relativamente baratas y funcionalmente poderosas, es mejor crear el prototipo de la interfaz mediante tales herramientas. El prototipo debe implementar los principales vnculos de navegacin y representar la plantilla de pantalla global en gran parte como ser construida.
558
Diagrama de
actividad para la operacin calcularPrecio< ).
Compone.me~ permanecen
enliitoFdM
Como alternativo,
tambin es posible
esuibir uno simple
narracin del procesomiento oreprasenl!J
ci6n en lenguoe de
programacin de
diseo (coplulo 11 ).
Sin embargo, muchos
personas prefieren
uno representacin
grfico.
Una revisin de la clase de anlisis FacturaDeMateriales puede determinar que, con la inten...
de cohesionar, la operacin calcularPreciO() puede colocarse mejor en una clase Facturas. Esta
gerencia tiene mrito. Sin embargo, permanece dentro de la clase de anlisis FacturaDeMa
les para los propsitos de este ejemplo.
CAPTULO 18
559
Las WebApps se deben disear e implementar de forma que se acomoden a una diversidad de ambientes, tanto en lado del servidor como en el del cliente. 7 La WebApp
puede residir en un servidor que proporcione acceso va Internet, una Intranet o una
Extranet. Se deben especificar el hardware del servidor y el ambiente del sistema
operativo. Adems, se deben considerar aspectos de interoperabilidad en el lado del
servidor. Si la WebApp debe tener acceso a una gran base de datos o interoperar con
las aplicaciones corporativas existentes en el lado del servidor, se deben especificar las
interfaces apropiadas, los protocolos de comunicacin y la informacin complementaria necesaria.
El software del lado del cliente proporciona la infraestructura que permite el acceso a la WebApp desde la ubicacin del usuario. En general, el software de navegacin se utiliza para entregar el contenido y la funcionalidad de la WebApp que se
descargan del servidor. Aunque existen estndares, cada navegador tiene sus propias peculiaridades. Por esta razn, la WebApp debe someterse a una amplia prueba en cada configuracin de navegador que se especifique como parte del modelo de
conjiguracn.
En algunos casos, el modelo de configuracin no es ms que una lista de atributos
tanto del lado del servidor como del cliente. Sin embargo, para WebApps ms elaboradas, varias complejidades de configuracin (por ejemplo: distribucin de carga entre mltiples servidores, arquitecturas de cach, bases de datos remotas, mltiples servidores que sirven a varios objetos en la misma pgina Web) pueden impactar el anlisis y el diseo. Es factible aprovechar el diagrama de despliegue UML (capitulo 1O) en
situaciones en las cuales se deban considerar arquitecturas de configuracin complejas.
Los elementos del modelo de anlisis descritos en las secciones previas identifican
los elementos de contenido y funcionalidad, junto con la forma en que se utilizan para
implementar la interaccin con el usuario. Conforme el anlisis evoluciona en diseo, dichos elementos se vuelven parte de la arquitectura de la WebApp. En el contexto de las aplicaciones Web, cada elemento arquitectnico tiene el potencial de
vincularse con todos los otros elementos arquitectnicos. Pero, conforme aumenta
el nmero de vnculos, la complejidad de navegacin a travs de la WebApp tambin
crece. Entonces, la pregunta es cmo establecer los vnculos apropiados entre los
objetos de contenido y las funciones que proporcionan las capacidades que requiere el usuario.
7
El lado del servidor hospeda la WebApp y todas las caractersticas de sistema relacionadas que permiten a mltiples usuarios tener acceso a la WebApp via una red. El lado del cliente proporciona un
ambiente de software (por ejemplo, navegadores) que permite a los usuarios finales interactuar con
la WebApp en el escritorio del usuario.
560
PARTE TRES
[l.o novegodn] no slo es la accin de soltar de pgina o pgina, sino lo ideo de moverse o trltis de U'ft ujll(io de
infol"JllG(ln,"
A. R yJ. Torres
El anlisis relacin-navegacin (ARN) proporciona una serie de pasos de anlis:..
que luchan por identificar relaciones entre los elementos descubiertos como parte d
la creacin del modelo de anlisis. 8 Yoo y Bieber (YOOOO) describen un ARN del me
do siguiente:
El ARN proporciona a los analistas de sistemas una tcnica sistemtica para delerminar la
estructura de relacin de una aplicacin, lo que les ayuda a descubrir las relaciones potencialmente tiles en los dominios de la aplicacin y que se pueden implementar como
vnculos ms adelante. El ARN Lambin ayuda a determinar las estrucluras de navegacin
apropiadas sobre estos vinculos. El ARN fomenta la comprensin de los desarrolladores
de sistemas en tomo a los dominios de la aplicacin al ampliar y profundizar su modelo
conceptual del dominio. Entonces los desarrolladores pueden mejorar su implementacin
al incluir vnculos, metainformacin y navegacin adicionales.
18.7.1
Yoo
CAPTULO 18
56 1
funcin) identificado dentro del modelo de anlisis. La siguiente lista, adaptada para WebApps, es representativa [YOOOOJ :
El elemento es miembro de una categora de elementos ms amplia?
Qu atributos o parmetros se han identificado para el elemento?
Ya existe informacin descriptiva acerca del elemento? Si es as, dnde est?
El elemento aparece en diferentes ubicaciones dentro de la WebApp? Si es
as, dnde?
El elemento lo componen otros pequeos elementos? Si es as, cules son?
El elemento es miembro de una coleccin de elementos mayor? Si es as,
cul es y cul es su estructura?
Al elemento lo describe una clase de anlisis?
Otros elementos son similares al elemento considerado? Si es asi, es posible
que pudieran combinarse en un elemento?
El elemento se usa en un ordenamiento especfico de otros elementos? Su
aparicin depende de otros elementos?
Otro elemento siempre sigue a la aparicin del elemento considerado?
Qu condiciones previas y posteriores se deben satisfacer para utilizar el elemento?
Categoras de usuario especficas aprovechan al elemento? Las diferentes
categoras de usuario emplean de manera diferente al elemento? Si es as,
cmo?
El elemento puede estar asociado con una meta u objetivo de formulacin
especfico? Con un requisito WebApp especfico?
Este elemento siempre aparece al mismo tiempo que aparecen otros elementos? Si es asi, cules son los otros elementos?
Este elemento siempre aparece en el mismo lugar (por ejemplo, misma ubicacin de la pantalla o pgina) que otros elementos? Si es as, cules son los
otros elementos?
Las respuestas a stas y otras preguntas ayudan al ingeniero Web a posicionar el elemento en cuestin dentro de la WebApp y a establecer relaciones entre elementos.
Es posible desarrollar una relacin taxonmica y categorizar cada relacin identificada debido a las preguntas anotadas. El lector interesado debe remitirse a
[YOOOO] para ms detalles.
562
PARTE TRES
nido) a otro. Los mecanismos de navegacin se definen como parte del diseo. En
esta etapa, los desarrolladores deben considerar requisitos de navegacin globales.
Las siguientes preguntas se deben plantear y responder:
Qu pre
guntas se
deben plantear
para comprender
mejor los requisl
tos de navega
ci6n?
Ciertos elementos deben ser ms fciles de alcanzar (es decir, requieren menos pasos de navegacin) que otros? Cul es la prioridad de presentacin?
Ciertos elementos deben resaltarse para forzar a los usuarios a navegar en
su direccin?
Cmo se manejarn los errores de navegacin?
La navegacin hacia grupos de elementos relacionados debe ser prioritaria
sobre la navegacin hacia un elemento especfico?
La navegacin se debe lograr por medio de vnculos. de acceso basado en
bsqueda o por otros medios?
Ciertos elementos se deben presentar a los usuarios con base en el contexto
de acciones de navegacin previas?
El acceso a la navegacin debe mantenerse para los usuarios?
En cada punto de la interaccin del usuario debe estar disponible un mapa o
Mientras se analizan
los requisitos de navegacin, recurdese
que el usuario siempre
debe sober dnde
est y odnde va.
Poro lograrlo el
usuario necesito un
mapa.
men de navegacin completo (en oposicin a un simple vnculo de "retroceso" o puntero dirigido)?
El diseo de la navegacin debe nutrirse de los comportamientos de usuario
ms comnmente esperados o mediante la importancia percibida de los elementos WebApp definidos?
Un usuario puede "almacenar" su navegacin previa a travs de la WebApp
para un uso futuro expedito?
Para qu categora de usuario se debe disear una navegacin ptima?
Cmo se manejarn los vnculos externos a la WebApp? Superponiendo la
ventana de navegador existente? Cmo una nueva ventana de navegador1
Cmo un marco separado?
stas y muchas otras preguntas se deben plantear y responder como parte del ana
lisis de navegacin.
El equipo de ingeniera Web y sus participantes tambin deben determinar los re
quisitos globales para la navegacin. Por ejemplo, se proporcionar un "mapa de.
sitio" para brindar a los usuarios un panorama integral de la estructura de la WebApp~
El usuario puede realizar un "recorrido" que subraye los elementos ms importantes (objetos de contenido y funciones) disponibles? Un usuario tendr la capacidac
de acceder a los objetos de contenido o funciones con base en los atributos definidos de dichos elementos (por ejemplo, un usuario tal vez desee acceder a todas las
fotografias de una constmccin especifica o a todas las funciones que permitan e
clculo del peso)?
CAPTULO 18
563
La formulacin, la recopilacin de requisitos y el modelado de anlisis se llevan a cabo como parte del anlisis de requisitos para las WebApps. El propsito de dichas actividades es 1) describir la motivacin bsica (metas) y objetivos para la WebApp; 2)
definir las categoras de usuarios; 3) sealar los requisitos de contenido y de funcin
para la WebApp; y 4) establecer una comprensin bsica de por qu se construir la
WebApp, quien la usar y qu problema(s) les resolver a los usuarios.
Los casos de uso son los catalizadores para todos los anlisis de requisitos y actividades de modelado. Adems, pueden organizarse en paquetes funcionales, y cada
paquete se valora para garantizar que es comprensible, cohesivo, libremente acoplado y jerrquicamente superficial.
Cuatro actividades de anlisis contribuyen a la creacin de un modelo de anlisis
completo: el anlisis de contenido identifica todo el espectro de contenido que proporcionar la WebApp; el anlisis de interaccin describe la forma en la que el usuario interacta con la WebApp; el anlisis de funciones define las operaciones que se
aplicarn al contenido de la WebApp y describe otras funciones de procesamiento
independientes del contenido, pero necesarias para el usuario final; y el anlisis de
la configuracin describe el ambiente de la infraestructura en la que reside la WebApp.
El modelo de contenido describe el espectro de los objetos correspondientes que
sern incorporados en una WebApp. Dichos objetos de contenido se deben desarrollar o adquirir para integrarlos en la arquitectura de la WebApp. Es factible utilizar un
rbol de datos para representar la jerarqua de un objeto de contenido. Las clases de
anlisis (derivadas de los casos de uso} proporcionan otros medios para representar
los objetos clave que manipular la WebApp.
El modelo de interaccin se construye con casos de uso, diagramas de secuencia
UML y diagramas de estado UML para describir la "conversacin" entre el usuario y
la WebApp. Adems, se construye un prototipo de la interfaz que auxilie en el desarrollo de la plantilla y los requisitos de navegacin.
El modelo funcional describe las funciones observables para el usuario y las operaciones de clase que emplean el diagrama de actividad UML. El modelo de configuracin describe el ambiente que requerir la WebApp, tanto en el lado del servidor
como en el del cliente del sistema.
El anlisis de relacin-navegacin identifica las relaciones entre el contenido y los
elementos funcionales, definidos en el modelo de anlisis, y establece requisitos para definir vnculos de navegacin apropiados a travs del sistema. Una serie de preguntas ayudan a establecer relaciones e identificar caractersticas que influirn sobre el diseo de navegacin.
[CONOOJ Conallen, J., Building Web Applications w1th UML, Addison-Wesley, 2000.
[F. .AOIJ Franklin, S., "Planning Your Web Site with UML", webReview, disponible en
http:/ /www.webreview.com/2001 /05_18/ de\'elopers/ indexo l .shtml.
564
PARTE TRES
[SRJOI] Sridhar, M. y N. Mandyam, "E!Tective Use ofData Models in Building Web Applications
2001, disponible en http://www2002.org/CDR0M/alternate/698/.
[Y0099] Yoo, J. y M. Bieber, "A Systematic Relationship Analysis for Modeling lnformation Domains", 1999, se puede descargar de http://citeseer.nj.nec.com/312025.html.
[YOOOOJ Yoo, J. y M. Bieber, "Toward a Relationship Navigation Analysis", en Proc. 33rd Hawai:
Conf on ~stem Sdences, vol. 6, IEEE, enero de 2000, se puede descargar de www.cs.njit.edu/-bieber /pub/hicss00/INWEB02 .pdf.
18. 1 Con base en el gran abanico de recursos acerca del desarrollo de software gil disponib.e
en la Web, investguese un poco y establzcase un razonamiento en contra del modelado de
anlisis para las WebApps. Se considera que la argumentacin resultante se aplica en todos 10!:
casos?
18.2 Si fuese forzoso a llevar a cabo un "modelado de anlisis ligero" (es decir, modelado de
anlisis mnimo), qu representaciones, diagramas e informacin se definiran durante esta ac
tividad de ingeniera Web 7
18.3 Mediante un diagrama similar al mostrado en la figura 18.1, establzcase una jerarqua ....
usuario para (a) un sitio Web de servicios financieros o (b) un sitio Web de venta de libros.
18.4 Qu representa un paquete de caso de uso?
18.5 Los casos de uso o los paquetes de caso de uso se valoran para garantizar que son cor
18. 7 Represntese una jerarqua de contenido parcial y deflnanse al menos tres clases de ar.
lisis para la WebApp.
18.8 Desarrllese un diagrama de secuencia UML y un diagrama de estado UML que descr:
una interaccin especifica con la WebApp.
18.9 Considrese la interfaz existente de la WebApp. Hgase un prototipo de cambio a la in~
faz que se considere susceptible de mejorar.
18.10 Elijase una funcin observable para el usuario que ofrezca la WebApp y modlese C'
diante un diagrama de actividad UML.
18.11 Eljase un objeto de contenido o funcin que sea parte de la arquitectura de la Web,,,y respndanse las preguntas relacin-navegacin mencionadas en la seccin 18. 7.1.
18.12 Considrese la WebApp existente y respndanse las preguntas relacin-navegac:
mencionadas en la Seccin 18.7.2.
Muchos libros dedicados al modelado de anlisis para software convencional (con partiu..
nfasis en los casos de uso y la notacin UML) contienen mucha informacin til susceptible
adaptarse fcilmente a la ingeniera Web. Los casos de uso forman los cimientos del mode
565
de anlisis para \as WebApps. Los libros de Ku\ak. y sus colegas (Use Cases: Requirements tn Con
text, segunda edicin, Addison-Wes\ey. 2004), Bittner y Spence (Use Case Modeling, AddisonWesley, 2002), Cockbum (Wriling Ejfective Use Cases. Addison-Wesley, 2001), Armour y Miller
(Advanced Use-Case Modeling: Software .systems, Addison-Wesley, 2000), Rosenberg y Scott (Use
Case Driven Object Modeling with UML. A Practica/ Approcah, Addison-Wesley, 1999) y Schneider,
Winters y Jacobson (Applying use Cases: A practica/ Guide, Addison-Wesley, 1998) ofrecen una
gua valiosa en la creacin y empleo de este importante mecanismo de representacin de requisitos. Valiosas discusiones de UML han escrito Arlow y Neustadt (UML and lhe Unijied Process,
Addison-Wesley, 2002), Schmuller (Teach Yourself UML, Sams Publishing, 2002), Booch y sus colegas (The UML User Guide, Addison-Wesley, 1998), y Rumbaugh y sus colegas (The Unijied Modeling Language Reference Manual, Addison -Wesley, 1998).
Los libros dedicados al diseo de sitios Web con frecuencia contienen uno o dos captulos
que abordan temas de anlisis (aunque usualmente son discusiones superficiales). Los siguientes libros contienen uno o ms aspectos del anlisis dentro del contexto de la ingeniera Web:
Van Duyne y sus colegas (The Design of Sites, Addison-Wesley, 2002). Rosenfeld y Morville (lnfo1mation Archilecturefor lhe World Wide Web, O'Reilly & Associates, 2002), Wodtke (Tnformation
Architecture, New Riders Publishing, 2002), Garret (The Elements of User Experience: User Centered Design Jor the Web, New Riders Publishing, 2002), Niederst (Web Design in a Nutshe/1, O'Reilly
& Associates, 2001), Lowe y Hall (Hypertext and the Web: An Engineering Approach. Wilev, 1999),
y Powell (Web Site Engineering, Prentice-Hall, 1998) ofrecen una cobertura razonablemente
completa. Norris, West y Watson (Media Engineering: A Guide lo Developing Information Products,
Wiley, 1997), Navarro y Khan (Ejfective Web Design: Master lhe Essentials, Sybex, 1998) y Fleming
y Koman (Web Navigation: Designing the User Experience, O'Reilly & Associates, 1998) proporcionan gua adicional para anlisis y diseo.
En Internet hay disponible una gran variedad de fuentes de informacin acerca del modelado de anlisis para ingeniera Web. Una lista actualizada de referencias en la World Wide Web
se encuentra bajo "sol:ware engineering resources" en el sitio Web de SEPA:
CONCUTOS
CLAVE
arquted111a: dt
COllftni~Q , , ,
,586
tqllitectufG
atrlliuos
de,<alkW .$69
construccin de la We.bApp.
lograrlo. ,
dlsefio
ircult<t~ 585
diseo
de.fiQnJe~ S84
clls
de la hiterfu .J73
diseo
de IMl'ltgacin .590
diseo esttko .582
MDHOO . ..595
mtricos ... 598
patrone, ... .S94
'
CAPTULO 19
561
Cuando se aplica el diseo dentro del contexto de la ingeniera Web, se deben considerar cuestiones tanto genricas como especficas. Desde un punto de vista genrico, el diseo resulta en un modelo que gua la construccin de la WebApp. El modelo
de diseo, sin importar su forma, debe contener suficiente informacin para reflejar
cmo habrn de traducirse los requisitos de los participantes (definidos en un modelo de anlisis) en contenido y cdigo ejecutable. Pero el diseo tambin debe ser especfico. Debe abordar atributos clave de una WebApp en una forma que permita al
ingeniero Web construir y ponerla a prueba de manera efectiva.
19.1. l
En captulos anteriores se seal que el diseo es la actividad de ingeniera que conduce a un producto de gran calidad. Esto conduce a una pregunta recurrente que se
presenta en toda las disciplinas de ingeniea: qu es calidad? En esta seccin se examinar la respuesta en el contexto de la ingeniera Web.
Toda persona que haya navegado en la Web o usado una Intranet corporativa tiene una opinin acerca de lo que hace una "buena" WebApp. Los puntos de vista individuales varan enormemente. Algunos usuarios disfrutan los grficos que bailan.
otros quieren texto simple. Algunos solicitan informacin copiosa. otros desean una
presentacin abreviada. A algunos les gustan las herramientas analticas sofisticadas o
los accesos a las bases de datos, a otros les gustan las cosas simples. De hecho, la percepcin del usuario de lo que es "bueno" (Y la resultante aceptacin o rechazo de la
WebApp como consecuencia) puede ser ms importante que cualquier discusin tcnica de la calidad de la WebApp.
568
Pero cmo se aprecia la calidad de la WebApp? Qu atributos debe exhibir para lograr ser buena a los ojos de los usuarios finales y al mismo tiempo mostrar las
caractersticas tcnicas de calidad que permitirn a un ingeniero Web corregir, adaptar, mejorar y apoyar la aplicacin a largo plazo?
En realidad, todas las caractersticas generales de la calidad de software tratadas
en los captulos 9, 15 y 26 se aplican a la WebApps. Sin embargo, las ms relevantes de dichas caractersticas -facilidad de uso, funcionalidad, confiabilidad, eficiercia y facilidad de mantenimiento- proporcionan una base til para valorar la calidac.
de los sistemas basados en Web.
-si los prOdU<tos se di$eon paro enaijar mejor en las tendencias naturales del <omportllmi.nlo hul'QOII01 '"'8n<lls ..
- tsler ms solisfed101 ms <ompleto yser ms productivo."
UM/llI
rbol de
requisitos de
calidad [OI.599).
Facilidad de uso
Funcionalidad
Calidad
de lo
aplicacin Web
Confiabilidad
----==-=====
Eficiencia
--======e::::===== Rapidez
de generacin de pgina
Rapidez de generacin de grficos
Facilidad de
mantenimiento
.C::::::::
Fcil de corregir
Adopta~ildod
Extens,b,lidod
Estos atributos de calidad son muy similares a los que se presentan en los captulos 9. 15 y 26
lo tanto, se deduce que las caractersticas de calidad son universales para todo el software.
CAPTULO 19
569
Seguridad. Las WebApps se han convertido en una parte integral de las bases de
datos cruciales del gobierno y las empresas. Las aplicaciones de comercio electrnico extraen y luego almacenan informacin confidencial de los clientes. Por stas y
muchas otras razones, la seguridad de las WebApps es primordial en muchas situaciones. La medida clave de la seguridad es la habilidad de la WebApp y su ambiente
de servidor de rechazar el acceso no autorizado e impedir un franco ataque malvolo. Un anlisis detallado de la seguridad WebApp est ms all del alcance de este
libro. El lector interesado debe consultar [MCCOl]. [NOR02J o [KAL03J.
Escalabilidad. La WebApp y su ambiente de servidor pueden escalarse para manejar 100, 1 000, 10 000 o 100 000 usuarios? La WebApp y los sistemas con los cuales est conectada manejan variaciones significativas en el volumen o la capacidad
de respuesta caer catastrficamente (o cesar por completo)? No es suficiente
construir una WebApp exitosa. Es igualmente importante construir una WebApp que
pueda acomodar el peso del xito (significativamente ms usuarios finales) y volverse todava ms exitosa.
2 Desde luego, esta expectativa es irreal Las grandes WebApps deben planificar el "periodo de inactividad" para reparaciones y actualizaciones.
570
,seno g o
e o pagino c, ,to o ecturo y o navegacin?
Qu se
debera
considerar cuan
do se valore el
contenido de ca
hdad?
Todos los punteros (vnculos) proporcionan vnculos oo:informocin interesante poro los usuarios?
Es probable que lo mayora de los vnculos persistan
en lo Web?
lo WebApp est instrumentada con util idades de g~tin del sitio que incluyan herramientas para rastrear s..
uso, pruebo de vnculos, bsqueda local y seguridod?
Los antecedentes y la jerarqua de los autores del contenido se pueden identificar fcilmente?
Es posible determinar la precisin del contenido, la ltima actualizacin y
que fue actualizado?
El contenido y su ubicacin son estables (es decir, permanecern en la UR....
de referencia) 7
Adems de estas preguntas relacionadas con el contenido, se pueden aadir las
guientes:
El contenido es creble 7
El contenido es nico? Esto es, la WebApp proporciona algn beneficio ....
coa quienes la usen?
El contenido es valioso para la comunidad de usuarios a que se dirige?
El contenido est bien organizado? Est en un ndice? Es fcilmente acc
sible?
La lista de verificacin anotada en esta seccin slo representa una pequea m-
tra de los asuntos que deben abordarse conforme evolucione el diseo de una Web
Una meta importante de la ingeniera Web es desarrollar sistemas en los que se porcionen respuestas afirmativas a todas las preguntas relacionadas con la cah"'
CAPTULO 19
571
Identidad. La esttica, la interfaz y el diseo de navegacin de una WebApp deben ser consistentes con el dominio de la aplicacin para la cual se va a construir.
Un sitio Web para un grupo hip-hop indudablemente tendr una apariencia y un sentido diferente al de una WebApp diseada para una compaa de servicios financieros. La arquitectura de WebApp ser completamente diferente, las interfases se
construirn para acomodar diferentes categoras de usuarios, la navegacin estar
organizada para lograr diferentes objetivos. Un ingeniero Web (Y otros contribuyentes de diseo) deber trabajar para establecer una identidad para la WebApp por medio del diseo.
Navegabilidad. Ya se ha sealado que la navegacin debe ser simple y consistente. Tambin debe estar diseada de modo que sea intuitiva y predecible. Esto es, el
usuario debe entender cmo moverse por la WebApp sin tener que buscar vnculos
o instrucciones de navegacin.
Apariencia visual. De todas las categoras de software las aplicaciones Web son
incuestionablemente las ms visuales, las ms dinmicas y sin duda las ms estticas. Es indudable que la belleza (aparien._ a visual) est en el ojo del observador, pero
muchas caractersticas de diseo (por ejemplo. la apariencia y sentido del conteni
572
do, la plantilla de la interfaz, la coordinacin del color, el equilibrio del texto, los gu
ficos y otros medios audiovisuales, los mecanismos de navegacin) s contribuyen aspecto visual.
(p:
"'Para ali,uitos, el diseo Web se enfoco en lo apariencia y sentido visuales... paru blros, el diseo We~ tralu de la es-
........
trut1~ nfotlllodn y la nav.egacin a travs del espacio del dO<\Jmenta. Otros indU5C> pueden timidel'Qr que
"ttl' ~ Web trllta Ocet'CO de lo Jecnolog~ empleado para construir apli<O(iones Web interoctvas. & reald~ al &
RO incluye fOdqs e$10S foctotes y acoso mas."
.
--,
'lo.'
CLAVE
diferentes tipos de
diseo. Codo uno
contTibuye olo calidad
global de lo WebApp.
CAPTULO 19
573
Diseo de navegacin
Diseo arquitectnico
Diseo de componentes
tecnologa
Toda interfaz del usuario -ya sea diseada para una WebApp, una aplicacin de
soflware tradicional, un producto de consumo o un dispositivo industrial- debe presentar las siguientes caractersticas: fcil de usar, fcil de aprender, fcil de navegar,
intuitiva, consistente, eficiente, libre de errores y funcional. Debe ofrecer al usuario
final una experiencia satisfactoria y gratificante. Los conceptos, principios y mtodos
de diseo de la interfaz brindan al ingeniero Web las herramientas requeridas para
lograr esta lista de atributos.
En el capitulo 12 se observ que el diseo de la interfaz comienza no con una
consideracin de la tecnologa, sino ms bien con un cuidadoso examen del usuario
final. Durante el modelado de anlisis para la ingeniera Web (Captulo 18), se desarrolla una Jerarqua de usuario. Cada categora de usuario puede tener necesidades
sutilmente diferentes, tal vez quiera interactuar con la WebApp en diferentes formas
y quiz requiera funcionalidad y contenido nicos. Esta informacin se deriva durante el anlisis de requisitos, pero se revisa como el primer paso en el diseo de la interfaz.
"Si un sitio ts perfedomente utilizable pero carece de un esh1o de diseo elegante yadecuado, fracosar.
Cwt Oollilpr
Dix fD1X99J argumenta que un ingeniero Web debe disear una interfaz de modo
que responda tres preguntas primanas para el usuario final:
La mayora de, si no es que todas, las ctirec:triCcs prcsentaas en el capitulo 12 se aplican igualmen-
te al diseo de interfases WebApp S1 todava no Ice d capinto 12, ha11ato en este momento.
574
Dnde estoy? La interfaz debe 1) ofrecer una indicacin de que se ha tenido acceso a la WebApp4 y 2) informar al usuario de su ubicacin en la jerarqua de contenido.
Qu puedo hacer ahora? La interfaz siempre debe ayudar al usuario a entende.
sus opciones actuales: qu funciones estn disponibles, qu vnculos estn vivos
qu contenido es relevante.
Dnde he estado, a dnde voy? La interfaz debe facilitar la navegacin. En consecuencia, debe proporcionar un "mapa" (implementado en una forma fcil de entender
de dnde ha estado el usuario y qu rutas puede tomar para moverse a cualquie
parte dentro de la WebApp.
La interfaz de una WebApp efectiva debe proporcionar respuestas a cada una de es-
tas preguntas conforme el usuario final navega a travs del contenido y la funcioru.
lidad.
--,
Q'
C~VE
Uno buenointerfaz
WebApp escomprensible e indulgente, y
ofrece al usuorio uno
sensacin de control.
Con la finalidad de disear interfaces que muestren dichas caractersticas, ~nozzi [TOGOl] identifica un conjunto de principios de diseo primordiales:
4 Todas las personas han marcado alguna pgina de un sitio Web, slo para volver a visitarla m.:::
de y no tener que dar indicaciones del sitio Web o del contexto de la pgina (asi como para e
moverse hacia otra ubicacin dentro del sitio) .
5 Los principios originales de Tognozzi se han adaptado y extendido con el fin de aprovechar!.
este libro. Vase [TOGOIJ para mayores detalles acerca de estos principios.
575
Flexibilidad: la interfaz debe ser Jo suficientemente flexible como para permitir que algunos usuarios realicen tareas directamente y otros exploren la WebApp en una forma
un tanto aleatoria. En todo caso, debe permitirle al usuario entender dnde est y
ofrecerle la funcionalidad para que pueda deshacer los errores y volver a trazar las
rutas de navegacin mal elegidas.
PARTE TRES
576
Ley de Fitt: "El tiempo para adquirir un objetivo es una funcin de la distancia a fa que
1950 [FIT54), la ley de Fitt "es un mtodo efectivo de modelar rpidos movimientos
dirigidos, donde un apndice (como una mano) parte del reposo en una posicin de
inicio especfica y se mueve hacia el reposo dentro de una rea establecida como objetivd' [ZHA02). Si una tarea del usuario define una secuencia de selecciones o entrada:
estandarizadas (con muchas opciones diferentes dentro de la secuencia), la primer.:
seleccin (por ejemplo, seleccin de ratn) debe estar fisicamente cerca de la siguierte seleccin. Por ejemplo, considere la interfaz de la pgina de inicio de una WebAp:en un sitio de comercio electrnico que vende aparatos electrodomsticos.
Cada opcin del usuario implica un conjunto de elecciones o acciones de segu:.
miento del usuario. Por ejemplo, una opcin "comprar un producto" requiere que e
usuario ingrese una categora de producto seguida por el nombre de ste. La cate
Ullli~ffllo
W~bd-rirlltD
li!$riis~es;
poi
paqWts,
1ntlllfmes v
Aelen~
.........
oCOM,DCOMy
libreos tipo en
a&
gora del producto (por ejemplo, equipo de audio, televisores, reproductores de DV::
aparece como un men desplegable tan pronto como se selecciona "comprar un pr~
dueto". En consecuencia, la siguiente eleccin es inmediatamente obvia (est cerc::;:
y el tiempo para adquirir es despreciable. Si, por otra parte, la eleccin aparece a:
un men ubicado en el otro lado de la pantalla, el tiempo para que el usuario lo a.;,
quiera (Y luego realice la eleccin) ser demasiado.
Objetos de intefaz humana:
faz humana reutilizables para WebApps. selas. Es posible adquirir, de varias libre:-
de objetos, cualquier objeto de interfaz que pueda ser "visto, escuchado, tocado o_
algn otro modo percibido" [TOGO l J por un usuario final.
Reduccin de latencia: Ms que obligar al usuario a esperar el fin de alguna
opc.
cin in tema (por ejemplo, descargar una imagen grfica compleja), fa WebApp debe
la multitarea en una forma que permita al usuario proceder con el trabajo como .s:
operacin hubiese sido completada. Adems de reducir la latencia, las demoras det
reconocerse de modo que el usuario comprenda lo que est ocurriendo. Esto inc
ye 1) proporcionar retroalimentacin de audio (por ejemplo, un "clic" o campan
cuando una seleccin no genera una accin inmediata de la WebApp; 2) desple;
un reloj animado o barra de progreso para indicar que el procesamiento est en II'
cha; 3) ofrecer algn entretenimiento (por ejemplo, una animacin o presentacir
texto) mientras ocurra un procesamiento largo.
emejor vicije ~ el que flene el menor nmerode posos. Acorte lo distancia entre ~ usuario ysu lllta."
Facilidad de aprendizaje: La inteifaz de una WebApp se debe disear para min~
el tiempo de aprendizaje y, una vez aprendido, reducir el reaprendizaje requerido cu..
do se vuelve a visitar la WebApp. En general, la interfaz debe acentuar un diseo
CAPTULO 19
577
Metforas: una interfaz que utilice una metfora de interaccin es ms fcil de aprender y de usar, en tanto la metfora sea apropiada para la aplicacin y el usuario. Una
metfora debe llamar imgenes y conceptos de la experiencia del usuario, pero no
necesita ser una reproduccin exacta de una experiencia del mundo real. Por ejemplo,
un sitio de comercio electrnico que implementa el pago de cuentas automatizado para una institucin financiera usa una metfora de lista de verificacin (no de manera
sorprendente) para asistir al usuario en la especificacin y la calendarizacin de los
pagos de cuentas. Sin embargo, cuando un usuario "escribe" un cheque, no necesita
ingresar el nombre completo del pagador sino que puede elegir de una lista de pagadores o hacer que el sistema seleccione con base en las primeras letras escritas. La
metfora permanece intacta, pero el usuario obtiene asistencia de la WebApp.
Legibilidad: toda la informacin presentada a travs de la interfaz debe ser legible para Jvenes y viejos. El diseador de la interfaz debe enfatizar los estilos de letra legible, tamaos de fuente y opciones de fondo de color que mejoren el contraste.
Estado de rastro: Cuando sea adecuado, el estado de la interaccin del usuario debe
rastrearsey almacenarse de modo que un usuario pueda saliry regresar ms tarde al Jugar de donde sali. En general, las cookies se pueden disear para almacenar informacin de estado. Sin embargo, las cookies son una tecnologa controvertida, y otras
soluciones de diseo pueden ser ms aceptables para algunos usuarios.
Navegacin visible: una interfaz de WebApp bien diseada proporciona '1a ilusin de
que los usuarios estn en el mismo lugar, y que se les lleva el trabajo hasta sus lugares"
[TOGOl). Cuando se usa este enfoque la navegacin no es preocupacin del usuario.
En lugar de eso, el usuario recupera objetos de contenido y selecciona funciones que
se despliegan y ejecutan por medio de la interfaz.
La comranad6m
Doug: Vinod, el equipo y t tuwNrt:iri.i
578
PARTE TRF.S
opciones:
CAPTULO 19
579
nibles para el usuario. El diseo no debe descansar en las funciones del navegador para asistir en la navegacin.
La esttica nunca debe sustituir la funcionalidad. Por ejemplo, un simple botn puede ser una mejor opcin de navegacin que una imagen o un icono
estticamente placenteros pero vagos, cuya intencin no es clara.
Las opciones de navegacin deben ser obvias, incluso para el usuario casual.
El usuario no debe tener que buscar en la pantalla para determinar cmo vincularse con otro contenido o servicio.
Una interfaz bien diseada mejora la percepcin del usuario del contenido o servicios que proporciona el sitio. No necesariamente tiene que ser ostentosa, sino que
siempre debe estar bien estructurada y ergonmicamente saludable.
, t,gtAle ti... muy poco paciencia con los sitios WWW pobrementediseados."
Iconos grficos: botn, interruptores e imgenes grficas similares que permiten al usuario seleccionar alguna propiedad o especificar una decisin .
Imgenes grficas: alguna representacin grfica que el usuario pueda seleccionar y que implemente un vnculo hacia un objeto de contenido o funcionalidad de la WebApp.
7
En este contexto, una metfora es una representaan fexlraida de la experiencia del mundo real del
usuario) que puede modelarse dentro del contexto de la interfaz Un ejemplo simple puede ser un
interruptor deslizable con que se controla el volumen audiuvo de un archivo .mp3.
580
PARTE TRES
Es importante anotar que uno o ms de dichos mecanismos de control debe propcionarse en cada nivel de la jerarqua de contenido.
19.3.3 Flujo de trabajo en el diseo de la interfaz
Aunque un anlisis detallado del diseo de la interfaz para WebApps es mejor deiz.;
lo a libros de texto que se dedican a la materia (por ejemplo, [GAL02J, [RASOC
[NIEOO]), vale la pena echar un vistazo a las tareas de diseo clave. En el captulo
se seal que el diseo de la interfaz del usuario comienza con la identificacin
ste, la tarea y los requisitos ambientales. Una vez que se han identificado las tare
del usuario, se crean y analizan sus escenarios (casos de uso) para definir un ejunto de objetos y acciones de interfaz. Este trabajo se representa como parte
modelo de anlisis de la WebApp tratado en el captulo 18.
Las siguientes tareas representan un flujo de trabajo rudimentario para el dise
de la interfaz WebApp.
Correlacin
de los objetivos del usuario en las acciones de la
interfaz.
Borro de men
de funciones principoe
lista de obetivos
del usuario
Grfico, logotipo y nombre de lo compoo
Objeli\l#l
Obetivo J#2
Obetivo#3
Obetivo #4
-...-
Ob~liv~ #5
Grfico
Objelivo #n
Texto de lo pgino inicial
navegacin
CAPTULO 19
531
4. Definir un conjunto de tareas de usuario que estn asociadas con ca da accin. Cada accin de la interfaz (por ejemplo, "comprar un producto")
est asociada con un conjunto de tareas de usuario. Dichas tareas se identificaron durante el modelado de anlisis. Durante el diseo deben correlacionarse interacciones especficas que abarquen asuntos de navegacin, objetos
de contenido y funciones WebApp.
6 . Refinar la plantilla de la interfaz y los bosquejos con el uso de entradas desde el diseo esttico. La plantilla aproximada y los bosquejos los
completan los ingenieros Web, pero la apariencia y la percepcin esttica para
un gran sitio comercial con frecuencia los desarrolla un artista, en lugar de
profesionales tcnicos.
9. Desarrollar una representacin de l comportamiento de la interfaz. Esta tarea opcional utiliza diagramas de estado UML (estudiados en el capitulo
18) para representar las transiciones de estado y los eventos que las causan.
Se definen los mecanismos de control (es decir, los objetos y acciones disponibles con que el usuario altera el estado de una WebApp).
582
PARTE TRES
1 1. Refinar y revisar el modelo de diseo de la interfaz. La revisin de la interfaz se debe enfocar en la facilidad de uso (captulo 12).
Es importante notar que el conjunto de tareas finales que haya elegido un equipo de
ingeniera Web se debe adaptar a los requisitos especiales de la aplicacin que se va
a construir.
~NSEJOS.
(estlico). Si se est en
es/O rofefpkl, romrfese
w~grofiro
experrr,enlrldo poro d
tmlxi;ode<iseo
El diseo esttico, tambin llamado diseo grfico, es un esfuerzo artstico que complementa los aspectos tcnicos de la ingeniera Web. Sin l, una WebApp puede se
funcional, pero sin atractivo. Con l, una WebApp lleva a sus usuarios a un mund_
que los incluye en un mbito tanto emocional como intelectual.
Pero, qu es esttica? Existe un viejo dicho: "la belleza existe en los ojos de quie:la ve". Esto es particularmente apropiado cuando se considera el diseo esttico para las WebApps. Para realizar un diseo esttico efectivo, de nuevo se regresa a l.:
jerarqua de usuarios desarrollada como parte del modelo de anlisis (captulo 18)
se pregunta quines son los usuarios de la WebApp y qu "apariencia" desean.
esttico.
e~ .. N
tenido con el resto del bien inmueble dedicado a navegacin y otras caractersticas
organizar los elementos de plantilla de arriba a la izquierda hacia abajo a la derecha
La gran mayora de los usuarios explorarn una pgina Web en gran parte de la misma forma en que exploran las pginas de un libro: de arriba a la izquierda hacia aba-
CAPTIJLO 19
583
jo a la derecha.8 Si los elementos de plantilla tienen prioridades especficas, los elementos de mayor prioridad deben colocarse en la porcin superior izquierda de la
pgina bien inmueble.
No extender el bien inmueble con la barra de desplazamiento. Aunque con frecuencia el desplazamiento es necesario, la mayora de los estudios indican que los usuarios preferiran no desplazarse. Es mejor reducir el contenido de la pgina o presentar el contenido necesario en varias pginas.
Considerar la resolucin y el tamao de la ventana de navegador cuando disee plantillas. En vez de definir tamaos fijos dentro de una plantilla, el diseo debe especificar
todos los artculos de la plantilla como un porcentaje del espacio disponible [NIEOO).
Toudreau.
Existen excepciones basadas en la cultura y el idioma pero esta regla se aplica a la mayora de los
usuarios.
584
PARTE TRES
"los buenos diseodores pueden crear normalidad a partir del caos; pueden comunicar los Ideos con claridad por
dio de la organizacin yel manejo de las palabras y los dibujos:
19.5.l
Objetos de contenido
WebApp (por ejemplo, figura 18.3), y los objetos de diseo que representan con...
do es anloga a la relacin entre las clases de anlisis y los componentes de dis,
descritos en el capitulo 11. En el contexto de la ingeniera Web un objeto de cor
do est alineado de manera ms cercana con un objeto de dato para software
ComponenredeProduclo
Representacin
del diseo de
los objetos de
contenido.
portNme,o
por11Nombte
porteTipo
-e Es porle de
descnpc16n
prec,o
creorN1>11voArtculoO
desplego,OescripconO
de'f'le9ar E'l"'(Ticnoca
t
1
Sensor
Cmoro
Ponel de Control
CoroctSof1woro
0 .. 1
, I
11
kolo, le,lo
e.iilo fvont
"*''
tomoo lineo
$fXJOodO
lomoilo-u.o
color fondo
.. .
0..
Eoquemo
d,i/ie,,u6n horiznlol
dimensin v.rlw:al
e,lilo bo<de
..
'
fologtoflo
DescripcrnDeMari<et,,,g
Oe>Cr1pcindeCompo111;n1e
,,
Video
d,mensin horlzomal
dunen.s,n -l>col
w,lobo.de
..
1
,1
..
d,monsin hO(ltontol
,
O.scr,pci6nT" . color le~lo
.,,,lo ru.n,.
..hloborde
Yoivmen audoo
pOCamitlo .,..
tomoo fueni,
latna/io texlo ,,..
eolot fanclo
CAPTULO 19
585
vencional. Un objeto de contenido tiene atributos que incluyen informacin especifica de contenido (normalmente definida durante el model ado de anlisis WebApp)
y atributos especficos de implementacin que se especifican como parte del diseo.
como ejemplo, considrese la clase de anlisis que se desarroll para el sistema
de comercio electrnico HogarSeguro llamado ComponentedeProducto que se desarroll en el capitulo 18 y se representa como aparece en la figura 19.4. En el captulo 18 se mencion un atributo descripcin que aqu se representa como una clase
de diseo llamada DescripcindeComponente, compuesta de cinco objetos de
contenido: DescripcinDeMarketing, Fotografia, DescripcinTcnica, Esquema y Video, que se muestran como objetos sombreados en la figura. La informacin
que contiene el objeto de contenido se registra como atributos. Por ejemplo, Fotografia (una imagen .jpg) tiene los atributos dimensin horizontal, dimensin
El diseo arquitectnico est enlazado con las metas establecidas para la WebApp, el
contenido que se presentar, los usuarios que la visitarn y la filosofia de navega9 Ambas representaciones se discuten en el capitu!o 8..
586
PARTE TRES
WebApp aborda la forma en la que la aplicacin se estructura para gestionar la interaccin del usuario, manejar las tareas de procesamiento internas, efectuar la navegacin y presentar el contenido.
.,.....,...
"[IJcJ estrud8r.O a,quited(lnko de un sitio bien diseado no siempre es aparente poro el usuorio.. nl,O .telte ~--
587
lineal
lineal con
flujo
opcional
lineal
con
derivaciones
sin vertical representa las ofertas de varios fabricantes de palos de golf. En consecuencia, un usuario puede navegar la retcula horizontalmente para encontrar la columna putters y luego verticalmente para examinar las ofertas de aquellos fabricantes
que venden putters. Esta arquitectura de WebApp slo es til cuando se encuentra
contenido altamente regular [POWOOJ .
Las estructuras jerrquicas (figura 19.7) son indudablemente las arquitecturas WebApp
ms comunes. A diferencia de las jerarquas de software factorizadas -que se estudiaron en el captulo 10-, que alinean el flujo de control slo a lo largo de las ramas
verticales de la jerarqua, una estructura jerrquica WebApp se puede disear en una
forma que permita (va ramificaciones de hipertexto) el flujo de control horizontalmente, a travs de las ramas verticales de la estructura. Por lo tanto, el contenido
presentado en la rama de la extrema izquierda de la jerarqua puede tener vnculos
588
ii+HICI
Estructura
Jerrquica.
Arquitectura de WebApp
La
CAPTULO 19
589
.,
-
Los autores sugieren una arquitectura de diseo en tres capas que desacople la
interfaz de la navegacin y del comportamiento de la aplicacin, y argumentan que
mantener la separacin de la interfaz, aplicacin y navegacin simplifica la implementacin y mejora la reutilizacin.
La arquitectura de modelo-vista-controlador (MVC) [KRA88J 11 es uno de varios modelos de infraestructura WebApp sugeridos para desacoplar la interfaz del usuario de
la funcionalidad y el contenido de informacin de la WebApp. El modelo (a veces llamado "objeto modelo") contiene todo el contenido especfico de la aplicacin y la lgica de procesamiento, e incluye todos los objetos de contenido, el acceso a fuentes
de datos/informacin externas y toda la funcionalidad de procesamiento que son especficos de la aplicacin. La vista contiene todas las funciones especficas de la interfaz y habilita la presentacin del contenido y la lgica de procesamiento, e incluye todos los objetos de contenido, acceso a fuentes de datos/informacin externas
y a toda la funcionalidad de procesamiento requerida por el usuario final. El controlador gestiona el acceso al modelo y a la vista y coordina el flujo de datos entre ellos.
En una WebApp, "la vista la actualiza el controlador con datos provenientes del modelo con base en la entrada del usuario" [WMT02J. En la figura 19.9 se muestra una
representacin esquemtica de la arquitectura MVC.
En referencia a la figura, las solicitudes o datos del usuario se manejan mediante
el controlador. ste tambin selecciona el objeto vista que es aplicable con base en
la solicitud del usuario. una vez que se determina el tipo de solicitud, se transmite
una solicitud de comportamiento al modelo, que implementa la funcionalidad o recupera el contenido requerido para acomodar la solicitud. El objeto modelo puede
tener acceso a datos almacenados en una base de datos corporativa, como parte de
11 Se debe destacar que MVC es en realidad un patron de diseo arquitectnico desarrollado por el am biente Smalltalk (vase http://www.cetus-links.org/oo_smalltalk.htmlJ y se puede usar para cual quier aplicacin interactiva.
PARTE TRES
590
ifrP. (&
Controlador
Gestiono los solicitudes
deh.1s1Jario
Selecciona
comportamiento
de rno,klo
Sel~C]OhC resj:>uesto visto
--- -------
Seleccin de visto
Solicitud de
comportomiento
(cambio de estado)
1
1
1
1
Modelo
Encapsulo funcionolidd
Encapsulo objetos de contenido.__ _,
111corpora todos los estodps
deWebApp
----------
Datos
del modelo
I
Ybta
Solicitud
actualizado
Datos externos
del modelo
Pre$8nlo vi$t0 selecdo,;ada
por el controlador
Servidor
Una vez establecida la arquitectura de WebApp y la identificacin de los compo:tes (pginas, guiones, applets y otras funciones de procesamiento). el diseador
be definir las rutas de navegacin que habiliten para los usuarios el acceso al cenido y las funciones de la WebApp. Para lograr esto el diseador debe l) idenc;la semntica de navegacin para diferentes usuarios del sitio y 2) definir la mee
ca (sintaxis) que logra la navegacin.
~lo espero, Gretel.hosta que lo lona se eleve, entonces veremos los troz-OS de po~ que hede$p1111.....io, ellos
11.iromultnur'o'thamino ocoso."
,, '
t....- .......,
591
cin y navegacin relacionadas que colaboran en el cumplimiento de un subconjunto de requisitos de usuario relacionados" [CAC02].
Gnaho y Larcher [GNA99] describen la USN en la forma siguiente:
La estructura de una USN est compuesta de un conjunto de subestructuras de navega-
ruta de navegacin para los usuarios con ciertos perfiles para lograr su meta o submeta
deseada. En consecuencia, el concepto de FdN est asociado con el concepto de Perfil de
Usuario.
La estructura de una FdN est integrada con un conjunto de nodos de
navegacin (NN)
Esto significa que las FdN pueden, en si mismas, ser agregadas para formar una FdN de
nivel superior, o pueden anidarse en cualquier profundidad.
Para ilustrar el desarrollo de una FdN, considrese el caso de uso seleccionar componentes Hogarseguro descrito en la seccin 18.1.2 y que se reproduce a continuacin:
Caso de uso: seleccionar componentes
HogarSeguro
La WebApp crear y
Los artculos subrayados en la descripcin del caso de uso representan clases y objetos de contenido que sern incorporados en una o ms FdN que permitirn a un
nuevo cliente realizar el escenario descrito en el caso de uso seleccionar componen-
tes Hogarseguro.
La figura 19. 1O bosqueja un anlisis semntico parcial de la navegacin que implica el caso de uso
Con la aplicacin de la
592
<<vnculo de navegacin>>
mostrar descripcin
<<vnculo de navegacin>>t--------1
ver FacturaDeMateriales
Descripii!nDeComponente
DescripcinDeMarketing
DescripcinTcnica
esquema
fotografa
video
de objetos de contenido llamado DescripcinComp, un atributo de la clase ComponentedeProducto). Dichos articulos son nodos de navegacin. Cada una de
flechas representa un vnculo de navegacin 12 y est etiquetado con la accin <rinicia el uso que causa que el vnculo ocurra.
El diseador de la WebApp crea una unidad semntica de navegacin (USN) p.1L.
cada caso de uso asociado con cada papel de usuario [GNA99]. Por ejemplo
cliente nuevo (figura 18. I) puede tener tres diferentes casos de uso, y todos res
tan en acceso a diferente informacin y funciones de la WebApp. Para cada meta
crea una USN.
Durante las etapas iniciales del diseo de navegacin se valora la arquitectura
contenido de la WebApp para determinar una o ms FdN para cada caso de uso. e
mo se anot anteriormente, una FdN identifica los nodos de navegacin (por ejer:
plo, contenido) y los vnculos que permiten la navegacin entre ellos. Entonces
FdN se organizan en USN.
Jnlforta
19.7.2 Sintaxis de navegacin
Conforme el diseo se lleva a cabo se define la mecnica de navegacin. Entre r
chas posibles opciones estn:
Vnculo de navegacin individual: vnculos basados en texto, iconos, botones
12 En ocasiones, a stos se les conoce como vnculos semnticos de navegadn (VSN) [CAC02J.
CAPTULO 19
593
Barra de navegacin horizontal: lista de las principales categoras de contenido o funcionales en una barra que contiene vnculos adecuados. En general,
se mencionan entre cuatro y siete categoras.
Columna de navegacin vertical: 1) lista de las principales categoras de conte-
594
PARTE TRES
Los patrones de diseo aplicados en la ingeniera Web abarcan dos grandes clas..:
1) patrones de diseo genrico que son aplicables a todos los tipos de software ,.ejemplo, [BUS96] y [GAM95]) y 2) patrones de diseo hipermedia que son especlk.
de las WebApp. En el captulo 9 se trataron los patrones de diseo genrico. AL
vs de Internet se puede tener acceso a varios catlogos y almacenes de patrones ~
hipermedia. 13
Cda polfo S uno reglo de tres portes que expreso uno relacin entre cierto contexto, un ptoblflltl y uno solucin."
Clrlsto,-Altx_..
Como se apunt antes en este libro, los patrones de diseo son un enfoque geneco para resolver algn pequeo problema de diseo que se puede adaptar a una '
riedad mucho ms amplia de problemas especficos. En el contexto de los sisterr.basados en Web, German y Cowan [GEROOJ sugieren las siguientes categoras de p
trones:
595
cmo la interfaz informa al usuario de las consecuencias de una accin especfica; cmo un usuario expande el contenido con base en el conLexto de uso y sus deseos;
cmo describir mejor el destino que implica un vnculo; cmo informar al usuario
acerca del estado de una interaccin en marcha y otros.
Las fuentes de informacin acerca de los patrones de diseo hipermedia se han
expandido en forma sustancial en aos recientes. Los lectores interesados deben
consultar [GAR97]. [PER99l y [GEROOJ.
Durante las pasadas dcadas se propusieron varios mtodos de diseo para aplicaciones Web. A la fecha, ningn mtodo es el dominante. En esta seccin se presenta un breve panorama de uno de los mtodos de diseo WebApp ms ampliamente
analizados: MDH00. 14
El mtodo de diseo hipermedia orientado a objetos (MDHOO) lo propusieron originalmente Daniel Schwabe y sus colegas [SCH95, SCH98J. El MDHOO est compuesto
de cuatro diferentes actividades de diseo: diseo conceptual. diseo de navegacin,
diseo abstracto de la interfaz e implementacin. En la figura 19.11 se muestra un
resumen de estas actividades de diseo y en las secciones que siguen se discuten
brevemente.
19.10. l
El diseo conceptual mediante el MDHOO t.ea una representacin de los subsistemas, clases y relaciones que definen el dominio de aplicacin para la WebApp. Se
14 Koch [KOC99J ha desarrollado una amplia COf11pilicldn de los diez mtodos de diseo hipermedia.
596
CAPTULO 19
biseo de navegacin
l ab~ l
de lo in~z
Implementacin
Nodos, vnculos,
" estructuras
d. occe501 contextos
den~in,
IJansformociones
deru:i~i6n
Correlocin entre
'ii,bietos co~les
y, de flCiVe9llei6n
l.c:urs
propol'ionado
por Qmbente
puede usar 15 UML para crear diagramas de clase adecuados, agregados y represe.
taciones de clase compuestas, diagramas de colaboracin y otra informacin q-.. _
describe el dominio de la aplicacin (vase la Parte 2 de este libro para ms detalles
Como un ejemplo simple de diseo conceptual del MDHOO, considrese de nue
vo la aplicacin de comercio electrnico de HogarSeguroinc.com. En la figura 19.
se muestra un "esquema conceptual" parcial para Hogarsegurolnc.com. Los diagra
mas de clase, agregados e informacin relacionada desarrollados como parte de.
anlisis de la WebApp se reutilizan durante el diseo conceptual para representar relaciones entre clases.
15 El MDHOO no prescribe una notacin especfica; sin embargo, el uso de UML es comn cuando Sit
aplica este mtodo.
CAPTULO 19
597
recomendociqn de componente
solicitada
Coo,ponentedel'roduclo
parteNmero
po,ieNombte
porteTipo
descrpcioo
precio
qeorNuevoArtlculo{ }
oblene(Demipcin! )
ob~ecTcnica
hobilacinl\lQ(llbt~
dimensiones
-iorV&ntcm9s
_,orPuert<
Cmara
intidod
porteNmero
parteN>mbre
pQrteTipo
precio
pedic:IQNmero
l)ltntelnfu
fadurc,0.1',\Qterioles
-borquelnfo
cobronl:qlnfo
dos, vnculos, anclas y estructuras de acceso [SCH98]. Las estructuras de acceso son
ms elaboradas e incluyen mecanismos como un ndice de la WebApp, un mapa de
sitio o un paseo guiado.
Una vez definidas las clases de navegacin, el MDHOO ''estructura el espacio de
navegacin mediante el agrupamiento de los objetos de navegacin en conjuntos
llamados contextos" [SCH98J. Schwabe describe un contexto en los trminos siguientes:
Cada definicin de contexto incluye, adems de los elementos que estn incluidos en l,
la especificacin de su estructura de navegacin interna, un punto de entrada, restricciones de acceso en trminos de clases de usuario y operaciones, y una estructura de acceso asociada.
Se desarrolla una plantilla de contexto (anloga a las tarjetas CRC estudiadas en el capitulo 8) y se emplea para rastrear los requisitos de navegacin de cada categora de usuario a travs de varios contextos definidos en el MDHOO. Al hacer esto surgen rutas
especficas de navegacin (que se llamaron FdN en la seccin 19.7.1).
598
PARTE TRES
....,-------
16 Vase el captulo 16 (seccin 16.4) y la seccin 19.1. 1 para una exposicin cualitativa de la
de una WebApp.
CAPTULO 19
599
Las mtricas para el diseo de WebApps estn en desarrollo y pocas se han validado ampliamente. El lector interesado debera consultar [IVOO I J y [MENO I J para
una muestra de las mtricas propuestas para el diseo de WebApps.
las:
600
es
CAPTULO 19
601
[FIT54J Fitts, P., "The lnformation Capacity o the Human Motor System in Controlling the Amplitude of Movement", enfoumal o/Experimental Psychology. vol. 47, 1954, pp. 381-391.
[FOW03J Fowler, M. et al., Pattems of Enterpri.se Applicaon Architecture. Addison-Wesley. 2003.
LGAL02J Galitz, W., The Essenal Guide to User Interface Design, Wiley, 2002.
LGAM95] Gamma, E. et al., Design Pattems, Addison-Wesley, 1995.
[GAR97) Garrido, A., G. Rossi y D. Schwabe, "Pattems Systems for Hypermedia", 1997, se puede
descargar de www.inf.puc-rio.br/-schwabe/papers/PloP97.pdf.
[GEROOJ German, D. y D. Cowan, "Toward a Unified Catalog of Hypermedia Design Pattems",
Proc. 33rd Hawaii Jnll. Conf. on system Sciences, IEEE, vol. 6, Maui, Hawaii, junio de 2000, se
puede descargar de www.turingmachine.org/-dmg/research/papers/dmg_hicss2000.pdf.
[GNA991 Gnaho, C. y F. Larcher, "A User-Centered Methodology for Complex and customizable
Web Engineering", Proc. Jst ICSE Workshop on Web Engineering, ACM, Los Angeles, mayo de
1999.
[HE!02J Heinicke, E., Layout: Fast So/utions Jor Hands-on Design, Rockport Publishers, 2002.
IJVOOIJ Ivory, M., R. Sinha y M. Hearst, "Empirically Validated Web Page Oesign Metrics", ACM
SJGCHI '01, Seattle, WA, abril de 2001, disponible en http://www.rashmisinha.com/articles/
WebTangoCHIO 1.html.
UAC02] Jacyntho, D., D. Schwabe y G. Rossi, "An Architecture for Structuring Complex Web Applications", 2002, disponible en http://www2002.org/CDROM/altemate/478/.
[KAI02J Kaiser, J., "Elements of Etfective Web Design", About, !ne., 2002, disponible en http:/ /webdesign.about.com/library/weekly/aa09 l 998.htm.
[KAL03) Kalman, S., Web Security Fie/d Guide, Cisco Press, 2003.
[KOC99) Koch, N., "A Comparative Study of Methods for Hypermedia Development", Technical
Report 9905, Ludwig-Maximilians Universitat, Munich, Alemania, 1999, se puede descargar
de http:/ /www.dsic.upv.es/-west2001 /iwwostO l /files/contributions/NoraKoch/hyp dev.pdf.
[KRA88J Krasner, G. y s. Pope, "A Cookbook for Using the Model-View Controller User Interface Paradigm in Smalltalk-80",Jouma/ ofObject-Oriented Programming, vol. 1, nm. 3, agosto-septiembre de 1988, pp.26-49.
[LOW98) Lowe, D., y W. Hall (eds.). Hypertexl and the Web-An Engneering Approach, John Wiley
& Sons, 1998.
[MCCOIJ McClure, s. J. Scambray y G. Kurtz, Hacking Exposed, McGraw-Hill/Osbome, 2001.
[MENOIJ Mendes, E., N. Mosley y s. Counsell, "Estimating Oesign and Authoring Effort", en IEEE
Multimedia, enero-marzo de 2001, pp. 50-57.
[MILOOJ Miller, E., "The Website Quality Challenge", Software Research, lnc., 2000, http://www.
soft.com/eValid/Technology/White.Papers/website.quality.challenge.html.
[NIE96] Nielsen, J. y A. Wagner, "User Interface Design for the WWW", Proc. CH/ '96 Conf On Human Factors in Computi.ng systems, ACM Press, 1996, pp. 330-331.
[NIEOOJ Nielsen. J., Designing Web UsabiliOJ, New Riders Publishing, 2000.
[NOR02) Northcutt, S. y J. Novak, Network lntrusion Detection, New Riders Publishing, 2002.
[OFF02) Offutt, J., "Quality Attributes of Web Software Applications", en IEEE SOflware, marzoabril de 2002, pp. 25-32.
[OLS98] Olsina, L., "Building a Web-Based lnformation System Applying the Hypermedia Flexible Process Modeling Strategy", Proc. 1st Ind. Workshop on Hypermedia Development, 1998.
[0LS99] Olsina, L. et al., "Specifying Quality Characteristics and Attributes for Web Si tes", Proc.
1st ICSE Workshop on Web Engineering, ACM, Los Angeles, mayo de 1999.
[PER99J Perzel, K. y D. Kane, "Usability Pattems for Applications on the World Wide Web", 1999,
se puede descargar de http://jeny.cs.uiuc.edu/-plop/plop99/proceedings/Kane/perzel
kane.pdf.
[POWOO] Powell, T., Web Design, McGraw-Hill/Osbome, 2000.
[RASOOJ Raskin, J., The Humane Interface, Addison-Wesley, 2000.
[RH098J Rho, Y. y T. Gedeon, "Surface Structures in Browsing the Web", Proc. Australasian Computer Human lnteraction Conference, IEEE, diciembre de 1998.
[SCH95) Schwabe, D. y G. Rossi, "The Object-Otiented Hypennedia Oesign Model", en CACM, vol.
38, nm. 8, agosto de 1995, PP. 45-46.
602
PARTE TRES
19. l. Por qu el "ideal artstico" es una filosofa de diseo insuficiente cuando se construye
las WebApps modernas? Existe un caso en el que el ideal artstico sea la mosofia que debe St
guirse?
19.2. En este captulo se analiz una amplia variedad de atributos de calidad para las WebApps. Eljanse las tres que se considere como las ms importantes y elabrese un argumer.
que explique por qu cada uno debe resaltarse en el trabajo de diseo de ingeniera Web.
19.3. Agrguense al menos cinco preguntas adicionales a la "Lista de verificacin de la calici:
del diseo de la WebApp" presentada en una barra lateral en la seccin 19.1.1.
19.4. Revisar los principios de diseo de la interfaz de Tognozzi tratados en la seccin 19.3
Considerar cada principio para una WebApp operativa con la cual se est familiarizado. Ca1..
car la WebApp (sense calificaciones A, B. C, D o F) en relacin con el grado en el cual ha
grado el principio. Explicar la razn para cada calificacin.
19.5. Disear una interfaz prototipo para la WebApp de Hogarsegurotnc.com. Intntese ser::novador pero, al mismo tiempo, se debe asegurar que la interfaz se ajusta a los principios ~
el buen diseo de la interfaz.
19.6. Se han encontrado mecanismos de control de la interfaz que sean diferentes a los al\'
tactos en la Seccin 19.3 2? Si es as, describanse brevemente.
19. 7. El lector es el diseador WebApp para una compaa de enseanza a larga distancia
intencin es implementar un motor de aprendizaje" basado en Internet que le permitir ent:
gar contenido del curso a los estudiantes. El motor de aprendizaje ofrece la infraestructura 1:
sica para entregar contenido de aprendizaje de cualquier materia (diseadores de conteni_
prepararn el contenido adecuado). Desarrllese un diseo de interfaz prototipo para el mo..
de aprendizaje.
19.8 . Cul es el sitio Web estticamente ms agradable que el lector haya ha visitado y por qi..
19.9. Considerar el objeto de contenido pedido, generado una vez que un usuario de Hog:.
Segurolnc.com ha completado la seleccin de todos los componentes y est listo para finaliz
su compra. Desarrollar una descripcin UML de pedido junto con todas las representaciones
diseo apropiadas.
19. 1o. Cul es la diferencia entre arquitectura de contenido y arquitectura de WebApp'
19 . 11. Reconsidrese el "motor de aprendizaje" descrito en el problema 19.7, seleccinese i.
arquitectura de contenido que sera apropiada para la WebApp. Ccomntese por qu se hizo
cha eleccin.
603
19.1 2. Con UML desarrllense tres o cuatro representaciones de diseo para objetos de contenido que podran encontrarse conforme se disea el "motor de aprendizaje" descrito en el problema 19.7.
19. 13 . Hacer un poco de investigacin adicional acerca de la arquitectura MVC y decidir si sera una arquitectura WebApp apropiada para el "motor de aprendizaje" mencionado en el problema 19.7.
19. 14. Cul es la diferencia entre sintaxis de navegacin y semntica de navegacin?
19. 15. Definir dos o tres USN para la WebApp de Hogarsegurolnc.com. Describir cada una con
cierto detalle.
19. 16. Hacer alguna investigacin y presentar a su clase dos o tres patrones de diseo hipermedia completos.
Aunque se han escrito cientos de libros acerca del "diseo Web", muy pocos abordan algunos
mtodos tcnicos significativos para realizar el trabajo de diseo. Cuando mucho, se presentan
varios lineamientos tiles para el diseo de la WebApp, ejemplos valiosos de pginas Web y se
muestra programacin Java, y se analizan los detalles tcnicos importantes para implementar
WebApps modernas. Entre los muchos que se ofrecen en esta categora, vale la pena considerar la discusin enciclopdica de Powell [POWOO]. Adems, los libros de Galitz [GAL02l, Heinicke [HEI02J, Schmitt (Designing CSS Web Pages, New Riders Publishing, 2002), Donnelly (Designing Easy-to-Use Websites, Addison-Wesley, 2001) y Nielsen (NIEOO] proporcionan una gua til.
La visin gil del diseo (y otros tpicos) para WebApps la presentan Wallace y sus colegas
(Extreme Programmingfor Web Projects, Addison-Wesley, 2003). Conallen (Building Web Applica
tions with UML, segunda edicin, Addison-Wesley, 2002) y Rosenberg y Scott (Applying Use-Case Driven Object Modeling with UML, Addison-Wesley, 2001) presentan ejemplos detallados de
WebApps modeladas con la aplicacin de UML.
Van Duyne y sus colegas (The Design ofSites: Pattems, Principies and Processes, Addison-Wesley, 2002) escribieron un libro excelente que cubre los aspectos ms importantes del proceso de
diseo en la ingeniera Web. Se cubren en detalle los modelos de proceso de diseo y los patrones de diseo. Wodtke (lnjormation Architecture, New Riders Publishing, 2003). Rosenfeld y Morville (Information Architecturefor the World Wide Web, O'Reilly & Associates, 2002), y Reiss (Practica] Tnformation Architecture, Addison-Wesley, 2000) abordan la arquitectura de contenido y
otros tpicos.
Las tcnicas de diseo tambin se mencionan en libros escritos acerca de ambientes de desarrollo especficos. Los lectores interesados deben examinar libros acerca de J2EE, Java, ASP.NET,
CSS, XML, Peri y una diversidad de aplicaciones de creacin de WebApps (Dreamweaver, Home
Page, Frontpage, GoUve, MacroMedia Flash , etc.) para comentarios de diseo tiles.
En Internet est disponible una gran variedad de fuentes de informacin acerca de diseo
para ingeniera Web. Una lista actualizada de referencias en la World Wide Web se encuentra en
el sitio Web de SEPA:
http:/ / www.mhhe.com/pressman.
"E
xiste una urgencia .que siempre perinea el proc;eso di? ingenie na Web. C<r
aira<tristiIJ
dumr
..... .606
.,
dhJtell$iones
de lll!lldad .... .60S
eslmtegia . 607
prllehos
dtbasecle
datos .. ; .. ,.613
cle<l'.~ .....633
d D!lftguNldII 628
de corrttnlclo ..6J 2
de desempeo 6l J
de fodlidad
'
deuso .....620
de interfoz
dnsuario ..616
patibdiclad 622
~M~:
Uevar a cabo la prueba'n<> debe esperar hasta que termine et proyecto, Comience a
probar antes de'e:scribfr u11a lnea <le cdigb. Pruebe con~tante y efectivamente y desarrollar un sitio Web much.o ms durable.
de te1sl1 .. .633
~o
pn,,bo brel~
~ . ......ea,1 uno
'".ma
. sola
me..
"
Jivdddes
Qu e,? Etpt<)C8$<> d
u.(IQ
. ..
.
. \ncQn~ lo fadlilad de tllOt lo J1<M90,
bilidoa, el dsempeor fo copacidxly - ~
de Id ~bApp. fsto se lgfa a lo l<Jtgq d to el
Quin fo llo<e? Los ingenieros Webyotros participantes ~t proxecto (gerEITT~, clieQlel, usua
ros fnalesl toman porte eo el proceso a pt()bar
laWebApp.
Por qu es imPQrtante? Si los !l$U<Jrfos fino
les encuentron -errores <t' ofuten so confionzt:l
en lo WebApp, .se irn d oo.olquier trc;i porte
CAPTULO 20
605
.$G
La funcin se prueba para descubrir errores que indiquen que no hay concordancia con los requisitos del cliente. cada funcin de la WebApp se valora en
1 En el captulo 19 tambin se consder la calidad de la web:1.pp.
606
mntica de navegacin se ejercen para descubrir cualquier error de navegacin (por ejemplo, vnculos rotos, vnculos inadecuados, vnculos errneos).
El desempeo se prueba en una diversidad de condiciones operativas, configt.
raciones y cargas para asegurar que el sistema responde a la interaccin del
usuario y maneja cargas extremas sin que haya una degradacin operativa
inaceptable.
La compatibilidad se prueba al ejecutar la WebApp en varias configuraciones
husped, en los lados tanto del cliente como del servidor. El objetivo es encontrar errores especficos respecto a slo una configuracin husped.
La interoperabilidad se prueba para asegurar que la WebApp realiza interface..
[NGUOOJ:
1. Puesto que muchos tipos de pruebas de WebApp descubren problemas que s
evidencian primero en el lado del cliente (es decir, a travs de una interfaz
implementada en un navegador especfico, una PDA o un telfono celular), e
ingeniero web ve un sntoma del error, no el error en s.
607
5. Algunos errores se deben al ambiente operativo esttico (es decir, la configuracin especfica en la que se desarrolla la prueba), mientras que otros son
atribuibles al ambiente operativo dinmico (es decir, la carga instantnea de
recursos o los errores relacionados con el tiempo).
Estos cinco atributos de error sugieren que el ambiente desempea un importante
papel en el diagnstico de todos los errores descubiertos durante el proceso de ingeniera Web. En algunas situaciones (por ejemplo, prueba de contenido), el sitio del
error es obvio, pero en muchos otros tipos de pruebas de WebApp (por ejemplo,
pruebas de navegacin, de desempeo, de seguridad) la causa subyacente del error
tal vez sea considerablemente ms dificil de determinar.
20.1 .3
Estrategias de pruebas
La estrategia para probar una WebApp adopta los principios bsicos para todas las
pruebas de software (captulo 13) y aplica una estrategia y las tcticas que se recomendaron respecto de los sistemas orientados a objetos (capitulo 14). Los siguientes pasos resumen el enfoque:
608
PARTE TRES
1mifo,fru11
Se~jh(-
exclllenlisriub
ocemilos pruebas. de ,
~1111
''"'
www.silckytliJll,il.
fttstfiJ;tisP.
~,
&1
c&v1
El pion de pruebo
identifico un conjunto
de toreos de pruebo,
los productos de
trobojo que se
desorrollorn y lo
formo en lo cual los
resultados se evalan,
registron y reutilizan.
Excepto por el ms simple de los sitios Web, rpidamente se vuelve aparente que es necesaria cierta especie de planeacin de pruebas. Con demasiada frecuencia, el nmero m
cial de errores que se encuentran a partir de una prueba adecuada es lo suficienteme~
grande como para que no todos se fijen la primera vez que se detectan. Esto pone una presin adicional sobre la ge nte que prueba los sitios y aplicaciones Web. No slo deben crr
jurar nuevas pruebas imaginativas, tambin deben recordar cmo se ejecutaron .a.
pruebas anteriores con la finalidad de volver a probar con confiabilidad el sitio/la aplia:
cin Web, y asegurarse de que los errores conocidos se han removido y que no se han ""-troducido otros nuevos.
La pregunta para todo ingeniero Web es: cmo "conjuro nuevas pruebas irr:
nativas" y en qu se deben enfocar dichas pruebas? La respuesta se encuentra .:;
tro de un plan de pruebas.
Un plan de pruebas WebApp identifica 1) un conjunto de tareas2 que se aplicz.
cuando comience la prueba, 2) los productos de trabajo que se generarn confc
se ejecute cada tarea de prueba, y 3) la forma en la que los resultados de las zbas se evalan, registran y reutilizan cuando se realicen pruebas de regresin. Er
gunos casos, el plan de pruebas se integra con el plan del proyecto; en otros, el ~
de pruebas es un documento separado.
609
Los procesos de prueba para ingeniera Web comienzan con pruebas que ejercitan
el contenido y la funcionalidad de la interfaz que es inmediatamente visible para los
usuarios finales. conforme se realizan las pruebas, se ejercitan los aspectos de la arquitectura de diseo y la navegacin. El usuario puede o no conocer estos elementos de la WebApp. Finalmente, el foco se cambia a las pruebas que ejercitan las capacidades tecnolgicas que no siempre son aparentes para los usuarios finales: la in fraestructura de la WebApp y cuestiones de instalacin/implementacin.
La figura 20. l yuxtapone el proceso de prueba WebApp con la pirmide de diseo examinada en el captulo 19. Ntese que, conforme se desarroll el flujo de pruebas, de izquierda a derecha y de arriba abajo, los elementos del diseo WebApp visibles para el usuario (elementos superiores de la pirmide) se prueban primero, seguidos por los elementos de diseo de infraestructura.
',,
----Prueba de
configuracin
''
' '\
tecnologa
1
1
- -- -----.J
Pruebo de
mpeo
dese
,,
\
''
Pruebo de
segurida d
,,
I
''
/
/
/
-///
610
PARTE TRES
tico en busca de errores, esta etapa de las pruebas tambin considera el contera.:.
dinmico derivado de los datos conservados como parte de un sistema de base
datos integrado a la WebApp.
La prueba de la interfaz ejercita los mecanismos de interaccin y valida los aspee
tos estticos de la interfaz del usuario. El objetivo es descubrir los errores que rest.
tan de mecanismos con una pobre implementacin de interaccin, u omisiones, inccsistencias o ambigedades que se han introducido a la interfaz en forma inadvertida
La prueba de navegacin aplica casos de uso, derivados como parte de la act:J
dad de anlisis, en el diseo de casos de prueba que ejerciten cada escenario de i...,.
contra el diseo de navegacin.
Lo estrategia paro la
pruebo de integracin
depende de lo
orquitec11Jro de la
WebApp elegida
tboote el diseo.
Las tcnicas de pruebas de caja negra y caja blanca se examinan en el captulo 14.
CAPTULO 20
611
gracin es similar al enfoque usado para los sistemas OO. Las pruebas basadas en
ligas (capitulo 14) se pueden aprovechar para integrar el conjunto de pginas Web
(se puede usar una USN para definir el conjunto apropiado) requerido para responder a un evento de usuario. cada liga se integra y pone a prueba individualmente.
Mediante las pruebas de regresin se asegura que no ocurran efectos colaterales.
Las pruebas de agrupamiento integran un conjunto de pginas asociadas (determinadas mediante el examen de los casos de uso y la USN). Los casos de prueba se derivan para descubrir los errores en las colaboraciones.
Cada elemento de la arquitectura WebApp se prueba de manera unitaria en la medida de lo posible. Por ejemplo, en una arquitectura MVC (captulo 19), los componentes modelo, vista y controlador se prueban cada uno de manera individual. Despus de la integracin, el flujo de control y datos a travs de cada uno de estos elementos se valora en detalle.
Las pruebas de configuracin intentan descubrir los errores que son especficos
respecto de un cliente o ambiente de servidor particulares. Se crea una matriz de referencia cruzada que define todos los probables sistemas operativos, navegadores,4
plataformas de hardware y protocolos de comunicacin. Entonces las pruebas se encaminan a descubrir los errores asociados con cada posible configuracin.
La prueba de seguridad incorpora una serie de pruebas diseadas para explotar las
vulnerabilidades en la WebApp y su ambiente. El objetivo es demostrar la posibilidad
de una brecha en la seguridad.
La prueba de desempeo abarca una serie de pruebas diseadas para valorar 1)
cmo afecta el aumento del trfico de usuarios la respuesta en tiempo y confiabilidad de la Web, 2) cules componentes de la WebApp son responsables de la degradacin del desempeo y qu caractersticas de uso provocan que ocurra la degradacin, y 3) cmo la degradacin del desempeo impacta los objetivos y requisitos globales de la WebApp.
Los navegadores son notables porque implementan sus propios estndares", sutilmente diferentes
en las interpretaciones de HTML y Javascnpt.
612
Los errores en el contenido de la WebApp pueden ser tan triviales como errores
pogrficos menores o tan significativos como informacin incorrecta, organizac.
Aunque los revisiones
tcnicos farmo/es no
son porte de IJl1(I
pruebo, se deben
llevar ocabo revi-
siones de contenido
JXXD garontiztx lo
~,
C~VE
los objetivos de lo
p,uebo de contenido
son l) descubrir errores
sintcticos en el
contenido, 2) descubrir
err01es semnticos y 3)
encontrar errores
estructurales.
CAPTIJLO 20
613
61 4
que el usuario ha consultado informacin acerca de una participacin accionaria especifica. Esto se logra mediante los siguientes pasos: 1) se consulta una gran base
de datos de participaciones accionarias, 2) se extraen datos relevantes de la base de
datos, 3) los datos extrados se deben organizar como un objeto de contenido, y .,
este objeto de contenido (que representa informacin personalizada solicitada paun usuario final) se transmite al ambiente del cliente para su despliegue. Los errorec:
pueden ocurrir, y de hecho lo hacen, como consecuencia de cada uno de estas etapas. El objetivo de probar la base de datos es descubrir dichos errores.
La prueba de la base de datos para las WebApps es complicada por varios factores
Qu conflic
tos comphcan
la prueba de
bases de datos
para WebApps?
2. La base de datos quiz sea remota al servidor que hospeda la WebApp. Por lo
tanto, se deben desarrollar las pruebas que descubran los errores en la comunicacin entre la WebApp y la base de datos remota. 6
3. Los datos brutos adquiridos de la base de datos se deben transmitir al servidor de
que se pueda desplegar al usuario final. Por lo tanto, se debe disear una serie
de pruebas para a) descubrir errores en el formato de objeto de contenido, y
b) probar la compatibilidad con diferentes configuraciones de ambiente de
cliente.
Al considerar estos cuatro factores, se deben aplicar los mtodos de diseo de casos de prueba para cada uno de los "estratos de interaccin" [NGUOIJ anotados er
la figura 20.2. Las pruebas deben asegurar que 1) informacin vlida pasa entre e
cliente y el servidor desde el estrato de la interfaz; 2) la WebApp procese los guiones
correctamente y extraiga o formatee adecuadamente datos del usuario; 3) los datoc
del usuario pasen correctamente a una funcin de transformacin de datos en el lado del servidor para formatear consultas apropiadas (por ejemplo, SQL); 4) las col'-
Dichas pruebas se vuelven complejas cuando se encuentran bases de datos distribuidas o cuan::
se requiere el acceso a un almacn de datos (captulo 10).
615
Datos brutos
SQL
Base de datos
sultas pasen a un estrato de gestin de datos7 que se comunique con rutinas de acceso a bases de datos (potencialmente ubicadas en otra mquina).
Los estratos de transformacin de datos, gestin de datos y acceso a bases de datos, que se muestran en la figura 20.2, usualmente se construyen con componentes
reutilizables que se han validado por separado y como paquete. Si ste es el caso,
las pruebas de la WebApp se centran en el diseo de casos de prueba para ejercitar las interacciones entre el estrato del cliente y los primeros dos estratos del servidor (WebApp y transformacin de datos) mostrados en la figura.
El estrato de la interfaz del usuario se prueba para garantizar que los guiones
HTML estn construidos de manera adecuada para cada solicitud de usuario y se
transmiten adecuadamente al lado del servidor. La capa WebApp en el lado del servidor se prueba para asegurar que los datos del usuario se extraen adecuadamente
de guiones HTML y se transmiten de manera adecuada al estrato de transformacin de
datos en el lado del servidor.
Las funciones de transformacin de datos se prueban para asegurar que se crea
el SQL correcto y que pasa a componentes apropiados de gestin de datos.
una exposicin detallada de la tecnologa subyacente que se debe entender para
disear apropiadamente dichas pruebas de bases de datos est ms all del alcance
de este libro. El lector interesado debe consultar [SCE02], [NGUOJJ y [BROOIJ.
7 La capa de gestin de datos por lo general mcorpora una interfase SQL al nivel de llamada (SQL
CLI) como puede ser Microsoft OLE/ AOO o la Conectividad de Bases de Datos Java oava Database
Connectivity, JDBC)
616
PARTE TRES
~-
*Ciar!)diente$ e.(lrnicos (yo seo de negocios oconsumo) es improbo que tengomqs conflanzo '11111 !llfoN
que su&,''~ frecuentes periodos de inactividad, cuelgo olo mitad de uno transaccin otiene un mot'senfldo,a 11
fdda4 de uso. Los pr1141bos, por lo tonto, tienen unpapel importantsimo en el procllSO de d_,. gloW.*
. 2 P1 2BVIIA RI
t;A, .JlfillfAI
PIL PIPAIJQ
20.4.1
La estrategia global para la prueba de la interfaz es l) descubrir los errores relacionados con mecanismos especficos de la inteaz (por ejemplo, errores en la ejecticin adecuada de un vnculo de men o la forma en que los datos ingresan en U."
formulario), y 2) descubrir los errores en la forma en que la interfaz implementa a;:
semntica de navegacin, la funcionalidad de la WebApp o el despliegue de contenido. El cumplimiento de esta estrategia requiere lograr varios objetivos:
Las caractersticas de la inteifaz se prueban para asegurar que las reglas del diseo, la esttica y el contenido visual relacionado estn a disposicin del usuario s::error alguno. Las caractersticas incluyen tipo de fuentes, uso de color, marCon excepdn de
especificidades o,ien
todos o lo WebApp, lo
estrategia de lo
interfaz anotado oquf
es oplicoble o todos
los tipos de software
diente/servidor.
cos, imgenes, bordes, tablas y elementos relacionados que se generan conforme procede la ejecucin de la WebApp.
617
pruebas es anlogo a las pruebas de integracin (capitulo 13) en que las pruebas se llevan a cabo conforme los mecanismos de la interfaz se integran para
permitir la ejecucin de un caso de uso o una USN.
La interfaz completa se prueba frente a los casos de uso y las USN selecc,onadas
para descubrir errores en su semntica. Este enfoque de pruebas es anlogo a
las pruebas de validacin (captulo 13), ya que el propsito es demostrar conformidad con la semntica especifica del caso de uso o la USN. En el curso de
esta etapa se lleva a cabo una serie de pruebas de facilidad de uso.
La interfaz se prueba dentro de una diversidad de ambientes (por ejemplo, nave-
vos.
En un nivel ms dirigido, las pruebas deben garantizar que 1) los campos del for
mato tienen ancho y tipos de datos adecuados; 2) el formato establece salvaguardas
apropiadas para evitar que el usuario ingrese cadenas de texto ms largas que cier-
Dichas pruebas se pueden llevar a cabo como parte de pruebas o de la inteaz o de navegacin.
618
tcoNsuoS.
Los pruebas de
creacin de guiones
Creacin de guiones en el lado del cliente. Las pruebas de caja negra se llevar
a cabo para descubrir los errores en el procesamiento confonne se ejecuta el guir
(por ejemplo, Javascript). Dichas pruebas usualmente se acoplan con pruebas de formatos, ya que la entrada del guin por lo general se deriva de los datos proporcionados como parte del procesamiento de los formatos. Se debe realizar una prueba
de compatibilidad para garantizar que el lenguaje de guin elegido funcionar adecuadamente en la configuracin ambiental que soporta la WebApp. Adems de poner a prueba el guin mismo, Splaine y Jaskiel [SPLOI] sugieren que "debe asegurarse
que los estndares de su compaia [WebApp] establecen el lenguaje preferido y la
versin del lenguaje de creacin de guiones que se usar para la creacin de guiones en el lado del cliente 0J en el lado del servidor)".
HTML dinmico. Cada pgina Web que contenga HTML dinmico se ejecuta par.:
garantizar que el despliegue dinmico es correcto. Adems, se debe llevar a catx.
una prueba de compatibilidad para garantizar que el HTML dinmico funciona adecuadamente en la(s) configuracin(es) ambiental(es) que soporta la WebApp.
Ventanas pop-up.9 Una serie de pruebas garantizan que I) la pop-up est ubicad
de manera adecuada y tiene un tamao apropiado; 2) la pop-up no cubre la ventara
original de la WebApp; 3) el diseo esttico de la pop-up es consistente con el dise
o esttico de la interfaz; y 4) las barras de desplazamiento y otros mecanismos ck
control agregados a la pop-up funcionan, estn ubicados adecuadamente y trabaja:
como se requiere.
Guiones CGI. Las pruebas de caja negra se dirigen centrndose en la integridad <k
los datos (conforme los datos pasan al guin CGI) y en el procesamiento del gui.~
una vez que los datos validados se han recibido. Adems, se pueden llevar a catx
pruebas de desempeo para asegurarse de que la configuracin del lado del sen .dar se puede ajustar a las demandas de procesamiento de invocaciones mltiples <L
los guiones CGI [SPLOJ].
Clasificacin por niveles del contenido. Las pruebas deben demostrar que la clasificacin por niveles de los datos est actualizada, se despliega adecuadamente y S'puede suspender sin error y volver a comenzar sin dificultad.
Cookies. Se requieren pruebas tanto del lado del servidor como del lado del cliente
En el lado del servidor, las pruebas deben garantizar que una cookie est construid;;
de manera adecuada (contiene datos correctos) y se transmite de modo apropiado a.
La utilizacin de las pop-up se ha extendido mucho y son uno de los principales motivos de irrit:
cin para muchos usuarios. Deben usarse juiciosamente o evitarlas por completo.
CAPTULO 20
6 19
620
Q11 cara<
teristicas de
fadlidod de no se
vuelven el foco de
las pruebas, y qu
objetivos especfi
cos se abordan?
1O En este contexto se ha usado el tnnino "amigable para el usuario". Desde luego, el problema o
la percepcin de un usuario de lo que es una interfaz "amigable" puede ser radicalmente dc
de la de otras.
11 Para preguntas adicionales acerca de la facilidad de uso, vase "Facilidad de uso" en el captu..
CAPTULO 20
621
Dentro de cada una de estas categoras se disea una serie de pruebas. En algunos
casos, la "prueba" puede ser una revisin visual de una pgina Web. En otros, se
puede ejecutar de nuevo la prueba de semntica de la interfaz, pero en esta ocasin
son ms importantes las preocupaciones por la facilidad de uso.
Como ejemplo, considrese la valoracin de la facilidad de uso para la interaccin
Fcil de usar
F6cil de aprender
Complicada
Difcil de aprender
Engaoso
12 Se pueden aprovechar el Indice de Legibilidad FOG y otros para proporcionar una valoracin cuantitativa de la legibilidad. Vase para ms detalles httpH developer.gnome.org/documents/usabilty/
usability-readability.html
622
~,
fo.l
c&v1
los WebApps se
ejewton dentro de uno
voriedod de ambientes
en el lodo deldiente.
El objetivo de los
pruebes de
compotibilidod es
descubrir errores
osociodos con un
ambiente especfico
(por ejemplo,
navegador).
623
=-
e, ' ............,..
GIi ... 11p11te t6cnico
Las pruebas al nivel de componentes, tambin llamadas pruebas de funcin, se enfocan sobre un conjunto de pruebas que intentan descubrir errores en las funciones de
la WebApp. Cada funcin WebApp es un mdulo de software (implementado en algn lenguaje de programacin o guiones) y se puede probar empleando las tcnicas
de caja negra (y, en algunos casos, de caja blanca) examinadas en el captulo 14.
Los casos de prueba al nivel de componentes con frecuencia se alimentan con entrada al nivel de formularios. Una vez definidos los datos de los formularios, el usuario selecciona un botn u otro mecanismo de control para iniciar la ejecucin. Son
comunes los siguientes mtodos de diseo de casos de prueba (captulo 14):
Particin de equivalenda. El dominio de entrada de la funcin se divide en ca-
624
PARTE TRES
Anlisis de valores lmite. Los datos de los formularios se prueban en sus lmites. Por ejemplo, la funcin de clculo de embarque sealada anteriormente
solicita el nmero mximo de das requerido para la entrega del producto. E:
el formulario se anotan un mnimo de 2 das y un mximo de 14. Sin embargo, las pruebas de valor de lmite pueden ingresar valores de o, 1, 2, 13, 14 )
15 para determinar cmo reacciona la funcin frente a los datos en y fuera c..
los lmites de las entradas vlidas. 13
Pruebas de ruta. Si la complejidad lgica de la funcin es alta, 14 se puede errplear la prueba de ruta (mtodo caja blanca de diseo de caso de prueba) pa:
garantizar que se ha ejercitado toda ruta independiente en el programa.
Adems de estos mtodos de diseo de casos de prueba, se utiliza una tcnica
mada prueba de error forzado {NGUOll para producir casos de prueba que delibe
damente conducen los componentes de la WebApp hacia una condicin de error
propsito es descubrir los errores que ocurren durante el manejo de los errores .
ejemplo, mensajes de errores incorrectos o inexistentes, falla de la WebApp C..
consecuencia del error, salida errnea producida por entrada errnea, efectos ce
terales relacionados con el procesamiento del componente).
Cada caso de prueba al nivel de componentes especifica todos los valores de .
trada y la salida esperada que proporcionar el componente. La salida real prod..
da como consecuencia de la prueba se registra para referencia futura durante et _
porte y el mantenimiento.
En muchas situaciones la ejecucin correcta de la funcin de una WebApp esta
gada a una interfaz adecuada con una base de datos que puede ser externa a la v_
App. En consecuencia, la prueba de la base de datos se vuelve una parte integral
rgimen de prueba de componentes. Hower [HOW97} examina esto cuando eser
Los sitios Web alimentados con bases de datos pueden involucrar una interaccin compleja entre navegadores Web, sistemas operativos, aplicaciones plug-in, protocolos de co-
13 En este caso, un mejor diseo de entrada puede eliminar errores potenciales. El mximo nmer
das se podra seleccionar de un men desplegable, con lo que se evita que el usuario espedr
una entrada ti.lera de los lmites.
14 La complejidad lgica se puede determinar al calcular la complejidad ciclomtica del algorVase el capitulo 14 para detalles adicionales.
CAPTULO 20
625
municacin, servidores Web, bases de datos, programas [lenguaje de guin] ... , mejoras a
la seguridad y cortafuegos.
Tal complejidad imposibilita probar todas las posibles dependencias y todo lo que podra ir mal con un sitio. El tpico proyecto de desarrollo de un sitio Web tambin estar en
un calendario agresivo, de modo que el mejor enfoque de prueba emplear anlisis de
riesgo para determinar dnde enfocar los esfuerzos de prueba. Los anlisis de riesgo debe incluir consideracin de cunto coincidir el ambiente de prueba con el ambiente de
produccin real... Otras consideraciones tpicas en el anlisis de riesgo incluyen:
Cul funcionalidad en el sitio Web es ms crucial para su propsito?
Cules reas del sitio requieren la ms dura interaccin con la base de datos?
Cules aspectos de los CGI, applets, componentes Activex, etc., del sitio son
los ms complejos?
Qu tipos de problemas causara la mayora de las quejas o la peor publicidad?
Qu reas del sitio sern las ms populares?
Qu aspectos del sitio tienen los mayores riesgos de seguridad?
Cada uno de los asuntos relacionados con el riesgo que examina Hower deben considerarse cuando se diseen casos de prueba para componentes WebApp y funciones de bases de datos relacionadas.
Un usuario viaja a travs de una WebApp en gran medida como lo hace un visitante
al caminar por una tienda o un museo. Existen muchas rutas que se pueden tomar,
muchas paradas que se pueden realizar, muchas cosas que aprender y ver, actividades
por iniciar y decisiones por tomar. Como ya se ha comentado, este proceso de navegacin es predecible en el sentido en que todo visitante tiene un conjunto de objetivos cuando llega. Al mismo tiempo, el proceso de navegacin puede ser impredecible
porque el visitante, influido por algo que ve o aprende, puede elegir una ruta o iniciar
una accin que no es tpica para el objetivo original. El trabajo de probar la navegacin es 1) garantizar que todos los mecanismos que permiten al usuario de la WebApp viajar a travs de ella son funcionales, y 2) validar que cada unidad semntica de
navegacin (USN) pueda ser alcanzada por la categora de usuario adecuada.
626
PARTE TRES
uno realiza la funcin que se busca. Splaine y Jaskiel [SPLO I J sugieren que se de..
probar cada uno de los mecanismos de navegacin siguientes:
CAPTULO 20
627
628
PARTE TRES
de las pruebas las dirigen los ingenieros Web, pero etapas ulteriores las deben dgir otros participantes del proyecto, un equipo de prueba independiente y, a finaJ. cuentas, usuarios sin calificacin tcnica. La finalidad es ejercitar ampliamente
navegacin de la WebApp.
Qu pre
guntas se
deben plantear y
responder confor
'me se lleva a
cabo la prueba de
coeflguradn en
el lodo del servl
w?
rrentes) pueden soportar la WebApp sin error. En esencia, la WebApp se instala der
tro del ambiente del lado del servidor y se prueba con la intencin de encontrar erre
res relacionados con la configuracin.
Conforme se disean la pruebas de configuracin del lado del servidor, el inge
niero Web debe considerar cada componente de la configuracin del servidor. Entre
las preguntas que es preciso plantear y responder durante la prueba de configuracin del lado del servidor se encuentran:
La WebApp es totalmente compatible con el sistema operativo del servidor?
Los archivos de sistema, directorios y datos de sistema relacionados se crear
correctamente cuando la WebApp es operativa?
Las medidas de seguridad del sistema (por ejemplo, cortafuegos o encriptado) permiten a la WebApp ejecutarse y dar servicio a los usuarios sin interferencia o menoscabo del desempeo?
CAPITULO 20
629
15 Por ejemplo, se puede usar un servidor de aplicacin y uno de base de datos por separado. La comunicacin entre las dos mquinas ocurre por medio de una conexin de red.
16 Ejecutar pruebas en toda posible combinacin de componentes de configuracin consume demasiado tiempo.
630
PARTE TRES
Las pruebas de seguridad estn diseadas para probar las vulnerabilidades e-:ambiente del lado del cliente, las comunicaciones de red que ocurren mientras
datos pasan del cliente al servidor y de vuelta, y el ambiente del lado del sen'".:.
Cada uno de estos dominios puede recibir ataques, y es labor de quien prueba la
guridad descubrir las debilidades que pueden explotar quienes tengan la intenc
de hacerlo.
En el lado del cliente, las vulnerabilidades con frecuencia se pueden rastrear r
ta errores preexistentes en los navegadores, programas de correo electrnico o se
ware de comunicacin. Nguyen [NGUOlJ describe un hoyo de seguridad tpico:
Si la WebApp es w
cial en el negacia,
canservo datos sensi
bles oes un probable
blanco de hockers, es
bueno ideo subcontro111, los pruebas de seguridad con uno
empreso especializado
en esm lobor.
Uno de los errores mencionados comnmente es el desbordamiento del buffer. Esto permite que un cdigo malicioso se ejecute en la mquina cliente. Por ejemplo, al ingresa
una URL en un navegador que es mucho mayor que el tamao del buffer alocado para la
URL provocar un error de sobreescritura de memoria (desbordamiento de buffer) si el navegador no tiene cdigo de deteccin de error para validar la longitud de la URL ingresada. Un hacker estacional puede explotar astutamente este bug al escribir una URL grande
con cdigo ejecutable que puede provocar que el navegador reviente o altere las opciones
de seguridad (de mayor a menor) o, peor an, corrompa los datos del usuario.
17 Los libros de Trivedi [TRE03], McClure y sus colegas [MCC03) y Garfinkel y Spafford [GAR02) ofre
cen informacin til acerca del tema.
631
vierte una entidad con intenciones maliciosas. Por ejemplo, a un usuario puede engaarlo un sitio Web malicioso que acta como si fuese el legtimo servidor de la WebApp (idnticos en apariencia y percepcin). La intencin es robar contraseas, informacin de propiedad o datos de crdito.
En el lado del servidor, las vulnerabilidades incluyen ataques de negacin de servicio y guiones maliciosos que pueden pasar al lado del cliente o empleados para
deshabilitar las operaciones del servidor. Adems, se puede tener acceso, sin autorizacin, a bases de datos en el lado del servidor (robo de datos).
La proteccin contra stas (Y muchas otras) vulnerabilidades requiere implementar uno o ms de los siguientes elementos de seguridad [NGUOI]:
Cortafuegos: mecanismo de filtrado -combinacin de hardware y softwareque examina cada paquete de informacin entrante para garantizar que llega
de una fuente legitima y bloquea cualquier dato sospechoso.
Autentificacin: mecanismo de verificacin que valida la identidad de todos
los clientes y servidores, y permite que la comunicacin ocurra slo cuando
ambos lados son verificados.
Encriptado: mecanismo de codificacin que protege los datos sensibles mediante su modificacin en una forma que imposibilita la lectura de quienes
tengan intenciones maliciosas. El encriptado se fortalece empleando certificados digitales que permiten al cliente verificar el destino al cual se transmiten
los datos.
Autorizacin: mecanismo de filtrado que permite el acceso al ambiente del
cliente o el servidor slo a aquellos individuos con cdigos de autorizacin
apropiados (por ejemplo, identificacin del usuario y contrasea).
La finalidad de las pruebas de seguridad es exponer los hoyos en dichos elementos de seguridad que podran explotar quienes tengan intenciones maliciosas. El diseo actual de las pruebas de seguridad requiere un conocimiento profundo de los
trabajos internos de cada elemento de seguridad, as como una extensa comprensin de un amplio rango de tecnologas de red. En muchos casos, las pruebas de seguridad se subcontratan con firmas que se especializan en dichas tecnologas.
Nada es ms frustrante que una WebApp que tarda minutos en cargar contenido
cuando los sitios de la competencia descargan contenido similar en segundos. Nada
es ms agraviante que el intento de entrar en una WebApp y recibir un mensaje de
"servidor ocupado", que se acompaa con la sugerencia de intentarlo ms tarde. Nada es ms desconcertante que una WebApp que responde instantneamente en algunas situaciones, y luego, en otras ocasiones parece irse a un estado de espera infinita. Todos estos hechos suceden en la '11.'eb todos los das, y todos estn relacionados con el desempeo.
632
PARTE TRES
633
En cada caso, estas variables se definen dentro de los lmites operativos normales del sistema. conforme se corre cada condicin de prueba, se recopilan una o ms
de las siguientes medidas: la respuesta de usuario promedio, el tiempo promedio para descargar una unidad de datos estandarizada o el tiempo promedio para procesar
una transaccin. El equipo de ingeniera Web examina estas medidas para determinar si una disminucin precipitada en el desempeo se puede rastrear hasta una
combinacin especfica de N, T y D.
La prueba de carga tambin se aplica para valorar la velocidad de conexin recomendada para los usuarios de la WebApp. La cantidad de informacin global procesada en una unidad de tiempo, P, se calcula de la forma siguiente:
P = NXTXD
como ejemplo, considrese un popular sitio de noticias deportivas. En un momento dado, 20 000 usuarios concurrentes realizan una solicitud (una transaccin, T) una
vez cada dos minutos en promedio. Cada transaccin requiere que la WebApp descargue un nuevo artculo que promedia 3 Kbytes de longitud. En consecuencia, la
cantidad de informacin procesada en una unidad de tiempo se puede calcular como:
guntas siguientes:
El sistema se degrada "gentilmente" o el servidor se desconecta cuando se
rebasa su capacidad?
El software del servidor genera mensajes de "servidor no disponible"? De
manera ms general: a los usuarios se les advierte que no pueden alcanzar
el servidor?
634
PARTE TRES
El servidor pone en cola las solicitudes de recursos y vaca la cola una vez
que la capacidad demanda disminucin?
Las transacciones se pierden conforme se rebasa la capacidad?
La integridad de los datos se afecta cuando se rebasa la capacidad?
Qu valores de N, T y D fuerzan el fallo del ambiente del servidor? Cmo s.
manifiesta la falla en si misma? Las notificaciones automticas se envan a:
equipo de soporte tcnico en el sitio del servidor?
Si el sistema falla, cunto tardar en estar en lnea de nuevo?
Ciertas funciones de la WebApp (por ejemplo, calcular funcionalidad intens
capacidades de flujo de datos) se descontinan cuando la capacidad alcanz.::
el nivel de 80 o 90 por ciento?
A una variacin de la prueba de tensin a veces se Je refiere como prueba p
rebote [SPLO I J. En este rgimen de pruebas la carga se lleva hasta su punto mx1 re:;
de capacidad, luego se baja rpidamente hasta condiciones de operacin norma ce!
y Juego se sube de nuevo al pico. Al rebotar la carga del sistema un examinador puede determinar cun bien el servidor puede poner en orden los recursos para satis.fa..
cer la demanda muy elevada y luego liberarlos cuando reaparecen las condiciones
normales (de modo que estn listas para el siguiente pico) .
En www.daveeoton.com/scm/CMTools.html se encuen
Ira una extensa listo.
Las herramientas de desempeo de bases de
datos miden, por ejemplo, el tiempo para realizar con
sultos a bases de datos seleccionadas. Estos herramientas
Focilitan el mejoramiento de la base de datos.
(www.bmc.com)
Los programas depuradores (debuggers) son herramientas
de programaci6n comunes que encuentran y resuelven ~
fectos de software en el cdigo. Forman porte de la mayora de los ambientes modernos de desarrollo de aplicociones.
Herramiento(s) representotiva(s):
18 Las herramientas expuestas aqu slo representan una muestra de esta categoria. Adems, los norrbres de las mismas son marcas registradas de las compaflas mencionadas.
CAPTULO 20
TRUETrack (www.mccobe.com)
"'IOI ClearOuest (www.rotionol.com)
ii.Tamientas de supervisin de red vigilan el
.:11! lrfico de lo red. Son ti les poro identificar los
de botella" de lo red y probar los vnculos entre
de entrado y de solido.
- iento(s) representafiva(s}:
......... sloc. stonford.edu/ xorg/nmtf/ nmtf-tools.html se
Ira uno extenso listo.
miento(s) represenfotiva(s):
ore QARun (www.compuwore.
P<oducts/qocenter/ qorun)
cnol Visua/Test (www.rotionol.com)
Software (www.seque.com)
ienta(s) representativa(s):
Systems (www.keynote.com)
mienta(s) represenfotiva(s):
ry lnteroctive (www.mercint.com)
Technologis (www.scopotech.com)
635
Herramienta(s) representativa(s):
Successful Hosting.com (www.successfulhosting.com)
Quest Software Foglight (www.quest.com)
Herramienta(s} representativo(s}:
En www.aptest.com/resources.html se encuentra uno lis
ta til.
Herramienta(s) representativa(s}:
QuotiumPro (www.quotium.com)
Software Research eVolid (www.soft.com/eValid/in
dex.html)
Herramienla(s) representativa{s}:
En www.timberlinetechnologies.com/products/www.html
se encuentro una extenso listo.
sistemas de supervisin de recursos son poro mayora de los sistemas operativos de los servido
La meta de probar las WebApp es ejercitar cada una de las muchas dimensiones de
la calidad WebApp con la finalidad de encontrar errores o descubrir conflictos que
pudieran conducir a fallas en la calidad. Las pruebas se centran en contenido, funcin, estructura, facilidad de uso, navegabilidad desempeo, compatibilidad, interoperabilidad, capacidad y seguridad. Las pruebas tambin incorporan revisiones que
ocurren conforme se disea la WebApp.
La estrategia de prueba de la WebApp ejercita cada una de las dimensiones de calidad al examinar inicialmente "unidades de contenido funcionalidad o navegacin.
una vez que las unidades individuales han sido validadas, el enfoque se cambia a
636
PARTE TRES
pruebas que ejerciten la WebApp como un todo. Esto se logra derivando muchas pruebas de las perspectivas de los usuarios y se alimentan con la informacin contenid;
en los casos de uso. Se desarrolla un plan de prueba de ingeniera Web y se identiti
can los pasos de prueba, los productos de trabajo (por ejemplo, casos de prueba)
los mecanismos para la evaluacin de los resultados de prueba. El proceso de prueba abarca siete tipos diferentes de pruebas.
La prueba del contenido (Y las revisiones) se centra en varias categoras de contenido. La finalidad es descubrir errores tanto semnticos como sintcticos que afee
ten la precisin del contenido o la forma en la que se presenta al usuario final. l..i.
prueba de la interfaz ejercita los mecanismos de interaccin que permiten que u;usuario se comunique con la WebApp y valida los aspectos estticos de la interfa.:
El objetivo es descubrir errores que resulten de mecanismos de interaccin mal iir
plementados, u omisiones, inconsistencias o ambigedades en la semntica de la t.terfaz.
La prueba de navegacin aplica casos de uso, derivados como parte de la act' dad de anlisis, en el diseo de casos de prueba que ejercitan cada uno de los esetnarios de uso frente al diseo de navegacin. Los mecanismos de navegacin s,,
prueban para garantizar que se identifican y corrigen los errores que impiden e
completar un caso de uso. La prueba de componentes ejercita las unidades de ccr
tenido y funcionales dentro de la WebApp. cada pgina Web encapsula contenict=
vnculos de navegacin y elementos de procesamiento que forman una "unida.:
dentro de la arquitectura de la WebApp. Se deben probar dichas unidades.
La prueba de configuracin intenta descubrir los errores o los problemas de compatibilidad especificas de un ambiente particular de cliente o servidor. Entonces se
llevan a cabo pruebas para descubrir los errores asociados con cada posible con,.
guracin. La prueba de la seguridad incorpora una serie de pruebas diseadas para
explotar las vulnerabilidades en la WebApp y en su ambiente. La finalidad es encontrar hoyos de seguridad. La prueba de desempeo abarca una serie de pruebas <rse disean para valorar el tiempo de respuesta de la WebApp y la confiablidad coc
forme aumenta la demanda en la capacidad de recursos en el lado del servidor.
[BROOI] Brown, B., Oracle9i Web Development, McGraw-Hill, 2a. ed., 2001.
(CAC02J cachero, C. et al., "Conceptual Navigation Analysis: A Device and Platforrn lnd
pendent Navigation Specification", Proc. 2nd lntl. Workshop on web-oriented technolq,_
junio de 2002, se puede descargar de www.dsic.upv.es/-west/iwwost02/papers
cachero.pdf
[CON03J Constantine, L. y L. Lockwood, Software/ar Use, Addison-Wesley, 1999; vea.se
tambin http://www.foruse.com/.
[GAR02] Garfinkel, S. y G. Spafford, Web 5ecurity, Privacy and Commerce, O'Reilly & Ass.
dates, 2002 .
(HOW97] Hower, Rick, "Beyond Broken Unks", Internet Systems, 1997, disponible e
hltp://www.dbmsmag.com/9707i03.html.
[l.AMOIJ Lam, W., "Testing E-Commerce Systems: A Praclical Guide", en IEEE 1T Pro, ma:
zo-abril de 2001, pp. 19-28.
CAPTULO 20
637
[MCC03l McClure, S., s. Shah y S. Shah, Web Hacking: Attacks and Defense, Addison-Wesley, 2003.
[MILOO] Miller, E., "WebSite Testmg", 2000, disponible en http:I /www.soft.com/eValid/
Technology/White.Papers/website.testing.html.
[NGUOO] Nguyen. H., "Testing Web-Based Applications", en Software Testing and QualifY
Engineering, mayo-junio de 2000, disponible en http:/ /www.stqemagazine.com.
[NGUOll Nguyen, H., Testing Applications on the Web, Wiley, 2001.
[SCE02] sceppa, D., Microsoft ADO.NET, Microsoft Press, 2002.
[SPLOl] Splaine, S. y S. Jaskiel, The Web Testing Handbook, STQE Publishing, 2001.
[TRE03] Trivedt R.. Professional Web services SecurifY, Wrox Press, 2003.
[WAL03] Wallace, D., l. Raggett y J. Aufgang, Extreme ProgrammingJor Web Projects, Addison-Wesley, 2003.
20. l. Existen algunas situaciones en las cuales las pruebas de la WebApp deban ignorarse por
completo?
20.2 . Con argumentos propios, comntense los objetivos de la realizacin de pruebas en el
contexto de la ingeniera Web.
20.3. La compatibilidad es una importante dimensin de calidad. Qu debe ponerse a prueba
pruebas se deben llevar a cabo slo despus de que estn integrados los elementos de la WebApp?
20.6 . Siempre es necesario desarrollar un plan de prueba escrito de manera formal? Explque-
se la respuesta.
20. 7. Es justo decir que la estrategia global de pruebas de la WebApp comienza con los ele-
mentos visibles para el usuario y se mueve hacia los elementos de tecnologfa? Existen excepciones a esta estrategia?
20.8. La prueba del contenido realmente es una prueba en el sentido convencional del trmi-
prueba de las bases de datos es una actividad predominantemente del lado del cliente o del lado del servidor?
20.10. Cul es la diferencia entre las pruebas que estn asociadas con los mecanismos de la
camentos para FarrnaciadelaEsquina.com (problema 20. 11 ). Examine los tipos pruebas al nivel
de componente que tendrian que llevarse a cabo para garantizar que esta funcin trabaja de
manera adecuada. [Nota: se tendra que usar Wla base de datos para implementar esta funcin.)
638
c.c:
La literatura para las pruebas de WebApps todava est en evolucin. Los libros de Ash (The
Testing Companion, Wiley, 2003), Dustin y sus colegas (Quality Web Systems, Addison-Wesi.:
2002), Nguyen INGUOIJ y Splaine y Jaskiel [SPLOIJ se encuentran entre los que, publicados~
ta la fecha, presentan los tratamientos ms completos del tema. Mosley (Client-Server Sojh
Testing on the Desktop and the Web, Prentice-Hall, 1999) aborda asuntos de prueba tanto~
lado del cliente como en el lado del servidor.
Stottlemeyer (Automated Web Testing Too/kit, Wiley, 2001) presenta informacin til acerca
los mtodos y estrategias en la prueba de las WebApps, asi como un valioso anlisis de las
rramientas de prueba automatizadas. Graham y sus colegas (Software Test Automation, AddJs,;;.oc
Wesley, 1999) presentan material adicional acerca de las herramientas automatizadas.
Nguyen y sus colegas (Testing Applications Jor the Web, segunda edicin, Wiley, 2003) de-rrollaron una gran actualizacin [NGUOIJ y ofrecen una gua nica para probar aplicacicr~
mviles. Aunque Microsoft (Peiforrnance Testing Microsoft .NET Web Applications, Mi~
Press, 2002) se enfoca predominantemente en su ambiente .NET, sus comentarios acerca de
pruebas de desempeo pueden ser tiles para cualquier interesado en la materia.
Splaine (Testing Web security, Wiley, 2002), Klevnsky y sus colegas (Hack l.T. : Sea:Through Penetration Testing, Addison-Wesley, 2002), Chirillo (Hack Attacks Revealed, seguedicin, Wiley, 2003) y Skoudis (Counter Hack, Prentice-Hall, 2001) ofrecen mucha informac.
til para quienes deben disear pruebas de seguridad.
En Internet est disponible una gran variedad de fuentes de informacin acerca de las pr..
bas para ingeniera Web. En el sitio Web de SEPA se encuentra una lista actualizada de referc"
cias en la World Wide Web:
http://www.mhhe.com/pressman.
GESTIN DE PROYECTOS
Cmo se deben gestionar el personal, el proceso y 1os problemas durante un proyecto de p0ftware?
Cmo pueden emplearse l~sJntricas de software para gestionar ;un proyecto de software yel respectivo proceso?
:,,.
CAPTULO
21
CONCEPTOS
C-t,AV:B
jimbllodel
oflware ,651
coordln.11cill 6SO
des<omposld11
del problema 6S2
eqtiipo,do
software 645
equipo,
a,1es . .649
lideres de
equp~ .644
portklpo11tes 644
personal , .643
prctkas
uticas 658
principio
W5HH .......657
PfO<eso 653
proyecto . , .686
CONCEPTOS DE
GESTIN DE PROYECTOS
q.
.,
He visitado dqc:enas de llendas comerciales, tanto buenas como malas, y he observad<> regis\ros de gerente1 <le procesamiento de datos, de nuevo tanto buenos corr
malS_ Con mU:cha fre<;uencii he visto con horror como dichos geren\es luchaban
ntilrhente conl)royectos de pesadilla, sufriendo por fechas limites imposibles o sJStemas eptregados que indignaron a sus usuarios y devoraron enormes cantidades de
tiempo de mantenJmiento..
Lo que Page-)ones describe son sntomas que resultan de una serie de prob
mas de.gestin y tcnicos. Sin embargo, sl se realizara una autopsia de
proyecto, es m4y probable que se encontrara un tema consistente: la gestin
proy~<;to fue dbil.
,
siend una adividod muy necesono
,
cu:dndo l& i:onst~ ftemos y
ptluct~ bo$0dos en computdoras. lo ges.
tin ci 'proyectos iovofucro la plonificocin,
supervisin X.control del personaJ1 el presQ y
tos evel\tos que ocurren m1enlr'as ei soffware
evoluciono desde uo conc,epto pr~iminor host,;,
uno irnplementad6~ operativo.
Quin lo hace? Tok>t r.gestionort en derta
medida, pero el 6mbito de las activ1dode$ de
CAPTULO 21
641
P: personal, producto, proceso y proyecto. El orden no es arbitrario. El gestor que olvida que el trabajo de ingeniera del software es una empresa intensamente humana nunca tendr xito en la gestin de proyectos. un gestor que fracasa en alentar
la comunicacin amplia con los participantes en etapas tempranas de la evolucin
de un proyecto se arriesga a construir una solucin elegante para el problema equivocado. El gestor que presta poca atencin al proceso corre el riesgo de colocar mtodos y herramientas tcnicos competentes en el vaco. El gestor que se embarca sin
un plan de proyecto slido arriesga el xito del producto.
21.1.1
El personal
do desde los aos 60 del siglo pasado (por ejemplo, [COU80], [WIT94], [DEM98l) . De
hecho, el "factor humano" es tan importante que el Software Engineering Institute ha
desarrollado un modelo de madurez de la capacidad de gestin de personal (MMCGP)
para "aumentar la rapidez con la cual las organizaciones de software acometen las
aplicaciones cada vez ms complejas al ayudar a atraer, aumentar, motivar, desplegar y retener el talento necesario para mejorar su capacidad de desarrollo de software" [CUR94].
El modelo de madurez de gestin de personal define las siguientes reas clave
prcticas para el personal de software: reclutamiento seleccin, gestin del desem-
642
peo, entrenamiento, retribucin, desarrollo de la carrera, diseo de la organizadoy el trabajo, y desarrollo de la cultura de equipo. Las organizaciones que logran a
tos niveles de madurez en el rea de gestin de personal tienen una mayor probab lidad de implementar efectivas prcticas de ingeniera del software.
El MMCGP es compaero de la Integracin del Modelo de Madurez de la capao
dad de Software (captulo 2) que gua a las organizaciones en la creacin de un pre
ceso de software maduro. Ms adelante en este capitulo se consideran tpicos asocia
dos con la gestin del personal y la estructura de los proyectos de software.
21 .1.2 El producto
En este contexto, el
trmino producto se
emplea para abarcar
cualquier software
que se cooslruye a
solicitud de otros. No
slo incluye productos
de software estando,~
ficos).
21 .1.3
El proceso
tc0Nsuo9'
Ouienes se odhiefen o
del software y la medicin) cubren el modelo del proceso. Las actividades protectoras
son independientes de cualquier actividad del marco de trabajo y ocurren durante todo el proceso.
CAPTULO 21
643
21.1.4 El proyecto
Los proyectos de software se realizan de manera planificada y controlada por una
razn principal: es la nica forma conocida de gestionar la complejidad. Incluso los
esfuerzos continuarn. En 1998, los datos industriales indicaron que el 26 por ciento de los proyectos de software fracasaron por completo, y que el 46 por ciento rebasaron sus costos y y tiempos de entrega [REE99]. Aunque la tasa de xito para los
proyectos de software ha mejorado un poco, la tasa de fracaso de proyectos permanece ms elevada de lo que debiera. 1
"JII ~ es tomo un viaje por carretero. Algunos proyedos son simples y ronarios, como cQnducir li,xio la tia,n,
di oplena lur del dio. Pero 1(1 mayora de los proyectos quevale lopena realizar sonms parecidos o:coodudr un <rimin enfo carretera, en la montaa, de noche.#
Supongo que si tienes que escoger alguna cosa que sea la ms importante en nues-
tro ambiente, yo dira que no son las herramientas que utilizamos, es la gente.
VP 2: El ingrediente ms importante que fue exitoso en este proyecto fue el tener gente
inteligente... en mi opinin, muy pocas cosas importan ms ... La cosa ms importante que
puedes hacer por un proyecto es seleccionar al equipo ... El xito de la organizacin de desarrollo de software est muy asociado con la habilidad de reclutar buen personal.
VP 3: La nica regla que tengo en la gestin es asegurarme que tengo buen personal. verdadero buen personal, y que hago crecer al buen personal, y que proporciono un ambiente en el que el buen personal puede producir.
Dadas estas estadsticas, es razonable preguntar cmo el impacto de las computadoras contina
creciendo exponencialmente. El autor considera que parte de la respuesta es que un nmero sustancial de estos proyectos "fallidos" estuvo. en pmner lugar, mal concebido. Los clientes pierden inters rpidamente (porque el producto solicitado no fue en realidad tan importante como lo que
pensaron primero) y los proyectos se cancelan
644
21.2.1
Los participantes
s. Usuarios finales, quienes interactan con el software una vez que se libera pa
ra su uso productivo.
Todo proyecto de software lo integran personas que se clasifican en esta taxoru:ma.2 Para ser eficaz, el equipo de proyecto debe estar organizado en una forma q-.. ~
maximice las capacidades y habilidades de cada persona. Y esta es la labor del lide
del equipo.
La
CAPTULO 21
645
Ideas o innovacin. La habilidad para alentar a la gente a crear y sentir creativamente, incluso cuando deben trabajar dentro de los limites establecidos por un
producto o aplicacin de software particular.
Weinberg sugiere que los lderes de proyecto exitosos aplican un estilo de gestin
de resolucin de problemas. Esto es: un gestor de proyecto de software debe concentrarse en entender el problema que ser resuelto, gestionar el flujo de ideas y, al
mismo tiempo, hacer que todos los que forman el equipo conozcan (con palabras y,
mucho ms importante, con acciones) que la calidad es relevante y que no ser comprometida.
*En loS: tmrilJCISms wnples, un Uder es aquel que sobe adnde quier.e ir, y s. levooto yVCI.
Otra visin [EDG95] de las caractersticas que definen un gestor de proyecto eficiente resalta cuatro rasgos clave:
Dotes de gestin. Un buen gestor de proyecto debe encabezarlo y dirigirlo. Debe tener la confianza de asumir el control cuando es necesario y la seguridad para
permitir que los buenos profesionales tcnicos sigan sus instintos.
646
La "mejor" estructura de equipo depende del estilo de gestin de cada organ1.:2cin, del nmero de personas que integrarn el equipo y de sus grados de habih~
as como de la dificultad global del problema. Mantei [MAN81J describe siete faC'
res de proyecto que deberan considerarse cuando se planifica la estructura de
equipos de ingenieria del software:
Qu
factores se
deben considerar
cuando se elige la
estructura de un
equipo de
software?
"Si quiere sercodo vez meior:seo competilivo. Si quiere ser exponencialmente mejof: sea cooperutiw.
opciones se
tienen cuando
se define la
estructura de IR
equipo de
software?
1. Un paradigma cerrado estructura un equipo a lo largo de una jerarqua tradicional de autoridad. Estos equipos pueden trabajar mejor cuando produce.software muy similar a los proyectos anteriores, pero ser menos probable
que sean innovadores cuando trabajen dentro del paradigma cerrado.
2 . Un paradigma aleatorio estructura un equipo libremente y depende de la iniciativa individual de los miembros del equipo. Cuando se requieren innovacin o adelantos tecnolgicos, los equipos que siguen el paradigma aleatcsern excelentes. Pero estos equipos pueden luchar cuando se requiere "desempeo ordenado".
3. Un paradigma abierto intenta estructurar un equipo en una forma que logre
gunos de los controles asociados con el paradigma cerrado, pero tambin
mucha de la innovacin que ocurre cuando se aplica el paradigma aleator::.>.
CAPTULO 21
647
648
Por q,
fracasan los
equipos que
buscaa cvajar?
DeMarco y Lister sostienen que los miembros de los equipos cuajados son significa
tivamente ms productivos y estn ms motivados que el promedio. Comparten urmeta comn, una cultura comn y, en muchos casos, un "sentimiento elitista" qu
los hace nicos.
Pero no todos los equipos cuajan. De hecho, muchos equipos sufren de lo que
Jackman UAC98] denomina "toxicidad de equipo". Ella define cinco factores que "fomentan un ambiente de equipo potencialmente txico": I) una atmsfera de traba
frentica, 2) alta frustracin que provoca friccin entre los miembros del equipo, :
un proceso de software "fragmentado o pobremente coordinado", 4) una definici<n
poco clara de los papeles del equipo de software, y 5) "continuas y repetidas expOSi ciones al fracaso".
Para evitar un ambiente de trabajo frentico, el gestor del proyecto debe tener a
certeza de que el equipo tiene acceso a toda la informacin requerida para realizar
el trabajo y que las metas y objetivos, una vez definidos, no deben modilcarse a menos que sea absolutamente necesario. Un equipo de software puede evitar la frustr.:cin (y el estrs) si se le da tanta responsabilidad en la toma de decisiones como se:J
posible. un proceso inadecuado (por ejemplo, tareas de trabajo innecesarias o abn
madoras o productos de trabajo mal elegidos) se puede evitar si se comprende L
producto que se construir y al personal que realiza el trabajo, y al permitir al equ
po seleccionar su propio modelo de proceso. El equipo debe establecer por s misl'T'
mecanismos para su responsabilidad (revisiones tcnicas formales y la programacin por pares son excelentes formas de lograrlo) y definir una serie de enfoques correctivos cuando un miembro del equipo falle en su desempeo. Y, finalmente, la clave para evitar una atmsfera de fracaso es establecer tcnicas basadas en el equi>"
para la realimentacin y resolucin de problemas.
Adems de las cinco toxinas que describe Jackman, un equipo de software usualmente enfrenta los diferentes rasgos humanos de sus miembros. Algunos miembros
del equipo son extrovertidos; otros, introvertidos. Algunas personas recopilan informacin intuitivamente; separan los conceptos amplios de los hechos disparatados
CAPTULO 21
649
Para aprovechar en forma eficiente las competencias de cada miembro del equipo y fomentar la colaboracin eficaz a lo largo de un proyecto de software, los equipos giles son autoorganizados. Un eqwpo autoorganizado no necesariamente man-
Una excelente introduccin a estos temas. relatadas por eqwpos de proyecto de software, se puede
encontrar en (FER98].
650
tiene una sola estructura de equipo, sino que ms bien aprovecha elementos de
paradigmas aleatorio, abierto y sincrnico de Constantine tratados en la seccL
21.2.3.
la propiedad coladiw no es ms que uno porti<ulorizo<in de la ideo de que los produ<tos deben ..,.... ..
...., [6gl1], l1l> CI los individuos que integraron el equipo."
ut
&~
~~
C~VE
Un equipo 6gil as un
equipo aulOOIQO!lizodo
decisiones tcnicos.
Muchos modelos de proceso gil (por eJemplo, Scrum) brindan al equipo gil 1...
autonoma significativa para realizar la gestin del proyecto y tomar las decision
tcnicas requeridas para cumplir el trabajo. La planificacin se mantiene en el m1
mo, y al equipo se le permite seleccionar su propio enfoque (por ejemplo, proce
mtodos. herramientas) , slo restringido por los requisitos del negocio y los est..
dares organizacionales. Conforme el proyecto avanza el equipo se autoorganiza , ..
ra enfocar la competencia individual en una forma que sea ms benfica para el p
yecto en un punto dado en el tiempo. Para lograrlo, un equipo gil puede dirigir bi .e
ves reuniones de equipo diarias para coordinar y sincronizar el trabajo que se d
lograr ese da.
Con base en la informacin obtenida durante estas reuniones, el equipo ada..
su enfoque de forma tal que logra un incremento de trabajo. Conforme pasa~
da, la autoorganizacin continua y la colaboracin mueven al equipo hacia la c
clusin de un incremento de software.
CAPTULO 21
651
Jamie: ~
21.3.1
652
Si no puede acotar
uno caroctetfstico del
software que intento
construir, anote la ca
ractenstica como un
riesgo del proyecto
(captulo 25).
PARTE CUATRO
~N DE POOYECTOS DE SOFTWARE
Contexto. Cmo encaja el software que se desarrollar en un sistema ms gra:de, producto o contexto de negocios, y qu restricciones se imponen corno resul'..:.
do del contexto?
Objetivos de informacin. Qu objetos de datos visibles al usuario (capitulo ~
se producen como resultado del software? Qu objetos de datos se requieren de etrada?
Funcin y desempeo. Qu funciones realiza el software para transformar
datos de entrada en salida? Existen algunas caracteristicas de desempeo especf.:.
les que deban abordarse?
El mbito del proyecto de software no debe ser ambiguo ni incomprensible a nive :l
de gestin y tcnico. Se debe acotar un enunciado del mbito del software. Esto ~
se establecen de manera explicita los datos cuantitativos (por ejemplo, nmero .k
usuarios simultneos, tamao de la lista de correo, tiempo de respuesta m)d:permitido); se anotan las restricciones o limitaciones (por ejemplo, el costo del p;
dueto restringe el tamao de la memoria) y se describen los factores que redu ~
riesgos (por ejemplo, los algoritmos deseados se comprenden bien y estn dispc
bles en C++).
El desarrollo de un
plan de proyedo row
noble requiere des
componer el
problema. Esto se
puede lograr emp/eo11do uno listo de funciones ode cosos de uso
o, en el trabajo gil,
historias de usuario.
653
Las actividades del marco de trabajo (capitulo 2) que caracterizan al proceso de software son aplicables a todos los proyectos de software. El problema es seleccionar el
modelo de proceso apropiado para que un equipo de proyecto someta al software a
ingeniera.
El gestor del proyecto debe decidir cul modelo de proceso es ms adecuado para 1) los clientes que han solicitado el producto y el personal que har el trabajo; 2)
las caractersticas del producto mismo, y 3) el ambiente del proyecto en el que trabaja el equipo de software. Cuando se ha seleccionado un modelo de proceso, entonces el equipo define un plan de proyecto preliminar con base en el conjunto de
actividades del marco de trabajo del proceso. Una vez que se establece el plan preliminar, comienza la descomposicin del proceso. Esto es, se debe crear un plan
completo, que refleje las tareas de trabajo requeridas para cubrir las actividades del
marco de trabajo. Estas actividades se exploran brevemente en las secciones siguientes, y en el captulo 24 se presenta una visin ms detallada.
654
PARTE CUATRO
ifaiP.61
Combinacin
del problema
y el proceso.
/lf,11//1
~
d'
f.vnti-dl p~llt:to
En1r:,,;ki de 1ldo
Edicin v fi;,{n\dteado
<.i
%,~
..ff
..P->
.'o
!t>
.fl
~e-#
"
"
;;_.,,
''.Je
. , --
i'"
.,.
-~ --
~
~~
c&v1
El morco de trobojodel
roceso estoblece llll
l!Slpl8le1o JXJro lo pion.
fiaxm del proyecto.
Se ~ li mr un
cocjmlo de toreos ode-
;;,,,
,.
''
bajo se mencionan en la hilera superior. Las labores de trabajo de ingenieria del se,
ware (para cada actividad del marco de trabajo) se ingresaran en la hilera siguie""
4
te. El trabajo del gestor del proyecto (y de otros miembros del equipo) consiste
estimar los requisitos de recursos para cada celda de la matriz, fechas de inicio y
nal para las tareas asociadas con cada celda, y los productos de trabajo que pr ~
eir cada tarea. Dichas actividades se consideran en el capitulo 24.
amas IXlll e1 ~
yedo.
modelo de proceso de software que sea mejor para el proyecto y las tareas de irg
niera del software que integren el modelo de proceso una vez elegido. Un proye...::
relativamente pequeo similar a otros que se hayan realizado puede lograrse me
si se utiliza el enfoque secuencial lineal. Si se imponen restricciones de tiempo ;;ceidas y el problema se puede compartimentalizar mucho, tal vez el modelo de
sarrollo rpido de aplicaciones (DRA) sea la opcin correcta. Si la fecha lmite es ceida que la funcionalidad completa no pueda alcanzarse, tal vez sea mejor una e
trategia incremental. De igual modo, los proyectos con otras caractersticas :ejemplo, requisitos inciertos, avances en la tecnologa, clientes dificiles, signifi...J
tivo potencial de reutilizacin) conducirn a la seleccin de otros modelos de p.
ceso. 5
una vez elegido el modelo de proceso, el marco de trabajo respectivo se adaa l. En cualquier caso se puede aplicar el marco de trabajo genrico comentado p-
se debe destacar que las tareas de trabajo tienen que adaptarse a las necesidades especficas
proyecto.
Recurdese que las caractersticas del proyecto tambin tienen una fuerte influencia en la estro:::=
ra del equipo de software (seccin 2 1.2.3).
CAPTULO 21
CONCEPTOS DE GESTlN
m: PROYECTOS
655
viamente: comunicacin, planificacin, modelado, construccin y despliegue. Funcionar para modelos lineales, iterativos e incrementales, as como evolutivos e incluso para modelos concurrentes o de ensamble de componentes. El marco de trabajo del proceso es invariable y sirve como base para todo el trabajo de software que
realiza una organizacin de software.
Pero las tareas de trabajo real varan. La descomposicin del proceso comienza
cuando el gerente de proyecto pregunta: "Cmo logramos esta actividad del marco
de trabajo'" Por ejemplo, un proyecto pequeo y relativamente simple puede requerir las siguientes tareas de trabajo para la actividad de comunicacin:
6. Desarrollar en conjunto miniprospectos que reflejen los datos, funcin y caractersticas de comportamiento del software. Alternativamente, se desarrollan casos de uso que describen al software desde el punto de vista del
usuario.
7. Revisar cada miniprospecto o caso de uso para valorar su correccin, consistencia y falta de ambigedad.
8. Ensamblar los miniprospectos en un documento ms amplio.
656
21 ,5 EL eovco
La gestin de un proyecto de software exitoso requiere entender qu puede salir rr
(de modo que sea factible evitar los problemas). En un excelente articulo acerca <'.e
proyectos de software, John Reel [REE99] define 10 seales que indican que un pr
yecto de sistemas de informacin est en peligro:
Cules son
las seales
de que un
proyecto de
software est en
pefigro?
aprendidas.
Los profesionales industriales muy experimentados con frecuencia se refieren me-dio frvolamente) a la regla 90-90 cuando estudian proyectos de software part1cu
mente dificiles. El primer 90 por ciento de un sistema absorbe el 90 por ciento del es-fuerzo y el tiempo asignados. El ltimo 1O por ciento toma el otro 90 por cient
esfuerzo y el tiempo asignados [ZAH94J. Las causas que conducen a la regla del
90 estn contenidas en las seales anotadas en la lista precedente.
M.O..
Pero basta de negatividad! Cmo acta un gestor para evitar los problemas recin sealados' Reel fREE99J sugiere un enfoque de sentido comn de cinco pa
para proyectos de software:
1. Comience con el pie derecho. Esto se logra trabajando duro (muy duro) para
entender el problema que ser resuelto y entonces establecer objetivos y e pectativas realistas para todos los que estarn involucrados en el proyecto
Esto se refuerza mediante la construccin del equipo correcto (seccin 21 l.
y al darle al equipo la autonoma, autoridad y tecnologa necesarios para hacer el trabajo.
2 . Mantenga el mpetu. Muchos proyectos tienen un buen comienzo y luego le"'
lamente se desintegran. Para mantener el lmpetu, el gestor del proyecto det:
proporcionar incentivos para conservar los reveses del personal en un mm.-
CAPTULO 21
657
mo absoluto; el equipo debe resaltar la calidad en cada tarea que realiza, y los
gestores ejecutivos debe hacer todo lo posible por mantenerse fuera del camino del equipo. 6
3. Rastree el progreso. En un proyecto de software el progreso se rastrea conforme se elaboran los productos de trabajo (por ejemplo, modelos, cdigo fuente, conjuntos de casos de prueba) y se aprueban (mediante revisiones tcnicas
formales) como parte de una actividad de aseguramiento de la calidad. Adems, se pueden recopilar y aplicar procesos del software y medidas del proyecto (captulo 22) para valorar el progreso contra los promedios establecidos
por la organizacin que desarrolla software.
4. Tome decisiones inteligentes. En esencia, las decisiones del gestor del proyecto
y del equipo de software deben encaminarse a "mantenerlo simple". Siempre
que sea posible, decdase a emplear software comercial ya desarrollado o
componentes de software existentes, decdase a evitar interfases personalizadas cuando estn disponibles enfoques estndar, decidase a identificar y luego evitar riesgos obvios, y decdase a asignar ms tiempo que el que
considere necesario a las tareas complejas o riesgosas (necesitara cada minuto).
5. Realice un anlisis de resultados. Establezca un mecanismo consistente para
extraer lecciones aprendidas por cada proyecto. Evale la planificacin real y
la prevista, recolecte y analice mtricas de proyecto de software, obtenga realimentacin de los miembros del equipo y de los clientes, y registre los hallazgos en forma escrita.
La implicacin de este enunciado es que la burocraaa se reduce al mnimo, las reuniones extraas
El equipo
658
PARTE C UATRO
Aqu slo se anotan las prcticas crticas asociadas con la "integridad del proyecto".
CAPTULO 21
659
La gestin de proyectos de software es una actividad protectora dentro de la ingeniera del software. Comienza antes de iniciar cualquier actividad tcnica y contina
a lo largo de la definicin, el desarrollo y el soporte del software de computadora.
Las cuatro P que tienen una influencia sustancial en la gestin de proyectos de
software: personal, producto, proceso y proyecto. El personal debe estar organizado
en equipos eficientes, motivados para hacer un trabajo de software de alta calidad y
coordinados para lograr una comunicacin eficaz. Los requisitos del producto se deben comunicar del cliente al desarrollador, ser divididos (descompuestos) en sus
partes constitutivas y distribuirse para que trabaje el equipo de software. El proceso
debe adaptarse al personal y al problema. se selecciona un marco de trabajo de proceso comn, se aplica un paradigma de ingeniera de software adecuado y se elige
un conjunto de tareas de trabajo para llevar a cabo el trabajo. Finalmente, el proyecto debe estar organizado en una forma que permita triunfar al equipo de software.
El elemento central en todos los proyectos de software es el personal. Los ingenieros de software pueden organizarse en diferentes estructuras de equipo, que van
desde las jerarquias de control tradicionales hasta los equipos de "paradigma abierto". Se pueden aplicar varias tcnicas de coordinacin y comunicacin para apoyar
el trabajo del equipo. En general, las revisiones formales y la comunicacin informal
de persona a persona son las ms valiosas para los profesionales.
La actividad de gestin del proyecto abarca medidas y mtricas, estimacin y planificacin, anlisis de riesgos, seguimiento y control. Cada uno de estos tpicos se
considera en los captulos siguientes.
9
Las herramientas registradas aqu son una muestra de esta categora. En la mayora de los casos los
nombres de las mismas son marcas registradas por sus respectivos desarrolladores.
660
PARTE CUATRO
RIURIMA'1M
[AIR99] Airlie Council, "Performance Based Management: The Program Managers Guide Base
on the 16-Point Plan and Related Metrics", Draft Report, 8 de marzo, 1999.
[BAK72] Baker, F. T., "Chief Programmer Team Management of Production Programming", e:
IBM Systems Journal, vol. 11, nm. 1, 1972, pp. 56-73.
[BOE96J Boehm, B., "Anchoring the Software Process", en IEEE Software, vol. 13, nm. 4, jul...'.
de 1996, pp. 73-82.
[COCOl] Cockbum, A. y J. Highsmith, "Agile Software Development: The People Factor", en IEE:
Computer, vol. 34, nm. 11 , noviembre de 2001, pp. 131 - 133.
[CON93] Constantine, L., "Work Organization: Paradigms for Project Management and Orgar
zation", en CACM, vol. 36, nm. 10, octubre de 1993, pp. 34-43.
[COU80] Cougar, J. y R. Zawacki, Managing and Molivating Computer Personnel, Wiley, 1980.
[CUR88] Curts, B. et al., "A Field Study of the Software Design Process for Large Systemsff ...
JEEETrans. Software Engineering, vol. SE-31, nm. 11, noviembre de 1988, pp. 1268-1287
(CUR94] Curts, B. et al., People Managemenl Capability Maturity Model, Software Engineering tr;;::
titute, 1994.
[DEM98] DeMarco, T. y T. Lister, Peopleware, 2a. ed., Dorset House, 1998.
[EDG95] Edgemon, J., "Right Stuff: How to Recognize lt When Selecting a Project Manager"
Application Development Trends, vol. 2, nm. 5, mayo de 1995, pp. 37-42.
(FER98J Ferdinandi, P. L., "Facilitating Communication", en IEEE Software, septiembre de 1
pp. 92-96.
UAC98] Jackman, M., "Homeopathic Remedies for Team Toxicity", en IEEE Software, julio
1998, pp. 43-45.
.
[KRA95] Kraul, R. y L. Streeter, "Coordination in Software Development", en CACM, vol. 38, n::l:
3, marzo de 1995, pp. 69-81.
[MAN81J Mantei, M., "The Effect of Programming Team Structures on Programming Tasks~ e
CA.CM, vol. 24, nm. 3, marzo de 1981, pp. 106-1 13.
[PAG85] Page-Jones, M ., Practica! Project Management, Dorset House, 1985, p. vii.
[REE99] Reel, J. S , "Critica! Success Factors in Software Projects", en IEEE SOftware, mayo .
1999, pp. 18-23.
[WEI86] Weinberg, G., On Becoming a Technica/ Leader, Dorset House, 1986.
[WIT94J Whitaker, K, Managing Software Maniacs, Wiley, 1994.
[ZAH94] Zahniser, R., "Timeboxing for Top Team Performance", en Software Developmenl, ~
zo de 1994, pp. 35-38.
21. l. Con base en la informacin contenida en este capitulo y la experiencia propia, desarr
llar "1 O mandamientos" para alentar el potencial de los ingenieros de software. Esto es: elab
rar una lista de I O lineamientos que conducirn al personal que desarrolla software a ejercer
potencial completo.
21.2. El modelo de madurez de la capacidad de gestin de personal (MMCGP) del Sollware E;gineering Institute realiza un estudio organizado de las "reas prcticas clave" (APC) que Cu1..
va el buen personal de sollware. El instructor asignar una APC para analizar y resumir.
21.3. Describir tres situaciones de la vida real en las cuales el cliente y el usuario final son
mismo. Describir tres situaciones en las cuales son diferentes.
21.4. Las decisiones que toman los gestores ejecutivos pueden tener un impacto significaw
en la eficacia de un equipo de ingenieria del software. Proporcionar cinco ejemplos que ilustre
que esto es cierto.
21.5. Repasar el libro de Weinberg [WE186J y escribir un resumen de dos o tres pginas de
tpicos que deben considerarse al aplicar el modelo MOi.
CAPITULO 21
661
2 1 .6. Usted ha sido nombrado gestor de proyecto dentro de una organizacin de sistemas de
informacin. Su labor es construir una aplicacin que sea bastante similar a otras que ha construido su equipo, aunque sta es mayor y ms compleja El cliente ha documentado ampliamente los requisitos. Qu estructura de equipo elegira y por qu? Qu modelo(s) de proceso de
sollware elegira y por qu?
21.9. Usted ha sido nombrado gestor de proyecto de software para una compaia que atiende
al mundo de la ingeniera gentica. Su labor es gestionar el desarrollo de un nuevo producto de
sollware que acelerar el ritmo de la clasificacin de genes. El trabajo est orientado l+D, pero
la meta es elaborar un producto dentro del siguiente ao. Qu estructura de equipo elegira y
por qu? Qu modelo(s) de proceso de software elegira y por qu?
21 . 1o. A usted se le pide desarrollar una pequea aplicacin que analice los curso que ofrece
una universidad y reporte la calificacin promedio obtenida en el curso (para un periodo determinado) Escriba un enunciado del mbito que abarca este problema.
21 . 11 . Realice una descomposicin funcional de primer nivel de la funcin plantilla de pgina
El Project Management lnstitute (Gude to lhe Project Management Body of Knowledge, PMI, 2001)
cubre todos los aspectos importantes de la gestin de proyectos Murch (ProJecl Management
Besl Practcesfor IT Professonals, Prentice-Hall. 2000) ensea habilidades bsicas y proporciona
una gula detallada para todas las fases de un proyecto de TI. Lewis (Project Managers Desk Reference, McGraw-Hill, 1999) presenta un proceso de 16 pasos para planificar, supervisar y controlar cualquier tipo de proyecto. McConnell (Professional software Development, Addison-Wcsley, 2004) ofrece consejos pragmticos para "lograr planes ms cortos, productos de mayor calidad y proyectos ms exitosos".
Una excelente serie de cuatro volmenes escritos por Weinberg (Quality software Management, Dorset House, 1992, 1993, 1994, 1996) introduce conceptos bsicos de pensamiento y gestin de sistemas; explica cmo usar mediciones efectivamente; y aborda la "accin congruente", la habilidad de establecer "acoplamiento" entre las necesidades del gestor, las necesidades
del equipo tcnico y las necesidades del negocio. El libro brindar informacin til a los gestores tanto nuevos como experimentados. Futrell y sus colegas (Qualty SOjtware Project Manage
ment, Prentice-Hall, 2002) presentan un voluminoso tratamiento de la gestin de proyectos
Phillips (/T Project Management: On n-ackjrom Start to Fimsh, McGraw-Hill/Osborne, 20021,
Charvat (Project Management Nation, Wiley, 2002). Schwalbe (lnformation Technology ProJect Managemenl, 2a. ed., Course Technology, 2001) y Holtsnider y Jaffe (IT Manager's Handbook. Morgan Kaufmann Publishers, 2000) son representativos de los muchos libros que se han ese ito
acerca de la gestin de proyectos de software. Brown y sus colegas (AntiPattems m Proect Management, Wiley, 2000) examinan qu no hacer durante la gestin de un proyecto de softwl e.
Brooks (The Mythcal Man Monlh, Anmversary Edition, Addison-Wesley, 1995) ha actualizado su libro clsico para ofrecer una nueva visin en los temas de proyecto de solhvare y gestin. McConnell (SOjh,vare Project Swvi1 1 Guide, M1crosoll Press, 1997) presenta una excelente
gua pragmtica para quienes deben ges1 1nar pro;'t"ctos de software. Purba y Shah (How to M11-
662
http:// www.mhhe.com/pressman.
MTRICAS DE PROCESO
Y PROYECTO
a medicin permite obtener una visin del proceso y el proyecto pues pro-
cuando puede medir aquello de lo que est hablando y expresarJo en nmeros sabe
algo acerca de ello; pero c~do no puede medir, cuando M puede expresado en n
meros, su ci:onoctmento ~s escaso, deficente: puede serel comenzo del conoclmien
to, pero, en SUS pensamientos, apenas est ~\lanzado al m't)itO de 1a Ciencia.
...676
...666
....666
.614
664
PARTE CUATRO
&'
"~
c&v1
o~etivo es meoror el
proceso en si. Con
lrecuencio, los mtricos
del proyedO
contribuyen ol
desarrollo de mtricos
del proceso.
Las mtricas del proceso se recopilan en el curso de todos los proyectos y durante la=
gos periodos. Su objetivo es proporcionar un conjunto de indicadores de proceso q
conduzcan a la mejora de los procesos de software de largo plazo. Las mtricas
proyecto permiten que un gestor de proyecto de software 1) valore el estado de
proyecto en curso; 2) rastree los riesgos potenciales; 3) descubra las reas proble
antes de que se vuelvan "criticas"; 4) ajuste el flujo de trabajo o las tareas. y 5) e\
le la habilidad del equipo del proyecto para controlar la calidad de los productos
trabajo del soflware.
Las medidas que recopila un equipo de proyecto y las que convierte en mtpara emplearlas durante un proyecto tambin se pueden transmitir a quienes tie _
la responsabilidad de mejorar el proceso de software. Por esta razn, muchas de
mismas mtricas se usan tanto en el dominio del proceso como en el del proyec
CAPTULO 22
665
Producto
Personal
Tecnologa
Grady [GRA92] argumenta que existen usos privados y pblicos" para diferentes
tipos de datos de proceso. Como es natural que los ngenieros de software especiales sean sensibles al uso de las mtricas recop :adas sobre una base particular, di-
666
PARTE CUATRO
C1l es
la d"ifertnda
entre ISOS
privados y
pblim de las
mttricas de
software?
chos datos deben ser privados para el individuo y funcionar como un indicador slo
para l. Los ejemplos de mtncas privadas incluyen Indices de defecto por individuo
ndices de defecto por componente de software y errores encontrados durante el desarrollo.
La filosofia de "datos de proceso privados" se ajusta bien al enfoque de proceso personal del software (captulo 2) que propone Humphrey [HUM95]. Humphrey reconOC'!
que la mejora en el proceso de software puede y debe comenzar en el nivel individua..
Los datos de proceso privados pueden funcionar como un importante promotor pa.,
que el trabajo individual del ingeniero de software mejore.
Algunas mtricas de proceso son privadas para el equipo del proyecto de software, pero pblicas para todos los miembros del equipo. Los ejemplos incluyen defe.:tos que reportan las grandes funciones de software (las cuales desarrollaron varios
profesionales), errores detectados durante las revisiones tcnicas formales y lneas
de cdigo o puntos de funcin por mdulo o funcin. 1 Dichos datos los revisa d
equipo para descubrir indicadores que mejoren su desempeo.
Las mtricas pblicas por lo general asimilan informacin que originalmente era
privada para los individuos y equipos. Los ndices de defecto al nivel del proyecto
(que no se atribuyen por ningn motivo a un individuo), esfuerzo, planificacin y da-tos relacionados se recopilan y evalan con la finalidad de descubrir indicadores q-_~
pueden mejorar el desempeo del proceso organizacional.
Las mtricas del proceso de software ofrecen beneficios significativos conforr.- _
una organizacin trabaja en mejorar su grado global de madurez del proceso. sembargo, como todas las mtricas, stas pueden emplearse mal y crear ms prob...
mas de los que solucionan. Grady [GRA92J sugiere un "conjunto de reglas de etique.a
para las mtricas de software", adecuado tanto para gestores como para profesionales conforme instituyen un programa de mtricas del proceso:
Ov
hneamlentos
se deben aplicar
cuando se
recopila llltrkas
de software?
1 Las mtricas de lineas de cdigo y punto de funcin se estudian en las secciones 22.2.1 y 22.2.2.
CAPTULO 22
661
En este libro, un error se define como algn fallo en un producto de trabajo de ingeniera del software que se descubre antes de que el software se entregue al usuario final Un defecto es un fallo
que se descubre despus de la entrega al usuano final Se debe advertir que otros no hacen esta distincin En el capitulo 26 se presenta un mayor al"llisls
668
CAPTULO 22
669
' ]totodo lo que puede ser contado cuenta, y no todo lo que cuento puede ser contado/
'
, .y.
Las mtricas del proyecto se consolidan con el fin de crear mtricas del proceso
que sean pblicas para la organizacin de software como un todo. Pero, cmo combina una organizacin las mtricas provenientes de diferentes individuos o proyectos?
Con fines ilustrativos, considrese un ejemplo simple. Los integrantes de dos diferentes equipos de proyecto registran y categorizan los errores que encuentran durante el proceso del software. Luego, las mediciones individuales se combinan para
desarrollar medidas de equipo. El equipo A encontr 342 errores durante el proceso
del software previo al lanzamiento. El equipo B encontr 184 errores. Si todas las dems cosas se mantienen iguales, qu equipo es ms eficiente al descubrir errores a
lo largo del proceso? Puesto que no se conocen ni el tamao ni la complejidad de los
proyectos, no se puede responder esta pregunta. Sin embargo, si las mediciones se
normalizan, es posible crear mtricas de software que posibiliten la comparacin a
promedios organizacionales ms amplios. De esta forma, las mtricas orientadas
tanto al tamao como a la funcin estn normalizadas.
22.2.1
670
PARTE CUATRO
iihfifij
Mtricas
orientadas al
tamao.
llt'oyecto
o{fo
peto.
gommo
LDC
12100
27200
20200
24
62
43
168
440
314
&l
'"~
C~VE
365
1 224
loso
134
,.
321
256
a5
'
'
Vase la seccin 15.3.1 para una detallada exposicin del clculo de PF.
CAPTULO 22
671
neas de cdigo que se requieren para construir un punto de funcin en varios lenguajes de programacin:
Una revisin de estos datos indica que una LDC de C++ proporciona aproximadamente 2.4 veces la "funcionalidad" (en promedio) de una LDC de C. Ms an, una
LDC de Smalltalk proporciona al menos cuatro veces la funcionalidad de una LDC de
un lenguaje de programacin convencional como Ada, COBOL o
c. La utilizacin de la
informacin contenida en la tabla permite "tomar como contrafuego" OON98J el software existente para estimar el nmero de puntos de funcin, una vez que se conozca el nmero total de enunciados del lenguaje de programacin.
Se ha encontrado que las mtricas basadas en puntos de funcin y LDC son indicadoras relativamente precisos del esfuerzo y el costo del desarrollo de software. Sin
embargo, emplear LDC y PF en la estimacin (captulo 23) requiere establecer una lnea de referencia histrica de informacin.
En contexlo del proceso y las mtricas del proyecto, la preocupacin principal la
generan la productividad y la calidad: medidas de la "salida" de desatTollo de software como funcin del esfuerzo y el tiempo aplicados y medidas de la "aptitud para
el uso" de los productos de trabajo obtenidos. Respecto a propsitos de mejora del
proceso y planeacin del proyecto, el inters es histrico. Cul fue la productividad
Es importante notar que "pormenorizar los grandes componentes" se puede interpretar en varias
formas. Los ingenieros de software que trabaan en un en torno de desarrollo orientado a objetos
usan el nmero de clases u objetos como el tamao de mtrica dominante. Una organizacin de mantenimiento puede considerar el tamao del p~cto en t rminos del nmero de pedidos de cambios
de ingeniera (captulo 27). Una organizaan de Sl-'-temas de mtormacin quiz vea el nmero de
procesos comerciales que afecta una apcactn.
Utilizado con permiso de Quantitative Softw are Ma..~ n 1 wwwqsm.com), copyright 2002.
672
de desarrollo del software en los proyectos pasados? Cul fue la calidad del software
que se produjo? Cmo se pueden extrapolar al presente la productividad y la calidad pasadas? Cmo puede ayudar a mejorar el proceso y planificar nuevos proyectos
con mayor precisin?
Lenguaje de
programacin
Access
Ada
APS
ASP 69
Ensamblador
e
e++
Clipper
COBOL
Cool:Gen/lEF
Culprit
DBose IV
Eosytrieve 1
Excel47
Focus
FORTRAN
FoxPro
Ideal
IEF/Cool:Gen
lnformix
Javo
JovoScripl
JCL
JSP
Lotus Notes
Montis
Mopper
Natural
Orocle
PeopleSoft
Peri
PL/1
Powerbuilder
REXX
RPG 11/111
SAS
Smolltolk
SQL
VBScript36
Visual Bosic
Mediana
Bajo
Alto
35
154
86
62
337
162
66
38
77
38
51
52
33
46
43
38
15
104
20
32
91
33
29
27
14
JO
47
205
184
127
694
704
178
70
400
180
42
25
31
32
41
63
56
35
52
31
31
53
63
123
25
34
10
24
77
42
26
35
203
180
57
22
27
81
52
35
32
15
22
16
22
4
30
25
250
245
141
217
40
67
31
22
11
263
105
49
41
19
37
27
42
24
33
10
7
50
16
155
49
55
110
32
66
38
42
63
58
91
59
21
71
118
60
30
33
60
78
32
67
61
40
26
40
34
47
83
3 15
109
53
39
77
31
34
75
150
158
CAPTULO 22
6 73
En la parte 2 de este libro a las clases clave se les ~fui como clases de anlisis.
674
sistemas es ms fcil extender una planificacin razonable en la cual se haya hectla particin del trabajo entre el equipo del proyecto.
La utilizacin eficiente en un entorno de ingeniera de software orientada a obe
tos requiere recopilar mtricas similares a las anotadas lineas arriba, junto con me
didas del proyecto tales como esfuerzo gastado, errores y defectos descubiertos
modelos o pginas de documentacin producidos. Conforme la base de datos era.:
(despus de completados varios proyectos), las relaciones entre medidas orientad...;
a objetos y medidas de proyecto proporcionarn mtricas que auxilien en la estirr.
cin del proyecto.
intentado obtener mtricas de caso de uso, todava queda mucho trabajo por ha<:8':.
CAPTULO 22
675
las pginas dinmicas. Esta medida proporciona un indicio del tamao global de la
aplicacin y el esfuerzo que se requiere para desarrollarla.
Nmero de sistemas externos en inteaz. Con frecuencia las WebApps deben hacer interfaz con aplicaciones comerciales "de cuarto trasero". Conforme crece el requisito para hacer interfaz, la complejidad del sistema y el esfuerzo de desarrollo tambin aumentan.
Nmero de objetos de contenido esttico. Los objetos de contenido esttico
abarcan informacin esttica basada en texto, grfica, video, ariimacin y audio que
se incorporan dentro de la WebApp. En una pgina Web sencilla pueden aparecer
mltiples objetos de contenido esttico.
Nmero de objetos de contenido dinmico. Los objetos de contenido dinmico se generan con base en las acciones del usuario final y abarcan informacin
generada internamente basada en texto, grfica, video, animacin y audio que se incorporan dentro de la WebApp. En una pgina Web sencilla pueden aparecer mltiples objetos de contenido dinmico.
Nmero de funciones ejecutables. Una funcin ejecutable (por ejemplo, un
guin o applet) ofrece cierto servcio computacional al usuario final. Conforme aumenta el nmero de funciones ejecutables, tambin aumentan los esfuerzos de modelado y construccin.
Cada una de estas medidas se puede determinar en una etapa relativamente temprana del proceso de ingeniera Web.
Por ejemplo, es posible definir una mtrica que refleje el grado de personalizacin
de usuario final que se requiere para la WebApp ) correlacionarla con el esfuerzo
676
PARTE CUATRO
empleado en el proyecto de !Web o los errores descubiertos conforme se llevan a cabo revisiones y pruebas. Para lograr esto, se define
Nsp
Ndp
Entonces,
ndice de personalizacin, e= Ndpl(Ndp + Nsp)
El valor de e vara de o a 1. Conforme e crece, el nivel de personalizacin de la WebApp se vuelve un conflicto tcnico significativo.
Es posible calcular y correlacionar mtricas similares de aplicaciones Web ar
medidas del proyecto, tales como el esfuerzo empleado, los errores y defectos des
cubiertos y los modelos o pginas de documentacin producidos. Conforme la base
de datos crece (despus de que varios proyectos se han completado), las relaciones
entre las medidas WebApp y las medidas del proyecto proporcionarn indicadores
que auxilien en la estimacin del proyecto.
liiiiiiii
Mecnica: Cado herramienta vara en cuanto o su aplicacin, pero todos ofrecen mecanismos poro recopilar y
evaluar datos que conduzcan al clculo de mtricos de
software.
Herramientas representativas
Function Pont WORKBENCH, desarrollado por Chorismo
tek (www.chorismatek.com.au), ofrece uno amplia va
riedad de mtricos orientados a PF.
SL/M too/ set, desarrollado por QSM {www.qsm.com), proporciona un completo conjunto de mtricos y herra
mientas de estimacin.
o producto de alta calidad dentro de un marco temporal que satisfaga una necesida.:.
Las herramientas anotadas aqu son una muestra de esta categora. En la mayora de los casos
nombres de las mismas son marcas registradas por sus respectivos desarrolladores.
CAPTULO 22
677
del mercado. El logro de esta meta requiere que los ingenieros de software apliquen
mtodos eficaces acoplados con herramientas modernas dentro del contexto de un
proceso de software maduro. Adems, un buen ingeniero de software (y los buenos
gestores de ingeniera del software) debe medir si se lograr la alta calidad.
Las mtricas privadas reunidas por los ingenieros de software individuales se asimilan con los resultados ofrecidos en el mbito del proyecto. Aunque se pueden reunir muchas medidas de calidad, el impulso primario en el mbito del proyecto es medir los errores y defectos. Las mtricas derivadas de estas medidas proporcionan un
indicio de la efectividad de la garanta de la calidad del software y de las actividades
de control tanto de los individuos como del grupo.
Las mtricas como los errores en el producto de trabajo (por ejemplo, requisitos
o diseo) por punto de funcin, errores descubiertos por hora de revisin, y los errores descubiertos por hora de prueba ofrecen una visin de la eficacia de cada una de
las actividades implicadas en la mtrica. Los datos de error tambin se pueden emplear en el clculo de la eficacia en la eliminacin de defectos (EED) para cada actividad del marco de trabajo del proceso. La EED se estudia en la seccin 22.3.2.
22.3. l
Medicin de la calidad
Aunque existen muchas medidas de la calidad del software,9 la correccin, la facilidad de mantenimiento, la integridad y la facilidad de uso ofrecen indicadores tiles
para el equipo del proyecto. Gilb [GII..88] sugiere definiciones y mediciones para cada una de ellas.
Correccin. Un programa debe operar correctamente o proporcionar poco valor para sus usuarios. La correccin es el grado en que el software desempea la funcin para la que fue creado. La medida ms comn para la correccin es defectos
por KLDC, donde un defecto se define como una falta comprobada de concordancia
con los requisitos. cuando se considera la calidad global de un producto de software, los defectos son los problemas que reporta un usuario del programa despus de
que ste se liber para el uso general. Para los propsitos de la evaluacin de la calidad, los defectos se cuentan sobre un periodo estndar, usualmente un ao.
Facilidad de mantenimiento. El mantenimiento del software justifica ms esfuerzos que cualquier otra actividad de la ingeniera del software. La facilidad de
mantenimiento es la sencillez con la que un programa puede corregirse si se encuentra un error, adaptarse si su entorno cambia, o mejorar si el cliente desea un
cambio en los requisitos. No existe fonna de medir directamente la facilidad de mantenimiento; en consecuencia, se deben emplear medidas indirectas. Una simple medida orientada al tiempo es el tiempo medio de cambio (TMC), el tiempo que toma
analizar el cambio solicitado, disear una modificacin apropiada, implementar el
En el capitulo 15 se present una discusin detallada de los factores que influyen en la calidad del
software y las mtricas que se pueden usar para valorar la calidad del software.
678
cambio, probarlo y distribuir el cambio a todos los usuarios. En promedio, los programas susceptibles de mantenimiento tendrn un TMC bajo (para tipos de cambios
equivalentes) que los programas que no lo son.
=I
- (amenaza
(1 - seguridad))
0.99 (muy elevada). Si, por otra parte, la probabilidad de amenaza es o.so y la p~
bilidad de repeler un ataque es slo 0.25, la integridad del sistema es 0.63 (inacepk
blemente baja) .
CAPTULO 22
679
El valor ideal de la EED es 1. Esto es: no se encuentra defecto alguno en el software. En realidad, D ser mayor que O, pero el valor de EED todavia puede acercarse a
l. Conforme E aumenta (para un valor dado de D), el valor global de EED comienza
a acercarse a 1. De hecho, conforme E aumenta, es probable que el valor final de D
disminuya (los errores se filtran antes de que se conviertan en defectos}. Si se utiliza como una mtrica que proporciona un indicador de la habilidad de filtrado de las
actividades de control y aseguramiento de la calidad, EED alienta a un equipo de
proyecto de software a instituir tcnicas para encontrar tantos errores como sea posible antes de la entrega.
La EED tambin se puede aplicar en el proyecto para valorar la habilidad de un
equipo de encontrar errores antes de que pasen a la siguiente actividad del marco de
trabajo o a la siguiente tarea en la ingenieria del software. Por ejemplo, la tarea de anlisis de requisitos produce un modelo de anlisis que se revisa para encontrar y corregir errores. Aquellos errores que no se encuentran durante la revisin del modelo de anlisis pasan al diseo (donde pueden o no encontrarse}. Cuando se aplica en
este contexto la EED se redefine como
EED; = El(E; +E + 1)
donde E1 es el nmero de errores encontrado durante la actividad i de ingeniera de
software y E; . 1 es el nmero de errores encontrado durante la actividad i + 1 de ingeniera del software que se puede seguir para llegar a errores que no fueron descubiertos en la actividad i de ingeniera del software.
Un objetivo de calidad para un equipo de software (o un ingeniero de software individual} es lograr una EED1 que se acerque a 1. Esto es: los errores deben filtrarse
antes de que pasen a la siguiente actividad.
680
PARTE CUATRO
Vale la pena prestar atencin a la advertencia que sugieren estos autores, pero
beneficios de la medicin son tan convincentes que el trabajo duro vale la pena
CAPTULO 22
681
"Glstionamos las cosas mediante los nmeros en muchos aspectos de nuestros vidas.. Estos nmeros nos brnla
padlW de juicio y nos ayudan a dirigir nuestros acciones.
Los rigores cotidianos del trabajo del proyecto de software dejan poco tiempo para ejercitar el pensamiento estratgico. Los gestores de proyectos de software estn
preocupados con temas ms concretos (aunque igualmente importantes) desarrollar estimaciones de proyecto significativas, producir sistemas de alta calidad, tener
el producto en circulacin a tiempo. Si se emplea la medicin para establecer una linea base del proyecto, cada uno de dichos temas se vuelve ms manejable. Ya se ha
mencionado que la lnea base sirve como fundamento para la estimacin Adicional
mente, la recopilacin de mtricas de calidad permite que una organizacin sintonice" su proceso de software para remover las causas "poco vitales" de los defectos
que tienen el mayor impacto sobre el desarrollo del software. 10
En el capitulo 26 se tratan con detalle estas ideas, formalizadas en un enfoque denominado gar,m-
682
ifrhifi
Proceso de
recopilacin
de mtricas
de software.
Evaluacin
de mtricos
~
~~
c&v1
los datos de mtricos
ele tineo hose deben
recopilorse de uno gran
muestro representativo
de proyectos de
software previos.
Si se est comen
zondo ore<opilor
dolos de mtricos,
rl/QJrdese mantenerlos simples. Si los
lbs abroman los
tWefZDS de mtricas
tm5!JII.
CAPTULO 22
683
que siguen se examina cmo estos lineamientos se relacionan con las mtricas para pequeos negocios. 1:
"Mantenerlo simple" es una directriz que funciona razonablemente bien en muchas actividades. Pero, cmo se deduce un conunto "simple" de mtricas de software que aun as proporcione valor, y cmo se garantiza que dichas mtricas simples satisfarn las necesidades de una organizacin de software particular? Un buen
comienzo consiste en enfocarse no sobre las mediciones sino ms bien sobre los re
sultados. Al grupo de software se le entrevista para definir un objetivo sencillo que
requiere mejora. Por ejemplo, "reducir el tiempo para evaluar e implementar los
cambios solicitados". Una organizacin pequea puede seleccionar el siguiente conjunto de medidas que se recopilan con facilidad.
Tiempo (horas o das) transcurrido desde el momento en que se hizo una sohcitud hasta que la evaluacin est completa, leo/a
Esfuerzo (persona-horas) para realizar la evaluacin, Tl'\<11.
Tiempo (horas o das) transcurrido desde que se completa la evaluacin hasta
la asignacin del pedido de cambio al personal, t, ,1.
Esfuerzo (persona-horas) requerido para hacer el cambio, Tcamh,,,.
Tiempo requerido (horas o dias) para hacer el cambio, t,..
Errores descubiertos durante el trabajo para hacer el cambio, Ecamt>,o
Defectos descubiertos despus de que el cambio es liberado a la base de
clientes, Dcamt>lo
Una vez que se han recopilado dichas medidas para varios cambios solicitados
es posible calcular el tiempo transcurrido total promedio desde que el cambio se solicit hasta la implementacin del cambio y el porcentaje del tiempo transcurndo absorbido por la cola de espera inicial, la evaluacin y la asignacin y la implementac
del cambio. De igual modo, es posible determinar el porcentaje del esfuerzo que re
quieren la evaluacin y la implementacin. Estas mtricas se evalan en el conto.1
11 Esta exposicin es igualmente relevante para los equ pos de sollware que han adoptado un procc
so de desarrollo de software , gil (capitulo 4
684
El Software Engineering Institute (SEi) ha elaborado una gua detallada [J>AR96] para establecer un programa de mtricas de software "dirigido por metas". La gua Sugiere los siguientes pasos:
fOiH5rn1
AGlile fiw 6oal Ckw&n
'SdtwtnAfeasmmelll
se pi,ede desa,p de:
WWlllr..i.cm .
1.
2.
3.
4.
5.
6.
Identificar preguntas cuantificables y los indicadores relacionados que se emplearn como apoyo para l ograr los objetivos de sus mediciones.
7.
Identificar los elementos de datos que se recopilarn para construir los indicadores que ayudarn a responder las preguntas.
8.
Definir las medidas que se emplearn y hacer que estas definiciones sean
operativas.
9.
1 O.
Los mtcos de
Una exposicin detallada de estos pasos mejor se deja para el libro del SEi. Sin embargo, bien vale la pena dar un breve vistazo a los puntos clave.
Puesto que las funciones comerciales de apoyo del software diferencian los sistemas o productos basados en computadora, o actan como un producto en si mismo
las metas definidas para las empresas casi siempre pueden seguirse hacia abajo hasta metas especficas al nivel de la ingeniera del software. Por ejemplo, considrese
una compaa que fabrica avanzados sistemas de seguridad para el hogar que tiene
contenido de sonware sustancial. Al trabajar como equipo, la ingeniera del software y los gestores del negocio pueden confeccionar una lista de metas priori zadas de!.
negocio:
l.
2.
3.
4.
5.
CAPTULO 22
685
producidos.
2. Defi,, r los objetivos que se logrorn mediante el
~
~
: mejorar la precisin de la estimacin,
mejorar la colidod del producto.
686
PARTE CUATRO
8.
22, 7
REsuyEN
Las mediciones permiten que los gestores y profesionales mejoren el proceso~
software; auxilien en la planificacin, seguimiento y control de un proyecto de se
ware; y evalen la calidad del producto (software) que se produce. Las medidas alributos especficos del proceso, proyecto y producto se utilizan para calcular m~
tricas de software. Dichas mtricas se pueden analizar para ofrecer indicadores q
guen las acciones de gestin y tcnica.
Las mtricas del proceso permiten que una organizacin adopte una visin estr
tgica al proporcionar informacin detallada de la eficacia de un proceso de soth _
re. Las mtricas de proyecto son tcticas; permiten que un gestor de proyecto ada;-te el flujo de trabajo del proyecto y un enfoque tcnico realista en trminos de tiempLas mtricas orientadas tanto al tamao como a la funcn se aplican a Jo larg
de toda la industria. Las mtricas orientadas al tamao emplean la lnea de cd .,,
como un factor de normalizacin para otras medidas como persona-mes o defect1..
El punto de funcin se deduce de las medidas del dominio de la informacin y de u;valoracin subjetiva de la complejidad del problema. Adems, se pueden utilizar ~.:;...
mtricas orientadas a objetos y las mtricas de aplicacn Web.
Las mtricas de calidad del software, como las mtricas de productividad, se e"
focan sobre el proceso, el proyecto y el producto. Al desarrollar y analizar una lnc:
687
base de mtricas para la calidad una organizacin puede corregir aquellas reas del
proceso de software que causan defectos de soltware.
La medicin resulta en cambios culturales. La recopilacin de datos, el clculo y
el anlisis de mtricas son los tres pasos que preciso implementar para comenzar un
programa de mtricas. En general, un enfoque orientado a objetivos ayuda a que una
organizacin se enfoque en las mtricas correctas para su negocio. Al crear una lnea base de mtricas -una base de datos que contiene mediciones de proceso y
producto- los ingenieros de soltware y sus gestores pueden comprender mejor el
trabajo que hacen y el producto que elaboran.
[ALB83] Albrecht, A. J. y J. E. Gaffncy, "Software Function, Source Unes of Code and Development Effort Prediction. A Software Science Validation", en IEEE n-ans. Sojlware Engineering,
noviembre de 1983, pp. 639-648.
[B0E8 IJ Boehm, B., Sojlware Engineering Economics, Prentce-Hall, 1981.
[GRA87) Grady, R. B. y D. L. CasweU, Sojlware Metrics: Establishing a Company-Wide Program,
Prentice-Hall, 1987.
[GRA92] Grady, R. G., Practica/ Sojlware Metrics Jor Project Management and Process lmprovement,
Prentce-Hall, 1992.
[GIL88) Glb, T., Principies ofSojlware Project Management, Addison-Wesley, 1988.
[HET93] Hetzel, W. 1 Making Sojlware Measurement Work, QED Publishing Group, 1993.
{HUM95] Humphrey, W., A Disciplinefor Sojlware Engineering, Addison-Wesley, 1995.
[IEE931 IEEE Sojlware Engneering Standards, Standard 610.12-I 990, pp. 47-48.
U0N86J Jones, C., Programming Productivity, McGraw-Hill, 1986.
[JON91J Jones, c., Applied Sojlware Measurement, McGraw-Hill, 1991.
(JON98] Jones, C., Estimating Sojlware Costs, McGraw-Hill, 1998.
[LOR94J Lorenz, M. y J. Kidd, Object-Oriented Sojlware Metrics, Prentice-Hall, 1994.
[PAR96) Park, R. E., W. B. Goethert y W. A. Florac, Goal Driven Sojlware Measurement -A Guidebook, CMU/SEl-96-BH-002, Software Engineering Inslitute, camegie Mellon University,
agosto de 1996.
tPAU94] Paulish, D. y A. Carleton, "Case Studies of Software Process Improvement Measurement", en Computer, vol. 27, nm. 9, septiembre de 1994, pp. 50-57.
(QSM02) "QSM Function Point Language Gearing Factors", Versin 2.0, Quantitative Software
Management, 2002, http://www.qsm.com/ FPGearing.html.
[RAG95] Ragland, B., "Measure, Melric or lndicator: What's the Difference?", en Crossta/k, vol. 8,
nm. 3, marzo de 1995, pp. 29-30.
[SMl99J Smith, J., "The Estimation of Effort Based on Use-Cases", un artculo de Rational Corporation, 1999, se puede descargar de http://www.rational.com/products/rup/whitepapers.jsp.
22.1. Descrbir con palabras propias la diferencia entre mtricas del proceso y del proyecto.
22.2. Por qu algunas mtricas de software deben conservarse "privadas"? Ofrecer ejemplos
de tres mtricas que deban ser privadas. Ofrecer ejemplos de tres mtricas que deban ser pblicas.
22.3 . Qu es una medida indirecta y por qu tales medidas son comunes en el trabajo de mtricas del software?
22.4 . Grady sugiere un conjunto de reglas de enqueta ara las mtricas de soflware. El lector
puede agregar tres reglas ms a las menaonadas c:o la seccin 22.1. 1?
688
22.S El equipo A encontr 342 errores durante el proceso de ingeniera del software previo a
la liberacin. El equipo B encontr 184 errores. Qu medidas adicionales tendran que realizar
los proyectos A y B para determinar cul de los equipos elimin los errores de manera ms eficiente? Qu mtricas podran proponerse para ayudar a realizar la determinacin? Qu datos
histricos pueden ser tiles?
22.6. Presentar un argumento contra las lneas de cdigo como medida para la productividad
de software. El caso se sostiene cuando se consideran docenas o cientos de proyectos?
22.7. Calcular el valor de punto de funcin para un proyecto con las siguientes caractersticas
de dominio de informacin:
Nmero
Nmero
Nmero
Nmero
Nmero
de entradas externas: 32
de salidas externas: 60
de consultas externas: 24
de archivos lgicos internos: 8
de archivos de interfaz externos: 2
Suponer que todos los valores de ajuste de complejidad son promedios. Utilizar el algoritmanotado en el captulo 15.
22.8. Emplear la tabla presentada en la seccin 22.2.3 para elaborar un argumento contra
utilizacin del lenguaje ensamblador basado en la funcionalidad entregada por enunciado d.:
cdigo. Vase de nuevo la tabla y comentar por qu C++ presentara una mejor alternativa que e
22.9. El software utilizado para controlar una fotocopiadora requiere 32 000 LDC de C y 4 2"
lneas de Smalltalk. Estimar el nmero de puntos de funcin para el software dentro de la ro
piadora.
22.1 O. Un equipo de ingeniera Web ha construido una WebApp de comercio electrnico <rcontiene 145 pginas individuales. De estas pginas 65 son dinmicas; esto es, se generan c.
manera interna con base en la entrada del usuario final. Cul es el ndice de personalizac:k:"",
para esta aplicacin?
22.11. Una WebApp y su entorno de soporte no han sido completamente reforzados con.."""'.I
ataques. Los ingenieros Web estiman que la probabilidad de repeler un ataque slo es del 30 :-::ciento. El sistema no contiene informacin sensible o controversia!, as que la probabilidad ..
amenaza es de 25 por ciento. Cul es la integridad de la WebApp?
22.12. En la conclusin de un proyecto que utiliz el Proceso Unificado (Captulo 3) se del.e"
min que 30 errores se encontraron durante la fase de elaboracin, y 12 errores hallados dUra:"
te la fase de construccin podan seguirse hasta errores que no fueron descubiertos en la Ca:..
de elaboracin. Cul es la EED para estas dos fases?
22. 13. un equipo de software entrega un incremento de software a los usuarios finales. ts:.descubren ocho defectos durante el primer mes de uso. Antes de la entrega, el equipo de sa'
ware encontr 242 errores durante las revisiones tcnicas formales y todas las tareas de pn...
ba. Cul es la EED global para el proyecto?
La mejora del proceso de software (MPS) ha recibido una cantidad significativa de atencin d
rante las dos dcadas pasadas. Dado que la medicin y las mtricas de software son clave p&:
mejorar exitosamente el proceso de software, muchos libros acerca de la MPS tambin tratan
mtricas. Las fuentes valiosas de informacin acerca de las mtricas de procesos incluyen:
Burr, A. y M. Owen, Stalistical Methods for Software Qualify, lnternational Thomson Puh
hing, 1996.
El Emam, K. y N. Madhavji (eds.), Elements of Software Process Assessment and lmproveme:
IEEE Computer Society, 1999.
CAPTULO 22
689
Brooks/Cole Publishers, 1998) tratan cmo se pueden emplear las mtricas de sofiware para
proporcionar los indicadores necesarios para mejorar el proceso de software.
Putnam y Myers (Five Core Metrics, Dorset House, 2003) estudian una base de datos de ms
de 6 000 proyectos de software para demostrar cmo cinco mtricas centrales - tiempo, esfuerzo, tamao, confiabilidad y productividad de proceso- se pueden emplear para controlar los
proyectos de software. Maxwell (Applied Statistics for Software Managers, Prentice-Hall, 2003)
presenta tcnicas para analizar datos del proyecto de sofiware. Munson (Software Engineering
Measurement, Auerbach, 2003) estudia un amplio abanico de temas de medicin de ingeniera
del software. Jones (Software Assessments, Benchmarks and Bes/ Practices, Addison-Wesley,
2000) describe tanto medidas cuantitativas como factores cualitativos que ayudan a una organizacin a valorar sus procesos y prcticas de sofiware. Garmus y Herron (Function Point Analysis: Measurement Practicesfor Successful Software Projects, Addison-Wesley, 2000) examinan las
mtricas de proceso con nfasis en el anlisis de los puntos de funcin .
Lorenze y Kidd (LOR94J y DeChampeax (Object-Oriented Deve/opment Process and Me/res,
Prentice-Hall, 1996) consideran el proceso 00 y describen un conjunto de mtricas para valorarlo. w.hitmire (Object-Oriented Design Measurement, Wiley, 1997) y Henderson-Sellers (ObjectOrienled Metrics: Measures of Complexity, Prentice-Hall, 1995) se enfocan en las mtricas tcnicas para el trabajo 00, pero tambin consideran medidas y mtricas que se pueden aplicar en
el mbito del proceso y del producto.
Se ha publicado relativamente poco acerca de las mtricas para el trabajo de ingeniera Web.
Sin embargo, Stem (Web Meics: Proven Methods for Measuring Web Site Success, Wiley, 2002),
lnan y Kean (Measuring the Success of Your Website, Longman, 2002) y Nobles y Grady (Web Site
Analysis and Reporting, Premier Press, 2001) abordan las mtricas Web desde una perspectiva de
negocios y de marketing.
Lo ms reciente en la investigacin en el rea de mtricas lo resume el IEEE (Symposium on
Software Melrics, publicado anualmente). En Internet est disponible una amplia variedad de
fuentes de informacin acerca de las mtricas de proceso y proyecto. Una lista actualizada de referencias en la World Wide Web se encuentra en el sitio Web SEPA:
23
CONCEP'l'OS
CLAVE
iml!ritq "
,693
complejiclod 703
fftimad4,t
bo$aclo
enlDC ....700
basada
811 p(OC8S0S
104
recon<iliaci11 70&
fadlbilldad . .693
planlfiaidn ele
proyecto ... .692
recursos . .. .. .694
tamao
del software . .698
UN VISTAZO
RPIDO
ESTIMACIN PARA
PROYECTOS DE SOFTWARE
a gestin del proye,to de software comienza con un conjunto de activicb
des que en grupo se denominan planiji.Caci6n del proyecto. Antes de que
proyecto comience el gestor del proyecto y ~l equipo de software deben es
timar el trabajo que habr de realizarse, los recursos que se requerirn y e1 tiemrc
que transcurrir desde el princpio hasta el final. Una vez que se eompleten est:actividades, el equipo de software debe establecer un plan del proyect<t que d
fina las tareas y fechas dave de la ingeniera del software, que idenfique qui e
es responsable de dirigir cada tarea y especifique 1as dependencias entre tareas
que pueden ser detenninantes en el progreso.
En una excelente gua para "sobrevivir el proyecto de software", Steve McConr,
(MCC98Ipresenta una visin del mundo real de la planificacin del proyecto:
Mucho~ trabajadores tcrcos pteferrn realizar el trabajo t,nico en lugar <le pa-
sar l tiempo en la planitkadn. Muchos gestores tcnicos no tienen suficiente entrenamento en la gestin tcnica para sentirse seguros de que su planificacir
mejorar el resultado de un proyecto. Puesto que ninguna parte quiere hacer la planificacin, con frecuencia no se realiza.
Pero las fallas para planificar es u,no de los mayotes errores que un proycto pueda
cometer... se necesita la planificacin eficaz para resolver los problemas corriente
arriba [temprano en el proyect) a bajo costo, mas que corriente abajo {tarde en el
proyecto! a alto costo. El proyecto promedio gasta 80 por ccnto de su tiempo en reelaboracin: corrigiendo errores que $~ ometiei:on en etapastempranas del proyecto
CAPTULO 23
691
McConell argumenta que cualquier proyecto puede encontrar el tiempo para planificar (y adaptar el plan a lo largo del proyecto) simplemente tomando un pequeo
porcentaje del tiempo que se habra gastado en la reelaboracin que ocurre debido
a que no se planific.
La planificacin requiere que los gestores tcnicos y los miembros del equipo de
software establezcan un compromiso inicial, aun cuando sea probable que este
"compromiso" pruebe estar equivocado. Siempre que se realizan estimaciones se
atisba al futuro y se acepta automticamente algn grado de incertidumbre. Para
citar a Frederick Brooks [BR075)
[N]uestras tcnicas de estimacin estn pobremente desarrolladas. Ms seriamente, re flejan una suposicin no expresada que es bastante incierta, es decir: que todo ir bien .. .
Puesto que no estamos seguros de nuestras estimaciones, con frecuencia los gestores de
software carecen de la corts testarudez para hacer que la gente espere un buen producto
Aunque la estimacin es tanto un arte como una ciencia, esta importante actividad
no necesita realizarse en una forma improvisada. Existen tcnicas tiles para la estimacin de tiempo y esfuerzo. Las mtricas del proceso y del proyecto ofrecen la
perspectiva histrica y la energ1a para la generacin de estimaciones cuantitativas.
La experiencia (de toda la gente involucrada) puede auxiliar enormemente conforme
se desarrollan y revisan las estimaciones. Puesto que la estimacin coloca los
cimientos para las dems actividades de planificacin del proyecto, y sta proporciona la ruta para la ingeniera del software exitosa, se estara mal aconsejado si se
embarcara sin ella.
1.os MnOS enfoques de estimacin y los datos hisams sWos tfrecan la mejor esperanm de que en reolldad st
..._. sofn demandas imposibles.
692
La estimacin de recursos, costo y programa de trabajo para una tarea de ingeniera de software requiere experiencia, acceso a buena informacin histrica
(mtricas) y el valor para comprometerse con predicciones cuantitativas cuando la
informacin cualitativa es todo lo que existe. La estimacin implica riesgo inherente, 1 y ste conduce a la incertidumbre
La disponibilidad de informacin histrica tiene una fuerte influencia en el riesgo
de la estimacin. Al mirar en retrospectiva, se pueden emular las cosas que funcionaron y mejorar las reas donde surgieron problemas. Cuando hay disponibles
amplias mtricas de software (captulo 22) de proyectos previos, las estimaciones se
hacen con mayor seguridad, los programas de trabajo se pueden establecer para evitar dificultades pasadas y el riesgo global se reduce.
"II IIIIUdlrlsllm de INIII mente instruido es descansar satisfecho con el grvdo de presi611.- la . . . . . .
alillh, yao liusair la eXlldilucl cuando slo es posible unoaproximacin de lo ~
........
El riesgo de la estimacin se mide por el grado de incertidumbre en las estimaciones cuantitativas establecidas para recursos, costos y programa de trabajo. Si e
mbito del proyecto se comprende en forma deficiente o los requisitos del proyeo. estn sujetos a eventuales cambios, la incertidumbre y el riesgo de la estimacin se
incrementan peligrosamente. El planificador y, en forma ms importante, el clienre
deben reconocer que la variabilidad en los requisitos del software significa inestabilidad en costo y programa de trabajo.
Sin embargo, un gestor de proyecto no debe obsesionarse con las estimaciones.
Los modernos enfoques de ingeniera del software (por ejemplo, modelos de proceso incremental) asumen una visin iterativa del desarrollo. En tales enfoques es
posible, aunque no siempre aceptable polticamente, reexaminar las estimaciones
(cuando se conozca ms informacin) y modificarlas cuando el cliente cambia los
requisitos.
tcoNIIJOS.
Mientras m6s
conozco, mejor
estimar. En
consecuen<io,
octuofice sus
estimodones
crrfo,-ne avance el
,rr,yecto.
CAPTULO 23
693
b.
casos de uso.
c. Reconciliar las estimaciones.
6. Desarrollar un plan del proyecto (captulo 24).
a. Establecer un conjunto de tareas significativo.
b. Definir una red de tareas.
c. Usar herramientas de planificacin poro
desarrollar un cronograma.
d. Definir mecanismos de seguimiento del
programa de trabajo.
El mbito del software describe las funciones y caracteristicas que se entregarn a los
usuarios finales, los datos que son entrada y salida, el "contenido" que se presenta a
los usuarios como consecuencia de emplear el software, asi como el desempeo, las
restricciones, las interfases y la confiabilidad que acotan el sistema. El mbito se define al usar una de las dos tcnicas siguientes:
Los casos de uso se discutieron con detalle en las partes 2 y 3 de este libro. Un caso de uso es una
descripcin basada en escenario de la interaccin del usuario con el software, desde el punto de
vista del usuario.
694
tcc,NSIJOS.
Lo factibilidad del
proyecto es impar
tonte, pe,o una consideracin de los
necesidades del
negocio es incluso
ms imponante. No
es bueno construir un
sistema opradocto de
alto tecnologa que
nadie quiere.
PARTE CUATRO
[NJo todo lo imaginable es factible, incluso ni en sonware, tan evanescente como puede
parecer a los extraos. Por el contrario, la factibilidad del sofiware tiene cuatro dimensiones slidas: Ternologa: ,el proyecto es tcnicamente factible? Est dentro del terreno de
la disciplina? Los defectos se pueden reducir a tal grado que se emparejen con las necesidades de la aplicacin? Finanzas:
desarrollo a un costo que la organizacin de sonware, su cliente o el mercado puedan enfrentar? -nempo: ,el proyecto llegar al mercado antes y vencer a la competencia? Recursos: la organizacin tiene los recursos necesarios para triunfar?
iihif!i
Recursos del
proyecto.
CAPTULO 23
695
una ventana de tiempo. La disporubilidad del recurso para una ventana especfica
debe establecerse lo ms pronto posible.
23.4.1
Recursos humanos
El planificador comienza evaluando el mbito del software y seleccionando las habilidades requeridas para completar el desarrollo. Se especifican tanto la posicin
organizacional (por ejemplo, gestor, ingeniero de software ejecutivo) como la especialidad (por ejemplo, telecomunicaciones, base de datos, cliente/servidor). En proyectos relativamente pequeos (unos pocos persona-meses) un solo individuo puede
realizar todas las tareas de ingeniera del software y consultar con especialistas conforme se requiera. En proyectos mayores el equipo de software puede estar geogrficamente disperso en varios sitios. Aqu se especifica la ubicacin de cada recurso
humano.
El nmero de personas que requiere un proyecto de software slo se determina
despus de que se ha hecho una estimacin del esfuerzo de desarrollo (por ejemplo,
personas-mes). Las tcnicas para estimar el esfuerzo se tratarn ms adelante en
este captulo.
varios compo
de reufilizocin
Componentes ya desarrollados. El software existente se puede adquirir de un tercero o se desarroll internamente para un proyecto previo. Los CCYD (componentes comerciales ya desarrollados) se compran de un tercero, estn listos para emplearlos en el proyecto actual y han sido ampliamente validados.
Componentes experimentados. Especificaciones, diseos, cdigo o datos de prueba existentes que se desarrollaron para proyectos previos son similares al software que
se construir para el proyecto actual. Los miembros del equipo de software actual ya
tienen experiencia en el rea de aplicacin que representan dichos componentes. En
consecuencia, las modificaciones que requieran los componentes experimentados
sern relativamente de bajo riesgo
Componentes de experiencia parcial Especificaciones, diseos, cdigo o datos de
prueba existentes que se desarrollaron para proyectos previos estn relacionados
con el software que se construir para el proyecto actual pero requerirn modificaciones sustanciales. Los miembros del equipo de software actual slo tienen experiencia limitada en el rea de aplicacin que representan dichos componentes. Por
!&f 1!1111 ro dtsubtontrotocin y competencia creciente, lohabilidad para estimar con mu~ predsln....:hewgido
(Ql10 un fa<tot d xito tlllcioi poro muchos grupos de TI."
'
. . lr-..tt
3
Otro hardware -el entorno objetivo- es la computadora en la que el software se ejecutar cuan.:.
haya sido liberado al usuario final.
CAPTULO 23
697
La estimacin del costo y el esfuerzo nunca ser una ciencia exacta. 4 Demasiadas
variables -humanas, tcnicas, ambientales polllicas- pueden afectar el costo final
del software y el esfuerzo aplicado a desarrollarlo. Sin embargo, la estimacin del
proyecto de software se puede transfonnar de una prctica oscura en una sene de
pasos sistemticos que proporcionan estimaciones con riesgo aceptable. Para lograr
estimaciones confiables de costo y esfuerzo se tienen varias opciones:
Bennatan [BEN03) reporta que 40 poreientOde los desarrolladores de sonware continan luchando
con las estimaciones y que el tamao del ~-are y d tiempo de desarrollo son muy dilciles de estimar con precisin.
698
PARTE CUATRO
23.6.1
,r.,
'"'
c&v1
8 "11Jmoo" del
softwore que se
construir puede
estinme~
meooo directo,
LDC, ouno mdire<l1l,
Pf.
ll10
Cmo se
111lde el
tamao del
software que se
planea constrvir?
Tamao de "lgica difusa". La aplicacin de este enfoque requiere que el plaroficador identifique el tipo de aplicacin, establezca su magnitud en una e ~
cualitativa y luego refine la magnitud dentro del rango original.
Tamao de punto defuncin. El planificador desarrolla estimaciones de las
caractersticas del dominio de la informacin tratadas en el captulo 15.
Tamao de componentes estndar. El software se compone de varios "com~
nentes estndar", los cuales son diferentes y genricos de una rea partcula:
de la aplicacin. Por ejemplo, los componentes estndar de un sistema de
informacin son subsistemas. mdulos, pantallas, reportes, programas inte:--
CAPiTULO 23
699
Tamao del cambio. Este enfoque se aplica cuando un proyecto incluye la utilizacin de software existente que debe modificarse en cierta forma como parte
de un proyecto. El planificador estima el nmero y tipo (por ejemplo, reutilizacin, cdigo de adicin, cdigo de cambio, cdigo de borrado) de las modificaciones que se deben lograr.
Putnam y Myers sugieren que los resultados de cada uno de estos enfoques de tamao se combinen estadsticamente para crear una estimacin de tres puntos o del valor
700
parmetros relevantes. Luego se tienen que calcular los promedios de dominio loca:
cuando se estima un nuevo proyecto primero debe ubicarse en un dominio, y lueg;
aplicar el promedio del dominio apropiado para la productividad y as generar la estimacin.
~,
&1
C~VE
En los estimaciones PF
lo descomposicin se
enfoco sobre los
coroctersticos del
dominio de
mformocin.
Cmo se
cabla ti
valor esperado*
para el tamao de
software?
+ 5i,cs)/6
(23-'
701
tener interfaz con varios perifricos que incluyen ratn, digitalizador. monitor de
color de alta resolucin e impresora lser. Se puede elaborar una descripcin preliminar del mbito del software:
El software CAD mecnico aceptar del ingeniero datos geomtricos de dos y tres dime nsiones. El ingeniero interactuar y controlar el sistema CAD a travs de una interfaz del
usuario que exhibir caractersticas de buen diseo de interfaz humano-mquina. Todos
los datos geomtricos y otra informacin de soporte se conservarn en una base de datos
CAD. Se desarrollarn mdulos de anlisis de diseo para producir la salida requerida, la
cual se desplegar en una diversidad de dispositivos grficos. El software se disear para
controlar e interactuar con dispositivos perifricos que incluyen ratn, digitalizador, impresora lser y plotter.
Esta descripcin del mbito es preliminar, no est acotada. Se tendra que expandir
cada oracin para ofrecer detalle concreto y acotacin cuantitativa. Por ejemplo,
antes de que comience la estimacin, el planificador debe determinar qu significa
"caractersticas de buen diseo de interfaz humano-mquina" o cules sern el
tamao y la complejidad de la "base de datos CAD".
En cuanto a los propsitos actuales, se supone que se ha llevado a cabo ms refinamiento y que estn identificadas las grandes funciones de software mencionadas
en la figura 23.2. Al continuar con la tcnica de descomposicin para LDC se elabora una tabla de estimacin, la cual se muestra en la figura 23.2. En cada funcin se
desarrolla un rango de estimaciones LDC. Por ejemplo, el rango de las estimaciones
LDC para la funcin de anlisis geomtrico 30 es: optimista, 4 600 LDC; ms probable, 6 900 LDC; y pesimista, 8 600 LDC. Al aplicar la ecuacin 23-1 el valor esperado
para la funcin de anlisis geomtrico 30 es 6 800 LDC. Otras estimaciones se derivan en forma similar. Al sumar verticalmente en la columna de LDC estimadas, se
establece una estimacin de 33 200 lneas de cdigo para el sistema CAD.
tiihff!f
!ahlade
estimacin
;:,ara mtodos
:.oc.
Funci6n
U>C estimadas
2 300
5 300
6 800
3350
4950
2 100
8 400
.,
i,
'
33 200
702
PARTE CUATRO
Las estimaciones estn redondeadas a 1 000 dlares y a la persona-mes ms cercanos. Mayor precisin es innecesaria e irreal, dadas las limitaciones de precisin de la estimacin.
703
Conteo
Conteo.
emm.
Pelo
PF
4 .
97
20
24
30
24
0
12
15
22
78
16
' 22
2$
22
. 8&
10
42
,okdot extttrnQs
';.;
tulo 15. En cuanto a los propsitos de esta estimacin se supone que el factor ponderado de complejidad es el promedio. La figura 23.3 presenta los resultados de esta
estimacin.
Se estima cada uno de los factores ponderados de complejidad y el valor del factor ajustado se calculan como se describe en el captulo 15:
Valor
Factor
1. Respaldo y recuperacin
2. Comunicaciones de datos
3 . Procesamiento distribuido
4. Desempeo crtico
5.
6.
7.
8.
9.
1O.
1 1.
12.
13.
14.
5
3
5
5
4
3
5
5
1.17
= conteo total
Pfesllmado = 375
Pfeslimado
! (F)J
704
,..CONIUOSi el tiempo lo
permite, use lo granu-
seporodo.
PARTE CUATRO
vidad histricos, el costo total estimado del proyecto es de 461 000 dlares, y e
esfuerzo estimado es de 58 personas-mes.
;:..g.
Tabla de
esttmacin
basada en
procesos.
Adividad
.,_~
ce
~
- --
-'
....
.....
AUC
AG20
AG30
FPGC
GBD
0.5%
0.25
0.5%
025
0.5%
IC ...
2.50
4.00
0.40
0.60
5.00 n.o
2.00 n a
8.40
7 35
O.SO
4.00
3.00
300
2.00
2.00
1.00
1.00
0.75
0.50
0.50
3.00
na
LSO
no
8.50
6.00
1.50 n/a
5.75
1.50 n/o
2.00 n/a
4.25
5.00
3.50 20.50
4.75
16.50
45%
10%
36%
o.so
0.2.'i
ele
cOftlfrcci6n
0,50
0.'.75
0.50
0.25
MAD
%eduerzo
-li1i1
o.~o
fCP
Tolales
lngenlerio
8%
46.00
del diente
Una vez que se combinan las funciones del problema y las actividades del proc
so, el planificador estima el esfuerzo (por ejemplo, personas-mes) que se requer
para lograr cada actividad del proceso de software en cada funcin. Estos dat
constituyen la matriz central de la tabla en la figura 23.4. Entonces se aplican J..s
tasas de trabajo promedio (es decir, costo/unidad de esfuerzo) al esfuerzo estimapara cada actividad del proceso. Es muy probable que la tasa de trabajo vare e
cada tarea. El equipo veterano est enormemente involucrado en las actividad
7
Las actividades del marco de trabajo que se ehgen para este proyecto difieren un poco de la act
dades genricas tratadas en el captulo 2, que son la comunicacin con el cliente (CC), la planifi-.
cin el anlisis de riesgos. la ingeniera y la construccin-liberacin.
CAPTULO 23
105
Por qu es
ctifcil desa
J:'llar una tcnica
a estimacin con
ases de uso?
Corno se ha sealado a lo largo de las partes 2 y 3 de este libro, los casos de uso permiten que un equipo de software comprenda el mbito del software y los requisitos.
Sin embargo, desarrollar un enfoque de estimacin con casos de uso es problemtico por las siguientes razones [SMI99J:
Los casos de uso se describen empleando muchos formatos y estilos diferentes; no existe un formato estndar.
706
Los casos de uso representan una visin externa (la visin del usuario) del
software y con frecuencia estn escritos con diferentes grados de abstraccir
Los casos de uso no abordan la complejidad de las funciones ni de las carac
tersticas que se describen.
Los casos de uso no describen el comportamiento complejo (por ejemplo,
interacciones) que involucran muchas funciones y caractersticas.
A diferencia de las LDC o un punto de funcin, el "caso de uso" de una persona W
vez requiera meses de esfuerzo mientras que el de otra quiz se implemente en v
da o dos.
Aunque varios investigadores han considerado los casos de uso como una entt?
da a la estimacin, a la fecha no ha surgido ningn mtodo de estimacin probad
Smith [SMI99] sugiere el empleo de los casos de uso en la estimacin, pero slo
se consideran dentro del contexto de la "jerarqua estructural" que los casos de us >
describen.
Smith argumenta que cualquier nivel de esta jerarqua estructural se describe c ....
no ms de 1O casos de uso. Cada uno de stos abarcara no ms de 30 escenan s
distintos. Obviamente, los casos de uso que describen un sistema grande estn ese- tos con un grado mucho mayor de abstraccin (y representan considerablemene
ms esfuerzo de desarrollo) que aquellos que describen un solo subsistema. En ce
secuencia, antes de que los casos de uso se empleen en la estimacin, se establee
el nivel en la estructura jerrquica, se determina la longitud promedio (en pgina
de cada caso de uso, se define el tipo de software (por ejemplo, tiempo real, de neg: cios, de ingenieria/cientfico, anidado) y se considera una arquitectura comn d
sistema. Una vez establecidas dichas caractersticas, los datos empricos se aprO\
chan para establecer el nmero estimado de LDC o de PF por caso de uso (para ca...
nivel de la jerarquia). Entonces se utilizan los datos histricos para calcular el esfue
zo necesario para desarrollar el sistema.
Enseguida se ilustra cmo realizar este clculo; por tanto, considrese la siguier
te relacin: 8
LDC estimada= N X LDCrom + [(50 /Sh - 1) + (P0 /Ph - !)) X LDCauste
(23-2
donde
N
LDCprom
Es importante sealar que la expresin (23-2) se emplea slo con propsitos ilustrativos. Al i ~
que todos los modelos de estimacin, debe validarse localmente antes de que se le pueda utilizar
con segundad.
CAPTULO 23
707
Pa
Ph
Con la expresin (23-2) se desarrolla una estimacin comn del nmero de LDC con
base en el nmero real de casos de uso ajustado mediante el nmero de escenarios
y la longitud de la pgina de los casos_de uso. El ajuste representa hasta n por ciento del promedio histrico de las LDC por caso de uso.
jijij/ffij
cosos
de uso
escenarios
6
10
5
10
20
3 366
31 233
7 970
pginos;n;~m2~~~_:.,y;~
LDC estimados
.42 568
708
nas. Estos datos se ajustan razonablemente bien para el sistema CAD. As pues, l.:
estimacin de LDC para el subsistema de interfaz del usuario se calcula mediante la
expresin (23-2). Si se aplica el mismo enfoque, se realizan estimaciones para los
grupos de subsistemas de ingeniera e infraestructura. La figura 23.5 resume las estimaciones e indica que el tamao global del software CAD se estima en 42 500 LDC
Si se utilizan 620 LDC/pm como la productividad promedio en los sistemas de
este tipo y una escala salarial de 8 000 dlares por mes, el costo por linea de cdigo
es aproximadamente de 13 dlares. Con base en la estimacin de caso de uso y los
datos histricos de productividad, el costo total estimado del proyecto es de 552 00:
dlares, y el esfuerzo estimado es de 68 personas-mes.
"
... ,11.... ,,
El esfuerzo estimado total para el software CAD vara desde un bajo de 46 perscnas-mes (obtenido empleando el enfoque de la estimacin basada en el procese
hasta un alto de 68 personas-mes (derivado con la estimacin de caso de uso). L:.
estimacin promedio (que utiliza los cuatro enfoques) es de 56 personas-mes. La variacin de la estimacin promedio es aproximadamente 18 por ciento en el lado baic
y de 21 por ciento en el lado alto.
Qu ocurre cuando la concordancia entre las estimaciones es insuficienteResponder esta pregunta requiere reevaluar la informacin con que se hicieron ~
estimaciones. Las estimaciones ampliamente divergentes con frecuencia puederastrearse hasta una de dos causas:
709
4.
6.
s~
C~VE
modelo de
ts1mJCi reflejo lo
~ de proyectos
oo1e la que se ho
""1VOdo. Por lo tonto,
modelo es sensible
dominio.
9 En la seccin 23 6. 7 se sugiere un modelo emprico que utiliza casos de uso como la variable independiente. Sin embargo, a la fecha han a;,a:ecido relativamente pocos en la respectiva b1blografia
PARTE CUATRO
710
=A + B
(23-
(evf
lm(plo de estos
E = 5.2
modelos se debe
emplea sil IIIO cof.
lxoci6n a.ma a
~ enlomo.
E= 3 2 X (KLDC) 1 os
E
= 5.288 X
(KLOC) 1 457
modelo Walston-Felix
modelo Bailey-Basili
modelo simple de Boehm
modelo Doty para KLDC > 9
E = - 91.4 + 0.355 PF
E= - 37 + 0.96 PF
E = - 12.88 + 0.405 PF
Un rpido examen de estos modelos indica que cada uno producir un result!'.;.
diferente para los mismos valores de LDC o PF. La implicacin es clara. Los m cx;.
los de estimacin deben calibrarse para las necesidades locales!
23. 7 .2
CH iBi :iiii:'"
s- 1
.,,.,,..
WI
(u
.......
........
.......
........
1
....
-CDCDIWll.
El modelo COCOMO U
En su libro clsico acerca de "economia de la ingeniera del software", Barry Boeh[B0E81J introduce una jerarqua de modelos de estimacin de software que lleva .
nombre de COCOMO, por COnstructive cose MOdel (Modelo Constructivo de costos
El modelo COCOMO original se volvi uno de los ms ampliamente utilizados y est
diados modelos de estimacin de costo de software en la industria. Adems, ha e'.
lucionado a un modelo de estimacin ms amplio, llamado COCOMO 11 [BOE
BOEOOJ. Al igual que su predecesor, COCOMO II es en realidad una jerarqua dmodelos de estimacin que aborda las reas siguientes:
CAPTULO 23
711
del software.
Al igual que los modelos de estimacin del software, los modelos COCOMO II requieren informacin de tamao. Como parte de la jerarqua del modelo hay disponibles
tres opciones diferentes de tamao: puntos objeto, puntos de funcin y lneas de
cdigo fuente.
El modelo COCOMO II de composicin de la aplicacin emplea puntos objeto, una
medida indirecta de software que se calcula mediante conteos del nmero de 1) pantallas (en la interfaz del usuario), 2) reportes y 3) componentes que probablemente
se requieran para construir la aplicacin. Cada instancia de objeto (por ejemplo, una
pantalla o reporte) se clasifica en uno de tres niveles de complejidad (es decir, simple, medio o difcil) aplicando criterios sugeridos por Boehm [B0E96J. En esencia, la
complejidad es una funcin del nmero y origen de las tablas de datos del cliente y
el servidor que se requieren para generar la pantalla o reporte, y el nmero de vistas o secciones presentadas como parte de la pantalla o el informe.
Una vez que se ha determinado la complejidad, el nmero de pantallas, informes
y componentes se pondera de acuerdo con la tabla ilustrada en la figura 23.6.
Entonces se determina la cuenta de puntos objeto al multiplicar el nmero original
de instancias de objeto por el factor de ponderacin en la figura y se suma para obtener una cuenta total de puntos objeto. Al aplicar el desarrollo basado en componentes o la reutilizacin general de software se estima el porcentaje de reutilizacin
(%reut) y se ajusta la cuenta de puntos objeto:
NPO = (puntos objeto) x [(100 - %reut)/I00J
donde NPO se define como nuevos puntos objeto.
Para obtener una estimacin del esfuerzo con base en el valor NPO calculado, se
debe calcular una "tasa de productividad". La figura 23.7 presenta la tasa de productividad
PROD
= NPO/persona-mes
712
ifrP.61
.....
.......
Tipo ele
Ponderacin de
complejidad
parattposde
objeto [BOE96J.
Pontollo
Repo,..
10
Compo11ente JGL
IMlfiY
Experiencio/capaciclacl clel
desarrollador
Maclurn/capaciclacl . . entwno
TASA PRODUCTIVIDAD (PROD)
Bajo
Nominal
Alta
Muy
Muy
bojo
Bajo
Nominal
Alta
Muy
..
13
25
50
Muy
bojo
oha
olla
biii 1d fr FM 1
En .........
llldl-
...........
......
-- -
......... ,..,
eslilllld6n. -
La ecuacin de software [PUT92] es un modelo multivariable que supone una dist:bucin especfica del esfuerzo a lo largo de la vida de un proyecto de desarrollo e_
(23--.
., ICIICld6II del
SGflrMR.
donde
E = esfuerzo en personas-mes o personas-ao
1o Como se anot anterionnente, estos modelos utilizan conteos de PF y KLDC para la variable tarnr
11 B aumenta lentamente conforme "crecen la necesidad de integracin, las pruebas, la garantla de c.
lidad, la documentacin y las habilidades de gestin" [PUT92) Para programas pequeos (KLOC a 15), B '" 0.16. Para programas ms grandes que 70 KLDC, B " 0.39.
CAPTULO 23
= "parmetro
713
(23-5a)
(23-5b)
= 58 personas-mes
714
3. A partir del modelo de anlisis, determinar el nmero de clases clave (llamadas clases de anlisis en el capitulo 8).
Multiplicador
Sin IUG
2.0
2.25
2.25
IUG
IUG complejo
3.0
Multiplicar el nmero de clases clave (paso 3) por el multiplicador para obtener una estimacin del nmero de clases de soporte.
5. Multiplicar el nmero total de clases (clave + soporte) por el nmero promedio de unidades de trabajo por clase. Lorenz y Kidd sugieren de 15 a 20 pers;>nas-da por clase.
Las tcnicas de estimacin estudiadas en las secciones 23.6, 23.7 y 23.8 se puedeaplicar en cualquier proyecto de software. Sin embargo, cuando un equipo de so;
ware encuentra una duracin de proyecto extremadamente corta (semanas ms <rmeses) -que probablemente tengan una continua corriente de cambios- la piar~
cacin del proyecto en general y la estimacin en particular se deben abreviar. 1 ~
las secciones siguientes se examinan dos tcnicas de estimacin especializadas.
CAPTULO 23
715
3a. Cada tarea se estima por separado. Nota: la estimacin se puede basar en datos histricos, en un modelo emprico o en la "experiencia".
09'
LDC, PF o alguna otra medida orientada a volumen (por ejemplo, puntos objeto).
4a. Las estimaciones de cada tarea se suman para crear una estimacin para el
escenario.
4b. Alternativamente, el volumen estimado para el escenario se traduce en esfuerzo mediante la aplicacin de datos histricos.
5. Las estimaciones de esfuerzo acerca de todos los escenarios que se implementarn para un incremento de software dado se suman con el fin de desarrollar el esfuerzo estimado para el incremento.
Puesto que la duracin del proyecto requerido para el desarrollo de un incremento
de software es bastante corta (usualmente de 3-6 semanas), este enfoque de estimacin tiene dos propsitos: 1) asegurar que el nmero de escenarios que se incluirn en el incremento se integra con los recursos disponibles, y 2) establecer una base
para ubicar el esfuerzo conforme se desarrolla el incremento.
Entradas son cada pantalla o formato de entrada (por ejemplo, CGI o Java),
cada pantaJJa de mantenimiento y, si en alguna parte utiliza una etiqueta de
metfora de cuaderno, cada etiqueta.
Salidas son cada pgina Web esttica, cada guin de pgina Web dinmica
(por ejemplo, ASP, ISAPI u otro guin DHTML) y cada reporte (ya sea que est
basado en Web o sea del todo administrativo).
Tablas son cada tabla lgica en la base de datos ms, si emplea XML para
almacenar datos en un archivo, cada objeto XML (o coleccin de atributos
XML).
716
13 Las herramientas anotadas aqu son una muestra de esta categora. En la mayora de los casos
nombres de las mismas son marcas registradas por sus respectivos desarrolladores.
CAPTULO 23
717
=r
(probabilidad de la ruta)
= 0.30(380K dbla."'eS) -
718
PARTE CUATRO
iihiifi:j
rbol d e decls16n
para apoyar la
declsi6n
desarrollm
oomprm.
31 O 000 dlares
Cambias menares
~
.,
_Y=-----
210 000
dlo
res
l,Cb'(O)
500 000 dlares
on cam ,as 0.4
Al seguir otras trayectorias del rbol de decisin tambin se muestran, en un..
diversidad de circunstancias, los costos proyectados para reutilizacin, compra
contratacin. Los costos esperados para dichas trayectorias son
costo esperadoreutdiZar
costo esperadOcomprar
costo esperadO.:ontratar
Con base en la probabilidad y los costos proyectos que se han anotado en la figur..
23.8, el costo esperado ms bajo es la opcin "comprar".
Sin embargo, es importante sealar que se deben considerar muchos criterios -n...
slo costo- durante el proceso de toma de decisin. Disponibilidad, experiencia de:
desarrollador-vendedor-contratista, concordancia con los requisitos, "pollticas
locales y la probabilidad de cambiar son slo algunos de los criterios que pueder
incidir en la decisin final de construir, reutilizar. comprar o contratar.
23.10.2 Subcontratacln
Tarde o temprano, cualquier compaa que desarrolla software de computadora se:
plantea una pregunta fundamental: existe una forma de conseguir los sistemas .,
software necesarios a un precio ms bajo? La respuesta no es tan simple, y los deba
tes emocionales que genera la pregunta siempre conducen a una sola palabra: sub
contratacin.
Como concepto. la subcontratacin es extremadamente simple. Las actividades
de ingeniera del software se contratan con una tercera parte que realiza el trabajo
CAPTULO 23
719
gico, los gestores comerciales consideran si una porcin significativa de todo el trabajo de software se puede contratar con otros. En el plano tctico, un gestor de proyecto determina si parte o todo un proyecto puede lograrse mejor al subcontratar el
trabajo de software.
Sin importar la amplitud de la visin, la decisin de subcontratar usualmente es
financiera. Una exposicin detallada del anlisis financiero de la subcontratacin
est ms all del mbito de este libro y mejor se deja a otros (por ejemplo, [MIN95)).
Sin embargo, vale la pena una breve revisin de los pros y contras de la decisin.
En el lado positivo, usualmente es factible ahorrar en el costo reduciendo el
nmero de personal de software y las instalaciones (por ejemplo, computadoras,
infraestructura) que los soportan. En el lado negativo, una compaa pierde cierto
control sobre el software que necesita. Dado que el software es una tecnologa que
diferencia sus sistemas, servicios y productos, una compaa corre el riesgo de poner
el destino de su competitividad en las manos de una tercera parte.
t 4 La subcontratacin se puede considerar, ele manera mas ~raJ. como cualquier actividad que con-
duce a la adquisicin de software o algunos ele sus a:a;ioucilles con una fuente externa a la organizacin de ingeniera del software.
720
El planificador del proyecto de software debe estimar tres factores antes de que E.
proyecto comience: cunto tiempo tomar, cunto esfuerzo requerir y cunto personal estar involucrado. Adems, el planificador debe predecir los recursos (hardware y software) que se requerirn y el riesgo involucrado.
La descripcin del mbito ayuda al planificador a desarrollar estimaciones emplea~
do una o ms tcnicas que se clasifican en dos amplias categorlas: descomposia
y modelado emprico.
Las tcnicas de descomposicin requieren un bosquejo de las principales funcnnes del software, seguido por estimaciones de 1) el nmero de LDC, 2) valores sele:-cionados dentro del dominio de informacin, 3) el nmero de casos de uso, 4 d
nmero de personas-mes requerido para implementar cada funcin, o 5) el nmero
de personas-mes requerido para cada actividad de ingenierla del software. Las tc
nicas empricas usan expresiones para esfuerzo y tiempo obtenidas empricamentepara predecir estas cantidades del proyecto. Se pueden utilizar herramientas aut
matizadas para implementar un modelo empirico especfico.
Por lo general, las estimaciones precisas de proyecto emplean al menos dos de
las tres tcnicas anotadas. Al comparar y reconciliar las estimaciones obtenidas cola aplicacin de diferentes tcnicas, el planificador tiene ms probabilidad de calcu-
CAPTULO 23
721
lar una estimacin precisa. La estimacin del proyecto de software nunca ser una
ciencia exacta, pero una combinacin de buenos datos histricos y tcnicas sistemticas puede mejorar la precisin de la estimacin.
23. l. Suponga que es el gestor de proyecto de una compaa que construye software para
robots caseros. Se le ha contratado para construir el software destinado a un robot que corta el
pasto. Describa por escrito el mbito del software. Asegrese de que la descripcin del mbito
est acotada. Si no est familiarizado con los robots, investigue un poco antes de comenzar a
escribir. Adems, establezca sus suposiciones acerca del hardware que se requerir.
Alternativa: sustituya el robot que corta el pasto por otro problema robtico que le interese.
23.2. La complejidad del proyecto de software illlluye en la precisin de la estimacin.
Desarrollar una lista de caractersticas de so!tv.~ (Par' ejemplo. operacin concurrente, salida
grfica) que afecten la complejidad de wt p r ~ EstahJecer prioridades en la lista.
722
PARTE CUATRO
es
23.8. Utilizar los resultados obtenidos en el problema 23. 7 para determinar si es razona'bk
esperar que el software se construya dentro de los siguientes seis meses y cunto personal se
tendria que emplear para realizar el trabajo.
23.9. Desarrollar un modelo de hojas de clculo que implemente una o ms de las tcnica de
estimacin descritas en este capitulo. Alternativamente, adquirir de fuentes basadas en Wct:
uno o ms modelos en lnea para la estimacin de proyectos de software.
23.10. Para un equipo de proyecto, desarrollar una herramienta de software que implem~
cada una de las tcnicas de estimacin desarrolladas en este capitulo.
23.11. Parece extrao que las estimaciones de costo y programa de trabajo se desarro k::!
durante la planificacin del proyecto de software, antes de que se haya llevado a cabo un <i.seo o un anlisis detallado de los requisitos de software. Por qu cree que se haga esto? ~
circunstancias en las cuales no se deba hacer?
23.12. Vuelva a calcular los valores anotados para el rbol de decisin en la figura 21
Suponga que cada rama tiene una probabilidad de 50-50. Esto cambiarla su decisin final~
de proyectos. El Project Management lnstitute (PMBOK Guide, PMI, 2001). Wysoki y sus colt:gas
(Effective Project Management, Wiley, 2000), Lewis (Project Planning Scheduling and Control. tercera edicin, McGraw-Hill, 2000), Bennatan (On Time, Within Budget: Software Pro,:t
Management Practices and Techmques, tercera edicin, Wiley, 2000) y Phillips [PHl98J ofrecen nles directrices de estimacin.
Jones (Estimating Software Costs, McGraw-Hill, 1998) ha escrito uno de los tratamientos ms
completos de la materia publicados a la fecha. Su libro contiene modelos y datos aplicables ;a
estimaciones de software en cualquier dominio de aplicacin. Coombs (/T Project Estimatlr.
Cambridge University Press, 2002), Roetzheim y Beasley (Software Project Cost and Sched 1:
Estimating: Best Practices, Prentice-HaU, 1997) y Wellman (Software Costing, Prentice-Hall, 1gqr,
presentan muchos modelos tiles y sugieren directrices paso a paso para generar las mejores
estimaciones posibles.
El detallado tratamiento de Putnam y Myers de la estimacin de costo del software ([PU"N:
y [PUT97b]) y tos libros de Boehm acerca de economa de ingenieria del software (fB0E81 J
COCOMO 11 [BOEOO)) describen modelos de estimacin empricos. Estos libros proporcionan i=
anlisis detallado de datos derivados de cientos de proyectos de software. Un libro excelente de
CAPTULO 23
723
DeMarco (Controlling Software Projects, Yourdon Press, 1982) ofrece un valiosa visin de gestin,
medicin y estimacin de proyectos de software. Lorenz y Kidd (Object-Oriented Software
Metrics, Prentice-Hall, 1994) y Cockbum (Surviving Object-Oriented Projects. Addison-Wesley,
1998) consideran la estimacin para sistemas orientados a objetos.
En Internet hay disponible una amplia variedad de fuentes de informacin acerca de estimacin de software. Una lista actualizada de referencias en la World Wide Web se encuentra en
el sitio Web de SEPA:
http:// www.mhhe.com/ pressman.
CAPTULO
24
CONCEPTOS
CLAVE
on65sls
del~ ...737
cronogranos . .73&
.-v11PNR .. 730
demora .. .72S
cllstribudn de
esfverzo .. J32
ptrsC!IIQI y
esfuerzo . 729
p"""los
llsicos ... .728
red de tortCI$ . .73S
r....._.ode
tareas . , .. .734
JeflIINl10 .739
tiolHGxi,,g .. .740
,olor ,-lo . .742
724
(ALENDARIZACIN
DE PROYECTOS DE SOFTWARE
finales de los de los aos 60, un joven y brillante ingeniero fue elegid
pata "escribir" un programa de computadora para una aplicacin indus
rial automatizada La rc1zn por la cual se le eligi fue simple: era la
ca persona en el grup<;> tcnico que haba asistido a un seminario de programa
cin de computadoras. l conocla las entradas y salidas del lenguaje ensamb
dor y de FORTRAN, pero nada acerca de ingeniera del software, e incluso me
nos acerca de calendarizacin y seguimiento de proyectos.
su jefe le dio los manuales apropiados y una descripcin verbal de lo que te
na que hacer. Se le infonn que el proyecto deba terminarse en dos meses
El ngenero ley los manuales, consider su enfoque y comenz a escribir
cdigo. Despus de dos semanas, el jefe lo llam a su oficina y le pregunt cmo iban las cosas,
"Realmente bien", dijo el joven ingeniero con entusiasmo juvenil. "Esto fi
mucho ms simple de lo que pens. Probablemente he terminado cerca del
por ciento."
El jefe sonri y alent al joven ingeniero a segulr trabajando bien. Planeara;:
reunirse de nuevo en una semana.
Una semana despus, el jefe llam al ingeniero a su oficina y le pregun
"Dnde estamos?"
"Todo marcha bien", dijo el joven, "pero me he encontrado con algunos pequ
os obstculos Los solucionar y regresar al ritmo de trabajo muy pronto."
"Cmo ves la fecha lmite?'', pregunt el Jefe.
CAPTULO 24
725
"No hay problema", dijo el ingeniero. "Estoy cerca de terminar el 90 por ciento."
Si se ha trabajado en el mundo del software durante unos cuantos aos se es capaz de terminar la historia. No ser sorpresa que el joven ingeniero 1 haya permanecido en el 90 por ciento durante todo el proyecto y terminado (con la ayuda de otros)
un mes despus.
Esta historia se ha repetido decenas de miles de veces con desarrolladores de
software durante las pasadas cuatro dcadas. La gran pregunta es por qu.
Aunque existen muchas razones por las cuales el software se entrega con retraso, la
mayora se encuadra en una o ms de las siguientes causas:
una fecha lmite irrealizable establecida por alguien externo al grupo de ingenieria del software e impuesta a los gestores y profesionales del grupo.
Cambio en los requisitos del cliente que no se reflejan en modificaciones a la
calendarizacin.
Una subestimacin razonable de la cantidad de esfuerzo o de recursos que se
requerirn para realizar el trabajo.
Riesgos predecibles o impredecibles que no se consideraron cuando comenz
el proyecto.
Dificultades tcnicas que no pudieron preverse.
Dificultades humanas imprevisibles.
Falta de comunicacin entre el personal del proyecto, lo que genera demoras.
Una falla en la gestin del proyecto porque no reconoci el retraso ni emprendi una accin para corregir el problema.
1 En caso de que el lector se lo pregunte, ta historia es autobiogrfica.
726
.......
Las fechas lmite muy audaces (lase "irrealizables") son un hecho de la vida en d
negocio del software. En tales ocasiones las fechas limite se demandan por razon1.
legtimas, desde el punto de vista de la persona que las establece. Pero el sentido c
mn establece que la legitimidad tambin la deben advertir las personas que hac1.,
el trabajo.
Napolen dijo alguna vez: "Cualquier comandante en jefe que pretenda llevar a
cabo un plan que considera defectuoso comete un error; debe exponer sus razone
insistir en que el plan debe cambiarse y finalmente presentar su renuncia en lug..:.r
de ser el instrumento de la destruccin de su ejrcito". Estas son palabras fuertes q.. e
muchos gestores de proyectos de software deben considerar.
Las actividades de estimacin estudiadas en el captulo 23 y las tcnicas de caler
darizacin descritas en ste con frecuencia se implementan atendiendo la restril.
cin de una fecha lmite definida. Si las mejores estimaciones indican que la fed l
limite es irrealizable, un gestor de proyecto competente debe "proteger a su equ1r>
de la presin excesiva [de la calendarizacin] ... [y] devolver la presin a quienes a
originan" [PAG85].
Para ilustrarlo, supngase que a un equipo de ingeniera del software se le ha pe. dido construir un controlador en tiempo real para un instrumento de diagnst. .>
mdico que ser introducido al mercado en nueve meses. Despus de una estimacin y un anlisis de riesgo cuidadosos (capitulo 25), el gestor del proyecto llega a ::
conclusin de que el software, como se solicit, requerir 14 meses para crearlo co:el personal disponible. Cmo procede el gestor del proyecto?
Qu se
debe hacer
..to la gestin
..ta quese
aapla con vna
Ida timite qve
111 illlposible?
727
3. Reunirse con el cliente y, con la estimacin detallada, explicarle por qu la fecha lmite impuesta es irrealizable. Asegrese de sealar que todas las estimaciones estn basadas sobre el desempeo en proyectos previos. Tambin
asegrese de indicar el porcentaje de mejora que se requerira para lograr la fecha lmite vigente. 2 Son apropiados los siguientes comentarios:
"Creo que podemos tener un problema con la fecha de entrega para el software controlador XYZ. Le he dado a cada uno de ustedes un anlisis abreviado de
las tasas de produccin en proyectos previos y una estimacin que hemos hecho en algunas formas diferentes. Notarn que he supuesto un 20 por ciento de
mejora respecto de ritmos de produccin precedentes, pero todava tenemos
una fecha de entrega que est a 14 meses en lugar de 9."
4 . Ofrezca la estrategia de desarrollo incremental como alternativa:
"Tenemos unas cuantas opciones y me gustara que tomase una decisin con
base en ellas. Primero, podemos aumentar el presupuesto y conseguir recursos adicionales de modo que tendremos mucho xito en lograr que este trabajo est hecho en nueve meses. Pero comprenda que esto aumentar el riesgo
de una calidad deficiente debido a la apretada fecha lmite.3 Segundo, podemos
remover varias de las funciones y capacidades de software que est solicitando. Esto har que la versin preliminar del producto sea un poco menos funcional, pero podemos anunciar toda la funcionalidad y luego entregarla en el
periodo de 14 meses. Tercero, podemos prescindir de la realidad y esperar que
el proyecto se complete en nueve meses. Terminaremos con nada que se pueda entregar a un cliente. La tercera opcin, espero que est de acuerdo, es inaceptable. La historia y nuestras mejores estimaciones indican que es irreal y un
boleto hacia el desastre."
Habr algunos gruidos, pero si se presentan estimaciones slidas basadas en
buenos datos histricos es probable que se elegirn versiones negociadas de las opciones I o 2. La fecha lmite irreal se evapora.
A Fred Brooks, el bien conocido autor de The Mythical Man-Month (BR095]. se Je pregunt una vez cmo se retrasaban los proyectos de software en la calendarizacin.
su respuesta fue tan simple como profunda: "Un da a la vez."
2 Si la mejora requerida es de 1Oa 25 por oento, de hecho tal vez sea posible tener listo el trabajo.
Pero, con mayor probabilidad, la mejora requenda en el desempeo del equipo ser mayor que el
50 por ciento. Esta es una expectativa inea1
3 Tambin puede agregar que el aumento en d 11':lClerode personas no reduce proporcionalmente
el tiempo.
728
PARTE C UATRO
ciones de esfuerzo a travs de la duracin planificada del proyecto al asignar el esfuerzo a tareas especficas de ingeniera del software. Sin embargo, es importante
sealar que la calendarizacin evoluciona a lo largo del tiempo. Durante las primeras etapas de la planificacin del proyecto se desarrolla una calendarizacin macroscpica. Este tipo de calendarizacin identifica las principales actividades del marco
de trabajo del proceso y las funciones de producto a las que se aplican. Conforme e
proyecto transcurre, cada entrada en la calendarizacin macroscpica se refina er
una calendarizacin detallada. Aqu se identifican y calendarizan tareas especficas
del software (requeridas para completar una actividad).
"11111 mlendarizacili demasiado optimista no genero uno colendarizocin reol lll(J$ mta, $IIO una ._.,,.
'
Slwt
acc.:r-
una fecha final para la liberacin de un sistema basado en computadora. La organizacin de software est restringida a distribuir esfuerzo dentro del marco temporal prescrito. La segunda visin de la calendarizacin de software supone que se han comentado
limites cronolgicos aproximados, pero que la fecha final la establece la organizacin
de ingeniera del software. El esfuerzo se distribuye para utilizar mejor los recursos y la
fecha fmal se define despus de un anlisis cuidadoso del software. Por desgracia, la primera situacin se encuentra con mucha ms frecuencia que la segunda.
24.2.1
Principios bsicos
Al igual que otras reas de ingeniera del software, varios principios bsicos guan la
calendarizacin de los proyectos:
Compartimentacin. El proyecto debe dividirse en compartimentos en varias actividades, acciones y tareas manejables. Lograrlo requiere decomponer tanto el producto como el proceso.
CAPITULO 24
729
Interdependencia. Se debe determinar la interdependencia de cada actividad, accin o tarea compartimentada. Algunas tareas deben ocurrir en secuencia mientras
que otras pueden ocurrir en paralelo. Algunas acciones o actividades no pueden comenzar mientras no est disponible el producto de trabajo producido por otros.
Otras acciones o actividades pueden ocurrir de manera independiente.
Asignacin de tiempo. A cada tarea por calendarizar se le debe asignar cierto nmero de unidades de trabajo (por ejemplo, personas-da de esfuerzo). Adems, a cada tarea se le debe asignar una fecha de inicio y una otra de terminacin que sean
funcin de las interdependencias, y ya sea que el trabajo sea realizado con base en
tiempo completo o parcial.
vaHdacin del esfuerzo. Todo proyecto tiene un nmero definido de personas en el
equipo de software. conforme ocurre la asignacin de tiempo, el gestor de proyecto
debe asegurarse de que, en un tiempo dado, no se han asignado ms que el nmero de personas calendarizadas. Por ejemplo, considere un proyecto que tiene tres ingenieros de software asignados (por ejemplo, tres personas-da estn disponibles
por da de esfuerzo asignado). 4 En un da dado se deben completar siete tareas al
mismo tiempo. Cada tarea requiere 0.50 personas-da de esfuerzo. Se ha asignado
ms esfuerzo que el nmero de personas para hacer el trabajo.
Definicin de resultados. Toda tarea calendarizada debe tener un resultado definido. En proyectos de software el resultado normalmente es un producto de trabajo
(por ejemplo, el diseo de un mdulo) o una parte de l. Los productos de trabajo
usualmente se combinan en los entregables.
Definicin de hitos. Cualquier tarea o grupo de tareas debe estar asociado con un
hito del proyecto. Un hito se logra cuando se ha revisado la calidad de uno o ms
productos de trabajo (captulo 26) y se han aprobado.
Cada uno de estos principios se aplica conforme evoluciona la calendarizacin del
proyecto.
En realidad, hay disponibles menos de t r e s ~ de esfuerzo debido a las reuniones no relacionadas, enfermedades, vacaciones y una di\"e151dad de otras razones. Sin embargo, para los propsitos del texto, se supone una disponibilidad de 100 pcx cJe11to
730
Si se deben agregar
persones aun
proyedo re/rosado,
asegrese de que se
les ha osignodo
trobojo enormemente
comportimentado.
ifrU68
Existe un mito comn que todava creen muchos gestores responsables del es
fuerzo de desarrollo del software: "Si nos retrasamos en la calendarizacin, siemr_
podemos incorporar ms programadores y recuperamos ms adelante en el proya
to". Desgraciadamente, agregar ms personas en etapas tardias de un proyecto ce
frecuencia tiene un efecto perturbador sobre ste. lo que provoca que la calendarzacin se desfase an ms. Las personas que se agregan deben aprender el sisterr.;;.
y la gente que les ensea es la misma que estaba haciendo el trabajo. Durante la er
seanza no se realiza trabajo y el proyecto experimenta mayores retrasos.
Adems del tiempo que tarda en aprender el sistema, ms personal aumenta e:.
nmero de rutas de comunicacin y la complejidad de sta a lo largo de un proye..
to. Aunque la comunicacin es absolutamente esencial para el xito del desarro..
de software, cada nueva ruta de comunicacin requiere un esfuerzo adicional y, p...r
lo tanto, tiempo suplementario.
A lo largo de los aos, los datos empricos y el anlisis terico han demostrac.
que las calendarizaciones de proyecto son elsticas. Es decir, es posible comprirren cierta medida la fecha de terminacin deseada del proyecto (al aadir recul"Sf.'5
adicionales). Tambin es posible extender la fecha de terminacin (al reducir el n_
mero de recursos).
La CuNa Putnam-Norden-Rayleigh (PNR) 5 proporciona un indicio de la relacin e-tre el esfuerzo aplicado y el tiempo de entrega para un proyecto de software. En .a
figura 24.1 se muestra una versin de la curva, que representa el esfuerzo del prcyecto como funcin del tiempo de entrega. La curva indica un valor mnimo, t0 , q1..:indica el tiempo de entrega de menor costo (es decir, el tiempo de entrega que ge
nerar el menor gasto de esfuerzo). Conforme se mueve a la izquierda de t0 (es decir, conforme intenta acelerar la entrega), la curva se eleva en forma no lineal.
Rela cin entre esfuerzo y tiempo de entrega.
Costo
de
esfuerzo
E0
m (td'4/t0 4)
Eo esfuerzo en personas-mes
td tiempo de entrego nominal poro colendorizor
to = tiempo de entrego ptimo (en trminos de costo)
to = tiempo de entrego real deseado
Tiempo de desarrollo
~~
C~VE
11 entrego puede
P"lOforse, lo curvo
indico que los
~ del proyecto se
nreducir
~iolmente.
731
Como ejemplo, supngase que un equipo de proyecto ha estimado un nivel de esfuerzo E0 que se requerir para lograr un tiempo de entrega nominal, td, que es ptimo en trminos de calendarizacin y recursos disponibles. Aunque es posible acelerar la entrega, la curva se eleva muy pronunciadamente hacia la izquierda de td. De
hecho, la curva PNR indica que el tiempo de entrega del proyecto no se puede comprimir ms all de 0.75 td. Si se intenta una mayor compresin, el proyecto se mueve hacia "la regin imposible" y el riesgo de fracaso se eleva mucho. La curva PNR
tambin indica que la opcin de entrega de menor costo, t0 = 2td. La implicacin aqui
es que la demora en la entrega del proyecto puede reducir los costos significativamente. Desde luego, esto debe sopesarse frente al costo del negocio asociado con la
demora.
La ecuacin del software [PUT92), introducida en el capitulo 23, se obtiene de la
curva PNR y demuestra la relacin enormemente lineal entre el tiempo cronolgico
para completar un proyecto y el esfuerzo humano aplicado a ste. El nmero de lneas de cdigo entregadas (enunciados fuente), L, se relaciona con el esfuerzo y el
tiempo de desarrollo mediante la ecuacin:
donde E es el esfuerzo de desarrollo en personas-mes; P, un parmetro de productividad que refleja una diversidad de factores que conducen a trabajo de ingeniera del
software de alta calidad (los valores tpicos de P varian entre 2 000 y 12 000); y t, la
duracin del proyecto en meses calendario.
Al reordenar esta ecuacin del software se puede llegar a una expresin para el
esfuerzo de desarrollo E:
(24-1)
E= L3 /(P3 t4)
3.8 personas-ao
Esto implica que, al extender la fecha final seis meses, se puede reducir el nmero
de personas de ocho a cuatro! La validez de tales resultados est abierta al debate,
pero la implicacin es clara: se pueden obtener beneficios al emplear menos personal durante un periodo un poco ms largo para .lograr el mismo objetivo.
732
En la actualidad, la regla 40-20-40 enfrenta una ofensiva. Algunos creen que ms del 40 por ciento
del esfuerzo global se debe utilizar durante el anlisis y el diseo. Por otra parte, algunos partida rios del desarrollo gil (captulo 4) argumentan que se debe emplear menos tiempo frontal "directo
733
mente se apreciara como demasiado destructivo para un producto de software pequeo y relativamente simple. En consecuencia, un proceso de software eficaz debe
definir una coleccin de conjuntos de tareas, cada una diseada para satisfacer las
necesidades de diferentes tipos de proyectos.
Como se mencion en el captulo 2, un conjunto de tareas es una coleccin de tareas de trabajo de ingeniera del software, hitos y productos de trabajo que se deben
terminar para completar un proyecto particular. El conjunto cte tareas ctebe propor cionar suficiente disciplina para lograr alta calidad de software. Pero, al mismo tiempo, no debe abrumar al equipo del proyecto con trabajo innecesario.
El desarrollo de una calendarizacin del proyecto requiere distribuir un conjunto
de tareas a Jo largo de la lnea de tiempo del proyecto. El conjunto de tareas variar
segn el tipo de proyecto y el grado de rigor con el que el equipo de software decide realizar su trabajo. Aunque es dificil desarrollar una taxonoma completa de tipos de
proyecto de software, en la mayora de las organizaciones del ramo se encuentran
los siguientes proyectos:
1. Proyectos de desarrollo del concepto, los cuales se inician para explorar algunas
aplicaciones o conceptos de negocios de alguna nueva tecnologa.
2. Proyectos de desarrollo de nuevas aplicaciones, los cuales se llevan a cabo como consecuencia de una solicitud especifica del cliente.
3. Proyectos de mejora de la aplicacin, stos ocurren cuando el software existente experimenta grandes modificaciones en la funcin, el desempeo o las
interfases visibles para el usuario final.
4. Proyectos de mantenimiento de aplicacin, los cuales corrigen, adaptan o extienden el software existente en formas que no sean obvias inmediatamente
para el usuario final.
734
PARTE CUATRO
un tipo de proyecto fluye suavemente hacia el siguiente. Por ejemplo, los proyect..
de desarrollo del concepto que triunfan con frecuencia evolucionan en proyectos e,
desarrollo de nuevas aplicaciones. Cuando termina un proyecto de desarrollo de nue
vas aplicaciones, en ocasiones comienza un proyecto de mejora de una aplicacir.
Esta progresin es tanto natural corno predecible y ocurrir sin importar el rnode
de proceso que adopte la organizacin. En consecuencia, las principales tareas G..
ingeniera del software descritas en las secciones que siguen son aplicables a toda
los flujos de modelo de proceso. Corno ejemplo, considrense las tareas de ingenie::
ra del software para un proyecto de desarrollo del concepto.
Los proyectos de desarrollo del concepto se inician cuando se debe explorar el poter
cial para alguna nueva tecnologa. No existe certeza de que la tecnologa ser aplicab.c::
pero un cliente (por ejemplo, marketing) cree que existen beneficios potenciales. Los pr.c
yectos de desarrollo del concepto se enfocan en aplicar las siguientes tareas principales
1.1 La determinacin del mbito del concepto precisa el mbito global del
proyecto.
1.2 La planeacin preliminar del concepto establece la habilidad de la organizacin para acometer el trabajo que entrafia el mbito del proyecto.
1.5 La implementacin del concepto pone en prctica la representacin del concepto en una forma que pueda revisarla un cliente y se utiliza para propsitos de
"mercadotecnia" cuando se debe vender un concepto a otros clientes o gestores
735
1.1.2;
1.1.3.2 Derivar un modelo funciones/comportamientos;
1.1.3.3 RTF: Revisar funciones/comportamientos con el oliente II modificar conforme se requiera;
fintares Tarea 1.1.3
1.1.4 Aislar aquellos elementos de la tecnologa que se implementar en el software;
1.1.5 Disponibilidad de investigacin del software existente;
1.1.6 Definir factibilidad tcnica;
1.1.7 Realizar estimacin rpida del tamao;
l.1.8 Crear una Definicin del mbito;
fintare& definicin: Tarea 1.1
Las tareas y subtareas anotadas en el proceso de refinamiento del lenguaje de diseo forman la base de una planeacin detallada de la actividad de determinar el
mbito del concepto.
f '
Las tareas y subtareas individuales tienen interdependencias basadas en su secuencia. Adems, cuando ms de una persona est involucrada en un proyecto de ingeniera del software, es probable que las actividades y tareas de desarrollo se realicen
en paralelo. Cuando esto ocurre, las tareas concurrentes deben estar coordinadas
de modo que se completarn cuando las tareas posteriores requieran sus productos de
trabajo.
Una red de tareas, tambin denominada red de actividad, es una representacin
grfica del flujo de tareas en un proyecto. En ocasiones se utiliza como el mecanismo mediante el cual la secuencia y dependencias de tareas son la entrada a una herramienta automatizada de calendazacin del proyecto. En su forma ms simple
7 RTF indica que se debe realizar una revision tttn::rll fa:ca1 (capttulo 26)
736
PARTE CUATRO
jflfrij f
Peterminocr611
6mbito
l.
'Reaion
diente
cualquier esfuerzo de ingeniera multitarea. En consecuencia, las tcnicas y herramientas generalizadas de calendarizacin de proyecto se pueden aplicar, poco modificadas, en proyectos de software.
La tcnica de evaluacin y revisin de programa (PERT, por sus siglas en ingls) y el
mtodo de ruta crtica (CPM, por sus siglas en ingls) son dos mtodos de calendarizacin de proyecto que se pueden aplicar al desarrollo de software. Ambas tcnicas
737
,,.lt .,e tenemos que dedir es qu hacer con el tiempo quenos hon dado."
Tanto PERT como CPM ofrecen herramientas cuantitativas que permiten al planificador de software J) determinar la trayectoria crtica: la cadena de tareas que determinan la duracin del proyecto; 2) establecer las estimaciones de tiempo "ms
probables" para tareas individuales al aplicar modelos estadisticos; y 3) calcular los
"tiempos lmite" que definen una "ventana" de tiempo para una tarea particular.
fl!'IIIIIII
Calendarizacin de proyectos
liiiiil
Herramientas representativas
Las herramientas expuestas representan U!lli ll'..aestr.l de esta categora En casi todos los casos los
nombres de las mismas son marcas regtstrad.lsdc&IS respecthos desarrolladores.
738
PARTE CUATRO
24.5.1 Cronogramas
Cuando se crea una calendarizacin de proyecto del software, el planificador
mienza con un conjunto de tareas (la estructura de anlisis del trabajo) . Si se e:
plean herramientas automatizadas, el anlisis del trabajo se introduce como una
de tareas o esbozo de tareas. Entonces se introduce el esfuerzo, la duracin y la
cha de inicio de cada tarea. Adems, las tareas se pueden asignar a individuos esr
cificos.
Como consecuencia de esta entrada, se genera un cronograma, tambin llam~
grfico Gantt. Es posible desarrollar un cronograma para todo el proyecto. De ma
ra alternativa, se pueden desarrollar cronogramas separados para cada funcin
proyecto o para cada individuo que trabaje en l.
Un crooogromo
permitedeterminar
~tnreosse
realizann en unpunto
dado en el tiempo.
UWHR!
EJemplo de cronograma
Tareas de trabajo
11 ldenlilicor necesidoclos y benehc,oo
R......,.. con d;enln
Semona 1
----
Semana 2
Semana 3
Semana4
Semana 5
_l_
_J
,__ r-
ip
fo-
....
fo-
......
fo-
- --t-- , -
'l-
I=
,__
r-
rr-
CAPTULO 24
739
rea. Cuando en el calendario se presentan al mismo tiempo mltiples barras, se implica la concurrencia de la tarea. Los diamantes indican hitos.
Una vez ingresada la informacin necesaria para generar el cronograma, la mayora de las herramientas de calendarizacin de proyectos de software producen tablas de proyecto: una lista tabular de todas las tareas del proyecto, sus fechas de inicio
y conclusin, planeadas y reales, y una variedad de informacin relacionada (figura
24.4). Si se utilizan en conjunto con el cronograma, las tablas de proyecto permiten
que el gestor del proyecto d seguimiento al progreso.
qel
P'<!Jl'ldO
~ o r ~ 4el1*odu<:1o
ffilo . .uncl<ldo do,! plOdclo ~
'
o.lintr sollda./conll'l/~... 1scf) "-o~,
Aleone; d. kl. f,,nctc-J dl>t ~
loonc dt lqo func~ et. on,r<ld o. !(~
AlcOllce .i. !<,o m~ et. mi..oc~
Ako- d,ol dlag,l6"" .i. d1><u~mo
llllffll,dl
"'"' l,d?
"""1,d2
<eml,d3
so..CUt3
5llm 1,.,3
ien, l,d3
..... l,d:J
., emZ,d?
!t<ffll),dl
"""l.dZ Ml(l>l,<12
"""11,c/3
.....
,.c/3
,eml,~3
,-l,d3
..... 1.d.d
em l,d2
,,m2,d2
m z, d3
se<i12,d2
em2, d3
sen,2,dl
,em2.d3
sem 2. d.t
Hrn2,dS
sem 1;d2
l.a delerminocin
del mbito
,oqveir<I m6,
fuerzo/!.empo
740
Al reunirse de manera informal con los trabajadores para obtener su evaluacin subjetiva del progreso hasta la fecha y los problemas que se vislumbran
Con el uso del anlisis del valor obtenido (seccin 24.6) para evaluar el progreso cuantitativamente.
En realidad, todas estas tcnicas de seguimiento las utilizan los gestores de proyec
to experimentados.
El control lo emplea el gestor del proyecto para administrar los recursos del pro-
El me;o, indicador de
progreso es lo termt
nocin yrevisin
exitoso de un
producto de trabojo de
sohwu,e definido.
yecto, lidiar con los problemas y dirigir al personal del proyecto. Si las cosas van b
(es decir, el proyecto est dentro del calendario y del presupuesto, las revisiones
dican que se est realizando un progreso real y que los hitos se han alcanzado
control es ligero. Pero cuando ocurren problemas, el gestor del proyecto debe e
cer control para solucionarlos tan pronto como sea posible. Cuando se haya d
nosticado el problema se destinan recursos adicionales al rea correspondiente reu-bicando personal o redefiniendo la calendarizacin.
Cuando enfrentan severas presiones por ta fecha limite, tos gestores de proyect:
experimentados en ocasiones emplean una catendarizacin de proyecto y tcnica
control llamada time-boxing (encajonamiento de tiempo) [ZAH95) . Esta estrategia reconoce que el producto completo no podr entregarse en ta fecha limite programa-e
da. Por lo tanto, se elige un paradigma de software incremental (captulo 3) y se
bora una calendarizacin para cada entrega incremental.
Entonces se encajonan en el tiempo tas tareas asociadas con cada increm
Esto significa que la calendarizacin para cada tarea se ajusta al trabajar hacia a::
desde la fecha de entrega para cada incremento. Se coloca una "caja" alreded<X
cada tarea. Cuando una tarea se acerca al lmite de su caja de tiempo (ms o me:10 por ciento), et trabajo se detiene y comienza ta siguiente tarea.
La reaccin inicial al enfoque del encajonamiento de tiempo usualmente es neg,:tiva: si et trabajo se termina, cmo se proceder? La respuesta se encuentra en
forma en se realiza el trabajo. Cuando se llegue al lmite de la caja de tiempo, es
bable que se haya completado9 90 por ciento de la tarea. El restante 10 por cien::
aunque importante, puede 1) demorarse hasta et siguiente incremento o 2) corn;e
tarse ms tarde si se requiere. Ms que quedarse "empantanado" en ta tarea, el p-m
yecto avanza hacia ta fecha de entrega.
Un cinico puede recordar el dicho: el 90 por ciento del sistema toma I Opor ciento del tiempo. e
tante t O por ciento del sistema toma 90 por ciento del tiempo.
-=
74 1
ne,o de errores
oogs) "abiertas.
fe'
C1'VE
El volar ganado onece
un indio ruonlitotivo
del progreso.
En la seccin 24 .5 se trataron algunos enfoques cualitativos en cuanto al seguim,..nto del proyecto. cada uno ofrece al gestor del proyecto un indicio del progreso, pero
una evaluacin de la informacin proporcionada es un poco subjetiva. Es razon~ ~
preguntar si existe una tcnica cuantitativa para evaluar el progreso conforme a
equipo de sotlware avanza a travs de las tareas de trabajo asignadas en la cale- darizacin del proyecto. De hecho, existe una tcnica para realizar anlisis cuantit:tivos del progreso. Se llama anlisis del valor ganado (AVG). Humphrey [HUM 0 r:
comenta el valor ganado en la forma siguiente:
El sistema de valor ganado proporciona una escala de valor comn para cualquier tarea
[de proyecto de software], sin importar el tipo de trabajo que se realiza. Se estiman las horas totales para realizar todo el proyecto y a cada tarea se le da un valor ganado con base en su porcentaje estimado del total.
Enunciado en una forma ms simple, el valor ganado es una medida del progrese
Permite valorar el "porcentaje realizado" de un proyecto reempleando el anlisis
cuantitativo en lugar de apoyarse en una opinin personal. De hecho, Fleming y Kop-
743
pleman [FLE98] argumentan que el anlisis del valor ganado "ofrece lecturas precisas y confiables del desempeo desde un momento tan temprano del proyecto como el IS por ciento realizado."
Para determinar el valor ganado se realizan los siguientes pasos:
1. Se determina el costo presupuestado para el trabajo calendarizado (CPTC) respecto de cada tarea de trabajo representada en la calendarizacin. Durante la
estimacin se planifica el trabajo (en personas-hora o personas-da) de cada
tarea de ingeniera. Por lo tanto, CPTe es el esfuerzo palnificado para la tarea
de trabajo i. Para determinar el progreso en un punto dado en la calendarizacin del proyecto, el valor de ePTC es la suma de los valores CPTC; para todas
la tareas de trabajo que deben estar completadas en dicho punto en el tiempo
en la calendarizacin del producto.
2. Los valores CPTC para todas las tareas de trabajo se resumen para obtener el
presupuesto a la tenninacin, PAT. Por lo tanto,
PAT
= CPTC/PAT
ofrece un indicador del porcentaje de trabajo que debe estar completado en el tiempo t.
Porcentaje de completado
= CPTiv PAT
ofrece una indicacin cuantitativa del porcentaje de avance del proyecto en un punto dado en el tiempo, t.
Tambin es posible calcular el costo real del trabaJO realizado, CRTR. El valor para
CRTR es la suma del esfuerzo realmente utilizado en las tareas de trabajo que se han
completado en un punto en el tiempo en la ca!endarizacin del proyecto. Entonces
es posible calcular
744
PARTE CUATRO
[BR095J Brooks, M., The Mythical Man-Month, edicin de aniversario, Addison-Wesley, 1995
[FLE98] Fleming, Q. W., y J. M. Koppelman, "Earned Value Project Management", Crossta/k, v.:.
ll, nm. 7, julio de 1998, p. 19.
[HUM95] Humphrey, W., A Discipline for Software Engineering, Addison-Wesley, 1995.
[NOR70J Norden, P., "Useful Tools for Project Management", en Management of Production, M K.
Starr (ed.), Penguin Books, 1970.
[PAG85) Page-Jones, M., Practica/ Project Management, Dorset House, 1985, pp. 90-91.
[PRE99] Pressman, R. s., Adaptable Process Model, R. S. Pressman & Associates, 1999.
[PUT78] Putnam, L, y W. Myers, Measuresfor Excellence, Yourdon Press, 1992.
[WIL99) Wilkens, T. T., "Eamed Value, Clear and Simple", Primavera systerns, 1 de abril de 1999, p.=.
[ZAH95] Zahniser, R., "Time-boxing for Top Team Performance", en Software Development, ma:
zo de 1995, pp. 34-38.
24.1. Las fechas lmite "irracionales" son un hecho de la vida en el negocio del software. C
mo se debe proceder si se enfrenta con una?
24.2. Cul es la diferencia entre una calendarizacin macroscpica y una calendarizacin detallada? Es posible gestionar un proyecto si slo se desarrolla una calendarizacin macroscpica? Por qu?
CAPTULO 24
745
24.3. Existe algn caso donde un hito de un proyecto de software no est ligado a una revisin? Si es as, ofrecer uno o ms ejemplos.
24.4. La "sobrecarga de comunicacin" puede ocurrir cuando muchas personas trabajan en un
proyecto de software. El tiempo empleado en la comunicacin con otros reduce la productividad individual (LDC/persona-mes) y el resultado es menor productividad para el equipo. Ilustrar (cuantitativamente) cmo los ingenieros versados en las buenas prcticas de ingenieria del
software y que usan revisiones tcnicas formales pueden aumentar la tasa de produccin de un
equipo (cuando se compara con la suma de las tasas de produccin individuales). Sugerencia:
se puede suponer que las revisiones reducen la reelaboracin y que sta puede explicar el 2040 por ciento del tiempo de una persona.
24.5. Aunque agregar personal a un proyecto de software retrasado puede retrasarlo ms,
existen circunstancias en las cuales esto no es cierto. Descrbanse.
24.6. La relacin entre personal y tiempo es enormemente no lineal. Mediante la ecuacin del
software de Putnam (descrita en la seccin 24.2.2), desarrollar una tabla que relacione el nmero de personas con la duracin del proyecto para un proyecto de software que requiera 50 000
LDC y 15 personas-ao de esfuerzo (el parmetro de productividad es 5 000). Supngase que el
software debe entregarse en un mximo de 24 meses o en un mnimo de 12.
24. 7. Suponga que una universidad lo ha contratado para desarrollar un sistema de registro en
linea a cursos (SRELC). Primero, acte como el cliente (si es estudiante, esto debe ser sencillo!)
y especifique las caractersticas de un buen sistema. (Alternativamente, su instructor le proporcionar un conjunto de requisitos preliminares para el sistema.) Por medio de los mtodos de
estimacin tratados en el captulo 23, desarrolle una estimacin del esfuerzo y la duracin para el SRELC. Sugiera cmo:
a)
b)
e)
Esfuerro pmlsto
12.0
Esfwu .....
12.5
746
PARTE CUATRO
Tarea
Esfuerzo previsto
Esfuerzo real
15.0
11.0
13.0
17.0
8.0
9.5
5
6
9.5
18.0
19.0
10.0
10.0
4.0
4.5
9
10
12.0
10.0
6.0
6.5
11
14.0
4.0
12
14.0
14.5
13
16.0
14
6.0
15
B.O
9.0
casi cualquier libro acerca de gestin de proyectos de software contiene una exposicin de la
calendarizacin. El Project Management Institute (PMBOK Gude, PMI, 2001), Wysoki y sus colegas (Ejfectve Project Management, Wiley, 2000), Lewis (Project Planning Schedulng and Control, 3a. ed., McGraw-Hill, 2000), Bennatan (On Time, Within Budget: Sofrvvare Projeci
Management Practces and Techniques. 3a. ed., Wiley, 2000), McConnell (Sofrvvare Projecl Cos.
Survval Guide, Microsoft Press, 1998) y Roetzheim y Beasley (Sofrvvare Project Cost and Schedule
Esdmating: Best Practices, Prentice-Hall, 1997) contienen anlisis valiosos del tema. Boddie
(Crunch Mode, Prenlice-Hall, 1987) ha escrito un libro para todos los gestores que "tienen 90
das para hacer un proyecto de seis meses".
McConnell (Rapid Development, Microsoft Press, 1996) presenta una excelente exposicin de
los conflictos que conducen a calendarizaciones de proyectos de software demasiado optimistas y qu puede hacer acerca de ello. oconnell (How to Run Successful Projects ll: The Si/ver
Bullet, Prentice-Hall, 1997) presenta un enfoque paso a paso para la gestin de proyectos que
le ayudar a desarrollar una calendarizacin realista para sus proyectos.
Webb y Wake (Usng Eamed value: A Project Manager's Guide, Ashgate Publishing, 2003) y
Fleming y Koppelman (Earned Value Project Management, Project Management Institute Publicatons. 1996) examinan con considerable detalle el uso de las tcnicas del valor ganado para
planificacin, seguimiento y control de proyectos.
En Internet hay disponible una gran variedad de fuentes de informacin acerca de la calendarizacin de proyectos de software. Una lista actualizada de referencias de la World Wide
Web se puede encontrar en el sitio Web de SEPA:
http:// www.mhhe.com/pressman.
CONCEPTOS
CLAVfi:
Gllegoria~
riesgos 749
estrategia
prN<tivq , 148
estrateglca
19diyq .. ' .,
blar nuestras acdones presentes, creat eh lo futuro una oportunidad para una situa
ciOn diferente, y esperanzadoramente meior, para nosotros mismos? Est significa,
en ~egundo lugar, que el riesgo jmplica cambio, como f,:ambios de mentalidad, opinih, acciones o lugai:es... [en tercer lugar el .riesgo imptira eleccin y la incertidumbre que sta conlleva. Por ende, paradjicamente, e) riesgo, al igual que la muerte y
los impuestos, es una de las pocas certezas en la vida,
......_ ..157
l"Yf(CII 154
....._to ...762
l5GI ........161
-,rilad
ritsgos 763
,....
el rewlrodo, en reolidod es
bena idea rdentifi!rlo, evaluar lo probabi
sin mportar
hcq:>anitesJ
747
748
PARTE CUATRO
CAPTULO 25
749
de contingencia que le permitir responder en una forma controlada y efectiva. A lo largo del resto del captulo se examina la estrategia proactiva para la gestin del riesgo.
Qu tipos
ele riesgos
probable
_..,,ar
aforme se
astruye
mftware?
Los riesgos del proyecto amenazan el plan del proyecto. Es decir, si los riesgos del
proyecto se vuelven reales es probable que la calendarizacin del proyecto se altere
y que los costos aumenten. Los riesgos del proyecto identifican potenciales problemas en presupuesto, calendarizacin, personal (plantillas y organizacin), recursos,
participantes y requisitos, y su impacto sobre un proyecto de software. En el captulo 23 la complejidad, tamao y grado de incertidumbre estructural del proyecto tambin se definieron como factores de riesgo del proyecto (y de la estimacin).
Los riesgos
cir. Si un riesgo tcnico se vuelve real, la implementacin se torna dificil o imposible. Los riesgos tcnicos identifican potenciales problemas en diseo, implementacin, interfaz, verificacin y mantenimiento. Adems, tambin son factores de riesgo la ambigedad de la especificacin, la incertidumbre tcnica, la obsolescencia
tcnica y la tecnologa "de punta". Los riesgos tcnicos ocurren porque el problema
es ms dificil de resolver de lo que en un principio se pens que sera.
Los riesgos de negocios amenazan la viabilidad del software que se construir. Estos riesgos con frecencia ponen en peligro el proyecto o el producto. Los candidatos
para los cinco mayores riesgos de negocios son 1) la construccin de un producto o
sistema excelente que en realidad nadie quiere (riesgo de mercado). 2) la construccin de un producto que ya no encaja en la estrategia comercial global de la compaa (riesgo de estrategia), 3) la construccin de un producto que la fuerza de ventas
no sabe cmo vender (riesgo de ventas), 4) la prdida del apoyo de los altos ejecutivos debido a un cambio en el enfoque o en el personal (riesgo administrativo), y 5)
la prdida presupuestaria o del personal asignado lriesgo presupuesta!).
1 Un riesgo 100 por ciento probable es una ae.uiccilt sobre el proyecto de software.
750
Integracin: en el proceso del software debe estor integrado uno consideracin de los riesgos.
Enfatizar un proceso continuo: el equipo debe eslor
atento o lo largo de todo el proceso de software, modificor
los riesgos identificados conforme se tengo ms informo
cin y agrega r unos nuevos o medido que se logre un mejor criterio.
Desarrollo de una visin conjunta del producto:
si todos los participantes comporten lo mismo visin del
software, es probable que ocurro mejor identificacin y
evaluacin de riesgos.
Alentar el trabajo en equipo: los talentos, habilidades y conocimiento de los participa ntes se deben mezclar
cuando se lleven o coba actividades de gestin de riesgos.
presentado en la seccin 25.2: los riesgos genricos y los riesgos especificas del producto. Los riesgos genricos son una amenaza potencial para todo el proyecto de
software. Los riesgos especficos del producto los pueden identificar slo aquellos con
,si
un claro conocimiento de la tecnologa. el personal y el entorno especfico del software que se construir. Los riesgos especficos del producto se identifican examinando el
plan del proyecto y la declaracin del mbito del software, as como desarrollando
una respuesta para la siguiente pregunta: "Qu caracteristicas especiales de este
producto podrian amenazar el plan del proyecto?".
,-. profldas sin riesgos reales son perdedores. Estos proyectos casi siempre estn desprovi$t0$.de lrnfidos; pot
. . . . . . reeb,dos aos atrs."
1-IWlillwy ......
:,que es importonte
::.isideror los riesgos
,nricos, los riesgos
e;eclficos del
P'fdJdO son los que
:,,wocon lo moyorfo
los dolores de
atbeza. Asegrese de
!fff]lear ffempo poro
.tenlifkor tontos
zsgos especlficos del
JOIJdo como seo
,rQJ/e.
sarrolla.
En tomo de desarrollo: riesgos asociados con la disponibilidad y calidad de las
752
El proyecto
de software
en el que adul
Mtlfe trabaja
enfrenta riesgos
serios?
1. Los altos ejecutivos de software y del cliente se han comprometido formalmente para apoyar el proyecto?
2. Los usuarios finales estn comprometidos con el proyecto y el sistema/producto que se construir?
3. Los requisitos los han entendido completamente el equipo de ingenierla de
software y sus clientes?
..........
Y
..........
01 lii:iii Ud1
.........
--......
.. ...
. w.. ...,
.,....,s.,..
-
Si la respuesta a alguna de estas preguntas es negativa se deben instituir sin demora los pasos de reduccin, supervisin y gestin. El grado en el que el proyecto esb
en riesgo es directamente proporcional al nmero de respuestas negativas a estas
preguntas.
753
trices para la identificacin y supresin del riesgo de software. Este enfoque requiere que el gestor del proyecto identifique los controladores del riesgo que afectan los
componentes de riesgo del software: desempeo, costo, soporte y calendarizacin.
En el contexto de este estudio los componentes de riesgo se definen en la forma siguiente:
,,
"
,"
1 -
"
.t.....
lo mbi.11
Ciem reduccin
2
'
811
~ qu,e lio
P\lede IOpOltar
"'
Mlnimo a pequeo
reducci6n .. ..
Respuesio de
soporte ele
Recortes linanc:ierot
slgl,ific:otM,
~ *""''
flnandero$
..._
~
..
COI
lnolcorwible
~ superacin
del presupuesto
~ o no ,e ,
..
i11C111,.....,IIN o impadol no
Colendarizoc:i6n
olci,n:t0ble
1 yr~i5fa
754
Riesgo de calendarizacin: grado de incertidumbre de que se mantenga la calendarizacin del proyecto y de que el producto se entregue a tiempo.
El impacto de cada controlador de riesgo sobre el componente de riesgo se divide ercuatro categoras de impacto: despreciable, marginal, crtico o catastrfico. En la figura 25.1 [BOE89] se describe una caracterizacin de las consecuencias potenciales
de los errores (hileras etiquetadas 1) o una falla que no permite lograr un resultado
deseado (hileras etiquetadas 2). La categora de impacto se escoge con base en la caracterizacin que mejor encaje con la descripcin en la tabla.
del riesgo, tambin llamada estimacin del riesgo, intenta clasificar cada riesgo en dos formas: 1) la posibilidad o probabilidad de que el riesgo sea real,)
2) las consecuencias de los problemas asociados con el riesgo, en caso de que ocurra. El planificador del proyecto, junto con otros gestores y personal tcnico, realizar
cuatro pasos en la proyeccin del riesgo:
La proyeccin
iiMJffP
Ejemplo de
tabla de ries-
gos antes de
60%
la clasWcad6n.
30%
70%
40%
50%
40%
80%
30%
80%
38'.
60%
Valores de mpacto:
1: catastrfico
2: crlco
3: margnal
4: despreciable
755
La finalidad de estos pasos es considerar los riesgos en tal forma que conduzcan al
establecimiento de prioridades. Ningn equipo de software tiene los recursos para
enfrentar todos los riesgos potenciales con el mismo grado de rigor. Al priorizar los
riesgos el equipo puede asignar los recursos donde tengan el mayor impacto.
25.4.1
m~
ciilv1
tobla de riesgos
olenoda por
bt1idod e impacto
dos~icor los
qos.
una tabla de riesgos ofrece al gestor de un proyecto una tcnica simple para la proyeccin de riesgos. 2 En la figura 25.2 se ilustra un ejemplo de tabla de riesgos.
Un equipo de proyecto comienza una lista de todos los riesgos (sin importar cun
remotos sean) en la primera columna de la tabla. Esto se logra con la ayuda de la lista de verificacin de riesgos mencionada en la seccin 25.3. Cada riesgo se clasifica
en la segunda columna (por ejemplo, TP implica un riesgo de tamao del proyecto,
NE implica un riesgo de negocios). En la siguiente columna de la tabla se registra la
probabilidad de que ocurra cada riesgo. El valor de la probabilidad de cada riesgo lo
pueden estimar individualmente los miembros del equipo. stos se encuestan en una
forma de "todos contra todos" hasta que su evaluacin de la probabilidad del riesgo
comience a convergir.
A continuacin se evala el impacto de cada riesgo. Cada componente de riesgo
se evala mediante la caracterizacin presentada en la figura 25.1, y se determina
una categora de impacto. Las categoras para cada uno de los cuatro componentes
de riesgo (desempeo, soporte, costo y calendarizacin) se promedian3 para determinar un valor de impacto global.
una vez completadas las cuatro primeras columnas de la tabla de riesgos, sta se
ordena segn la probabilidad y el impacto. Los riesgos de alta probabilidad y alto impacto se filtran hacia Jo alto de la tabla, y los riesgos de baja probabilidad caen al
fondo. Esto logra una priorizacin del riesgo de primer orden.
El gestor del proyecto estudia la tabla ordenada resultante y define una lnea de
corte. La lnea de corte (dibujada horizontalmente en algn punto en la tabla) implica que slo los riesgos ubicados sobre la lnea tendrn una atencin posterior. Los
riesgos debajo de la lnea se ree\>alan para lograr una priorizacin de segundo orden. En la figura 25.3 el impacto y la probabilidad de riesgo influyen de manera distinta en la gestin. Un factor de riesgo que tiene un alto impacto, pero una probabilidad de que suceda muy baja, no debe absorber una cantidad significativa de tiem-
2 Es posible implementar la tabla de nesgas como un modelo en hoja de clculo. Esto permite una
manipulacin sencilla y el ordenamiento de las ~..lradas
3 El empleo de un promedio ponderado es ac:t:h!e sl a!gn componente de riesgo tiene mayor relevancia para un proyecto.
756
PARTE CUATRO
po de gestin. Sin embargo, los riesgos de alto impacto con moderada a alta prob.a
bilidad y los riesgos de bajo impacto con alta probabilidad deben trasladarse a L.
pasos de anlisis de riesgo que siguen.
Todos los riesgos ubicados sobre la lnea de corte deben gestionarse. La colum:' a
rotulada RSGR contiene una referencia que apunta hacia un Plan de reduccin, SU-pe'
visin y gestin de riesgo o, alternativamente, una coleccin de hojas de informadn _
riesgo desarrolladas para todos los riesgos que estn sobre el corte. En las secciores
25.5 y 25.6 se examinan el plan RSGR y las hojas de informacin de riesgo.
iiMJffi
Riesgo y
preocupacio-
nes dela
gesUn.
Muyolto
Impacto
CAPTULO 25
757
Cao se
valoran las
amecuendasde
riesgo?
= P XC
donde P es la probabilidad de que ocurra un riesgo, y C, el costo al proyecto en caso de que ocurra el riesgo.
Por ejemplo, suponga que el equipo de software define un riesgo de proyecto en
la forma siguiente:
758
Comprese lo ER de
ll!dos los riesgos con
lo esffmocin de costo
poro el proyecfl!. Si lo
ER es moyo, que 50
por dento del cosfl!
del proyecfl!, lo viobi
lidod del proyecto
debe reevoluorse.
759
Mediante el empleo del formato CTC en lugar del riesgo de reutilizacin anotado en
la seccin 25.4.2, se puede escribir:
Dado que todos los componentes de software reutilizables deben ajustarse con estndares de diseo especficos, y como algunos no Jo hacen, entonces existe una preocupacin
de que (posiblemente) slo 70 por ciento de los mdulos reutilizables planeados puedan
en realidad integrarse al sistema que se construir, lo que resulta en la necesidad de ingeniera personalizada para el restante 30 por ciento de componentes.
Las consecuencias asociadas con estas subcondiciones refinadas siguen siendo las
mismas (es decir, 30 por ciento de los componentes de software tienen que someterse a ingeniera personalizada) , pero el refinamiento ayuda a aislar los riesgos subyacentes y puede conducir a un anlisis y respuestas ms sencillos.
Todas las actividades del anlisis de riesgo presentadas hasta el momento tienen
una sola meta: ayudar al equipo del proyecto a desarrollar una estrategia para luchar
con el riesgo. Una estrategia eficaz debe considerar tres temas:
Evitar del riesgo.
Supervisar el riesgo.
Gestonar el riesgo y los planes de contingencia.
Si un equipo de software adopta un enfoque proactivo hacia el riesgo, evitarlo
siempre es la mejor estrategia. sta se logra desarrollando un plan para reducir el
760
riesgo. Por ejemplo, supngase que una elevada movilidad en el personal se ano: como un riesgo del proyecto, r,. Con base en la historia y la intuicin administrati'. .:.
la probabilidad, 11, de una elevada movilidad se estima en 0.70 (70 por ciento, mas
bien alta) y el impacto, x 1, se proyecta como critico. Esto es: una tasa elevada de W>vilidad tendr un impacto critico en el costo del proyecto y la calendarizacin.
-S..... ...
Ch se
puede hacer
para redtdr 11
riesgo?
Este riesgo se reduce si el gestor del proyecto desarrolla una estrategia para reducir la movilidad. Entre los posible pasos que se toman se encuentran:
Reunirse con el personal actual para determinar las causas de la movilidad
(por ejemplo, limitadas condiciones de trabajo, bajos salarios, mercado lab ral competitivo).
Reducir aquellas causas que se controlan antes de que comience el proyecto.
Una vez iniciado el proyecto, suponer que la movilidad ocurrir y entonces
desarrollar tcnicas que aseguren la continuidad cuando la gente se aleje
Organizar equipos de proyecto de modo que la informacin acerca de cada
actividad de desarrollo se disperse con amplitud.
Definir estndares de documentacin y establecer mecanismos que asegu'"Cr'l
que los documentos se desarrollen en una forma oportuna.
Llevar a cabo revisiones por pares de todo el trabajo (de modo que ms d~
una persona est "en ritmo").
Asignar un miembro de personal de respaldo por cada tecnologla crtica
Conforme avanza el proyecto se inician las actividades de supervisin del riesg.
gestor del proyecto supervisa los factores que pueden proporcionar un indicio e;_
el riesgo se est volviendo ms o menos probable. En el caso de la elevada tas:"
movilidad del personal, se pueden supervisar los siguientes factores:
Actitud general de los miembros del equipo con base en las presiones del
yecto.
El grado en el cual el equipo est cuajado.
Las relaciones interpersonales entre los miembros del equipo.
Potenciales problemas con las compensaciones y los beneficios.
La disponibilidad de empleo dentro y fuera de la compaia.
CAPTULO 25
761
Si lo El? poro un
;esgo especfico es
ilo.
el proyecto.
Es importante sealar que los pasos de reduccin, supervisin y gestin del riesgo (RSGR) generan costos adicionales en el proyecto. Por ejemplo, utilizar el tempo
para "respaldar" cualquier tecnologa crtica cuesta dinero. Por lo tanto, parte de la
gestin del riesgo consiste en evaluar cundo los beneficios que generan los pasos
RSGR se rezagan frente a los costos asociados con su implementacin. En esencia,
el planificador del proyecto realiza un clsico anlisis costo-beneficio. Si los pasos
con que se evita el riesgo de elevada movilidad de personal aumentaran tanto el costo del proyecto como su duracin en un estimado de 15 por ciento, pero el factor de
costo predominante es el "respaldo", el gestor puede decidir no implementar estepaso. Por otra parte, si los pasos con que se evita el riesgo se proyectan para aumentar los costos en 5 por ciento y la duracin en slo 3 por ciento, el gestor probablemente pondr todo en su lugar.
En un proyecto grande es posible definir 30 o 40 riesgos. Si para cada uno se identifican entre tres y siete pasos de gestin del riesgo, sta puede convertirse por si
misma en un proyecto! Por esta razn se adapta la regla 80-20 de Pareto al riesgo
de software. La experiencia indica que 80 por ciento del riesgo del proyecto global
(es decir, 80 por ciento del potencial para falla del proyecto) puede explicarse slo
con 20 por ciento de los riesgos identificados El trabajo realizado durante los primeros pasos del anlisis de riesgo ayudar al planificador a determinar cules de los
riesgos se encuentran en ese 20 por ciento (por ejemplo, riesgos que conduzcan a la
mayor exposicin al riesgo). Por esta razn, algunos de los riesgos identificados,
evaluados y proyectados pueden no incluirse en el plan RSGR, ya que no se ubican
en el crtico 20 por ciento (los riesgos con la mayor prioridad de proyecto).
762
i'HIH:liN'JQa
El riesgo no est limitado al proyecto de software. Los riesgos pueden ocurrir despus de que el software se ha desarrollado exitosamente y entregado al cliente. Estos riesgos estn tpicamente asociados con las consecuencias de la falla de software en el campo.
El anlisis de seguridad y peligros de software [LEV95] son actividades de aseguramiento de la calidad del software (captulo 26) que se enfocan en la identificacin y
evaluacin de los peligros potenciales que pudieran afectar al software negativamente y provocar una falla en todo el sistema. Si los peligros se pueden identificar
temprano en el proceso de ingeniera del software, las caractersticas de diseo de
software se pueden especificar de modo que eliminen o controlen los peligros potenciales.
llll~llidllYo
queconliel)IIIO~
enlnidos del ACi{
..
oceJ<iideP.re$gostil
Pblaue iillede
~ ,
~811
ii+Uffi
Hoja de informacin del
riesgo
1 Prob:
80%
(WIL97].
",'
lmpocto: alto
Descripcin:
Slo 70 por ciento de los componentes de software colendorizodos poro
reutilizacin de hecho se integrarn en lo aplicacin. Lo funcionalidad restante
tendr que desarrollarse de manero personalizado.
Refinamiento/ contexto:
Subcondicin 1: Ciertos componentes de reutilizacin fueron desarrollados por un
tercer participante sin conocimiento de los estndares de diseo internos.
Subcondicin 2: El estndar de diseo poro los componentes de interfaces no ha
sido solidificado y tal vez no concuerden con ciertos componentes reutilizables existentes.
Subcondicin 3 : Ciertos componentes reuti lizables se han implementado en un
lenguaje que no soporto el entorno destino.
Reduccin/ supervisin:
1. Contactar con el tercer participante poro determinar lo concordancia con los
estndares de diseo.
2 . Presionar poro completar los estndares de interfaz; considerar lo estructuro del
componente cuando se decido acerco del protocolo de lo interfaz.
3 . Verificar paro determinar el nmero de componentes en lo categora 3 de
subcondicin; verificar poro determinar si se puede adquirir el soporte paro el
lenguaje.
Gestin/plan de contingencia/disparador:
Lo ER se calculo en 20 200 dlares. Asignar esto cantidad dentro del costo de
contingencia del proyecto.
Desarrollar uno colendarizacin revisado suponiendo que se tendrn que construir
18 componen tes adicionales; asignar el personal en concordancia.
Disparador: los posos de reduccin son improductivos al 1/7/04.
Estado actual:
12/5/04: Inician los posos de reducc in.
Elabor:
D. Gogne
Asignado a:
B. Loster
CAPTULO 25
763
En el plan del proyecto de software se puede incluir una estrategia de gestin de riesgo o los pasos de gestin del riesgo organizarse por separado en un Plan de reduccin, supeNisin y gestin del riesgo. El plan RSGR documenta todo el trabajo realizado como parte del anlisis del riesgo y el gestor del proyecto lo emplea como parte
del plan global del proyecto.
Algunos equipos de software no elaboran un documento RSGR formal. En su lugar, cada riesgo se documenta individualmente mediante una hoja de informacin del
riesgo (HIR) [WIL97]. En la mayora de los casos la HIR se mantiene empleando un
sistema de base de datos, de modo que la creacin y las entradas de informacin,
ordenamiento de prioridades, bsquedas y otros anlisis se logran fcilmente. En la
figura 25.4 se ilustra el formato de la HIR.
una vez documentado el plan RSGR y que el proyecto ha comenzado, se inician
los pasos de reduccin y supervisin del riesgo. Como ya se ha comentado, la reduccin del riesgo es una actividad encaminada a evitar el problema. La supervisin del
riesgo es una actividad de seguimiento del proyecto con tres objetivos principales: 1)
valorar si los riesgos predichos de hecho ocurren; 2) asegurar que los pasos para evitar el riesgo definidos para ste se estn aplicando con propiedad; y 3) recopilar informacin que pueda usarse en futuros anlisis de riesgo. En muchos casos, a los
problemas que ocurren durante un proyecto es posible darles seguimiento hacia ms
de un riesgo. otra labor de la supervisin del riesgo es intentar ubicar el origen (qu
riesgos provocaron qu problemas a travs del proyecto).
Rislc Rodar desorrollada por SPMN (www.spmn.com), auxi1io o los gestores de proyectos a identificar y gestionar riesgos.
Las herramientas anotadas aqu son una muc:sua de esta categorla. En la mayora de los casos los
nombres de las mismas son marcas registradas por- sus respectivos desarrolladores.
764
Siempre que en un proyecto de software est mucho en juego, el sentido comn dicta el anlisis de riesgos. Sin embargo, muchos gestores de proyecto de software lo
hacen informal y superficialmente, si es que lo hacen. El tiempo empleado en identificar, analizar y gestionar el riesgo paga por s mismo dividendos en muchas formas: menos trastornos durante el proyecto, una mayor habilidad para seguir y controlar un proyecto, y la confianza que llega cuando se planifican los problemas antes de que ocurran.
El anlisis de riesgos puede absorber una cantidad significatva de esfuerzo de
planificacin del proyecto. La identificacin, proyeccin, evaluacin, gestin y supervisin toman tiempo. Pero el esfuerzo bien vale la pena. Para citar a Sun Tzu, el general chino que vivi hace 2 500 aos: "Si usted conoce al enemigo y se conoce a si
mismo, no necesita temer el resultado de cien batallas". El enemigo del gestor del
proyecto de software es el riesgo.
[AFC881 Software Risk Abatement, AFCS/ AFLC Pamphlet 800-45, U.S. Air Force, 30 de septiembre de 1988.
[BOE891 Boehm, B. W., Software Risk Management, IEEE Computer Society Press, 1989.
[CHA891 Charette, R. N., Software Engineering Ri.skAnalysis and Management, McGraw-Hill/Intertext, 1989.
[CHA921 Charette, R. N., "Building Bridges over Intelligent Rivers", en American Programmer, vol.
5, nm. 7, septiembre de 1992, pp. 2-9.
[DRU75] Drucker, P., Management, W. H. Heinemann, 1975.
[GIL.88] Gilb, T., Principles ofSoftware Engineering Management, Addison-Wesley, 1988.
[GLU94) Gluch, D. P., "A construct for Describing Software Development Risks", CMU/SEl-94TR-14, Software Egineering Institute, 1994.
[HAL98) Hall, E. M., Managing Risk: Methods for Software systems Development, Addison-Wesley,
1998.
fHIG95] Higuera, R. P., "Team Risk Management", en CrossTalk, U.S. Dept. of Defense, enero de
1995, pp. 2-4.
[KAR96J Karolak, D. W., Software Engineering Risk Managemenf. IEEE Computer Society Press,
1996.
f[(EI98J Keil, M . et al., "A Framework for Jdentifying Software Project Risks", en CACM, vol. 41 ,
nm. 1, noviembre de 1998, pp. 76-83.
[LEV95) Leveson, N". G., Software system Safety and Computers, Addison-Wesley, 1995.
[SEI93) "Taxonomy-Based Risk Identification", Software Engineering Institute, CMU/SEI-93-TR6, 1993.
765
[TH092) Thomsett, R., "The Indiana Jones School of Risk Management", en American Programmer, vol. 5, nm. 7, septiembre de 1992, pp. 10-18.
[WIL97] Williams, R. C., J. A. Walker y A. J. Dorofee, "Putting Risk Management into Practice", en
IEEE Software, mayo de 1997, pp. 75-81.
25.1. Ofrecer clnco ejemplos de otros campos que ilustren los problemas asociados con una
estrategia de riesgo reactiva.
25.2. Describir la diferencia entre "riesgos conocidos" y "riesgos predecibles".
25.3. Agregar tres preguntas o tpicos adicionales a cada una de las listas de verificacin de
riesgo que se presentan en el sitio Web SEPA.
25.4. A usted se le ha pedido construir software para apoyar un sistema de edicin de video de
bajo costo. El sistema acepta como entrada video digital, almacena el video en disco y luego
permite que el usuario haga una amplia variedad de ediciones al video digitalizado. El resultado puede entonces grabarse en DVD u otro medio audiovisual. Investigue un poco acerca de
sistemas de este tipo y Juego elabore una lista de riesgos tecnolgicos que enfrentara al comenzar un proyecto con estas caractersticas.
2 5.5. Usted es el gestor de proyecto de una gran compaa de software. Se le solicita dirigir un
equipo que est desarrollando software de procesamiento de textos de "nueva generacin".
Cree una tabla de riesgos para el proyecto.
2 5.6. Describir la diferencia entre componentes de riesgo y controladores de riesgo.
25. 7. Desarrollar una estrategia de reduccin de riesgo y especificar actividades de reduccin
de riesgo para tres de los riesgos anotados en la figura 25.2.
25.8 . Desarrollar una estrategia de supervisin de riesgo y especificar actividades de supervisin de riesgo para tres de los riesgos anotados en la figura 25.2. Asegrese la identificacin de
los factores que se supervisarn para determinar si el riesgo se est volviendo ms o menos probable.
25.9. Desarrollar una estrategia de gestin del riesgo y especificar actividades de gestin del
riesgo para tres de los riesgos anotados en la figura 25.2.
25. 1o. Intntese refinar tres de los riesgos anotados en la figura 25.2 y luego crense hojas de
informacin de riesgo para cada uno.
25.11 . Represntense tres de los riesgos anotados en la figura 25.2 empleando un formato CTC.
25. 12. Vulvase a calcular la exposicin aJ riesgo examinada en la seccin 25.4.2 cuando el
costo/LDC es de 16 dlares, y la probabilidad de 60 por ciento.
25.13. Puede pensar en una situacin en la que un riesgo de alta probabilidad y alto impacto
no sera considerado como parte de su plan RSGR?
25.14. Describanse cinco reas de aplicacin de software en las que el anlisis de la seguridad
y los peligros del software serian una preocupacin principal.
766
Management, Management Concepts, 2002) y Smith y Merrtt (Proactive Risk Management, ?r'"lductivity Press, 2002) sugieren un proceso proactivo para la gestin del riesgo. Karolak (SO.fh,
re Engineering Risk Managemenc, Wiley, 2002) ha escrito una gua que introduce un modelo anlisis de riesgo fcil de usar y que contiene valiosas listas de verificacin y cuestionarios cr-se apoyan en un paquete de software.
Schuyler (Risk and Decision Analysis in Projects, PMI, 2001) considera el anlisis de riesg
desde una perspectiva estadistica. Hall (Managing Risk: Methods far Software Systems Devd.. ;
ment, Addison-Wesley, 1998) presenta uno de los tratamientos ms exhaustivos de la mater _
Myerson (Risk Management Processing far Software Engineering Mode/s, Artech House, 1~
considera mtricas, seguridad, modelos de proceso y otros tpicos. Grey (Practica/ Risk ~
mentfor Project Management, Wiley, 1995) escribi un til manual de la evaluacin del riesg:
Su tratamiento abreviado ofrece una buena introduccin a la materia.
Capers Jones (Assessment and Control ofSOftware Risks, Prentice-Hall, 1994) presenta una e. posicin detallada de los riesgos de software que incluye datos recopilados a partir de cienl""S
de proyectos de software. Jones define 60 factores de riesgo que pueden afectar el resultado :!e
los proyectos de software. Boehm [BOE89] sugiere excelentes formatos de cuestionario y lisU.s
de verificacin que pueden resultar invaluables en la identificacin de riesgos. Charette [CHAc.
presenta un tratamiento detallado de las mecnicas del anlisis de riesgo, y utiliza teora de p~
babilidad y tcnicas estadsticas para analizar riesgos. En un volumen adicional, Charette ,,.;:
plication Strategies for Risk Anatysis, McGraw-Hill, 1990) analiza el riesgo en el contexto de _
ingeniera tanto de sistemas como de software, y sugiere estrategias pragmticas para la ge::
tin del riesgo. Gilb (Principies ofSoftware Engineering Management, Addison-Wesley, 1988) presenta un conjunto de "principios" (en ocasiones graciosos y a veces profundos) que pueden servir como una gua valiosa para la gestin del riesgo.
Ewusi-Mensah (Software Development Failures: Anatomy of Abandoned Projects, MIT Press,
2003) y Yourdon (Death March, Prentice-Hall, 1997) analizan lo que ocurre cuando los riesgos
abruman a un equipo de proyecto de software. Bernstein (Against the Gods, Wiley, 1998) presenta una entretenida historia del riesgo que se remonta a tiempos antiguos.
El Software Engineering Institute ha publicado muchos informes detallados y guas acerci
del anlisis y la gestin del riesgo. El folleto AFSCP 800-45 [AFC88J del Air Force systems eocmand describe las tcnicas de identificacin y reduccin de riesgos. Cualquier nmero del AC
SOjtware Engineering Notes tiene una seccin titulada "Riesgos para el pblico" (editor, P. G. NeJmann). Si usted quiere las ms recientes y mejores historias de horror de software, ste es el >gar al que tiene que ir.
En Internet hay disponible una amplia variedad de fuentes de informacin acerca de gest:ic".:
del riesgo de software. Una lista actualizada de referencias en la World Wide Web se puede ercontrar en el sitio Web SEPA:
http://www.mhhe.com/presssman.
DE LA CALIDAD
CONCEPTOS
CLAVE
aplifkacll
defedos 11$
atrol
mlidoct 110
mto
Philip Ctosby [CR079J, en su lil;,ro fundamental acerca ele calidad, ofrece una
respuesta Irnica a esta pregunta:
El problema de la gestin de la calidad no es lo que la gente lgnora i!Crca de ~!la. El
problema es lo que creen saber...
2000 .,,.n,,190
A este respecto, la calidad tiene mucho en comn con el sexo, Todo el mundolo
quere. (En certas ~ondkiones, desde Juego.) Todos sienten que lo en'tendert (Aun
cuando no quieran explicarlo.) todos piensan que su ejecucin slo es-cuestin de
seguir las inclinaciones naturales. (Despus cte todo, la gente se l.:ls arre$la de alguna fofitla.} Y, desde Juego, la mayora de tas personas piensa que los problemas en
estas reas los provocan otraa personas. (Si slo se tomaran el tiempo para hacer las
aestreo , 781
eosa.s bien.)
calidod. 71$
mstos
raftware . 788
siplo ...78S
768
PARTE CUATRO
ware y los cambios que generan (captulo 27); 5) un procedimiento para garantizar
la concordancia con los estndares de desarrollo del software (cuando sea aplicable), y 6) mecanismos de medicin e informe.
Este captulo se centra en los temas de gestin y las actividades especficas de
proceso que permiten a una organizacin de software garantizar que hace las cosas
correctas en el momento justo y en la forma correcta.
26.1
~
"~
C~VE
El control de lo
variacin es lo clave
poro un producto de
alto calidad. En el
contexto del software
se lucho por controlar
lo variacin en el
proceso genrico que
se aplico y el nfasis
de calidad que permeo
el trobojo de ingeniera
del software.
conc1ema PI cAw1n 1
El control de la variacin es el corazn del control de calidad. Un fabricante quiere
minimizar la variacin entre los productos que se producen, aun cuando haga algc
relativamente simple como duplicar DVD. Seguramente, esto no puede ser un problema: la duplicacin de los DVD es una operacin simple de fabricacin, y es posible garantizar que siempre se creen duplicados exactos del software.
Se puede? Es necesario asegurarse de que las pistas se colocan en los DVD dentro de una tolerancia especificada de modo que la mayora abrumadora de los controladores de DVD pueda leer el medio. Las mquinas de duplicacin de discos pueden, y lo hacen, aceptar y rechazar la tolerancia. As que incluso un proceso "simple" como la duplicacin de DVD puede encontrar problemas debidos a la variacir
entre muestras.
Pero cmo se aplica esto al trabajo de software? Cmo puede una organizacin
de desarrollo de software necesitar controlar la variacin? De un proyecto a otro se
quiere minimizar la diferencia entre los recursos predichos necesarios para compleEsta seccin, escrita por Michael Stovsky, ha sido adaptada de "Fundamentals of ISO 9000", un libro
de trabajo desarrollado para
CAPTULO 26
769
GESTIN DE LA CALIDAD
tar un proyecto y los recursos reales utilizados, que incluyen personal, equipo y tiempo. En general, se quisiera estar seguro de que el programa de pruebas abarca un
porcentaje conocido del software, de una liberacin a otra. No slo se quiere minimizar el nmero de defectos que se liberan, sino que se quiere asegurar que la varianza en el nmero de bugs tambin se minimiza de una liberacin a otra. (Los clientes
probablemente se molestarn si la tercera liberacin de un producto tiene diez veces ms defectos que la liberacin previa.) Nos gustara minimizar las diferencias en
rapidez y precisin de las respuestas de la linea de soporte para los problemas de los
clientes. La lista puede continuar indefinidamente.
26.1.1
Calidad
!J' .'\t...alwla cun rdpido hiciste un trobojo, pero siempre recuerdan cun bien lo lllste.
1
... . . . . . . . . ,,,
En el desarrollo de software, la calidad del diseo incluye requisitos, especificaciones y el diseo del sistema. La calidad de concordancia es un tema enfocado principalmente en la implementacin. Si sta sigue el diseo y el sistema resultante
satisface sus requisitos y metas de desempeo, la calidad de concordancia es alta.
Pero la calidad del diseo y la calidad de concordancia son los nicos temas que
deben considerar los ingenieros de software? Robert Glass [GLA98] argumenta que es
conveniente una relacin ms "intuitiva~:
satisfaccin del usuario = producto manejable + buena calidad
~ entrega dentro de presupuesto y tiempo
En el fondo, Glass afirma que la calidad es importante, pero si el usuario no est satisfecho, nada ms importa en realidac. DeMarco (DEM99J refuerza esta visin cuando afirma: "La calidad de un producto es una func,n de cunto cambia el mundo
para mejorar". Esta visin de la calidad afirma que si un producto de software pro-
770
porciona beneficio sustancial a sus usuarios finales, stos estn dispuestos a toler..:r
problemas ocasionales en confiabilidad y desempeo.
control de
catidad de
software?
'
....
tj/f iihi.11
IIICnl$
so.
pl8datna111111r111
# ........
....
-tt,/,.1/Wn.
macin que evalan la efectividad y qu tan completas son las actividades de con;_
de calidad. La meta del aseguramiento de la calidad es brindarle al gestor los da s
necesarios para que est informado acerca de la calidad del producto, y por cor_
guiente que comprenda y confie en que la calidad del producto est satisfaciendo s.lS
metas. Desde luego, si los datos que ofrece el aseguramiento de la calidad iden;...'.:
can problemas, es responsabilidad del gestor abordarlos y aplicar los recursos necesarios para resolver los conflictos de calidad.
26.1.4
Costo de la calidad
El costo de la calidad incluye todos los costos que genera la bsqueda de calidaC:
que demanda el desarrollo de las actividades relacionadas con la calidad. Los eS ..
dios de costo de la calidad se llevan a cabo para ofrecer una linea base para el Cl.
to actual de la calidad, identificar oportunidades que reduzcan el costo de calida1..
proporcionar una base normalizada de comparacin. La base de la normalizac
casi siempre es monetaria. Una vez que se han normalizado los costos de la calid~
sobre una base monetaria, se tienen los datos necesarios para evaluar dnde se e
cuentran las oportunidades para mejorar los procesos. Ms todava, se puede e
Cules
son los
to11ponentes del
costo de calidad?
CAPM'tJLO 26
771
GESTIN DE LA CALIDAD
1000
:i
,2
!::i
100
"t.g..
10
e
l
j
Req.
Diseo
C6di90
Des.
pruebas
Pruebas Operocin
de sistema de campo
tllnlpo hac:w una coso bien que explicar por qu lo hiciste mol."
H.W.l ...,
772
Cmo se
define la
calidaddel
software?
No hay duda de que esta definicin puede modificarse o extenderse. De hecho, la de
finicin de calidad del software podrla debatirse interminablemente. En cuanto a las
propsitos de este libro, esta definicin sirve para resaltar tres puntos importantes
3 . Con frecuencia no se menciona un conjunto de requisitos implcito (por ejemplo, el deseo de uso sencillo y facilidad de mantenimiento). Si el software corcuerda con sus requisitos explcitos pero fracasa al satisfacer los requisitos
implcitos, su calidad est en duda.
e'"
apo-
yaban en la medicin y la mejora continua de los procesos (DEM86J como los elementos clave de la gestin de la calidad.
y se han extendido rpidamente en el desarrollo del software en el mundo de los negocios [IEE94J. Si se extiende la definicin presentada anteriormente, la garanta de
la calidad del software es un "patrn de acciones sistemtico y planificado" (SCH9S,
CAPTULO 26
GESTIN DE LA CALIDAD
773
l es ti
papel dt ..
"' dtSQA?
774
PARTE CUATRO
Revisar las actividades de ingeniera del software para verificar que se ajuste al proceso de software definido. El grupo de SQA identifica, documenta y sigue las desviaciones del proceso y verifica que se hayan hecho las correcciones.
Audita productos de trabajo de software seleccionados para verificar que
se ajusten con los defmidos como parte del proceso del software. El grupo
de SQA revisa los productos de trabajo seleccionados, identifica, documenta y sigue
las desviaciones; verifica que se hayan hecho las correcciones; y peridicamente informa de los resultados de su trabajo al gestor del proyecto.
Garantiza que las desviaciones en el trabajo del software y en los productos de trabajo estn documentadas y se manejen de acuerdo con el procedimiento establecido. Las desviaciones se pueden encontrar en el plan del proyecto, en la descripcin del proceso, en los estndares aplicables o en los productos
de trabajo tcnicos.
Registra cualquier falta de ajuste y lo informa al gestor ejecutivo.
mentos que no se ajustan se les da seguimiento hasta resolverlos.
A los ele-
sudaH. Demasiada y
el f/uo se reduce oun
chorrito. Use mtricos
poro determinar qu
revisiones funcionan y
reslte/os.
Las revisiones del software son un "filtro" para el proceso de software. Esto es, las
revisiones se aplican en varios puntos durante la ingeniera del software y sirven para descubrir errores y defectos que Juego pueden eliminarse. Las revisiones del software "purifican" las actividades de ingeniera del software que se han denominado
anlisis, diseo y codificacin. Freddman y Weinberg [FRE90] abordan del modo siguiente la necesidad de las revisiones:
El trabajo tcnico necesita revisarse por la misma razn que los lpices necesitan gomas.
Errar es humano. La segunda razn por la que se necesitan las revisiones tcnicas es que,
aunque la gente sea buena al captar algunos de sus propios errores, las grandes clases de
errores escapan de su creador con ms facilidad de lo que se le escapan a alguien ms.
Como parte de la ingeniera del software se pueden llevar a cabo muchos tipos de
revisiones. Cada uno tiene su lugar. una reunin informal en torno a una mquina
expendedora de caf es una forma de revisin, si se examinan los problemas tcnicos. Una presentacin formal del diseo de software a un auditorio de clientes, gestores y personal tcnico tambin es una forma de revisin. Sin embargo, este libro
se enfoca sobre la revisin tcnica formal, a veces llamada comprobacin manual del
cdigo (wa/kthrough) o inspeccin. Una revjsin tcnica formal (RTF) es el filtro ms
efectivo desde un punto de vista de aseguramiento de la calidad. Dirigida por los ingenieros de software (u otras personas) para ingenieros de software, la RTF es un
medio efectivo para descubrir errores y mejorar la calidad del software.
CAPTULO 26
775
GESTIN DE LA CALIDAD
Sin embargo, es importante mencionar que la distincin temporal hecha en este libro entre errores y defectos
no es la tendencia predominante. El consenso general entre la comunidad de ingeniera del software es que defec
tos y errores, follas y bugs son sinnimos. Es decir, el
momento en que el problema se descubri no tiene impor
toncio en cuanto al trmino con que se describe el proble
ma. Parte del argumento en favor de esto visin es que o
veces es difcil distinguir con claridad entre preliberocin y
posliberocin (por ejemplo, considrese un procesa incremental utilizado en el desarrollo gil (captulo 4]1.
Sin importar cmo se elijo interpretar estos trminos,
reconzcose que el momento en que se descubre un problema s importo y que los ingenieros de software deben
intentar duro, muy duro, detector los problemas antes de
que los dientes y usuarios finales los encuentren. Si se tiene
un inters posterior en este temo, uno revisin razonablemente amplio de lo terminologa que rodeo o los HbugsHse
puede encontrar en www.softworedevelopment.co/bugs.
shtml.
M iifli
1
lllodelo de
::mpwtcacin
:.e defecto.
Poso de desarrollo
Defectos
Deteccin
Errores
provenientes
de posos previos
Errores que
pasan ol poso
siguiente
116
El obetivo principal de
una RTF es encontrar
los errores antes de
que pasen aotro
actividad de ingenierfo
del sohwore osean
liberados o/ usuario
fino/.
varios estudios industriales (realizados por TRW, NEC y Mitre Corp., entre otros
indican que las actividades de diseo introducen entre 50 y 65 por ciento de los errores (y, a final de cuentas, de los defectos) durante el proceso de software. Sin embargo, las tcnicas de revisin formal han mostrado hasta 75 por ciento de efectivid~
UON86] al descubrir fallos en el diseo. Al detectar y eliminar un gran porcentaje de
dichos errores, el proceso de revisin reduce sustancialmente el costo de las act~ dades subsecuentes en el proceso de sofiware.
Para ilustrar el impacto en el costo de la deteccin temprana de errores, considc:::rese una serie de costos relativos que se basan en datos de costo real recopilada:.
para grandes proyectos de software [1BM81]. 3 Supngase que la correccin de u:error descubierto durante el diseo costar 1.0 unidad monetaria. En relacin ccr
este costo, el mismo error descubierto justo antes de que comience el periodo de
pruebas costar 6.5 unidades; durante las pruebas, 15 unidades; y despus de la Lberacin, entre 60 y l 00 unidades.
.;;;:p.;.
AmpWicacin
de defecto sin
revisiones.
Pruebo de validacin
A integracin
Prueba de sistema
o
o
Errares latentes
Aunque estos datos tienen ms de 20 aos de antigedad, an son aplicables en un contexto mer
derno.
777
ifrHfli
Diseo preliminar
Ampllficacin
de defecto con
revisiones.
Diseo detollodo
l 1.5
50%
25
24
Pruebo de integracin
Pruebo de volidocin
A inte9roci6n
Pruebo de sistema
Errores latentes
plifican (factor de amplificacin x) con el trabajo actual. Las subdivisiones de los recuadros representan cada una de estas caractersticas y el porcentaje de eficiencia
de la deteccin de errores, una funcin de la minuciosidad de la revisin.
Mam11~ h los midkos, son fciles de curar en sus iatios ounqu1 diltdllS4e....,...
aJ lielnpo, cuando no han sido reconocidos oprimero visto y trotodCI$, se-vllvt r.dM .. ......,
.Olllf..
,
T/8
PARTE CUATRO
En las revisiones un ingeniero de software debe utilizar tiempo y esfuerzo, y la organizacin desarrolladora, dinero. Sin embargo, los resultados del ejemplo precedente no dejan duda acerca de pagar ahora o hacerlo ms tarde. Las revisiones tcnicas
formales (para el diseo y otras actividades tcnicas) ofrecen un beneficio demostrable en el costo. Se deben llevar a cabo.
Cuando se
llevan a cabo
RTF, cules son
los objetivos?
'
Una revisin tcnica formal (RTF) es una actividad de control de calidad del software que llevan a cabo los ingenieros de software (y otros). Los objetivos de una RTF
son 1) descubrir errores en la funcin, lgica o implementacin en cualquier representacin del software; 2) verificar que el software en revisin satisface sus requisitos; 3) garantizar que el software se ha representado de acuerdo con los estndares
predefinidos; 4) lograr software desarrollado en una manera uniforme; y 5) hacer
proyectos ms manejables. Adems, la RTF sirve como un campo de entrenamiento, pues permite que los ingenieros menos experimentados observen diferentes enfoques respecto del anlisis, el diseo y la construccin del software. La RTF tambin
funge como promotora del soporte y la continuidad, pues varias personas se familiarizan con las partes del software que de otra forma nunca veran.
26.4. l
La junta de revisin
Sin importar el formato de RTF que se elija, cualquier junta de revisin debe atenerse a las siguientes restricciones:
En la revisin se deben involucrar (usualmente) entre tres y cinco personas.
Se debe preparar con anticipacin, pero sin que requiera ms de dos horas de
trabajo de cada persona.
La duracin de la junta de revisin debe ser menor a dos horas.
Dadas estas restricciones. debe ser obvio que una RTF se enfoca en una parte especfica (y pequea) del software total. Por ejemplo, ms que intentar revisar un diseo completo, se llevan a cabo recorridos para cada componente o grupo pequeo de
componentes. Al estrechar el enfoque, la RTF tiene una mayor probabilidad de descubrir errores.
.,~,
C~YE
..ni RTF se enfoco en
n porcin
~mente pequeo
3e uo producto de
-mojo.
~ alguien distinto al
~rrecormel
,r,cto que experi-
Esto
-rllce ouno inter
:rmin /itero/ del
.=,ero de trabo;o y
l"'flll!J revisin.
CAPTULO 26
GESTIN DE LA CALIDAD
779
1. Qu se revis?
2 . Quin lo revis?
3. Cules fueron los hallazgos y conclusiones?
El informe resumen de la revisin es un formato de una sola pgina (con posibles
anexos). Se vuelve parte del reg:.stro tustrico del proyecto y es posible distribuirlo
entre el jefe del proyecto y otras partes interesadas.
La lista de problemas de la revisin cumple dos propsitos: 1) identificar reas
problema en el producto y 2) funcionar como lista de verificacin de elementos de
accin que guan al productor conforme se hacen las correcciones. Normalmente al
informe resumen se anexa una lista de problemas.
780
PARTE CUATRO
1. Revisar el producto, no al productor. Una RTF involucra personas y egos. Realizada con propiedad, la RTF debe dejar a todos los participantes con un clido
sentimiento de logro. Si se lleva a cabo de manera inadecuada, la RTF puede
tomar un aura inquisitorial. Los errores se deben sealar con gentileza; el ter
no de la junta debe ser relajado y constructivo; la finalidad no debe ser avergonzar o menospreciar.
2. Establecer una agenda y respetarla. Un mal clave de las juntas de cualquier tipr...
es la divagacin. Una RTF tiene que mantener el rumbo y seguir el programa
El jefe de revisin tiene la responsabilidad de mantener el programa de la jUI:ta y no vacilar en llamar la atencin de la gente cuando se empiece a divagar
3. Umitar el debate y la impugnacin. Cuando un revisor plantee un problema, ta.
vez no haya un acuerdo universal sobre su impacto. En lugar de perder tiempo debatiendo la cuestin, el problema se debe registrar para tratarlo informalmente despus.
4. Enunciar reas de problemas, pero no se intente resolver todos los que se hayan
sealado. Una revisin no es una sesin para resolver problemas. Esto se debe
posponer hasta despus de la junta de revisin.
5. Tomar notas. En ocasiones es buena idea que el registrador tome notas en ur.::
pizarra, de modo que las palabras y las prioridades puedan evaluarlas otros
revisores conforme se registra la informacin.
6. Umitar el nmero de participantes e insistir en la preparacin anticipada. Dos cabezas piensan mejor que una, pero 14 no necesariamente son mejores que
cuatro. Mantngase el nmero de personas involucradas en el mnimo necesario. Sin embargo, todos los miembros del equipo revisor deben prepararse
por anticipado. El jefe de revisin debe solicitar comentarios escritos (lo que
ofrece un indicio de que el revisor ha analizado el material).
781
7. Desarrollar una lista de verificacin para cada producto que tenga probabilidad
Asignar recursos y programar las KTF. Las revisiones sern efectivas si se programan como una tarea del proceso de software. Adems, se debe programar
tiempo para realizar las inevitables modificaciones que ocurrirn como resultado de una RTF.
Analizar las revisiones previas. La junta es beneficiosa para descubrir problemas en el proceso de revisin mismo. El primer producto que se haya revisado debe establecer las directrices de revisin.
Puesto que muchas variables (por ejemplo, nmero de participantes, tipo de productos de trabajo, tiempo y duracin, enfoque especfico de revisin) inciden en una
revisin provechosa, una organizacin de software debe experimentar para determinar qu enfoque funciona mejor en un contexto local. Porter y sus colegas [POR95]
ofrecen una excelente gua para este tipo de experimentacin.
Desde luego, se puede argumentar que al~-a:r a'Gib:>rens:ones. se alienta a los productores a enfocarse en la calidad, incluso si no se encuectr.lr. ~
782
l. Inspeccionar una fraccin a de cada producto de trabajo de software i. Registre el nmero de fallas f encontradas dentro de a.
2. Desarrollar una estimacin bruta del nmero de fallas dentro del producto de
trabajo i al multiplicarJi por 1/a;.
3. Ordenar los productos de trabajo en forma descendente de acuerdo con la estimacin bruta del nmero de fallas en cada uno.
Thelin y sus colegas han realizado una simulacin detallada que puede ayudar a tomar esta determinacin. Vase [THEOIJ para detalles.
CAPTULO 26
783
GESTIN DE LA CALIDAD
Durante las dos dcadas pasadas, un pequeo, pero ruidoso, segmento de la comunidad de ingeniera del software ha argumentado que se requiere un enfoque ms
formal de la garanta de la calidad del software. Se puede argumentar que un programa de computadora es un objeto matemtico [SOMOlJ. En cada lenguaje de programacin se definen una sintaxis y una semntica rigurosas, y existe un enfoque riguroso respecto de la especificacin de requisitos de software (captulo 28) . Si el modelo de requisitos (especificacin) y el lenguaje de programacin se representan en
una forma rigurosa, debe ser posible aplicar pruebas matemticas de exactitud para
demostrar que un programa concuerda exactamente con sus especificaciones.
Los intentos encaminados a probar la exactitud de los programas (captulos 28 y
29) no son nuevos. Dijkstra [DJJ76J y Linger, Milis y Witt [LIN79]. entre otros, aconsejaron pruebas de exactitud de programa y los vincularon con la aplicacin de conceptos de programacin estructurada (captulo l l ).
lUla
784
Qu pasos
se requieren
para realizar SQA
estaclistlco?
4. Una vez que las causas vitales han sido identificadas, se corrigen los problemas que han provocado los defectos.
Este concepto relativamente simple representa un paso importante hacia la creacin
de un proceso de software adaptable en el que los cambios se hagan para mejorar
aquellos elementos del proceso que introducen errores.
,,o_.denl tlel ldigo tin 80 por cientode los errores. Encuntrelos, corrijalosl'
'
CAPTULO 26
-..:Olecci6n
datos
pmaSQA
,
co.
Total
Error
785
GESTIN DE LA CALIDAD
Serios
Moderados
Nm
Nm
Nm
22%
27%
17%
34
12
5%
IHC
205
156
48
25
130
58
45
95
36
60
28
3%
14%
6%
5%
10%
4%
6%
3%
MIL
..Q
Totales
942
--
EIE
MCC
DIE
VEP
ERO
ICI
ELD
PIE
011
TLP
__.....
....
100%
~
Menores
Nm
68
18%
103
24%
9%
68
18%
76
17%
1%
0%
20%
11%
9%
2%
12%
2%
6%
4%
18%
5%
3%
9%
5%
5%
4%
23
10
36
31
19
48
14
26
8
5%
2%
26
9
14
12
2
15
24
15
68
18
12
35
20
19
17
4%
11%
3%
6%
2%
_.Q!
-1
_4.1
-2l.
100%
379
100%
435
100%
7%
...
-=
128
.,,...
~'
. . . . . ..tml}I!
,.,,.. .
---
8%
7%
explican el 53 por ciento de todos los errores. Sin embargo, se debe observar que
EIE, ERO, TLP y ELD se seleccionarfan como las causas vitales si slo se consideraran los errores serios. Una vez determinadas las causas vitales, la organizacin de
ingeniera del software puede comenzar la accin correctiva. Por ejemplo, para corregir MCC, el desarrollador de software puede implementar tcnicas que faciliten la
recopilacin de requisitos (captulo 7) para mejorar la calidad de la comunicacin y
las especificaciones del cliente. Para mejorar ERO, el desarrollador puede adquirir
herramientas para el modelado de datos y ejecutar revisiones de diseo de datos
ms rigurosas.
Es importante anotar que la accin correctiva se enfoca principalmente en las vitales. Conforme stas se corrigen, nuevas candidatas ocupan la parte superior de la
clasificacin.
Las tcnicas de garanta estadstica de la calidad para software han demostrado
que ofrecen una mejora sustancial en la calidad [ART97J. En algunos casos, las organizaciones de software han alcanzado so por ciento de reduccin anual en los defectos despus de aplicar estas tcnicas.
La aplicacin del SQA estadstico y el principio de Pareto se pueden resumir en
una sola oracin: Emplee su tiempo enfocndose en las cosas que realmente importan,
Seis sigma es la estrategia ms ampliamente empleada en la actualidad para el aseguramiento de la calidad estadstico en la industria. Originalmente popularizada por
186
PARTE CUATRO
Motorola en el decenio de 1980, la estrategia seis sigma "es una metodologia rigurosa y disciplinada que utiliza anlisis de datos y estadstico para medir y mejorar e
desempeo operativo de una compaia al identificar y eliminar los 'defectos' en la
fabricacin y los procesos relacionados con el servicio" [ISI03]. El trmino "seis sigma" se deriva de seis desviaciones estndar -3.4 instancias (defectos) por milln de
ocurrencias-, lo que implica un estndar de calidad extremadamente elevado. La
metodologa seis sigma define tres pasos centrales:
Cules son
los pasos
centrales de la
metodologa seis
sigma?
Definir los requisitos del cliente, entregables y metas del proyecto por medio
sa-
CAPTULO 26
GESTIN DE LA CALIDAD
787
fiabilidad de 0.96 durante un periodo de ocho horas de procesamiento. En otras palabras, si el programa X fuese ejecutado 100 veces y requiriese un total de ocho horas de tiempo de procesamiento (tiempo de ejecucin), es probable que operara correctamente (sin falla) 96 veces.
Siempre que se estudia la fiabilidad del software, surge una pregunta central: qu
significa el trmino falla? En el contexto de cualquier anlisis de calidad y fiabilidad
del software, la falla es la falta de concordancia con los requisitos del software. Sin
embargo, incluso dentro de esta definicin, existen gradientes. Las fallas slo pueden ser molestas y catastrficas. Una falla puede corregirse en segundos, mientras
que otra tal vez requiera semanas o incluso meses. Para complicar el tema an ms,
la correccin de una falla puede, de hecho, resultar en la introduccin de otros errores que a final de cuentas resultan en otras fallas.
Aunque se pueda requerir la depuracin (Yaxtt:Cl.alilcS relacionadas) como consecuencia de una falla, en muchos casos el software t r a b a j a r ~ despus de un reinicio sin otro cambio.
188
Algunos aspectos de
lo disponibilidad (no
estudiados aquO no
tienen nodo que ver
con los folios. Por
ejemplo, los recortes
en lo colendorizon
(para funciones de
soporte) provocan que
el sohware no est
diseonib/e.
que cada defecto contenido dentro de un programa no tiene la misma tasa de falla
la cuenta de defectos totales ofrece poca informacin de la fiabilidad del sistema.
Adems de una medida de fiabilidad, se debe desarrollar una medida de dispon:.
bildad. La disponibijjdad del software es la probabilidad de que un programa opere
de acuerdo con los requisitos en un punto dado del tiempo, y se define como
Disponibilidad= [TMDF/(TMDF + TMDR)] x 100%
La medida de fiabilidad TMEF es igualmente sensible a TMDF y TMDR. La medida d..
disponibilidad es un poco ms sensible a TMDR, y es una medida indirecta de la fa..
cilidad de mantenimiento del software.
.....
"lo ,-lo inlaginr alguno <Olldidn que provoqueque este barcose hundo. Lo industria IIOYiera maderne il a
y anlisis. Inicialmente, los peligros se identifican y clasifican por importancia y riesgo. Por ejemplo, algunos de los peligros asociados con un control basado en computadora para la conduccin de un automvil pueden ser:
Provoca aceleracin descontrolada que no se puede detener.
No responde a la presin del pedal de freno (al apagarlo).
No responde cuando el interruptor se activa.
Pierde o gana rapidez lentamente.
Una vez identificados estos peligros en el nivel del sistema, mediante tcnicas de
anlisis se asignan severidad y probabilidad de ocurrencia. 7 Para ser eficaz, el software debe analizarse en el contexto de todo el sistema. Por ejemplo, un sutil error
de entrada de usuario (las personas son componentes del sistema) tal vez lo magnifique una falla del software para producir datos de control que posicionan de manera inadecuada un dispositivo mecnico. Si se rene un conjunto de condiciones am-
7 Este enfoque es similar a los mtodos de anlisis de riesgo descritos en el captulo 25. La diferencia
principal es el nfasis en los conflictos tecnolgicos, ms que en los tpicos relacionados con el proyecto.
Oi11H5M1
u.a~... 1
.......
.........
.....
,.
IIIIIJYOStQICCi
..Wdesoftwai
789
dispositivo
mecnico provocar una falla desastrosa. Las tcnicas de anlisis, como el anlisis
del rbol de fallas [VES8 l J, la lgica de tiempo real OAN86] o los modelos de red de
Petri [LEV87]. se emplean para predecir la cadena de eventos que pueden provocar
peligros y la probabilidad de que cada uno de los eventos ocurrir para crear la cadena.
Una vez identificados y analizados los peligros, se especifican los requisitos relacionados con la seguridad del software. Esto es, la especificacin puede contener
una lista de eventos indeseables y las respuestas deseables del sistema ante dichos
eventos. Entonces se indica el papel del software en la gestin de los eventos indeseables.
Aunque la confiabilidad del software y su seguridad estn estrechamente relacionadas, es importante entender las sutiles diferencias entre ellas. La confiabilidad del
software utiliza anlisis estadstico para determinar la probabilidad de que ocurrir
una falla del software. Sin embargo, el hecho de que ocurra una falla no necesariamente resulta en un peligro o percance. La seguridad del software examina las formas en las cuales las fallas resultan en condiciones que pueden conducir a un percance. Esto es, las fallas no son consideradas en el vaco, sino que se evalan en el
contexto de todo un sistema basado en computadora y en su entorno. Aquellos lectores con mayor inters deben remitirse al libro de Leveson [LEV95] para profundizar en el tema.
Es posible definir un sistema de garana de la calidad como la estructura organizacional, responsabilidades, procedimientos, procesos y recursos para implementar la
gestin de la calidad [ANS87]. Los sistemas de garanta de calidad fueron creados
~o describe lo
2 debe hocer poro
!"'llll~oble, pero no
-3 cmo se debe
para ayudar a las organizaciones a garantizar que sus productos y servicios satisfacen las expectativas de los clientes al cumplir sus especificaciones. El estndar ISO
9000 describe un sistema de garanta de la calidad en trminos genricos que se aplican a cualquier negocio sin importar los productos o servicios ofrecidos.
El registro en uno de los modelos de sistema de garanta de la calidad contenidos
en ISO 9000 requiere que los sistemas y operaciones de calidad de una compaa los
sometan a escrutinio auditores de una tercera entidad respecto de su concordancia
con el estndar y de su funcionamiento eficaz. Antes del registro exitoso, los auditores le extienden a la compaa un certificado de la organizacin de registro que representan. Entrevistas de auditoria semianuales garantizan la concordancia continua con el estndar.
de trabajo desarrollado por Essen/Jal Software Eng:ne:nng, un video currculum elaborado por R S.
Pressman & Associates, !ne. Reimpreso a:m p;:m::so.
790
www.praxiom.com).
Describir el proceso.
Poro ploneocin.
CAPTULO 26
791
GESTIN DE LA CALIDAD
El plan de SQA proporciona un mapa para instituir la garanta de la calidad del software. Desarrollado por el grupo de SQA (o el equipo de software si no existe un grupo SQA), el plan funciona como plantilla para las actividades de SQA que se instituyan para cada proyecto de software.
En el IEEE [JEE94) se ha publicado un estndar para planes de SQA. El estndar
recomienda una estructura que identifica: 1) el propsito y mbito del plan; 2) una
descripcin de todos los productos de trabajo de ingeniera del software (por ejemplo, modelos, documentos, cdigo fuente) que caen dentro del alcance del SQA; 3)
todos los estndares y prcticas aplicables que se aprovechan durante el proceso de
software; 4) acciones y tareas de SQA (incluso revisiones y auditoras) y su ubicacin
a travs del proceso de software; 5) las herramientas y mtodos que soportan las acciones y tareas de SQA; 6) procedimientos de gestin de configuracin de software
(captulo 27) para gestionar el cambio; 7) mtodos para ensamblar, salvaguardar y
mantener todos los registros relacionados con el SQA; y 8) papeles y responsabilidades en la organizacin relativas a la calidad de producto.
ARM, desarrollado por la NASA (satc.gsfc.nasa.gov/tools/index.htmll, ofrece medidas con las cuales se evala
lo calidad de un documento de requisitos de software.
QPR ProcessGuide ond Scorecord, desarrollado por QPR
I'"\..
\XuO,
Las herramientas expuestas slo representan una muestra de esta categora. En la mayora de los
casos los nombres de las mismas son marcas regxstradas por sus respectivos desarrolladores.
792
Blf1BIKAJ6I
'. t
tALV64J Alvin, w. H., von (ed.), Reliabili!}' Engineering, Prentice Hall, 1964.
[ANS87J ANSI/ASQC A3 1987, Quality systems Terminology, 1987.
[ART92] Arthur, L. J., Improving Software Quality: an lnsider's Guide to TQM, Wiley, 1992.
[ART97] Arthur, L. J. "Quantum lmprovements in Software System Quality, en CACM, vol. 40,
nm. 6, junio de 1997, pp. 47-52.
[BOE8 l J Boehm, B. Software Engineering Economics. Prentice-Hall, 1981.
!ClAOlJ Cianfrani, C. A . et al., ISO 9001:2000 Explained, 2a ed., American Society for Quality,
2001.
[CR079] Crosby, P., QualifY Is Free, McGraw-Hill, 1979.
[DEM86J Deming, W. E., Out oftl1e Crisis, MlT Press, 1986.
[DEM99J DeMarco, T., "Management Can make Quality (lm)possible", Cutter 1T Summit, Boston,
abril de 1999.
CAPTULO 26
GESTIN DE LA CALIDAD
793
A GQMIWIRII
26.1. En las primeras pginas de este capttwo se anot que "el control de la variacin es el corazn del control de calidad". Dado que cualquier programa que se crea es diferente de todos
los otros programas, cules son las vanaaones que se buscan y cmo se les controla?
26.2 . Es posible valorar la calidad del software si el diente cambia con frecuencia lo que se
supone debe hacer?
794
Los libros de Moriguchi (S0jlware Excel/ence: A Total Quality Managemenl Guide, Productivilj
Press, 1997) y Horch (Practical Guide to SOflware Qua/ig Management, Artech Publishing, 1996
son excelentes presentaciones, en el mbito gerencial, de los beneficios de los programas formales de aseguramiento de la calidad del software de computadora. Los libros de Deming
[DEM86). Juran (!uran on Qua/ig by Design, Free Press, 1992) y Crosby ([CR079] y Qua/ig Is Sllli
Free, McGraw-Hill, 1995) no se enfocan en el software, pero son una lectura obligada para los
gestores ejecutivos con responsabilidad en el desarrollo de software. Gluckman y Roome (EVery
day Heroes ofthe Qualig Movement, Dorset House, 1993) humanizan los temas de calidad al contar la historia de los actores en el proceso de calidad. Kan (Metrics and Models in Software Qualigt Engineering. Addison-Wesley, 1995) presenta una visin cuantitativa de la calidad del software.
Cianfani y sus colegas (ISO 900 I :2000 E:xplained, segunda edicin, American Society for Quality, 2001) y Gaal (ISO 900 I :2000for Small Business: Implementing Process-Approach Quality Management, St. Lude Press, 2001) estudian el estndar de calidad ISO 9001:2000. Tingley (Comparing ISO 9000, Malcolm Baldrige, and the SEi CMMfor Software, Prentice-Hall, 1996) ofrecen
una gua til para las organizaciones que luchan por mejorar sus procesos de gestin de calidad.
Los libros de George (Lean Six Sigma, McGraw-Hill, 2002), Pande y sus colegas (The Six Sigma Way Fieldbook, McGraw-Hill, 2001) y Pyzdek (The Six Sigma Handbook, McGraw-Hill, 2000)
CAPiTuJ.O 26
GESTIN DE LA CALIDAD
795
describen seis sigma, una tcnica estadstica de gestin de calidad que conduce a productos que
tienen muy bajas tasas de defectos.
Radice (High Qua/i~ Low Cost software lnspections, Paradoxicon Publishers, 2002), Wiegers
(Peer Reviews in SOftware: A Practica) Guide, Addison-Wesley, 2001). Gilb y Graham (SO}tware Jnspection, Addison-Wesley, 1993) y Freedman y Weinberg (Handbook ofWa/kthroughs, lnspections
and Technica/ Reviews, Dorset House, 1990) ofrecen directrices valiosas para llevar a cabo revisiones tcnicas formales efectivas.
Musa (SO}tware Reliability Engineering: More Reliab/e Software, Faster Development and Testing,
McGraw-Hill, 1998) ha escrito una gua prctica para tcnicas de fiabilidad de software aplicado. Kapur el al. (Contributions to Hardware and SOjtware Reliability Modeling, World Scientific Publishing Co., 1999), Gritzalis (Reliability, Quality and safety ofSoflware-Tntensive ~tems, Kluwer
Academic Publishers, 1997) y Lyu (Handbook o/software Reliability Engineering, McGraw-Hill,
1996) han editado antologas de importantes ensayos acerca de la fiabilidad del software.
Hermann (Software Safety and Reliabi/ity, Wiley-lEEE Press, 2000), Storey (Safety-Cntical Computer Systems, Addison-Wesley, 1996) y Leveson [LEV95) continan siendo los estudios ms detallados de la seguridad del software publicados a la fecha. Adems, van der Meulen (Deji.nitions
Jor Hardware and SOftware Safety Engineers, Springer-Verlag, 2000) ofrece un compendio completo de importantes conceptos y trminos de fiabilidad y seguridad. Gartner (Testing safety-Re/ated Software, Springer-Verlag, 1999) ofrece una gua especializada para probar sistemas cruciales de seguridad. Friedman y Voas (SOftware Assessment: Reliability Sajety and Testability, Wiley, 1995) ofrecen modelos tiles para valorar la fiabilidad y la seguridad.
En Internet hay disponible una amplia variedad de fuentes de informacin acerca de la gestin de calidad de software. Una lista actualizada de referencias en la World Wide Web se puede encontrar en el sitio Web SEPA:
http://www.mhhe.com/pressman.
CAPTULO
27
CONCEPTOS
CLAVE
auditotia, 8t 3
aanliio ......797
contn,I
de la versin . .822
contn,I
dtlmmbio .. .810
depsito ..... .803
ECS 801
estndares .. 824
GC WebApp .. 814
gestin
del COltenicla
817
idelrlifimcia 807
lllforae
dt estado ... .814
GESTIN
DEL CAMBIO
l cambio es inevitable cuando se construye software de computadora. Y el
catnbio aumenta el grado de confusin entre los ingenieros de software que
trabajan en un proyecto. La confusin surge cuando los cambios no se ana
!izan antes de realizarlos, no se registran antes de implementarlos, no se repor
tan a quienes deben saberlo o no se controlan en una forma que mejorar la
calidad y reducir el error Babich (BAB86J aborda esto cuando afirma
797
La salida del proceso de software es informacin que se puede dividir en tres amplias
software.
Si cada elemento de configuracin simplemente condujera a otros elementos
habra poca confusin. Por desgracia, otra variable entra en el proceso: el cambio.
ste puede ocurrir en cualquier momento, por cualquier razn. De hecho, la primera ley de la ingenierla de sistemas [BERBOJ afirma: "No importa dnde se encuentre
en el ciclo de vida del sistema, el sistema cambiar y el deseo de cambiarlo persistir a lo largo de todo el ciclo de vida" .
. ....
,._,.,,........ 11....:
Cul es el origen de estos cambios? La respuesta es tan variada como los cambios mismos. Sin embargo, existen cua1rO fuentes fundamentales de cambio:
798
PARTE CUATRO
Cul es el
origen ele los
cambios que se
requierett para el
software?
Nuevas condiciones en el negocio o mercado dictan los cambios en los reqi..sitos del producto o las reglas del negocio.
Nuevas necesidades del cliente demandan la modificacin de los datos que
producen los sistemas de informacin, de la funcionalidad que entregan los
productos o los servicios que entrega un sistema basado en computadora.
La reorganizacin o el crecimiento o reduccin del negocio provocan camblOS
en las prioridades del proyecto o en la estructura del equipo de ingenieria de.
software.
Restricciones presupuestales o de calendarizacin inducen una redefinicin
del sistema o producto.
La gestin de la configuracin del software es un conjunto de actividades que se hadesarrollado para gestionar el cambio a lo largo del ciclo de vida del software ec
computadora. La GCS se considera como una actividad de aseguramiento de la c:a...dad del software que se aplica a lo largo del proceso respectivo. En las secciones.
siguientes se examinan las principales tareas de la GCS y conceptos importantes q-...c
ayudan a gestionar el cambio.
Cules SOII
las aetas y
las actividades
realliadas por
'cada uno de los
partklpantes
ilvolucraclos en la
tfflln del cam
liio?
Un tpico escenario operativo de GCS involucra un gestor de proyecto a cargo de u:grupo de software; un gestor de configuracin a cargo de los procedimientos y pooticas de GC; los ingenieros de software responsables del desarrollo y mantenimierto del producto de software, y el cliente que emplea el producto. En el escenario
supngase que el producto es pequeo e involucra cerca de 15 000 lneas de cdigc
que desarrollar un equipo de seis personas. (Ntese que son posibles otros escenarios cte equipos menores o mayores, pero, en esencia, existen conflictos genricos
que cada uno de estos proyectos enfrenta en relacin con la GC.)
En el mbito operativo el escenario involucra diversos papeles y tareas. La meta
del gestor del proyecto es garantizar que el producto se entregue dentro de cierto
periodo. En consecuencia, el gestor supervisa el progreso del desarrollo y reconoce
y reacciona ante los problemas. Esto se hace al generar y analizar los informes acerca del estado del sistema de software y al realizar revisiones en el sistema.
Las metas del gestor de configuracin son garantizar que se siguen los procedimientos y polticas para crear, cambiar y poner a prueba el cdigo, as como posibilitar el acceso a la informacin acerca del proyecto. La implementacin de tcnicas
para mantener el control sobre los cambios de cdigo requiere que este gestor introduzca mecanismos para solicitar oficialmente cambios, evaluarlos (mediante una
junta de control de cambios, que es la responsable de aprobar los cambios al siste1 Esta seccin procede de [DARO I J. El permiso especial para reproducir "Spectrum of Functionality in
CM Systems" de Susan Dart [DAROIL 2001 por Carnegie Mellon University, lo otorg el Software
Engineering lnstitute.
CAPTULO 27
799
ma de software) y autorizarlos. El gestor crea y distribuye las listas de tareas para los
ingenieros y bsicamente crea el contexto del proyecto. Adems, el gestor recopila
estadsticas acerca de componentes en el sistema de software, por ejemplo: la informacin que determina cules componentes son problemticos en el sistema.
La meta de los ingenieros de software es trabajar con eficiencia. Esto significa que
no interfieren de manera innecesaria unos con otros en la creacin y prueba del
cdigo ni en la produccin de los documentos de soporte. No obstante, al mismo
tiempo, intentan comunicarse y coordinarse de manera eficiente. Especficamente,
los ingenieros utilizan herramientas que ayudan a construir un producto de software consistente. Ellos se comunican y coordinan al notificarse mutuamente las tareas
que se requieren y las tareas cumplidas. Los cambios se propagan por medio del trabajo de cada uno mediante archivos fusionados. Existen mecanismos para asegurar
que, respecto de los componentes que experimentan cambios simultneos, existe
alguna forma de resolver los conflictos y fusionar los cambios. La historia de la evolucin de todos los componentes del sistema se mantiene junto con un registro de
las razones de los cambios y otro de lo que cambi en realidad. Los ingenieros tienen su propio espacio de trabajo para crear, cambiar, probar e integrar cdigo. En
cierto punto, el cdigo se convierte en una lnea base a partir de la que contina el
desarrollo posterior y desde la que se realizan las variantes para otras mquinas que
tambin sean el objetivo.
El cliente emplea el producto. Dado que el producto lo controla la GC, el cliente sigue
procedimientos formales para solicitar cambios e indicar los bugs en el producto.
Idealmente, un sistema de GC utilizado en este escenario apoyara todas estas
funciones y tareas; esto es, las funciones determinan la funcionalidad requerida de
un sistema de GC. El gestor del proyecto ve una GC como un mecanismo de auditora;
el gestor de configuracin, como un mecanismo de creacin de control, seguimiento y polticas; el ingeniero de software, como un mecanismo de control del cambio,
la construccin y el acceso; y el usuario, como un mecanismo de garantia de la calidad.
,,
~
c&v1
Un producto de trabajo
de ingenierio del
s.1twoie se convierte
erdineo hose slo
teslls de que se ha
~,~.
801
den efectuar despus de que cada uno se ha evaluado y aprobado. Aunque las lneas base se pueden definir en cualquier grado de detalle, en la figura 27 .1 se muestran las lneas base de software ms comunes.
En la figura 27.1 tambin se muestra la progresin de eventos que conducen a
una lnea base. Las tareas de ingeniera del software producen uno o ms ECS.
:s preciso asegurarse
i? que lo base de
jts del proyecto se
-mtiene en uno
frocin central
::rrtrolado.
Despus de que stos se revisan y aprueban se colocan en una base de datos del proyecto (tambin llamada librera del proyecto o depsto de software, que se examinan
en la seccin 27.2). Cuando un miembro de un equipo de software quiere modificar
un ECS que se ha convertido en lnea base, se copia de la base de datos del proyecto en el espacio de trabajo prvado del ingeniero. Sin embargo, este ECS extrado
slo se puede modificar si se siguen los controles de la GCS (tratados ms adelante
en este captulo). Las flechas en la figura 27. l ilustran la trayectoria de modificacin
para un ECS convertido en linea base.
ECS convertidos
en lnea base y
baSe de datos del
proyecto.
Modificado
---~
(
Toreos de
ingeniera
de soflware
Revisiones
__.. -
Aprobodo
~
tcnicos _,. ~
formoles
- /
Alm-do
Exlra,do
Controles ~ . - ~ ~ - - ~
de GCS
LNEAS BASE:
802
ifrhffij
Objetos de
configuracin.
dsello ele~
_.a;,..---
cliaello arqullect6nico
c:li~ ele m6dulos - - - - - -dis.o de inllnQ%
Estas relaciones se definen dentro de la base de datos. La estructura de la base de datos (almace
se estudia con mayor detalle en la seccin 27.2.
CAPTULO 27
803
f.nciones
.,a..entaun
-,isito de ECS?
depsito, garantizar la consistencia entre objetos relacionados y automticamente realizar modificaciones "en cascada" cuando un cambio en un objeto
demanda algn cambio a los objetos relacionados con l.
El compartir informadn ofrece un mecanismo para distribuir la informacin
entre mltiples desarrolladores y herramientas, manejar y controlar los
accesos a los datos por parte de mltiples usuarios y cerrar y abrir los objetos
de modo que los cambios no sean trasladados inadvertidamente hacia otros.
La integracin de herramientas establece un modelo de datos al que se puede tener
804
PARTE CUATRO
La integracin
y qu servicios esped:"""
cos ofrece ste. En la figura 27.3 se presenta un anlisis detallado de los tipos
representaciones, documentos y productos de trabajo que se guardan en el depsit;::
Uhffii
Contenido
del depsito.
Co,os de u,o
Modelo de an6lisis
Diagramas basodos en escenario
, .
Regios del negocio
C?<'!9 fuente_
Diagramas orientados a flujo
funciones del negocio
Diagramas basados en dase
Cdigo_ de obeto
.,
.
f51rucruro de lo or:onizocin Diagramas comportomentales
Instrucciones de construcc,on del Sistema
. ,',
Arquitectura de informacin
Modelo de diseo. , .
~ido~
Diagramas orqu1tectn1cos
N!Nec:iltn
Diagramas de interfaz
.
Diagramas al nivel de componentes '
Cosos de pruebo
Mtricos tcnicos
Guiones de pruebo
Resultodos de pruebo
Mtricos de calidad
CAPfTtn.o 27
805
~~VE
eclep6sito debe ser
:::ipoz de mantener los
ECS relacionados con
~versiones
aferentes del
11!Wore. MOs
~nte,debe
cirecer los meconismos
,mu ensomi.ir 5chos
ECS en ooo
coofigurocin
especifico de versin.
Gestin del seguimiento de la dependencia y del cambio. El depsito gestiona una amplia variedad de relaciones entre los objetos de configuracin que guarda.
Se incluyen relaciones entre entidades y procesos empresariales, entre las partes de
un diseo de aplicacin, entre componentes de diseo y la arquitectura de informacin del proyecto, entre elementos de diseo y otros productos de trabajo, etctera.
Algunas de estas relaciones son meramente asociaciones, y algunas son dependencias o relaciones obligatorias.
La habilidad con que se da seguimiento a todas estas relaciones es crucial para la
integridad de la informacin guardada en el depsito y la generacin de productos de
trabajo basados en ella, y es una de las aportaciones ms importantes del concepto
de depsito a la mejora del proceso de desarrollo de software. Por ejemplo, si se
modifica un diagrama de clase UML, el depsito puede detectar si las clases relacionadas, las definiciones de inteaz y los componentes de cdigo tambin requieren
modificacin y pueden colocar en la atencin del desarrollador los ECS afectados.
Gestin de la configuracin. Una gestin de la configuracin facilita la conservacin del rastro de una serie de configuraciones que representan hitos especficos
del proyecto o liberaciones de produccin.
El proceso de gestin de la configuracin del software define una serie de tareas que
tienen cuatro objetivos principales: 1) identificar todos los elementos que colectivamente definen la configuracin del software; 2) gestionar los cambios a uno o ms
de dichos elementos; 3) facilitar la construccin de diferen tes versiones de una aplicacin; y 4) garantizar que la calidad del software se conserva conforme la configuracin evoluciona a lo largo del tiempo.
Un proceso que logra estos objetivos no necesita ser burocrtico y molesto, pero
s debe caracterizarse en una forma que permita que un equipo de software desarrolle respuestas a un conjunto de preguntas complejas:
Cmo identifica un equipo de software los elementos discretos de una configuracin de software?
Pera
responder a
qu pregntas se
dm dinur un
'proceso de GCS?
CAPTULO 27
807
iiMJffi
capas
del
;:iroceso de
:;es,
El concepto de objeto agregado [GUS89) .se lha propuesto como un mecanismo para representar una
versin completa de una configuracin de ~
808
PARTE CUATRO
Los interrelociones
estoblecidos poro los
o~etos de
configuracin permiten
que un ingeniero de
software evale el
impacto del cambio.
tc0Nsuo9'
lootJSO si lo base de
su establecimiento y
difiaJtrm mantener k,
ocldzocm. Alnpe
SUfl fTlt/( vtll,s pera d
anlisis de inpadD,
no son esenoo/es
paro la~ ;ol,d
de/cambio
~~VE
Uno focilidod * de
hechura" permite o un
ingeniero de softwore
software. Un sistema de control de la versin implementa o est directamente integrado con cuatro grandes capacidades: 1) una base de datos del proyecto (depsito)
que guarda todos los objetos de configuracin relevantes; 2) una capacidad de gestin de la versin que almacena todas las versiones de un objeto de configuracin (o
permite que se construya cualquier versin empleando diferencias de versiones
anteriores); 3) una facilidad de hechura que permita al ingeniero de software recopilar todos los objetos de configuracin relevantes y construir una versin especfica
del software. Adems, los sistemas de control de la versin y de control del cambio
con frecuencia implementan una capacidad de seguimiento de conflictos (tambin llamada seguimiento de bugs) que permiten al equipo registrar y hacer el seguimiento
del estado de todos los conflictos destacados que se asocian con cada objeto de configuracin.
CAPTULO 27
.....
809
~ camilo, induso uno poro mejorar, est acompaado con inconveniel!m e i11a1111odkk1das. ''\
"
liiiiiI
Tambin es posible consultar el modelo de sistema para valorar cmo un cambio en un componente
impactar a otros componentes.
PARTE CUATRO
110
Bach reconoce que se enfrenta un acto de equilibrio. Demasiado control del cambio
y se crean problemas; poco, y se crean otros problemas.
........1,11
&,
~~
c&v1
Se debe des1oor que
so5cill.ies de
amliopai
Ull'iime 111111
....... tnlsolo
00 yque los 00
trullrnmto rClUl!on en
comlioso~
obfetos de
(Offl9A'OOOII.
lD ccdusin conduce
o8ffllfes, algunos de
,&,s bastanre S81ios.
8 control del acceso y
"' i, sroonizod6n
~,., conlusifl.
,mi,nydel
tptillp/taalm.
CAPITULO 27
811
Algunos lectores quiz comiencen a sentirse incmodos con el grado de burocracia que implica la descripcin del proceso de control del cambio mostrada en la
figura 27.5. Este sentimiento es comn. Sin las salvaguardas adecuadas el control
del cambio puede retrasar el progreso y crear burocracia y papeleo innecesarios. La
mayora de los desarrolladores de software con mecanismos de control del cambio
(desafortunadamente muchos no los tienen) ha creado varas capas de control para
ayudarse a evitar los problemas mencionados aqui.
Antes de que un ECS se convierta en lnea base slo se necesita aplicar control de
cambio informal El desarrollador del objeto de configuracin (ECS) en cuestin tiene
D prooesode
centro! del
cambio.
Solicitud
de cambio
t
t
Se genero informe
de cambio
...---- ---....
t
Asignacin de individuos poro objetos de configuracin
Se informo el usuario
Se hoce el cambio
+
t
d. calidad y de p<uebos
+
+lodc los elem.itos de
t lo
t
de lo , - ~
e,i
~~
configuroci6n
812
'
La autoridad de control del cambio juega un papel activo en la segunda y tercera
capas del control. Dependiendo del tamao y carcter de un proyecto de software
la ACC puede estar compuesta de una persona (el gestor del proyecto) o varias per-
Se puede crear una lnea base tambin por otras razones. Por ejemplo, cuando se crean "construcciones diarias" todos los componentes que entran en un tiempo dado se convierten en la lnea base
para el trabajo del da siguiente.
813
cmo oana . . .
a.
CXJmbio.
.,.... Segundo,
de GCS nialmenl.
venidn.
llador del software a mantener el orden en lo que de otro modo serla una situacin
catica e inestable. Sin embargo, incluso el mecanismo de control ms exitoso slo
sigue un cambio hasta que no se genera una OCI. Cmo se puede garantizar que el
cambio se ha implementado con propiedad? La respuesta es doble: l) revisiones tcnicas formales y 2) auditora de la configuracin del software.
La revisin tcnica formal (presentada con detalle en el captulo 26) se enfoca en
la correccin tcnica del objeto de configuracin que se ha modificado. Los revisores evalan el ECS para determinar su consistencia con otros ECS, omisiones o
potenciales efectos colaterales. Se debe realizar una revisin tcnica formal en casi
la mayora de los cambios triviales.
Una auditora de con.figuracin del software complementa la revisin tcnica formal al abordar las siguientes preguntas:
PARTE CUATRO
814
5. Se han seguido los procedimientos de GCS para destacar el cambio, registrarlo e informar de l?
Soporte de la ses
Objetivo: las herramientas de GCS
Las herramientas mencionadas slo representan una muestra de esta categoria. En la mayora de
los casos los nombres de las mismas son marcas registradas por sus respectivos desarrolladores.
CAP'nJLO 27
815
mento de WebApp en un periodo muy corto mediante un enfoque basado en el cliente. Los incrementos subsecuentes agregan contenido y funcionalidad adicionales, y
tal vez cada uno implemente cambios que conduzcan a contenido aumentado,
mejor facilidad de uso, esttica mejorada, mejor navegacin, desempeo aumentado y mayor seguridad. En consecuencia, en el mundo gil de la ingeniera Web el
cambio se ve de manera un poco diferente.
Los ingenieros Web deben adoptar el cambio, e incluso un tpico equipo gil evita
todas las cosas que parecen pesados procesos, burocrticos y formales. Por lo general, se considera (aunque incorrectamente) que la gestin de la configuracin del
software posee estas caractersticas. Esta aparente contradiccin se resuelve al no
rechazar los principios, prcticas y herramientas de la GCS, sino ms bien moldendolas para satisfacer las necesidades especiales de los proyectos de ingeniera Web.
Qu
Impacto
5ltte un cambio
.scoatrolado
m e1na
WebApp?
816
Las estrategias generales para la gestin de configuracin del software (GCS) descritas en este captulo son aplicables, pero las tcticas y herramientas se deber
adaptar para que concuerden con la naturaleza nica de las WebApps. Se deben considerar cuatro temas cuando se desarrollen tcticas para la gestin de la configuracin de la WebApp: contenido, personal, escalabilidad y polticas.
Contenido. Una WebApp tpica contiene una amplia variedad de contenido: texto
grficos, applets, guiones, archivos de audio/video, formatos, elementos de pgina
activos, tablas, datos clasificados por niveles y muchos otros. El reto es organizar
este ocano de contenido en un conjunto racional de objetos de configuracin (seccin 27 .1.4) y luego establecer mecanismos de control de configuracin adecuados
para dichos objetos.
Personal. Puesto que un porcentaje significativo del desarrollo de la WebApp contina realizndose en una forma ad hoc, cualquier persona involucrada en la
WebApp puede (Y con frecuencia lo hace) crear contenido. Muchos creadores de
contenido no tienen conocimientos de ingeniera del software e ignoran por completo la importancia de la gestin de la configuracin. Por lo tanto, la aplicacin
crece y cambia en una forma descontrolada.
Escalabilidad. Las tcnicas y los controles aplicados a una WebApp pequea no
se escalan bien hacia arriba. No es inusual que una WebApp simple crezca significativamente conforme se implementan interconexiones con los sistemas de informacin existentes, bases de datos, depsitos de datos y portales. Conforme crecen
el tamao y la complejidad, los cambios pequeos pueden tener efectos de largo
alcance e imprevistos que pueden ser problemticos. En consecuencia, el rigor de
los mecanismos de control de la configuracin debe ser directamente proporcionales a la escala de la aplicacin.
Polticas. Quin "posee" una WebApp? Esta pregunta se plantea en compaas
grandes y pequeas, y su respuesta tiene un impacto significativo en las actividades
de gestin y control asociadas con la IWeb. En ciertas instancias, los desarrolladores
Web se ubican fuera de la organizacin TI, lo que crea potenciales dificultades de
comunicacin. Dart [DAR99J sugiere las siguientes preguntas para ayudar a entender las poHticas asociadas con la IWeb:
Cmo se
detennina
quin tiene la
responsabilidad
'de la GC de la
WebApp?
CAPTULO 27
817
gue) se define con el etilo esttico y las reglas de diseo establecidas para la
WebApp. La estructura del contenido define una arquitectura de contenido; esto es:
define la forma en la que los objetos de contenido se ensamblan para presentar
informacin significativa a un usuario final. Boiko [BOI02] define la estructura como
"mapas que usted tiende sobre un conjunto de trozos [objetosl de contenido para
organizarlos y hacerlos accesibles a las personas que los necesitan".
El uso ms comn del sistema de gestin del contenido ocurre cuando se construye una WebApp dinmica. Este tipo de WebApp crea pginas Web "al vuelo". Es
decir, usualmente el usuario consulta la WebApp solicitando informacin especfica.
La WebApp consulta una base de datos. formatea la informacin en concordancia y
la presenta al usuario. Por ejemplo, una compaa musical ofrece una librera de CD
en venta. Cuando un usuario solicita un CD o su equivalente en msica electrnica,
se consulta una base de datos y una variedad de informacin acerca del artista, el
CD (por ejemplo, su portada o grfica). el contenido musical y muestras de audio se
descargan y configuran en una plantilla de contenido estndar. La pgina Web resul-
818
~,
~
c&v1
El subsistema de
coleccin abarco todos
los acciones que se
requieren poro creor,
adquirir oconvertir el
contenido en uno
formo que se puedo
presentar en el lodo
del cliente.
PARTE CUATRO
tante se construye en el lado del servidor y pasa al navegador del lado del clien _
para que la examine el usuario final. En la figura 27.6 se muestra una representaciogenrica de esto.
En el sentido ms general, un SGC "configura" el contenido para el usuario fuu.
al invocar tres subsistemas integrados: de coleccin, de gestin y de publicaacr
[B0102].
El subsistema de gestin. una vez que el contenido existe debe guardarse en Ir'
depsito, catalogarse para adquisicin y uso subsecuentes, y etiquetarse para defiru=
1) su estado actual (por ejemplo, el objeto de contenido est completo o en desarrollo), 2) la versin apropiada del objeto de contenido, y 3) los objetos de contenid..
relacionados. Por lo tanto, el subsistema de gestin implementa un depsito que
abarca los siguientes elementos:
iii'IJff''
Sistema de
gestt6ndel
contenido
~--------------------------
1
1
(SGC).
Sistema de
gestin del
contenido
1
1
Plonlilfos
1
1
1
1
Cdigo
HTML+ guiones
--------------------------~
CAPTULO 27
c&v1
:s.csistemo de
implemento un
poro todo el
=1m. Lo gestin
t ClXlfigurocin se
1 cabo dentro de
s:bsistemo.
819
El subsistema de publicacin. El contenido se debe extraer del depsito, convertirse en una forma que est dispuesta para la publicacin y formatearse de modo
que sea posible transmitirlo a los navegadores del lado del cliente. El subsistema de
publicadn logra estas tareas mediante una serie de plantllas. cada plantilla es una
funcin que construye una publicacin empleando uno de tres componentes diferentes [80102]:
s~
c&v1
Jmistemode
~
obtiene
:::::rik> del depsito
c1!ego olos
~
es en el lodo
dmte.
820
Herramientas representativas7
Clase J: un cambio de contenido o funcin que corrija un error o mejore el contenido o funcionalidad locales.
Clase 2: un cambio de contenido o funcin que tenga impacto sobre otros objetos
de contenido o componentes funcionales.
Clase 3: un cambio de contenido o funcin que tenga amplio impacto a travs de
una WebApp (por ejemplo, gran ampliacin de la funcionalidad, mejora significativa
o reduccin del contenido, grandes cambios requeridos en la navegacin).
Clase 4: un gran cambio de diseo (por ejemplo, un cambio en el diseo de la
interfaz o enfoque de navegacin) que inmediatamente apreciarn una o ms categoras de usuarios.
Las herramientas expuestas slo representan una muestra de esta categora. En la mayoria de los
casos los nombres de las mismas son marcas registradas por sus respectivos desarrolladores.
821
iihifkj
'iest16n de
=mbfos
-:,ara
11ifebApps.
Comb,o close 1
Camb,o do.e A
Combios
,~ido.en
objeto>
relocionoclo
S. requiere
m,
ovoluocioo
De "*do
en reollzocl6n
Una vez clasificados los cambios solicitados se pueden procesar de acuerdo con
el algoritmo mostrado en la figura 27.7.
En la misma figura, los cambios de las clases 1 y 2 se tratan de manera informal
y se manejan en una forma gil. En un cambio de clase I el ingeniero Web evala el
impacto del cambio, pero no se requiere revisin o documentacin externa.
Conforme se realiza el cambio, los procedimientos estndar de entrada y salida se
refuerzan mediante las herramientas de configuracin de depsito. En cuanto a los
cambios de la clase 2, es obligacin del ingeniero Web revisar el impacto del cambio sobre objetos relacionados (o pedir a los desarrolladores responsables de stos
que lo hagan). Si el cambio es factible sin que se requieran cambios significativos en
otros objetos, la modificacin ocurre sin revisin o documentacin adicional. Si se
requieren cambios sustantivos, son necesarias evaluacin y planificacin ulteriores.
822
PARTE CUATRO
Los cambios de las clases 3 y 4 tambin se tratan en una forma gil, pero se
requieren alguna documentacin descriptiva y ms procedimientos de revisiones
formales. Los cambios de la clase 3 requieren el desarrollo de una descripcin deJ
cambio que ofrezca una breve evaluacin del impacto del cambio. La descripcin se
distribuye entre todos los miembros del equipo de ingeniera Web, quienes lo revisan para evaluar mejor su impacto. Tambin respecto a los cambios de la clase 4 se
desarrolla una descripcin del cambio, pero en este caso la revisin la llevan a cabo
todos los participantes.
herromientos
8 Las herramientas expuestas slo representan una muestra de esta categora. En la mayora de los
c;asos los nombres de las mismas son marcas registradas por sus respectivos desarrolladores.
CAPTULO 27
823
diferentes oficinas en distintos momentos del da y la noche. Usted puede pasar el da mejorando el archivo index.html para un cliente. Despus que ha realizado los cambios, otro
desarrollador, quien trabaja en su casa despus de su jornada laboral, o en otra oficina,
puede pasar la noche cargando su propia novedosa versin revisada del archivo
index.html, y sobrescribir por completo el trabajo que usted ha realizado, sin forma alguna
de retroceder!
Esta situacin debe sonar familiar a todos los ingenieros de software, as como a
todos los ingenieros Web. Para evitarlo, se debe establecer un proceso de control de
la versin.
l. se debe establecer un depsito central para el proyecto WebApp. El depsito contendr las versiones actuales de todos los objetos de configuracin de la WebApp (contenido, componentes funcionales y otros).
2. Cada ingeniero Web crea su propia carpeta de trabajo. La carpeta contiene
aquellos objetos creados o cambiados en algn momento dado.
3 . Los relojes en las estaciones de trabajo de todos los desarrolladores deben estar
sincronizados. Esto tiene como fin evitar los conflictos de sobrescritura
cuando dos desarrolladores realizan actualizaciones que estn muy cercanas
en el tiempo una de otra.
saje automtico de registro cronometrado. Esto ofrece informacin til para auditora y se puede convertir en parte de un efectivo esquema de elaboracin
de informes.
La herramienta de control de la versin mantiene diferentes versiones de la WebApp
y puede revertirse a una versin ms antigua si se requiere.
824
INFORMACIN
Estndares de GCS
Lo siguiente lista de estndares GCS
(procedente en parte de www.12207.com) es
razonablemente extensa:
EIACMB6-1C
EIACMB6-3
Identificacin de configuracin
Estndares IEEE
standards.ieee.org/ catalog/
olis
EIACMB6-4
Control de configuracin
IEEE 828
EIACMB6-5
IEEE 1042
EIACMB7-l
Estndares ISO
www.iso.ch/iso/ en/
ISOOonline.frontpage
Estndares
militares
estadounidenses
www-library.itsi.disa.mil
ISO 10007-1995
Gestin de configuracin
Tecnologa de informacin;
procesos de ciclo de vida de
software
MIL-HDBK-6 l
Otros estndares
ISO/IEC 12207
ISO/IEC TR 15271
ISO/IEC TR 15846
Referencias de gestin de
configuracin y dolos
DO-l78B
ESA PSS-05-09
AECL CE-1001-STD
rev. l
Estndares EIA
www.eia.org/
EIA 6.49
cio.doe.gov/ITReform/sqse/
download/cmcklst.doc
EIACMB.4-lA
Definiciones de gestin de la
configuracin para programas de
computadoras digitales
BS-6488
EIACMB4-2
Identificacin de configuracin
poro programas de computadoras
digitales
CMII
EIACMB4-3
libreras de software de
computadora
EIACMB4-4
Control de cambio de
configuracin para programas de
computadoras digitales
CAPTULO 27
825
que se le libera a un cliente. Toda la informacin producida como parte de la ingeniera del software se vuelve parte de una configuracin de software. La configuracin est organizada de forma que permite la gestin ordenada del cambio.
La configuracin del software est compuesta de un conjunto de objetos interrelacionados, tambin llamados elementos de configuracin del software, que se producen debido a alguna actividad de ingeniera del software. Adems de documentos,
programas y datos, el entorno de desarrollo que se utiliza para crear software tambin se puede colocar bajo control de configuracin. Todos los ECS se guardan en un
depsito que implementa mecanismos y estructuras de datos para garantizar la integridad de los datos, ofrece soporte de integracin para otras herramientas de software, apoya la distribucin de informacin entre los miembros del equipo de software
e implementa funciones en apoyo del control de la versin y del cambio.
Una vez desarrollado y revisado un objeto de configuracin se convierte en lnea
base. Los cambios a un objeto convertido en lnea base generan la creacin de una
nueva versin de dicho objeto. La evolucin de un programa puede seguirse al examinar la historia de revisin de todos los objetos de configuracin. Los objetos bsicos
y compuestos forman una piscina de objetos a partir de la que se crean las versiones. El control de la versin es el conjunto de procedimientos y herramientas para
gestionar el empleo de dichos objetos.
El control de cambios es una actividad de procedimiento que asegura la calidad y
la consistencia conforme los cambios se realizan en un objeto de configuracin. El
proceso de control de cambios comienza con una peticin de cambio, conduce a una
decisin para aceptar o rechazarla y culmina con una actualizacin controlada del
ECS que se cambiar.
La auditora de la configuracin es una actividad de SQA que ayuda a garantizar
que la calidad se conserva conforme se realizan los cambios. Los informes de estado ofrecen informacin acerca de cada cambio a quienes tengan necesidad de conocerla.
La gestin de la configuracin para ingeniera Web es similar en muchos aspectos a la GCS para el software convencional. Sin embargo, cada una de las tareas
principales de GCS se deben destacar para hacerlas tan simples como sea posible, y
se deben implementar provisiones especiales para la gestin del contenido.
826
27.3. Con palabras propias, comntenselas razones para las lneas base.
27 .4. Suponga que usted es el gestor de un pequeo proyecto. Qu lineas base definira para
el proyecto y cmo las controlarla?
27 .5. Emplear UML agregados o compuestos (captulo 8) para describir las interrelaciones entre
los ECS (objetos de configuracin) en la lista de la seccin 27.1.4.
27.6. Disear un sistema de base de datos (depsito) de proyecto que le permitirla a un
ingeniero de software almacenar, realizar referencias cruzadas, rastrear, actualizar y cambiar
todos los elementos importantes de configuracin de software. Cmo manejara la base de
datos las diferentes versiones del mismo programa? El cdigo fuente se manejara de manera
diferente a la documentacin? Cmo se evitara que dos desarrolladores realizasen diferentes
cambios al mismo ECS en forma simultnea?
27.7. Investigar una herramienta existente de GCS y describir cmo implementa el control de
las versiones y los objetos de configuracin en general.
2 7 .8. Las relaciones <parte de> e <interrelacionado> representan relaciones simples entre
objetos de configuracin. Describir cinco relaciones adicionales que puedan ser tiles en el
contexto de un depsito de GCS.
CAPTULO 27
827
27.9. Investigar una herramienta existente de GCS y describir cmo implementa los
mecanismos de control de versiones. De manera alternativa, leer dos o tres de los artculos
acerca de GCS y describir las diferentes estructuras de datos y mecanismos de referencia que
se emplean para el control de las versiones
27.10. Con la figura 27.5 como gua. desarrollar un anlisis todava ms detallado para el
control del cambio. Describir el papel de la ACC y sugerir formatos para la peticin del cambio,
el informe del cambio y la OO.
2 7 .11. Desarrollar una lista de venficacin para emplearla durante las auditorias de la
configuracin.
27.12. Cul es la diferencia entre una auditoria GCS y una revisin tcnica formal? Sus funciones
se pueden juntar en una revisin? Cules son los pros y los contras?
27 .13. Describir brevemente las diferencias entre GCS para el software convencional y la GCS
para WebApps.
2 7 .14. Qu es la gestin del contenido? Emplese la Web para investigar las caracteristicas de una
herramienta de gestin del contenido y ofrzcase un breve resumen.
828
PARTE CUATRO
menl Systems, Glasshaus, 2003), Boiko tB0I02L Hackos (Content Managementfor Dynamic \~e.
Delivery, Wiley, 2002}, Nakano (Web Content Management, Addison-Wesley, 200!) presen~
valiosos tratamientos de la materia.
En Internet hay disponible una amplia variedad de fuentes de informacin acerca de _
gestin de configuracin del software. Una lista actualizada de referencias en la World Wid.!
Web se puede encontrar en el sitio Web SEPA:
http://www.mhhe.com/pressman.
TEMAS AVAN?ADOS
EN
ware?
Qu actividades tcnicas clave se llevan acab durante el
proceso de ingeniera del software de sala limpia?
Cmo se emplea la ingenierla del software basada en componentes para crear sistemas a partir de componentes reutilizables?
Qu actividades tcnicas se requieren para la reingeniera
del software?
Cules son las tendencias futuras de la ingeneria del $Oftware?
Una vez que se respondan estas preguntas, se entendern los
temas que tienen la posibilidad de tener un profund impacto
sobre la ingeneria del software durante la dcada siguiente.
'Los
4
Coa,,ct"PTOS
Ct.~VE
espedli,(*n
toll$trctlvb .831
especi,i~Jt .
fo;lltllf , ..... ,847
t$qlleitll3 ,, -'49
e$Jo~
.. , .. J34
.,
marillllle
,,
dl:datos,, .. J3S
lenguaje Z , . ,849
~l ..... : ..84$
operacl.ontt .!34
operadores de
conjuntos .... ,838
operadores
pow,aclldones .83S
pec;tro de "formalidad" ligeramente vinculado con el grado de rigor makmtico aplicado durante el anlisis y el dise. Por esta razn, los mtodos
l\~lisis y di~efio estudiads previamente en este libro se ubican en el extretho informal del espectro. En la creacin de modelos dp anlisis y diseo se u 1lizan combinaciones dfagramas, texto, tablas y natacin simple, pero se :a
i
" aplicadopocongor mat~~tico.
*
9e
de.
Considr:ese ~hota el otro extremo del espectro d fbrmaUdaq. .Aqu, una especif:acin y diseo s~ describen empleando sintaxis y semnticas formales
qve especifican la fund~n y el comportamiento del sistema. La especificacin es
matemtica en form (por ejemplo, el tl~uto -d predicados se utUiza cbmo ba, se para un lenguaje formal de especlficacin).
En su' estudio introductorio de 1os mtodos formale$, Anthony Hall '{HAL90
afirma;
LOS mtodos formafes son ont;overtidos. Sus prtidanos affrmrrque pueden revolucionar el desarrollo [del software]. Sus detractres. pi~san que son intreblemente dificiles.. Mientras tanto, para ta mayorla lit l gente,~$ m.\odS format~s son tan
poco familiares qiie es difkil1uzgJr las aflnnacones e~ competencia.
En este captulo se exploran los mtodos fopnales y se examinan sus potenciales impactos sobre laingenieria del software en los aos por venir.
;,1<
'<:"-<"
de
~ierlc>s on1es de <tue el software sea puesto n operocin. tos m ~ i formdfes reducen
wskmcia~ los errores de $$f)EICific<:1Ci6n y,
(OIYIO consecuencio,. sirven (X)mO b<lse p(lro que
el ~ , e ~ ton fX)S errores uno vez que
CAPTULO 28
MTODOS FORMALES
831
y falta de ambigedad) son los objetivos de todos los mtodos de especificacin. Sin
embargo, emplear mtodos formales resulta en una probabilidad mucho mayor de
lograr dichos ideales. La sintaxis de un lenguaje formal de especificacin (seccin
28.4) permite que los requisitos y el diseo se interpreten slo en una forma, lo que
elimina la ambigedad que con frecuencia ocurre cuando un lenguaje natural (por
ejemplo, ingls) o una notacin grfica debe interpretarlos un lector. Las facilidades
descriptivas de la teora de conjuntos y la notacin lgica (seccin 28.2) permiten un
planteamiento claro de los hechos (requisitos). Para ser consistente, los hechos planteados en un lugar en una especificacin no deben contradecirse en otro sitio. La
consistencia se garantiza probando matemticamente que los hechos iniciales pueden correlacionarse de manera formal (empleando reglas de inferencia) en planteamientos posteriores dentro de la especificacin.
tos mtodos forn,ales tienen un enorme potencial poro mejorar lo claridad y la precisin de las espedfkadones de
reqllisltos yporo tnConlrar los errores importantes ysutiles.
Steve lasterfitook ,t ,,l.
La completud es ditkil de lograr, aun cuando se apliquen los mtodos formales.
Algunos aspectos de un sistema tal vez queden indefinidos mientras se crea la especificacin; otras caractersticas quiz se omitan a propsito para permitir que los diseadores tengan cierta libertad de eleccin en el enfoque de implementacin; y,
finalmente, es imposible considerar cada escenario operativo en un gran sistema
complejo. Las cosas tal vez se omitan por error.
Aunque el formalismo que ofrecen las matemticas es atractivo para algunos ingenieros de software, otros (algunos dinan, la mayona) miran despectivamente la vi-
S32
sin matemtica del desarrollo del software. Comprender por qu un enfoque fot':".
tiene su mrito requiere, primero, considerar las deficiencias asociadas con los mfoques menos formales.
Aunque un buen
indice de documento
no puede efuninar las
contradicdones, si
puede ayudar adescubrirlas. Considrese lo
aeocin de 1111 indice
poro los especificr,ciones yotros documentos.
Los mtodos estudiados para el anlisis y el diseo en las partes 2 y 3 de ese libremplean ampliamente el lenguaje natural y una extensa gama de notaciones grficas. Aunque la aplicacin cuidadosa de los mtodos de anlisis y diseo, en conjunto con revisiones exhaustivas, puede conducir y de hecho conduce a software de alla
calidad, el descuido en la aplicacin de estos mtodos crea una diversidad de problemas. una especificacin de sistema puede contener contradicciones, ambigedades, vaguedades, planteamientos incompletos y grados mixtos de abstraccin.
Las contradicciones son conjuntos de planteamientos que divergen unos a..otros. Por ejemplo, parte de una especificacin de sistema puede afirmar que el S1S
tema debe supervisar todas las temperaturas en un reactor qumico, mientras <f...otra parte, que tal vez escribi otra persona, puede afinnar que slo deben supen'lsarse las temperaturas que ocurran dentro de cierto intervalo.
Las ambigedades son planteamientos que se interpretan en varias formas. Por
ejemplo, el siguiente planteamiento es ambiguo:
La identidad del operador consiste de su nombre y la contrasea; sta consiste de seis d-
gitos. Se debe mostrar en la UDV de seguridad y depositarse en el archivo de registro cuando un operador se registre en el sistema.
........ J
La incomp/etud es uno de los problemas que ocurren con mayor frecuencia cor
las especificaciones del sistema. Por ejemplo, considrese el requisito funcional:
El sistema debe conservar el nivel horario del depsito a partir de los sensores profundos
situados en el depsito. Dichos valores deben almacenarse respecto de los seis meses anteriores.
Esta seccin y otras en la primera parte de este captulo se han adaptado del trabajo de Darrel lnce
para la edicin europea de la quinta edicin de lngenieria del software. Un enfoque prcco.
CAPTULO 28
MTODOS FORMALES
833
La funcin del comando PROMEDIO es desplegar en una PC el nivel de agua promedio para un sensor particular entre dos tiempos.
U!S revisiones tcnicos
lonnales eficaces
:veden eliminar
mhos de estos
:roblemos. Sin
trnborgo, algunos no
setn descubiertos.
Debe estarse alerto de
en deficiencias
tUUnte el diseo, la
codificacin ylo
pies/o oprueba.
y si supone que no se presentan ms detalles para este comando, los detalles delcomando estaran seriamente incompletos. Por ejemplo, la descripcin del comando
no incluye lo que deberia ocurrir si un usuario de un sistema especifica un tiempo
que fuese mayor a seis meses antes de la hora actual.
Los grados mixtos de abstraccin ocurren cuando planteamientos muy abstractos
se mezclan al azar con planteamientos que tienen un grado mucho menor de detalle. Aunque ambos tipos de planteamientos son importantes en la especificacin de
un sistema, quienes la realizan con frecuencia manejan la mezcla en tal forma que
resulta muy dificil ver la arquitectura funcional global de un sistema.
En este momento es adecuada una advertenca Las especificaciones del sistema matemtico que
se presentan en este captulo no son tan sucmtas como una especificacin matemtica para uncircuito simple. Los sistemas de software san nolOnamente complejos y sera irreal esperar que se podran especificar en una lnea de matemAlicas.
PARTE CINCO
Un invoonte de datos
es un conjunto de
condiciones verdaderos
olo largo de lo
ejecucin del sistema
que contiene uno
coleccin de dolos.
Olra !arma de
observa, la nocin de
estada es decir que
los datos determinan
el estado. Esta es, se
pueden examinar los
datos poro ver en qu
estado est el
sistema.
ifrHfJ:88
.. ;,
l. Wilson
Tabla de
snbolos.
2. Simpsori
3. Abe!
1
Maxlds; 10
5.
6.
7.
8.
9.
10.
Femandez
.,.
)'
'
,,
.,
CAPTULO 28
835
MTODOS FORMAUS
i:!5
lcnicas de lluvia
~ ife(Js pueden
L.:anarbien cuando
2 debe desarrollar un
arrionte de datos
p,u una funcin rozo
-:blemente cample;o.
'.:;:oo miembro del
::;ipo de software
"ale que escribir los
'1/tes, reslriccianes y
~itociones paro lo
;;in y luego combf
-:;y/os y editarlos.
mero de elementos siempre ser menor o igual a Maxlds. Una precondicin define tas
circunstancias en las cuales es vlida una operacin particular. Por ejemplo, la precondicin para una operacin que aade un nombre a ta tabla de smbolos de identificadores de personal slo es vlida si el nombre no est en la tabla y tambin si en
sta existen menos de Maxlds identificadores de personal. La poscondicin de una
operacin define lo que est garantizado que ser cierto hasta completar una operacin. Esto lo define su efecto sobre los datos. En el ejemplo de una operacin que
aade un identificador a la tabla de smbolos de identificadores de personal, la poscondicin especificarla matemticamente que la tabla ha aumentado con el nuevo
identificador.
Ejemplo 2: un gestor de bloques. Una de las partes ms importantes del sistema operativo de una computadora es el subsistema que mantiene tos archivos que
hayan creado los usuarios. Parte del subsistema de archivado es el gestor de bloques.
Los archivos en el archivero estn compuestos de bloques de almacenamiento que
se mantienen en un dispositivo de almacenamiento de archivos. Durante la opera-
iiMJflf
Bloques no usados
Gestor de
bloques.
1 3 4 6 9
Bloques usados
25
8 10
....___..,1
11 12
Cuando se borran
los archivos, los bloques
fila para entrar en los bloques no usados se liberan a la fila
5 8 11
,__....._.
7
Archivo 11
Atdar.o ,2
Archivo #3
La colo de bloques Q)Mene bloques p,,,_,ienles de los archivos borrados
3
se debe sealar que aadir un nombre no puede ocurm en e l estado lleno, y que borrar un nombre
es imposible en el estado vacio
836
PARTE CINCO
cin de la computadora, los archivos se crearn y borrarn, lo que requiere la adquisicin y liberacin de bloques de almacenamiento. El subsistema de archivado lidiar
con esto manteniendo un depsito de bloques no utilizados (libres) y dar seguimiento a los bloques que actualmente estn en uso. Cuando se borra un archivo, los
bloques liberados normalmente se agregan a una fila de bloques que esperan ser
agregados al depsito de bloques no utilizados. Esto se muestra en la figura 28.2. Er.
esta figura se muestran varios componentes: el depsito de bloques no utilizados
los bloques que actualmente constituyen los archivos que administra el sistema operativo y aquellos bloques que esperan agregarse al depsito. Los bloques en espera
se mantienen en una fila, y cada elemento de sta contiene un conjunto de bloques
provenientes de un archivo borrado.
En este subsistema el estado es la coleccin de bloques libres, la coleccin de bloques utilizados y la fila de bloques devueltos. El invariante de datos, expresado en
lenguaje natural, es:
Ningn bloque ser marcado a la vez como no utilizado y utilizado.
Todos los conjuntos de bloques mantenidos en la fila sern subconjuntos de
la coleccin de bloques actualmente usados.
Ningn nmero de bloque pertenecer a dos o ms elementos de la fila.
La coleccin de bloques utilizados y no utilizados ser la coleccin total de
dos.
La coleccin de bloques utilizados no tendr nmeros de bloque duplicados.
Algunas de las operaciones asociadas con el invariante de datos son: aadir() una
coleccin de bloques al final de la fila, eliminar() una coleccin de bloques utilizados del frente de la fila y colocarlos en la coleccin de bloques no utilizados, y verificar() si la fila de bloques est vacia.
La precondicin de la primera operacin es que los bloques que se aadirn deben estar en la condicin de bloques utilizados. La poscondicin es que la coleccin
de bloques ahora se encuentra al final de la fila. La precondicin de la segunda operacin es que la fila debe tener al menos un elemento en ella. La operacin final
- verificar si la fila de bloques devueltos est vaca- no tiene precondicin. Esto sig-
nifica que la operacin siempre est definida, sin importar de qu valor sea el estado. La poscondicin entrega el valor cierto si la fila est vaca y falso de cualquier otro
modo.
En los ejemplos tratados en esta seccin se introducen los conceptos clave de la especificacin formal. Esto se hizo sin resaltar las matemticas que se requieren para formalizar la especificacin. En la seccin 28.2 se consideran tales matemticas.
837
28.2.1
Un conjunto es una coleccin de objetos o elementos, y se utiliza como piedra angular de los mtodos formales. Los elementos que contiene un conjunto son nicos (es
decir: no se permiten duplicaciones) . Los conjuntos con un nmero pequeo de elementos se escriben dentro de llaves, con los elementos separados por comas. Por
ejemplo, el conjunto
{C+ + , Smalltalk, Ada, COBOL, Java)
contiene los nombres de cinco lenguajes de programacin.
El orden en el que aparecen los elementos dentro de un conjunto es irrelevante.
Al nmero de elementos en un conjunto se le conoce como cardinalidad. El operador # proporciona la cardinalidad de un conjunto. Por ejemplo, la expresin
#{A, B, C, D}
=4
Qu es
especificacin
mnstn1<1iva de
mnjuntos?
: N; un predicado, n < 3; y
un tnnino, n. La firma especifica el intervalo de valores que se considerarn cuando se fonne el conjunto; el predicado una expresin Booleana) define cmo se restringir el conjunto; y, finalm en te, el tnnmo brinda la forma general del elemento
del conjunto. En el ejemplo anterior, N representa los nmeros naturales; por lo tanto, se considerarn los nmeros naturales. El predicado indica que slo se incluirn
838
PARTE CINCO
los nmeros naturales menores que 3; y el trmino especifica que cada elemento ck
conjunto ser de la forman. En consecuencia, esta especificacin define el conjunt~
Es indispensable el
conocimiento de los
operaciones de
con;untos cuando se
desarrollen especificaciones formoles. Debe
posorse algn tiempo
familiarizndose con
codo uno, si se tiene
lo intencin de aplicar
mtodos formoles.
{O, 1, 2)
Todos los conjuntos que se han descrito tienen elementos que son elementos individuales. Tambin se pueden formar conjuntos a partir de elementos que sean pares, ternas, etctera. Por ejemplo, la especificacin de conjunto
Obviamente, la especificacin constructiva de conjuntos requerida para representar algn componente de software de computadora ser considerablemente ms
compleja que las anotadas aqu. Sin embargo, la forma y estructura bsicas permanecen iguales.
xe X
tiene el valor verdadero si x es miembro del conjunto X y el valor falso en caso contrario. Por ejemplo, el predicado
12e {6, 1, 12,22)
tiene el valor verdadero dado que 12 es miembro del conjunto.
El opuesto del operador e es el operador e . La expresin
xex
tiene el valor verdadero si x no es miembro del conjunto X y falso en caso contrario.
Por ejemplo, el predicado
13e {13, 1, 124, 22)
tiene el valor falso.
Los operadores e y
AcB
CAPTULO 28
839
MTODOS FORMAI.ES
tiene el valor verdadero si los miembros del conjunto A estn en el conjunto By tiene el valor falso en caso contrario. Por lo tanto, el predicado
{l,2JC{4,3, 1,2}
tiene el valor
iguales, tiene el
es falso, y el predicado
{HDl, LP4, RCS}
es
verdadero.
"lasestructuras matemticas estn entre los descubrimientos ms hermosos realizados por la l1llllfe humana."
Doegla, .......
Un conjunto especial es el conjunto vaco 0. ste corresponde a cero en las matemticas normales. El conjunto vaco tiene la propiedad de ser un subconjunto de
cualquier otro conjunto. Dos tiles identidades que involucran al conjunto vaco son
0UA=Ay 0nA=0
para cualquier conjunto A, donde u se conoce como el operador unin, a veces conocido como taza; n es el operador interseccin, a veces conocido como gorra.
El operador unin admite dos conjuntos y forma uno que contiene los elementos
de los dos conjuntos y elimina los duplicados. Por lo tanto, el resultado de la expresin
{Archivo!, Archivo2, Impuesto, Compilador) u (lmpuestoNuevo, D2, D3, Archivo2}
es el conjunto
(Archivo!, Arcruvo2, Impuesto, Compilador, ImpuestoNuevo, D2, D3)
El operador de interseccin admite dos conjuntos y forma uno que consiste de los
elementos comunes en cada conjunto. Por lo tanto, la expresin
12, 4, 99, IJ
n (l,
840
PARTE CINCO
ser el conjunto vaco 0. El operador siempre proporciona un conjunto; sin embargo, en este caso no existen elementos comunes entre sus operandos, asi que el conjunto resultante no tendr elementos.
El operador final es el producto cruzado, x , a veces conocido como producto cartesiano. ste tiene dos operandos. El resultado es un conjunto de pares donde cada
par consiste de un elemento tomado del primer operando combinado con un elemento del segundo. un ejemplo de una expresin que involucra al producto cruzado es
{l, 2)
(4, 5, 6)
Ntese que cada elemento del primer operando est combinado con cada uno de los
elementos del segundo.
Un concepto importante en los mtodos formales es el de conjunto potencia. Un
conjunto potencia de un conjunto es la coleccin de todos los posibles subconjuntos
cte dicho conjunto. El smbolo que se utiliza para este operador de conjunto en este
captulo es UJ>. Se trata de un operador unitario que. cuando se aplica a un conjunto,
devuelve el conjunto de subconjuntos de su operando. Por ejemplo,
1P> {l, 2, 3}
= {0,
{l}, {2}. {3}. (1, 2), {1, 3}, (2, 3), {!, 2, 3))
28.2.3
Operadores lgicos
Otro componente importante de un mtodo formal es la lgi_ca: el lgebra de expresiones verdaderas y falsas. El significado de los operadores lgicos comunes lo comprende bien cualquier ingeniero de software. Sin embargo, los operadores lgicos
asociados con los lenguajes de programacin comunes se escriben empleando smbolos disponibles fcilmente en el teclado. Los operadores matemticos equl\ralentes son
(\
-,
no
implica
841
en donde se establece que para cada par de valores en el conjunto de nmeros naturales, si i es mayor que j, entonces i 2 es mayor que j2.
28.2.4 Sucesiones
Una sucesin es una estructura matemtica que modela el hecho de que sus elementos estn ordenados. Una sucesin s es un conjunto de pares cuyos elementos varian de l al elemento de mayor nmero. Por ejemplo,
{(I, Jones), (2, Wilson). (3, Shapiro). (4, Estavez)}
es una sucesin. Los elementos que forman los primeros elementos de los pares se
conocen colectivamente como dominio de la sucesin, y la coleccin de segundos
elementos se conoce como el intervalo de la sucesin. En este libro, las sucesiones
estn indicadas mediante corchetes angulados. Por ejemplo, la sucesin precedente
normalmente se escribira como (Janes, Wilson, Shapiro, Estavez).
A diferencia de los conjuntos, la duplicacin se permite en una sucesin, cuyo orden es importante. Por lo tanto,
(Jones, Wilson, Shapiro) * (Jones, Shapiro, Wilson)
La sucesin vaca se representa como ().
En las especificaciones formales se utilizan varios operadores de sucesin. La
concatenacin, ~ , es un operador binario que forma una sucesin construida al
agregar su segundo operando al final de su primer operando. Por ejemplo,
(2, 3, 34, 1)
=2
cola (2, 3, 34, 1, 99, 101 > = (3, 34, 1, 99, 101)
ltimo (2, 3, 34, 1, 99, 101)
= 101
842
PARTE CINCO
Cmo se
pueden
representar los
estados e
invariantes de
dotos empleando
los operadores
lgicos y de
conjuntosque
yo se han
introducido?
Un conjunto llamado BLOQUES consistir de todos los nmeros de bloque. TodosBloques es un conjunto de bloques que se ubica entre 1 y MxBloques. El estado lo
modelarn dos conjuntos y una sucesin. Los dos conjuntos son usados y libres. Ambos contienen bloques: el conjunto usados contiene los bloques que actualmente se
estn utilizando en los archivos, y el conjunto libres contiene los bloques disponibles
para los archivos nuevos. La sucesin contendr conjuntos de bloques que estn listos para ser liberados de los archivos que se han borrado. El estado se puede describir como
dos y libres sern conjuntos de bloques y que FilaBloques ser una sucesin, cada
elemento de la cual ser un conjunto de bloques. El invariante de datos se puede escribir como
usados n libres = 01\
usados u libres = TodosBloques i\
Vi: dom FilaBloques FilaBloques i ~ usados i\
V i, j: dom FilaBloques i j => FilaBloques i n FilaBloques j = 0
Si no se recuerda bien el ejemplo del gestor de bloques, por favor vase de nuevo la seccin 28. 1.3
para revisar el invariante de datos, las operaciones, precondiciones y poscondiciones asociadas con
el gestor de bloques.
843
cin de bloques usados y libres siempre ser igual a toda la coleccin de bloques en
el sistema. La tercera lnea indica que el i-simo elemento en la fila de bloques siempre ser un subconjunto de los bloques usados. La lnea final afirma que. para cualesquier dos elementos de la fila de bloques que no son el mismo, no habr bloques
comunes en estos dos elementos. Los dos componentes finales de lenguaje natural del
invariante de datos se implementan en virtud del hecho de que usados y libres son
conjuntos y por lo tanto no contendrn duplicados.
La primera operacin que se definir es la que elimina un elemento de la cabeza
de la fila de bloques. La precondicin es que debe existir al menos un elemento en
la fila:
# FilaBloques > O,
La poscondicin es que la cabeza de la fila debe eliminarse y colocarse en la coleccin de bloques libres, y la Fila se debe ajustar para mostrar la eliminacin:
Cmo se
representan
1115 pre y
piS<Ondiclones?
tablece que la nueva fila de bloques ser igual a la cola del antiguo valor de la fila de
bloques; esto es: todos los elementos en la fila, menos el primero.
Una segunda operacin agrega una coleccin de bloques, Abloques, a la fila de
bloques. La precondicin es que Abloques sea actualmente un conjunto de bloques
usados:
FilaBloques' = FilaBloques
usados' = usados /\
libres' = libres
Abloques /\
No existe duda de que la especificacin matemtica de la fila de bloques es considerablemente ms rigurosa que una narracin en lenguaje natural o un modelo grfi co. El rigor adicional requiere esfuerzo, pero los beneficios obtenidos a partir de la
consistencia y la completud mejoradas se pueden justificar para muchos tipos de
aplicaciones.
844
PARTE CINCO
28.4
un lenguaje formal de especificacin usualmente est compuesto de tres componentes principales: 1) una sintaxs que define la notacin especfica con la que se representa la especificacin, 2) semntica para ayudar a definir un "universo de objetos" [WIN9C
que se emplear para describir el sistema, y 3) un conjunto de reladones que definen las
reglas que indican cules objetos satisfacen adecuadamente la especificacin.
Con frecuencia, el dominio sintctico de un lenguaje formal de especificacin se
basa en una sintaxis que se deriva de la notacin estndar de la teora de conjuntos
y el clculo de predicados. Por ejemplo, variables tales como x, y y z describen ur
conjunto de objetos que se relacionan con un problema (en ocasiones llamado der
minio del discurso) y se utilizan en conjunto con los operadores descritos en la seccin 28.2. Aunque la sintaxis usualmente es simblica, tambin se pueden utilizar
iconos (por ejemplo, smbolos grficos como cajas, flechas y crculos) si no son ambiguos.
El dominio semntico de un lenguaje de especificacin indica cmo el lenguaje representa los requisitos del sistema. Por ejemplo, un lenguaje de programacin tiene
un conjunto de semnticas formales que permite al desarrollador de software especificar algoritmos que transforman entrada en salida. Se puede utilizar una gramtJca formal (como BNF) para describir la sintaxis del lenguaje de programacin. Sin
embargo, un lenguaje de programacin no hace un buen lenguaje de especificacin
porque slo representa funciones de cmputo. Un lenguaje de especificacin debe
tener un dominio semntico ms amplio, es decir, debe ser capaz de expresar ideas
como "para toda x en un conjunto infinito A, existe una y en un conjunto infinito 8
tal que la propiedad P se mantiene para x y y" {WIN90J. Otros lenguajes de especificacin aplican semnticas que permiten la especificacin del comportamiento del
sistema. Por ejemplo, es posible desarrollar una sintaxis y una semntica para especificar estados y transiciones de estado, y eventos, junto con sus efectos sobre la
transicin de estado, la sincronizacin y la temporalidad.
Es posible usar diferentes abstracciones semnticas para describir el mismo sistema en diferentes formas. En el captulo 8 esto se hizo en una manera menos formal. Se representaron clases, datos, funciones y comportamiento. Se puede usar diferente notacin de modelado para representar el mismo sistema. La semntica de
cada representacin ofrece visiones complementarias del sistema. Para ilustrar este
enfoque cuando se usan mtodos formales, suponga que se usa un lenguaje formal
de especificacin para describir al conjunto de eventos que provocan que ocurra un
estado particular en un sistema. Otra relacin formal bosqueja todas las funciones
que ocurren dentro de un estado dado. La interseccin de estas dos relaciones proporciona una indicacin de los eventos que causarn que ocurran funciones especficas.
En la actualidad se emplean varios lenguajes formales de especificacin. OCL
[OMG03]. Z ([IS002]. [SPI88], [SPI92]), LARCH [GUT93] y VDM UON91] son lenguajes
845
formales de especificacin representativos que muestran las caractersticas anotadas con anterioridad. En este captulo se presenta un breve panorama de OCL y z.
El lenguaje restringido a objetos (OCL, por sus siglas en ingls) es una notacin formal desarrollada de modo que los usuarios de UML puedan conferirle mayor precisin a sus
especificaciones. El lenguaje dispone de todo el poder de la lgica y la matemticas
discretas. Sin embargo, los diseadores de OCL decidieron que en este lenguaje slo
deberan usarse caracteres ASCil (en lugar de notacin matemtica convencional) . Esto permite que el lenguaje sea ms asequible a las personas menos inclinadas a las
matemticas y que la computadora los procese con mayor facilidad. Pero esto tambin favorece que OCL sea un poco farragoso en algunos lugares.
iMHbrn"
~ ....1
...........,
.....,
..,,
deenconhlf411
....,
wltwtn/
........
permanezca verdadera.
Al igual que el lenguaje de programacin orientado a objetos, una expresin OCL
involucra operadores que operan sobre los objetos. Sin embargo, el resultado de una
expresin completa siempre debe ser booleana, es decir: verdadero o falso. Los objetos pueden ser instancias de la clase OCL Coleccin, de la cual conjunto y Su-
Finalmente (y un poco ms sutil), si D tiene un atributo b, entonces la expresin self.8soc.b evala el conjunto de todas las b que pertenecen a todas las D .
Esta seccin es una aportacin del profesor Timothy L.elhbridge, de la Universidad de Ottawa, y se
presenta aqu mediate autorizacin
PARTE CINCO
TABLA
28.1
Notacin OCL
Significado
x.y
c->f( J
y, or, = , <>
p implies q
c ->esEmptyO
e l - >ncludesAll(c2)
e l ->excludesAlllc2!
Lo mismo que antes, excepto que boolexpr se evala paro lodo posible por de elementos tomados de c, incluso cosos donde el por consiste del mismo elemento.
s l ->union(s2J
s l - >excludinglx)
-------,
CAPITULO 28
Mtrooos FORMALES
847
ifrhili
Diagrama de
clase para un
gestor de
bloques.
Bloque
elementos
ConjuntoBloques
nmero
libres
usados
todos *
Bloques
----- - - - - {subconjunto}
{subconjunto 1
1
coloBloques
{ordenado}
PARTE CINCO
I a81oque.nmeroj
I eBloque.nmeroj
tes de la operacin; esto es, opuesto a la notacin matemtica expuesta con anterioridad, donde la x despus de la operacin es la que est designada especialmente
(como x').
context 088torB1oquea: :eliminarSloqueaO
CAPTULO 28
MTODOS FORMALES
849
idlJIH5'tW1
lliammJfl dldd, '
IUOldel~Z
ene
...........
pale
....__,.,..
.,.,t...ul,./
ea.
28.6. l
donde las declaraciones identifican las variables que comprenden el estado del sistema, y el invariante impone restricciones en la forma en la que el estado puede evolucionar. En la tabla 28.2 se presenta un resumen de la notacin del lenguaje Z.
6 Recurdese que en otros captulos eslado se cmp.lea para identificar un modo de comportamiento
observable externamente para un sistema
850
PARTE CINCO
TABLA
28 . 2
RESUMEN DE NOTACIN Z
--x--------------declorociones
predicados
los funciones globales y las constantes se definen por lo formo
declaraciones
predicados
Lo dedorocin brinda el tipo de lo funcin o constante, mientras que el predicado proporciona su valor
En esto tabla slo se presenta un conjunto abreviado de smbolos Z.
Conjuntos:
S: 1P' X
Ses declarado como conjunto de Xs.
x es miembro de S.
xeS
X El: 5
x no es miembro de S.
S es un subconjunto de T: todo miembro de S tambin est en T.
S!;;;T
Lo unin de S y T: contiene a todo miembro de So To ambos.
SnT
La interseccin de S y T: contiene a todo miembro que est tonto en S como en T.
S\T
La diferencia de S y T: contiene a todo miembro de S, excepto a aquellos que tambin
estn en T.
Conjunto vaco: no contiene miembros.
0
{x}
Conjunto unitario: slo contiene o x.
El conjunto de los nmeros naturales O, 1, 2, ...
N
S: IFX
Ses declarado como conjunto finito de X.
max [S)
El mximo del conjunto no vaco de nmeros S.
sur
Funciones:
f:XH
dom f
ron f
f {x t-t y}
dom f
CAPTULO 28
Lgica:
P/\Q
P=Q
8 S'= e S
MTODOS FORMA!.ES
851
Como se ha sealado, el esquema consiste de dos partes. La parte sobre la lnea cen
tral representa las variables del estado, mientras que la parte debajo de la lnea central describe el invariante de datos. Siempre que el esquema especifica las operaciones que cambian el estado lo precede el smbolo J.. El siguiente ejemplo de esquema
describe la operacin que elimina un elemento de la cola de bloques:
- ---EliminarBloques- - -- -- 6
GestorBloques
#GestorBloques > O,
usados' = usados \ cabeza ColaBioques /\
libres' = libres u cabeza ColaBloques /\
ColaBloques = cola ColaBloques
Abloques? : BLOQUES
Abloques? ~ usados
FilaBloques' - FilaBloques - (Abloques?) /\
usados' = usados /\
libres' = libres /\
Por convencin en z, una variable de entrada que se lee pero no forma parte del estado termina con un signo de interrogacin. Por ende, Abloques?, que acta como
parmetro de entrada, tennina con un signo de nterrogacin.
852
PARTE CINCO
Mtodos formales
EVES, desarrollado por ORA Conod6 (www.oro.on.co/eves.html), implemento el lenguoie Verdi poro especificacin formol y un generador de pruebas
automatizado.
Una listo extensa con m6s de 90 herramientas de mtodos
formales se puede encontrar en
http://www.ofm.sbu.ac.uk/.
Herramientas representativas7
ligera. Bowan y Hinchley [B0W95] han acuado "los diez mandamientos de los mtodos formales" como una guia para aquellos que estn a punto de aplicar este im-
de lenguajes formales de especificacin, un ingeniero de software debe considerar el vocabulario del lenguaje, el tipo de aplicacin que se especificar y la
amplitud de uso del lenguaje.
2. Formalizars pero no en exceso. Por Jo general no es necesario aplicar los mtodos formales en todos los aspectos de un gran sistema. Aquellos componentes cruciales para la seguridad son las primeras elecciones, seguidos por
los componentes cuya falla no puede tolerarse (por razones de negocios).
3. Estimars los costos. Los mtodos formales tienen elevados costos de arran-
7 las herramientas mencionadas slo representan una muestra de esta categora. En la mayora de
los casos, los nombres de las mismas son marcas registradas por sus respectivos desarrolladores.
8
CAPTULO 28
MTODOS FORMAUS
853
4 . Tendrs un experto en mtodosformales a tu disposicin. El entrenamiento experto y la consultora de seguimiento son esenciales para el xito cuando se
emplean los mtodos formales por primera ocasin.
5. No abandonars los mtodos tradidonales de desarrollo. Es posible, y en muchos casos deseable, integrar los mtodos formales con mtodos convencionales u orientados a objetos (parte 2 de este libro). Cada uno tiene fortalezas y
debilidades. Una combinacin, si se aplica con propiedad, puede producir excelentes resultados. 9
6. Documentars suficientemente. Los mtodos formales proporcionan un mtodo conciso, sin ambigedades y consistente para documentar los requisitos
del sistema. Sin embargo, es recomendable que un comentario en lenguaje
natural acompae la especificacin formal y sirva como mecanismo para reforzar la comprensin del lector acerca del sistema.
7. No comprometers los estndares de calidad. "No hay nada mgico en los mtodos formales" [B0W95], y por esta razn debe continuar la aplicacin de
otras actividades de SQA (captulo 26) conforme los sistemas se desarrollen.
8. No sers dogmtico. Un ingeniero de software debe reconocer que los mtodos formales no regarantizan la correccin. Es posible (alguien dira, probable) que el sistema final, aun cuando se desarrolle empleando mtodos
formales, puede tener pequeas omisiones, bugs menores y otros atributos
que no satisfagan las expectativas.
9 . Probars, probars y probars de nuevo. La importancia de las pruebas del software se ha estudiado en los captulos 13 y 14. Los mtodos formales no absuelven al ingeniero de software de la necesidad de llevar a cabo pruebas
extensivas bien planeadas.
10. Reutilizars. A largo plazo, la nica forma racional de reducir los costos de
La ingeniera de software de sala lunpia (capboo 29) es un ejemplo de un enfoque integrado que
utiliza mtodos formales y mtodos ele desanolJo mas convencionales.
854
PARTE CINCO
Las especificaciones formales se pueden estudiar matemticamente, pero no las informales. Por ejemplo, un programa correcto se prueba para satisfacer sus especificaciones. o
se puede probar que dos conjuntos alternativos de especificaciones son equivalentes ...
Ciertas formas de incompletud o inconsistencia se pueden detectar automticamente.
Los mtodos formales ofrecen un cimiento para los entornos de especificacin que
conducen a modelos de anlisis ms completos. consistentes y sin ambigedades
que aquellos producidos con mtodos convencionales u orientados a objetos. Las facilidades descriptivas de la teora de conjuntos y la notacin lgica permiten que un
ingeniero de software cree un planteamiento claro de hechos (requisitos) .
Los conceptos subyacentes que rigen los mtodos formales son 1) el invariante de
datos, una condicin verdadera a travs de la ejecucin del sistema que contiene
una coleccin de datos; 2) el estado, una representacin del modo de comportamiento observable externamente de un sistema, o (en Z y lenguajes relacionados) los
datos almacenados a los que un sistema tiene acceso y altera; y 3) la operacin, una
accin que tiene lugar en un sistema y lee o escribe datos a un estado. Una operacin est asociada con dos condiciones: una precondicin y una poscondicin.
Las matemticas discretas -la notacin y heursticas asociados con conjuntos y
la especificacin constructiva. operadores de conjuntos. operadores lgicos y sucesiones- forman la base de los mtodos formales. Las matemticas discretas se implementan en el contexto de los lenguajes formales de especificacin, tales como
OCL y z. Estos lenguajes tienen dominios tanto sintctico como semntico. El dominio sintctico utiliza una simbologa alineada de manera cercana con la notacin de
conjuntos y el clculo de predicados. El dominio semntico permite que el lenguaje
exprese los requisitos en una forma concisa.
La decisin de usar mtodos formales debe considerar los costos de arranque, as
como los cambios culturales asociados con una tecnologa radicalmente diferente.
En la mayora de las instancias, los mtodos formales tienen mayores rendimientos
respecto de los sistemas cruciales para la seguridad y los negocios.
CAPTULO 28
MTODOS FORMALES
855
[B0W95] Bowan, J. P., y M. G. Hinchley, "Ten Commandments of Formal Methods", en Computer, vol. 28, nm. 4, abril de 1995.
[GRI95] Gries, D., y F. B. Schneider, A Logical Approach to Discrete Math, Springer-Verlag, 1993.
[GUT93) Guttag, J. V., y J. J. Horning, Larch: Languages and Tools Jor Formal Specijication, Springer-Verlag, 1993.
[HAL90} Hall, A., "Seven Myths of Formal Methods", en IEEE Software, septiembre de 1990, pp.
11-20.
[HOR85] Hoare, C.A.R., Communicating Sequential Processes, Prentice-Hall lnternational, 1985.
[IS002J Z formal Specijication Notation-syntax, 1ype system and Semantics, ISO/IEC l 3568:2002,
lntl. Standards Organization, 2002.
[JON9IJ Jones, C. B., systematic Software Development Using VDM, 2a. ed., Prentice-Hall, 1991.
[US86J Liskov, B. H., y V. Berzlns, "An Appraisal of Program Specifications", en Software Specijication Techniques, N. Gehani y A. T. McKittrick (eds.), Addison-Wesley, 1986, p. 3.
[MAR94) Marciniak, J. J. (ed.} Encyclopedia o/Software Engineering, Wiley, 1994.
[OMG03J "Object Constraint Language Specification", en Unijied Modeling Language, v2.0, Object Management Group, septiembre de 2003, se puede descargar de www.omg.org.
[ROS95] Rosen, K. H., Discrete Mathematics and Its Applications, 3a. ed., McGraw-Hill, 1995.
[SPI88J Spivey, J. M., Understanding Z : A Specijication Language and Its Formal Semantics, Cambridge University Press, 1988.
fSPI92) Spivey, J. M., The z Notation: A Reference Manual, Prentice-Hall, 1992.
[WIL87] Wiltala, S. A., Discrete Mathematics: A Unijied Approach, McGraw-Hill, 1987.
[WIN90] Wing, J. M., "A Specifier's Introduction to Formal Methods", Computer, vol.23, nm. 9,
septiembre de 1990, pp. 8-24.
[YOU94] Yourdon, E., "Formal Methods", Guerrilla Programmer, Cutter Infonnation Corp., octubre de 1994.
2 8 . l . Revisar los tipos de deficiencias asociadas con los enfoques menos formales para la ingeniera del software de la seccin 28.1. I. Ofrecer tres ejemplos de cada uno a partir de la experiencia propia.
2 8 .2 . Los beneficios de las matemticas como mecanismo de especificacin se han tratado extensamente en este captulo. Existe algn aspecto negativo?
28.3. Usted ha sido asignado a un equipo que est desarrollando software para un fax mdem.
Su tarea es desarrollar la parte de "directorio" de la aplicacin. La funcin directorio permite que
almacenen hasta Ma.xNombres personas junto con los asociados de nombres de compaa, nmeros de fax y otra informacin relacionada. Empleando lenguaje natural defina
a) El invariante de datos
bJ El estado.
c) Las operaciones probables.
2 8.4. Usted ha sido asignado a un equipo que est desarrollando software, llamado Duplicador
de memoria, que ofrece mayor memoria aparente para una PC que la memoria fisica. Esto se logra al identificar, recopilar y reasignar bloques de memoria que se han asignado a una aplicacin existente pero que no se utilizan. Los bloques no utilizados se reasignan a las aplicaciones
que requieren memoria adicional. Con las suposiciones apropiadas y el uso de lenguaje natural,
defina
a) El invariante de datos.
bJ El estado.
e) Las operaciones probables.
28.5. Desarrolle una especificacin constructJva para un conjunto que contiene duplas de nmeros naturales de la forma (X,y, z2) tales que la suma de x y y es igual a z.
PARTE CINCO
28.6. El instalador para una aplicacin basada en PC determina primero si estn presentes ...
conjunto aceptable de hardware y recursos del sistema. Verifica la configuracin del hardwa:
para determinar si estn presentes varios dispositivos (de muchos posibles dispositivos) y determina si ya estn instaladas versiones especificas de software y controladores del sistema
Qu operador de conjunto se podria usar para lograr esto? Ofrecer un ejemplo en este con
texto.
28. 7. Intentar desarrollar una expresin utilizando operadores lgicos y de conjunto para el Siguiente enunciado: "Para toda x e y, si x es el padre de y y y es el padre de z, entonces x es a
abuelo de z. Todos tienen un padre." sugerencia: emplear las funciones P(x, y) y G(x. z) para representar las funciones padre y abuelo, respectivamente.
28.8. Desarrollar una especificacin constructiva de conjunto del conjunto de pares donde e
primer elemento de cada par es la suma de dos nmeros naturales distintos de cero, y el segundo elemento es la diferencia entre los mismos nmeros. Ambos nmeros deben estar entre 100
y 200, inclusive.
28.9. Desarrollar una descripcin matemtica para el estado y el invariante de datos del problema 28.3. Refinar esta descripcin en el lenguaje de especificacin OCL o Z.
28.1 o. Desarrollar una descripcin matemtica para el estado y el invariante de datos del problema 28.4. Refinar esta descripcin en el lenguaje de especificacin OCL o Z.
28.11. Mediante la notacin OCL o Z presentadas en las tablas 28.1 o 28.2, seleccionar alguna
parte del sistema de seguridad Hogarseguro descrito previamente en este libro e intentar describirla con OCL o Z.
28.12. Empleando una o ms de las fuentes de informacin que aparecen en las referencias de
este captulo o en "Otras lecturas y fuentes de informacin", desarrollar una presentacin de
media hora acerca de la sintaxis y la semntica bsicas de un lenguaje formal de especificacin
distintos a OCL o Z.
/\dems de los libros empleados como referencias en este captulo, durante la dcada pasada
se publicaron numerosos libros acerca de temas de mtodos formales. A continuacin se presenta una lista de algunos de los ms tiles:
Bowan, J.. Formal Specjication and Documentation using Z: A case Study Approach, lnternational Thomson Computer Press, 1996.
Casey, C., A Programming Approach to Formal Methods, McGraw-Hill, 2000.
Clark, T., et al. (eds.), Object Modeling with OCL, Springer-Verlag, 2002.
Cooper, D., y R. Barden,
Craigen, D., S. Gerhart y T. Ralston, Industrial Application of Formal Methods to Model, Design
and Analyze Computer ~tems, Noyes Data Corp., 1995.
Harry, A., Formal Methods Fact File: VDMy Z, Wiley, 1997.
Hinchley, M., y J. Bowan, Applications ofFormal Methods, Prentice-Hall, 1995.
Hinchley, M, y J. Bowan, Industrial Strenght Formal Methods, Academic Press, 1997.
Hussmann, H., Formal Foundations for Software Engineering Methods, Springer-Verlag, 1997.
Jacky, J., The Way of Z: Practica] Programming with Formal Methods, Cambridge University
Press, 1997.
Monn, F., y M. Hinchley, Understanding Formal Methods, Springer-Verlag, 2003.
Rann, D., J. Turner y J. Whitworth, Z: A Beginner's Guide, Chapman and Hall, 1994.
Ratcliff, B., lntroducing Specfication Using Z: A Practica/ Case Study Approach, McGraw-Hill,
1994.
CAPTULO 28
857
MTODOS FORMALES
http://www.mhhe.com/pressman.
CAPTULO
CLA'VII
tSJj!cifklQ611 c'6
P~ .....
;866
especlfkodll ele
net(O 86S
'*
espdli~lm ,
ele estructura
dttafls ......863
ttpecifi(O(l!,1
fundonl .. .a63
estrategkide
sala Umpia 860
prueba estadstico
de uso .......873
refiiocalento
de diseo .....867
W ~ l - -869
vlrifkocln .867
.E
En muchos aspectos, ei enfoque de sala limpia e1eva la ingenietia de software a otro nivel. Al igual que lo!:i mtodos fottnales presentados ert ~l captulo 28
el proceso de sala limpia destaca el rigor en ta especificacin y el di~o, y la
verificacin formal de caaa elemento ~e diseo mediante pruebas de c0rrecdn
con bases matemticas, Al extender el enfoque adoptijdQ et) los mtodos formales, el enfoque ~e sala Jlmpia tambin resalta la,s t9nicas pata el control
estadlstico deJa calidad, incluso prueoas que s~bqsan en-el uso anticipado del
. ". . .. , . ,
l,.<;11-fiseni~ra del sowwe de sal Umj:)ia ~ un,mo(lelo c;le PJQCeso que elimina
UN VISTAZO
RPIDO
~~ 1
859
860
PARTE CINCO
na operando en grados relativamente bajos de madurez del proceso, los ingenieros de software no han estado listos para aplicar las tcnicas de sala
limpia.
A pesar de los elementos de verdad en cada una de estas preocupaciones, los benc::
ficios potenciales de la ingeniera del software de sala limpia superan con mucho .a
inversin requerida para superar la resistencia cultural ubicada en el centro de estas
preocupaciones.
.....
111"'1ti 'arffll-de que en un programo ocurran los errores es que un autor los coloque ohL No ,e. . ..
. lllalnisnlos... la prctico correcto busco evitar la insercin de errores y, cuando '$1 fallo l respecte, ....... .
ifjbfia ocualquitra otro formo de ajecutor el programa.
29.1.1
El enfoque de sala limpia utiliza una versin especializada del modelo de proceso
incremental (capitulo 3). Mediante pequeos equipos de software independientes se
desarrolla una "lnea de incrementos de software" [LIN94]. Conforme cada incremento se certifica se integra en el todo. Por ende, la funcionalidad del sistema crece
con el tiempo.
En la figura 29. l se ilustra la sucesin de las tareas de sala limpia para cada incremento. Los requisitos globales del sistema o producto se desarrollan empleando los
ifri&fll
Modelo del
proceso ele
sala llnlpla.
Incremento 1
11
~11
1
Incremento 2
Incremento 3
pp
IS ingeniera de sistemas
RR = recopilacin de requisitos
EEC
DF
VC
_ _ ,1
GC = generacin de cdigo
IC - inspeccin de cdigo
PEU - pruebo estadstico de uso
e = certificacin
PP = ploneocin de pruebas
CAPTULO 29
861
mtodos de ingeniera del software estudiados en el captulo 6. La lnea de incrementos de sala limpia se inicia una vez que la funcionalidad se ha asignado al elemento de software del sistema. Se producen las siguientes tareas:
Cules SOII
las prlndpa
11s tareas lleva
415 a cabo como
_,e de la inge
aria del sohwa
n lle sala limpia?
...... 1
.IDrmdi '
.u,spmalo
se~
8Ulholenwww.
..........
....
,O tngenlla dtl software efe solo limpiologro el control estoarstico de lo calidad sobre el dSorrl!II.tfel sofiawt 11#
saparar eslJirlame,nte ef PfOCBSO de diseo del proceso de pruebo en uno nneo de desarrollo ionememal de soffwan.
Planificacin de pruebas estadsticas. Se analiza el uso proyectado del software y se planifica y disea un conjunto de casos de prueba que ejercitan una "dis-
862
PARTE CINCO
29 .1.2
Dyer [DYE92J alude a las diferencias del enfoque de sala limpia cuando define el proceso:
La sala limpia representa el primer intento prctico de someter el proceso de desarrollo de
software al control estadstico de la calidad con una estrategia bien definida para la mejora continua de los procesos. Con el fin de alcanzar esta meta se defini un ciclo de vida
nico de sala limpia, el cual se enfoca en la ingenierla del software basada en matemticas para corregir diseos de software y en la prueba de software basada en estadsticas
para la certificacin de la fiabilidad del software.
Los ms importontes
coroctersticos
<istintivos de lo salo
impo son lo pruebo
de lo C01Teccin y los
r:ielm eslooisticos de
i:t1zimL
2. verifica las especificaciones del diseo utilizando una prueba de correccin basada matemticamente.
3. Implementa tcnicas de prueba con una alta probabilidad de descubrir errores
de alto impacto.
Obviamente, el enfoque de sala limpia aplica la mayora, si no todos, los principios
y conceptos bsicos de la ingeniera del software presentados a lo largo de este libro.
CAPTULO 29
863
'"lhi asptdo turioso dt lo vida es que si te rehsas en absolutooaceptar lo mejor con freroendo lo obtienes."
w. Swrset ......
En la ingeniera del software de sala limpia la prueba unitaria y la depuracin se
sustituyen verificando la correccin y las pruebas basadas en estad[stcas. Dichas
actividades, combinadas con la conservacin de registros necesaria para la mejora
continua, hacen que el enfoque de sala !impa sea nico.
20.2
l&PIQlfJCASJlw fVMCJAMa\L
Sin importar el mtodo de anlisis elegido, se aplican los principios de anlisis operativo presentados en el captulo 7. Los datos, las funciones y el comportamiento se
modelan . Los modelos que se obtienen deben partcionarse (refinarse) para proporcionar cada vez mayor detalle. El objetivo global es moverse desde una especificacin (o modelo) que capture la esencia de un problema hasta una especificacin que
ofrezca sustanciales detalles de implementacin.
La ingeniera del software de sala limpia cumple con los principios de anlisis
operativo empleando un mtodo llamado especifi-cacin de estructura de cajas. Una
"caja" encapsula al sistema (o algn aspecto de ste) en algn grado de detalle. Por
medio de un proceso de elaboracin o refinamiento en niveles, las cajas se refinan
en una jerarqua donde cada una tiene transparencia referencial. Esto es: "el contenido de informacin de cada especificacin de caja es suficiente para definir su refinamiento, sin depender de la implementacin de alguna otra caja" [LIN94). Esto le
permite al analista partir un sistema jerrquicamente, moverse desde la representacin esencial en la parte superior hacia un detalle especfico de la implementacin
en el fondo. Se utilizan tres tipos de cajas.
t
PARTE CINCO
864
Cmo se
espedficadn de
estructura de
cajas?
~,
fol
C~VE
El refinamiento de lo
Clrructuro de COIOl Ylo
veficocin de lo
cooecn ocurren
simultneamente.
estructura de cajas. Una caja negra (CN 1) define respuestas para un conjunto completo de estmulos. CN 1 se puede refinar en un conjunto de cajas negras, CN 1 1 hasta
CN 1 n, cada una de las cuales aborda una clase de comportamiento. El refinamiento
contina hasta que se identifica una clase cohesiva de comportamiento (por ejem
plo, CN 1 1.1). Entonces se define una caja de estado (CE 1 1.1) para la caja negra (CN 1 1 ,
En este caso, CE 1 1 1 contiene todos los datos y servicios que se requieren para implementar el comportamiento que define CNu 1- Finalmente, CE1 11 se refina en cajas
transparentes (CT 1 1 u,) y se especifican los detalles de diseo del procedimiento.
Conforme ocurre cada uno de estos pasos de refinamiento, tambin ocurre la
verificacin de la correccin. Las especificaciones de caja de estado se verifican para
UM/fti
CT11.1 . 1
Refincunlento
de estructura
de cajas.
CE1.1 1
CT1.1 .1.3
865
Uhlffi
Especificacin
de caja negra.
s---
f:S* _.R
---- R
garantizar que cada uno concuerda con el comportamiento definido por la especificacin padre de caja negra. De igual modo, las especificaciones de caja transparente se verifican contra la caja de estado padre.
se debe notar que los mtodos de especificacin basados en lenguajes como OCL
o z (captulo 28) es posible usarlos en conjuncin con el enfoque de especificacin
de estructura de cajas. El nico requisito es que cada grado de especificacin sea
verificable formalmente.
29.2.1
iiMJffi
Especificacin
de caja de
estado.
E,k>do
1
1
1
1
1
Co jo negro . g
h
1
1
1
1
1
PARTE CINCO
iiM+itii
Especificacin
de caja
trcmsparente.
CAPTULO 29
867
El enfoque de diseo utilizado en la ingeniera del software de sala limpia utiliza con
amplitud la filosofia de programacin estructurada. Pero, en este caso, la programacin estructurada se aplica mucho ms rigurosamente.
Las funciones de procesamiento bsico (descritas durante las primeras etapas del
refinamiento de la especificacin) se refinan utilizando una "expansin progresiva
de funciones matemticas en estructuras de conectivos lgicos [por ejemplo, if-thenelse] y subfunciones, donde la expansin [se] realiza hasta que todas las subfunciones identificadas puedan establecerse directamente en el lenguaje de programacin
usado para la implementacin" [DYE92]
El enfoque de programacin estructurada se emplea con eficacia para refinar la
funcin, pero qu hay acerca del diseo? Aqu se involucran varios conceptos fundamentales de diseo (captulos s y 9). Los datos de programa se encapsulan como
un conjunto de abstracciones que atienden las subfunciones. Los conceptos de encapsulado de datos, ocultamiento de informacin y clasificacin de datos se aprovechan para crear el diseo de datos.
29.3.1
~Qu ,ondl
<iones son
apli,ables para
probar q son
'oclecuadas las
estrudll'as
estruduradas?
fes
g seguida de h hacef?
Cuando una funcin p se refina en un condicional de la forma if <e> then q, else r
(si <e> entonces q. de otro modo!), la condicin de correccin para cualquier entrada ap es
2
Puesto que el equipo completo est invotucrado en el proceso de verificacin, es menos probable
que se cometa un error al realizar la vericac:i(n
868
PARTE CINCO
ifrhiili
Refinamiento
progresivo.
falsa, r hace p?
Si el lector se limito
s6/c a los eslrucluras
eslructurodos
conforme desarrolla
un diseo de procedf
miento, lo pruebo de
coneccin es directo.
Si se violan los eslTuc
turas los pruebas de
coneccin son diffciles
oimposibles.
Cada vez que una caja transparente se refina al siguiente nivel de detalle se aplican
dichas condiciones de correccin.
Es importante sealar que la utilizacin de estructuras de programacin estructurada restringe el nmero de pruebas de correccin que se deben realizar. Una sola
condicin se verifica para las sucesiones; dos condiciones se prueban para if-thenelse; y tres condiciones se verifican para los bucles.
La verificacin de correccin de un diseo de procedimiento se ilustra empleando un ejemplo simple que introdujeron Linger, Milis y Witt [LIN79]. El objetivo es
disear y verificar un pequeo programa que encuentra la parte entera, y, de una
iif P.ffP
869
sqrt
Clculo de la
parte entera
1
1
1
1
de una raz
cuadrada
[UN79].
y :=0
1
1
1
1
l
l. La condicin inicio demanda que [x 2: O e y = O]. Con base en los requisitos del
problema se supone que la condicin de entrada es correcta. 3 En consecuencia,
se satisface la primera parte de la condicin inicio,x 2: o. segn el diagrama de
flujo, el enunciado que precede inmediatamente a la condicin inicio establece
y = o. Por lo tanto, la segunda parte de la condicin inicio tambin se satisface.
En consecuencia, inicio es verdadera.
&'
cfAvE
2. La condicin bucle se puede encontrar en una de dos formas posibles: 1) directamente a partir de inicio (en este caso, la condicin bucle se satisface directamente) o por medio del flujo de control que pasa a travs de la condicin
cuenta. Dado que la condicin cuenta es idntica a la condicin bucle, bucle es
verdadera sin importar la trayectoria de flujo que conduce a ella.
870
ifaihffi:j
sqrt
Prueba de
entrado: [x:.: O)
que el diseo
es correcto.
Diseo con
subpruebas.
1,
1
1
y :=0
1, ..._.........
1
L
'
inicio: (x ~
o, y: oj
----
y:= y+ 1
.
lf---.----------....~- ....-------laiilil
solido: x no cambia y y2 s; x ~ (y+ 1)2
1. Adems, la trayectoria del flujo de control que conduce a cuenta se puede invocar slo si la condicin s tambin es verdadera. Por lo tanto, si (Y+ 1)2 sx,
se sigue que y s x. La condicin cuenta se satisface.
4. La
CAPTULO 29
Qu S8
gana al rea
Izar pn,ebas de
correccin?
871
8ubpl"Uebas:
Diseo con
subpruebas.
f1
[f1]
DO
gl
g2
[f2]
WHILE
f2
f3
pl
DO [f3]
g3
[f4]
IF
p2
THEN [f6]
g4
g6
El8E [f8]
g8
rs = [ DO g4: g6 ENO] 7
f8
g7
ENO
g8
ENO
ENO
4
Esta seccin y las figuras 29. 7 a 29.9 han sido adaptadas de [UN94) y se usaron con permiso.
872
PARTE CINCO
Permiten al equipo de sala limpia verificar cada lnea de diseo y cdigo. Los
Produce mejor cdigo que la prueba unitaria. La prueba unitaria verifica los
cin de la correccin.
La estrategia y las tcticas de las pruebas de sala limpia son fundamentalmente dife-
873
demostrando que una muestra estadstica de casos de uso (captulo 7) se ha ejecutado exitosamente.
29.4.1
mosinosees
mdario del enfoque
de solo limpio, vale lo
11]/IO considerar los
:ruebos estad/sticos
utilizacin como
:ate integral de su
estrategia de pruebas.
Probabilidad
Habilitar/deshabilitar (HD)
Prueba [P)
50%
15%
15%
15%
Alarma(A)
5%
Intervalo
1-49
50-63
64-78
79-94
95-99
5 Es posible utilizar herramientas automatizadas para lograr esto Vase [DYE92Jpara mayor informacin.
874
PARTE CINCO
Crear una sucesin de casos de prueba de uso que concuerde con la distribucin
de probabilidad de uso requiere generar nmeros aleatorios entre 1 y 99. Cada
nmero aleatorio corresponde a un intervalo en la distribucin de probabilidad precedente. Por lo tanto, la secuencia de casos de prueba de uso se define aleatoriamente, pero corresponde a la probabilidad correspondiente de presencia de estmulos
Por ejemplo, supngase que se generan las siguientes secuencias de nmeros aleatorios:
l 3-94-22-24-45-56
81-19-31-69-45-9
38-21-52-84-86-4
Al seleccionar los estmulos apropiados con base en el intervalo de distribucin que
se muestra en la tabla se derivan los casos de uso siguientes:
HD-P-HD-HO-HD-FZ
P-HO-HD-C-HD-HD
HD-HD-FZ-P-P-HD
El equipo de prueba ejecuta estos casos de uso y verifica el comportamiento del software frente a la especificacin del sistema. El tiempo para las pruebas se registra de
modo que sea posible determinar los tiempos de intervalo. Al usar tiempos de intervalo, el equipo de certificacin tiene la posibilidad de calcular el tiempo medio entre
fallas (TMEF). Si se lleva a cabo una larga secuencia de pruebas sin fallas, el TMEF
es bajo y es probable que la fiabilidad del software sea alta.
29.4.2 CerWicacin
Las tcnicas de verificacin y prueba ya descritas en este captulo llevan a componentes de software (e incrementos completos) que pueden certificarse. En el contexto del enfoque de ingeniera del software de sala limpia la certificacin implica
que la fiabilidad (medida en TMEF) se especifica para cada componente.
El impacto potencial de los componentes de software certificables va mucho ms
all de un solo proyecto de sala limpia. Los componentes de software reutilizables
se pueden almacenar junto con sus escenarios de uso, estmulos de programa y distribuciones de probabilidad. Cada componente tendra una fiabilidad certificada en
el escenario de uso y el rgimen de pruebas descritos. Esta informacin es invaluable para otros que intenten emplear los componentes.
El enfoque de la certificacin involucra cinco pasos [WOH94]:
<erfitKG 1ft
saftware?
875
Los pasos del l al 4 se han tratado en una seccin anterior. Esta seccin se concentrar en la certificacin de la fiabilidad.
La certificacin para la ingeniera del software de sala limpia requiere la creacin
de tres modelos [P0093J:
Modelo de muestreo. La prueba del software ejecuta m casos de prueba aleatorios y se certifica si no ocurren fallas o un nmero especfico de stas. El valor de
m se deriva matemticamente para asegurar que se logra la fiabilidad requerida.
Modelo de componentes. Se certificar un sistema compuesto de n componentes. El modelo de componentes permite que el analista determine la probabilidad
de que el componente i fallar antes de completarse.
Modelo de certificacin. La fiabilidad global del sistema se proyecta y certifica.
En el momento de completar las pruebas estadsticas de uso el equipo de certificacin tiene la informacin necesaria para entregar el software que tiene un TMEF
certificado, el cual se calcula empleando cada uno de dichos modelos.
Una descripcin detallada del clculo de los modelos de muestreo, componentes y
certificacin est ms all del mbito de este libro. El lector interesado hallar detalles adicionales en [MUS87J, [CUR86J y [P0093].
876
PARTE CINCO
Una vez completada la verificacin de la correccin comienza la prueba estadstica de uso. A diferencia de tas pruebas convencionales, la ingeniera del software de
sala limpia no subraya la importancia de las pruebas unitarias o de integracin. En
vez de ello el software se prueba definiendo un conjunto de escenarios de uso
determinando la probabilidad de uso para cada escenario y definiendo entonces las
pruebas aleatorias que concuerden con las probabilidades. Los registros de error
resultantes se combinan con los modelos de muestreo, componentes y certificaciP
para pennitir el clculo matemtico de la fiabilidad proyectada respecto al componente de software.
La filosofa de sala limpia es un enfoque riguroso para la ingeniera del software.
[CUR86] Currit, P. A., M. Dyer y H. D. Milis, "Certifying the Reliability of Software", en IEEE n-ans.
Software Engineering, vol. SE- 12, nm. 1, enero de 1994.
[DYE92J Dyer, M., The Cleanroom Approach to Quality Software Development, Wiley, 1992.
[HAU94] Hausler, P. A., R. Linger y C. Trammel, "Adopting Cleanroom Software Engineering w ith
a Phased Approach", en fBM Systemsfourna/, vol. 33, nm. 1, enero de 1994, pp. 89-109.
[HEN95J Henderson, J., "Why isn't Cleanroom the Universal Software Development Methodology", en Crosstalk, vol. 8, nm. 5, mayo de 1995, pp. 11 - 14.
tHEV93J Hevne r, A . R., y H. o. Milis, "Box Structure Methods for system Development with Objects", en IBM Systems Joumal, vol. 31, nm. 2, febrero de 1993, pp. 232-251.
[LIN79] Linger, R. M., H. D. Milis y B. l. Witt, Structured Programming: Theory and Practice, Addison-Westey, 1979.
[LIN881 Lingcr, R.M., y H. D. Mills, "A Case Study in Cleanroom Software Engineering: The IBM
COBOL Structuring Facility", Proc. COMPSAC '88, Chicago, octubre de 1988.
[UN94J Linger, R., "Cleanroom Process Model", en IEEE Software, vol. 11, nm. 2, marzo de 1994,
pp. 50-58.
[MIL87J Mlls, H. o., M . Dyer y R. Linger, "Cleanroom Software Engineering", en fEEE Software,
vol. 4, nm. 5, septiembre de 1987, pp. 19- 24.
[MIL88J Milis, H. D., "Stepwise Refinement and Verification in Box Structured Systems", en Com puter, vol. 21, nm. 6, junio de 1988, pp. 23-35.
[MUS87J Musa. J. D, A lannino y K. Okumoto, Engineering and Managing Software with Reliability Measures, McGraw-Hill, 1987.
[P0088J Poore, J. H., y H. D. Milis, "Bringing Software Under Statistical Quality Control", en Quality Progress, noviembre de 1988, pp. 52-55.
[P00931 Poore, J. H., H. D. Milis y o. Mutchler, "Planning and Certifying Software System Reliability", en IEEE Software, vol. 10, nm. 1, enero de 1993, pp. 88-99.
1WOH94J Wohiin, C., y P. Runeson, "Certification of Software Components", en IEEE Trans. Software Engineerng, vol. SE- 20, nm. 6, junio de 1994, pp. 494-499.
29. l. Si se tuviese que elegir un aspecto de la ingeniera del software de sala limpia que la
hiciese radicalmente diferente de los enfoques convencionales de .ingeniera de software, cul
sera?
CAPITULO 29
INGENU:RlA
oa. sorr.v.ARE m
SALA LIMPIA
877
procedure bubblesort;
var i , t, integer;
begin
repeat until t = a(l)
t: = a(l):
for j: = 2 to n do
a U- 1) > aUJ then begin
t: = aU- IJ;
aU- 1): = aUJ;
aUJ : = t;
end
endrep
end
Dividase el diseo en subfunciones y definase un conunto de condiciones que permitman probar que este algoritmo es correcto.
29.6 . Documntese una prueba de verificacin de correccin para el ordenamiento en burbuja tratado en el problema 29.5.
29. 7 . Seleccinese un componente de programa que se haya diseado en otro contexto (o uno
que haya asignado el instructor) y desarrllese respecto de l una prueba completa de correccin.
29.8 . Seleccinese un programa que se use regularmente (por ejemplo, un gestor de correo
electrnico, un procesador de palabra, un programa de hojas de clculo) y crese un conjunto
de escenarios de uso para el programa. Definase la probabilidad de uso para cada escenario y
luego desarrllese una tabla de estmulos de programa y de distribucin de probabilidad similar al que se muestra en la seccin 29.4.1.
29.9 . Para la tabla de estmulos de programa y distribucin de probabilidad desarrollada en el
problema 29.8, utilicese un generador de nmeros aleatorios con el fin de desarrollar un conj unto de casos de prueba para emplearlo en pruebas estadsticas de uso.
29.1 O. Con palabras propias, descnbase el intento de certificacin en el contexto de ingeniera
del software de sala limpia.
Prowell et al. (Cleanroom Software Engineenng Technology and Process, Addison-Wesley, 1999)
ofrecen un tratamiento detallado de los aspectos importantes del enfoque de sala limpia. Poore
y Trammell (Cleanroom Software Engmeering A Reader, Blackwell Publishing, 1996) han editado
exposiciones tiles de temas de sala limpia Becker y Wh1ttaker (Cleanroom Software Engmeering
Procaces, Idea Group Publishing, 1996) presentan un excelente panorama para quienes no estn
familiarizados con las prcticas de sala hrnp1a
The Cleanroom Pamphlet (Soflware Technology Support Center, Hill AFBase, abril de 1995) contiene reimpresiones de varios artculos importantes u, er (UN94J produjo una de las mejores
introducciones a la materia. El Data and Ana})'SlS Center ,r Soflware (DACS) (www.dacs.dtic.mil)
ofrece muchos artculos tiles, libros guia y otras fuenl ~ de informacin acerca de la ingenie
ra del software de sala limpia
878
http:// www.mhhe.com/pressman.
odaptQdoll .888
(lllitic.'CICin $87
doslfkodon .892
D8C .3'6
entorao
de ret1tlha6n .894
ilgeliericJ
de esttldura 897
tipos de
<OlllpOl.l!ll ttS 881
n el contexto de la ingeniera del software la reutllzacin es una :idea tanto antigua como nueva. Los programadores han reutilizado ide<J.s, abstracciones y procesos desde los primeros das de la computacin, pero el
enfoque original para la reutilizacin era especfico. En la actualidad. los Complejos siste~as de alta calidad basados en computadoras se d,eben construir en
un tiempo muy corto y demanda un enfoque ms organizad de la reutihzacln.
La ingcnfc((a del software basada en componentes (lSBC) es un proceso qte
concede particular importancia al diseo y la construccin de sistemas basados
en computadoras que utilizan "componentes" <le software reutilizables. Cle~
Pero surgen varias preguntas. Es posible <;onstruir siSt-emas complejos mediante el ensamblado de componentes de software reutilizables proveQientes de
un catlogo? Esto se puede lograr en una forma eficaz tanto en costo como en
tiempo? Es posible es~blecer incentivos adecuados que alienten a los Ingenie~
ros de software a reutilizar en vez de reinventar? Los gestores tienen buena
disposicin para incurrir en el gasto adicional asociado con la creacin de componentes de software reutilizables? La biblioteca de. componentes es necesaria
para lograr que la reutilizacin se cree en una forma que $ea accesible a que
nes la necesitan? Los componentes que existen pueden encontrarlos quienes .
los necesiten?
880
PARTE CINCO
Incluso en la actualidad, los ingenieros de software luchan con stas y otras preguntas acerca de la reutilizacin de componentes de software. En este captulo se
abordan algunas de las respuestas.
HHI i:ifr6V1
lnfonnoci6i\ id~m
delSBClJOIQ~
58 puede-- 8ft
. ...c.......
En la superficie, la ISBC parece bastante similar a la ingeniera del software orientada a objetos convencional. El proceso comienza cuando un equipo de software
establece requisitos para el sistema que se construir mediante tcnicas convencionales de investigacin de requisitos (captulo 7). Se establece un diseo arquitectnico (captulo 10), pero en lugar de dirigirse inmediatamente hacia tareas de diseo
ms detalladas, el equipo examina los requisitos para determinar qu subconjunto
est directamente dispuesto para la composicin, y no para la construccin. Es decir,
el equipo plantea las siguientes preguntas para cada requisito del sistema:
881
Componente: parte importante, casi independiente y reemplazable de un sistema que satisface una funcin clara en el contexto de una arquitectura bien
definida.
Componentes cualificados: evaluados por ingenieros de software para garantizar que no slo la funcionalidad, sino el desempeo, la fiabilidad, la facilidad
de uso y otros factores de calidad (captulo 26) concuerdan con los requisitos
del sistema o producto que se construir.
1 La implicacin es que la organizacin ajusta los requisitos de su negocio o producto de modo que
la implementacin basada en componentes se conS1ga sm que sea necesaria la ingenieria de personalizacin. Este enfoque reduce los costos y mqora el tiempo en que el producto llega al mercado,
pero no siempre es posible.
PARTE CINCO
882
Componentes adaptados: adaptados para modificar (accin tambin llamada et'mascarar o envolver) (BR096] caractersticas que no se requieren o indeseables
Componentes actualizados: sustituyen el software existente conforme estn
El proceso de JSBC se caracteriza de tal forma que no slo identifica los componentes candidatos sino que tambin cualifica la interfaz de cada componente, adapta los
componentes para eliminar las equivocaciones arquitectnicas, ensambla los componentes en un estilo arquitectnico seleccionado y actualiza los componentes conforme los requisitos del sistema cambian [BR096). El modelo de proceso para la
ingeniera del software basada en componentes destaca las pistas paralelas en las
cuales la ingeniera del dominio (seccin 30.3) se lleva a cabo concurrentemente con
el desarrollo basado en componentes.
La figura 30.1 ilustra un modelo de proceso tpico que explicitamente acopla la
ISBC [CHR95J. La ingeniera del dominio crea un modelo del dominio de aplicacin
que se utiliza como base para analizar los requisitos del usuario en el flujo de ingeniera del software. Una arquitectura genrica de software proporciona la entrada
para el diseo de la aplicacin. Finalmente, despus de que los componentes reutilizables se han comprado, seleccionado de bibliotecas existentes o construido (co-
Modelo
MH.fdeti
proceso que
gpoya la
ISDC .
Depsito de
arteactos/
componentes
reutilizables
Anlisis
arquitectnico
883
mo parte de la ingeniera del dominio), estn disponibles para los ingenieros de software durante el desarrollo basado en componentes.
Los pasos de anlisis y diseo arquitectnico definidos como parte del desarrollo
basado en componentes (figura 30.1) se pueden implementar en el contexto de un paradigma de diseo abstracto (ADP, por sus siglas en ingls) [D0G03J. un ADP implica
que el modelo global del software -representado como datos, funciones y comportamiento (control)- se puede descomponer jerrquicamente. Conforme la descomposicin comienza, el sistema se representa como una coleccin de marcos de trabajo arquitectnico, cada uno compuesto de uno o ms patrones de diseo (captulo 10). Un refinamiento mayor identifica los componentes necesarios para crear cada patrn de diseo. En un contexto ideal, todos los componentes se adquiriran a
partir de un depsito (aplicando actividades de calificacin, adaptacin y composicin
de componentes). Cuando se requieren componentes especializados se aplica la ingeniera de componentes.
1AI ....lo del dominio tnrto de eocontror los aspectos comunes entre los sistemas. poro identificar lS (Ol1lpOIJIIIM
. . posllile aplica, en muchos sistemas, y poro identificar familias de progromos que se posiclollet *t sacar lt
~ _,,.dedithoscomponentes.
El proceso de anlisis
estudiado en esto se<
cin se enfoco en los
componentes reutilizables. Sin embargo, el
anlisis de sistemos
COL completos (por
ejemplo, aplicaciones
de comercio eledrnf
co, aplicaciones de ou-tomotizacin de
fuerzo de ventas)
tombin puede ser
una parte del anlisis
del dominio.
884
Qu
componentes
identificados
durante el anhsis
del dominio sern
candidatos para la
reutlhzacin?
Es importante advertir que el anlisis del dominio es aplicable a cualquier paradigma de ingeniera del software, y que se puede aplicar al desarrollo convencional y a.
orientado a objetos.
Aunque los pasos citados ofrecen un modelo til para el anlisis del dominio, no
brindan una guia para decidir cules componentes de software son candidatos a la
reutilizacin. Hutchinson y Hindley [HUT88] sugieren el siguiente conjunto de preguntas prcticas como una gua para identificar los componentes de software reutilizables:
En las implementaciones futuras se requiere la funcionalidad del componente?
Cun comn es la funcin del componente dentro del dominio?
Existe duplicidad de la funcin del componente dentro del dominio?
El componente depende del hardware? Si es as, el hardware permanece invariable entre las implementaciones o las especificaciones del hardware pueden trasladarse hacia otro componente?
El diseo est lo suficientemente optimizado para la siguiente implementacin?
se pueden establecer parmetros respecto de un componente no reutilizable
de modo que se vuelva reutilizable?
ffil-llHN','~.
lmlllll!i6it. uai
del Qll($$ del domm
se~ anconlo en
www..- '
tliu/str/ "
. . .llelli/ "
IWoJitnil.
885
Un conjunto de caracterlsticas de dominio de un componente reutilizable se puede representar como (Dp], donde cada elemento, Dpi, en el conjunto representa una
caracterstica especfica del dominio. El valor asignado a Dp, representa una escala
ordinal que indica la relevancia de la caracterstica para el componente p. Una escala tpica [BAS94J podra ser
1: No es relevante si la reutilizacin es apropiada.
2: Relevante slo en circunstancias inusuales.
3: Relevante: el componente se modifica para usarlo, a pesar de las diferencias.
4: Claramente relevante, y si el nuevo software no tiene esta caracterstica, la
truct,ra y cules
SOlt SIS CCl'adt
'ristkas?
PARTE CINCO
2. Las reglas que rigen el uso del punto de estructura deben comprenderse con
facilidad. Adems, la interfaz para el punto de estructura debe ser relativamente simple.
3. El punto de estructura debe implementar la ocultacin de informacin al ais-
lar toda la complejidad dentro del mismo punto de estructura. Esto reduce la
complejidad percibida del sistema globales conjunto.
'~
c&v1
Un punto de estructuro
es onlogo oun potrn
de diseo que se puede encontrar repetidomente en oplicociones
con un dominio especfico.
Como un ejemplo de puntos de estructura como patrones arquitectnicos de un sistema, considrese el dominio de software de sistemas de alarma. Este dominio puede
abarcar sistemas tan simples como HogarSeguro (descritos en captulos anteriores)
o tan complejos como el sistema de alarma para un proceso industrial. Sin embargo, en cada caso se encuentra un conjunto de patrones estructurales predecibles:
una interfaz que le permite al usuario interactuar con el sistema; un mecanismo de
establecimiento de lmites que le permite al usuario establecer lmites a los parmetros que se medirn; un mecanismo de gestin de sensores que se comunica con todos
los sensores de supervisin; un mecanismo de respuesta que reacciona a la entrada
proporcionada por el sistema de gestin de sensores, y un mecanismo de control que
Je permite al usuario controlar la forma en la que se realiza la supervisin. Cada uno
de estos puntos de estructura se integra en una arquitectura de dominio.
Es posible definir puntos de estructura genricos que trasciendan diferentes dominios de aplicacin [STA94]:
, Aplicacin frontal (cliente): la GUI que incluye todos los mens, paneles y entradas y ordena las funciones de edicin.
Bases de datos: el depsito para todos los objetos relevantes respecto del dominio de la aplicacin.
Motor de clculo: los modelos numricos y no numricos que manipulan datos.
Funcin de generacin de informes: la funcin que produce salidas de cualquier
tipo.
Editor de aplicaciones: el mecanismo para personalizar la aplicacin respecto a
las necesidades de usuarios especficos.
Los puntos de estructura se han sugerido como una alternativa a las lineas de cdigo y puntos de funcin para la estimacin del costo del software [MCM95]. En la seccin 30.6.2 se presenta una breve descripcin del empleo de los puntos de estructura en la cotizacin.
887
calificacin de componentes. Esta actividad garantiza que el componente candidato realizar la funcin requerida, "encajar'' adecuadamente en el estilo arquitectnico que especifica el sistema y mostrar las caractersticas de calidad (por
ejemplo, desempeo, fiabilidad, facilidad de uso) que requiere la aplicacin.
La descripcin de la interfaz suministra informacin til acerca de la operacin y
Q, facto
res se consi
deran durante la
callf'Kacin de
componentes?
la utilizacin de un componente de software, pero no proporciona toda la informacin que se requiere para determinar si un componente propuesto puede, en la prctica, reutilizarse con eficacia en una aplicacin nueva. Entre los muchos factores
considerados durante la cualificacin de componentes estn [BR096): interfaz de
programacin de la aplicacin (IPA); herramientas de desarrollo e integracin que
requiere el componente; requisitos de tiempo de ejecucin, que incluyen uso de recursos (por ejemplo, memoria o almacenamiento), tiempos o velocidad y protocolo
de red; requisitos de servicio, que incluyen interfases de sistema operativo y apoyo de
otros componentes; caractersticas de seguridad, que incluyen controles de acceso y
protocolos de autenticacin: suposiciones de diseo anidado, que incluyen el empleo de algoritmos numricos o no numricos especficos; y manejo de excepciones.
2 Se debe sealar que en el estilo arquttectmcoain fr~ncia influye el modelo estructural genrico creado durante la ingeniera del domm.io (\'a.se la ligura 30.1).
cada uno de estos factores es relativamente sencillo de evaluar cuando se proponen componentes reutilizables que se han desarrollado especialmente para la aplicacin. Sin embargo, es mucho ms dilkil determinar la operatividad interna de as
COL o de componentes de provenientes de terceros porque la nica informacin disponible tal vez sea la misma especificacin de la interfaz.
floNIIJOS.
Adems de valoro, si
es justifi<odo el costo
de odoptocin poro lo
reutilizodoo, el equipo
de software tumbin
evalo si lograr lo funcionolidod requerido y
el desempeilo se~
den hoc8f Blienle5
1/l!f)OtftJ dJ lDftD.
En realidad, incluso despus de que un componente se ha cualificado para emplearlo dentro de una arquitectura de aplicacin, es posible que haya conflictos en
una o ms de las reas indicadas. Estos conflictos usualmente se evitan utilizando una
tcnica de adaptacin llamada encubrimiento de componente [BR096]. Cuando un
equipo de software tiene pleno acceso al diseo interno y el cdigo de un componente (con frecuencia no es el caso cuando se utilizan componentes COL) se aplica el
encubrimiento de caja blanca. Al igual que su contraparte en la prueba de software
(captulo 14), el encubrimiento de caja blanca examina los detalles de procesamiento interno del componente y hace modificaciones en el cdigo para eliminar cual-
quier conflicto. El encubrimiento de caja gris se aplica cuando la biblioteca de componentes proporciona un lenguaje de extensin de componente o IPA que permite
eliminar o enmascarar los conflictos. El encubrimiento de caja negra requiere la introduccin de pre y posprocesamiento en la interfaz del componente para eliminar
o enmascarar los conflictos. El equipo de software debe determinar si el esfuerzo requerido para encubrir adecuadamente un componente est justificado o si, en lugar
de ello, debe disearse un componente personalizado (designado para eliminar los
conflictos encontrados).
Composicin de componentes. La tarea de composicin de componente ensambla componentes cualificados, adaptados y diseados con el fin de agregrselos
a la arquitectura establecida para una aplicacin. Esto se logra estableciendo una infraestructura que una los componentes en un sistema operativo. La infraestructura
(usualmente una biblioteca de componentes especializados) proporciona un modelo para coordinar los componentes y los servicios especificas que permiten que los
componentes se coordinen mutuamente y realicen tareas comunes.
Entre los muchos mecanismos que existen para crear una infraestructura eficaz
hay un conjunto de cuatro "ingredientes arquitectnicos" [ADL95] que debe estar
presente para lograr la composicin de componentes:
CAPTULO 30
Qu ingre
dientes se
necesitan para lograr la composl
dn de componen
tes?
889
ten y transfieran datos (por ejemplo, arrastrar y soltar, cortar y pegar). Los mecanismos de intercambio de datos no slo permiten la transferencia de datos humano-software y componente-componente, sino tambin la transferencia entre recursos del sistema (por ejemplo, arrastrar un archivo a un icono de impresora para imprimirlo).
ld:lfrh'i'J
l.o~rntf18cientUr.tlal. COt-
BA se wedt ollreer
enwww.....,.
Modelo de objeto subyacente. El modelo de objeto asegura que los componentes desarrollados en diferentes lenguajes de programacin y que residen en diferentes plataformas pueden ser interoperables. Es decir, los objetos deben ser capaces
de comunicarse a travs de una red. Esto se logra si el modelo de objeto define un
estndar para la interoperabilidad de los componentes.
Puesto que el impacto potencial de la reutilizacin y la ISBC sobre la industria del
softw!-re es enorme, varias grandes compaas y consorcios industriales han propuesto estndares para el software de componentes:
OMG/ CORBA. El Grupo de Gestin de Objetos (OMG, por sus siglas en ingls)
ha publicado una arquitectura comn de distribucin de objetos (CORBA: por sus siglas
en ingls). Un distribuidor de objetos (ORB, por sus siglas en ingls) proporciona una
diversidad de servicios que permiten que los componentes reutilizables (objetos) se
comuniquen con otros componentes, sin importar su ubicacin dentro de un sistema.
COM de Microsoft. Microsoft ha desarrollado un modelo de objetos para componentes (COM, por sus siglas en ingls) que ofrece una especificacin para utilizar
componentes producidos por varias empresas dentro de una sola aplicacin que corra bajo el sistema operativo Windows. El COM incluye dos elementos: interfaces
COM (implementadas como objetos COM) y un conjunto de mecanismos que registra y pasa mensajes entre interfaces COM.
Componentes Sun JavaBeans. El sistema de componentes JavaBeans es una
infraestructura de ISBC porttil e independiente de la plataforma que utiliza y desarrolla empleando el lenguaje de programacin Java. El sistema de componentes JavaBeans incluye un conjunto de herramientas, llamado Kit de Desarrollo Bean (BDK,
Bean Development Kit), que permite a los desarrolladores l) analizar cmo funcionan
los Beans existentes (componentes), 21 personalizar su comportamiento y apariencia, 3) establecer mecanismos para coordinacin y comunicacin, 4) desarrollar
890
PARTE CINCO
Lol%iihM"~
inrolmlJCJII Jll6s re,
Beans personalizados para usarlos en una aplicacin especifica, y 5) probar y evaluar el comportamiento Bean.
...
ciente
ocert
*9:<
heons s,
pti0
l\e(8fl
,.~
,
~l'rl
un
891
.;:..J,p
Arquitectura
CORBA bsica.
Para aprender ms acerca de estos coocepcos vanse las partes 2 y 5 de este libro.
892
tcoNsEJo$
rios temas clave4 que forman una base para el diseo destinado a la reutilizacin.
fuente requerida.
Ahora, considrese un gran depsito de componentes. Cientos de miles de componentes de software reutilizable se hallan en l. Pero, cmo encuentra un ingeniero de software el componente que necesita? Para responder esta pregunta surge otra:
cmo se describen los componentes de software en trminos clasificables y sin ambigedades? slas son preguntas dificiles y todava no se ha desarrollado una respuesta definitiva. En esta seccin se exploran las tendencias actuales que permitirn a los
futuros ingenieros de software navegar entre las bibliotecas de reutilizacin.
30.5. l
En general. se deben realizar preparativos para el DPR como parte de la ingeniera del dominio (seccin 30.3) .
CAPTULO 30
893
894
.;m:p.. .
Indexacin
de vocabularios
Taxonoma de
los mtodos de
Indexacin
[FRA94].
Controlado
Por clases
Descontrolado
Palabra clave
t t
Trminos extrados
del texto
Enumerado
Descriptores
Por facetos
Encabezados
de materia
Trminos no
extrados del texto
L Con sintaxis
[
Sin sintaxis
Diccionario - - - - '
Frakes y Pole
CAPTULO 30
895
n;;+11@ma
.
\
lltlQeimlltoleaI!
de IWSOS atelt de
lSBC se pulMl ~
tmren
tdtp://www.
......H /.
"
[LIN95J.
30,6
EQQNAM16 PI LA
ISBC
Las herramientas expuestas slo representan una muestra de esta categora. En la mayora de los
casos los nombres de las mismas son rr.arras n-grstradas por sus respectivos desarrolladores.
896
PARTE CINCO
f ftlili:ifrh'::1
dad y oportunidad, Jo que debe traducirse en ahorros. Pero, existen datos reales que
apoyen esta intuicin?
siSlemos hilds en .
CDI se peoo,'MCMIIOI
e~ www.sti.an1.
tel11, ';,
>
Muchas circunstancias atenuantes (por ejemplo, dominio de aplicacin, complejidad del problema,
estructura y tamao del equipo, duracin del proyecto, tecnologa aplicada) tienen un profundo impacto sobre la productividad del equipo del proyecto.
897
de los costos asociados con la reutilizacin, Cr, y el costo real del sofl:ware en el momento de la entrega, e ..
El factor C0 se puede determinar al aplicar una o ms de las tcnicas de estimacin estudiadas en el captulo 23 Los costos asociados con la reutilizacin, e,, incluyen
[CHR95J: anlisis y modelado del dominio, desarrollo de arquitectura del dominio,
aumento en la documentacin para facilitar la reutilizacin, soporte y mejora de los
componentes de reutilizacin, regalas y licencias para componentes adquiridos externamente, creacin o adquisicin y operacin de un depsito de reutilizacin, y entrenamiento del personal en diseo y construccin para reutilizacin. Aunque los
costos asociados con el anlisis del dominio (seccin 30.3) y la operacin de un depsito de reutilizacin pueden ser sustanciales, muchos de los otros costos indicados aqu abordan los conflictos que forman parte de una buena prctica de ingeniera
de software, ya sea que la reutilizacin sea o no una prioridad.
+ E.:. + ~ ~ Ew.
898
Eadapt
Eint
Ecalif
El esfuerzo requerido para cualificar, adaptar e integrar PE1 , PE2 y PE3 se determina
al tomar el promedio de los datos histricos recopilados para la cualificacin, adaptacin e integracin de los componentes reutilizables en otras aplicaciones.
CAPTULO 30
899
[ADL95] Adler, R. M., "Emerging Standards for Component Software", en Computer, vol 28, nm.
3, marzo de 1995, pp. 68-77.
[ALL021 Allen, P., "CBD Survey: The State of the Practice", en The cutter Edge, marzo de 2002,
disponible en http://www.cutter.com/research/2002/edge020305.htm1.
[ATKOIJ Atkinson, c., el al., Component-Based Product Une Engineeringwith UML, Addison-Wesley, 2001.
[BAS94] Basili, V. R., L. C. Briand y W. M. Thomas. "Domain Analysis for the Reuse of Software
Oevelopment Experiences", Proc. Of the 19th Annual Software Engineering Workshop, NASAIGSFC, Greenbelt, MD, diciembre de 1994.
[BIN93J Binder, R., "Design for Reuse is far Real", en American Programmer, vol. 6, nm. 8, agosto de 1993, pp. 30-37.
[BR096J Brown, A. W., y K. C. Wallnau, "Engineering of Component-Based Systems", en Component-Based Software Engineering, IEEE Computer Society Press, 1996, pp. 7- 15.
[CHR95J Christensen, s. R., "Software Reuse Initiatives at Lockheed", en CrossTalk, vol. 8, nm.
5, mayo de 1995, pp. 26-31.
[CLE95J Clements, P. c., "From Subroutines to subsystems: Component-Based Software Development'', en American Programmer, vol. 8, nm. 11, noviembre de 1995.
[D0G03J Dogru, A., y M. Tanik, "A Process Model far Component-Oriented Software Engineering", en IEEE Software, vol. 20, nm. 2, marzo-abril 2003, pp. 34-41.
[FISOO] Fischer, B., "Specification-Based Browsing ofSoftware Component Libraries", en]. Automated Software Engineering, vol. 7, nm. 2, 2000, pp. 179-200, disponible en http://ase.arc.nasa.gov/people/fischer/papers/ase-00.html.
[FRA94] Frakes, W. B., y T. P. Pole, "An Empirical Study of Represenlation Methods far Reusable
Software Components", en IEEE Trans. Software Engineering, vol. SE-20, nm. 8, agosto de
1994, pp. 617-630.
[HE101] Heineman, G., y W. Councill (eds.), Component-Based Software Engineering, AddisonWesley, 200 l .
[HEN95] Henry, E., y B. Faller, "Large Scale Industrial Reuse lo Reduce Cost and cycle Time", en
IEEE Software, septiembre de 1995, pp. 47-53.
[HUT88] Hutchinson, J. W., y P. G. Hindley, "A Preliminary Study of Large Scale Software Reuse",
en Software Engineering Joumal, vol. 3, nm. 5, 1988, pp. 208-212.
[LIA931 Liao, H., y Wang, F., "Software Reuse Based on a Large Object-Oriented Library", en ACM
Software Engineering Notes, vol. 18, nm. l, enero de 1993, pp. 74-80.
[LIM94] Lim, W. C., "Effects of Reuse on Quality, Productivity, and Economics", en IEEE Software, septiembre de 1994, pp. 23-30.
[UN95] Linthicum, D. S., "Component Development (a Special Feature)", Application Development Trends, junio de 1995, pp. 57-78.
[LUC01] delucena, Jr., V., "Facet-Based Classification Scheme far Industrial Software Components", 2001, se puede descargar de http://research.microsoft.com/users/cszypers/events/WCOP200 l /Lucena pdf.
[MCM95] McMahon, P. E., "Pattem-Based Architecture: Bridging Software Reuse and Cost Management", en Crosstalk, vol. 8, nm. 3, marzo de 1995, pp. 10-16.
[ORF96] Orfali, R., D. Harkey y J. Edwards, 1he E.ssalllal Distributed Objects Survival Guide, Wiley,
1996.
[PRI93J Prieto-Daz, R. , "lssues and Expcrlcnces n software Reuse", en American Programmer,
vol. 6, nm. 8, agosto de 1994, pp. 6i-.S
900
PARTE CINCO
30.1. Uno de los obstculos clave para la reutilizacin consiste en hacer que los desarrolladores de software consideren la reutilizacin de componentes existentes en lugar de reinventar
unos nuevos (despus de todo, construir cosas es divertido!). Sugerir de tres a cuatro formas
diferentes en que una organizacin de software puede ofrecer incentivos para que los ingenieros de software empleen la reutilizacin. Qu tecnologias deben existir para apoyar el esfuerzo de la reutilizacin?
30.2. Aunque los componentes de software son los "artefactos" reutilizables ms obvios, se
pueden reutilizar muchos otros productos de trabajo producidos como parte de la ingeniera del
software. Considerar los planes de proyecto y las estimaciones de costo. Cmo se pueden reutilizar y cul es el beneficio de hacerlo?
30.3. Investiguese un poco acerca de la ingenieria del dominio y detllese el modelo de proceso esbozado en la figura 30.1. ldentiflquense las tareas que se requieren para el anlisis del dominio y el desarrollo arquitect6nico del software.
30.4. En qu son semejantes las funciones de caracterizacin para dominios de aplicacin y
los esquemas de clasificaci6n de componentes? En qu se diferencian?
30.5. oc::;arrollar un conjunto de caraclerlslicas de dominio para sistemas de informacin que
sean relevantes respecto al procesamiento de datos de estudiantes de una universidad.
30.6. Desarrollar un conjunto de caractersticas de dominio que sean relevantes para un software de procesamiento de textos y publicacin.
30.7. Desarrollar un modelo estructural simple para un dominio de aplicacin que asigne individualmente el instructor o uno con el cual se est familiarizado.
30.8. Qu es un punto de estructura?
30.9. Adquirir i11formacin acerca del ms reciente estndar CORBA, COM o JavaBeans y elaborar un ensayo de tres a cinco pginas que aborde sus principales atributos. Obtener informacin
acerca de una herramienta de distribucin de solicitudes de objetos e ilustrar cmo la herramienta se ajusta al estndar.
30.1 O. Desarrollar una clasificacin enumerada para un dominio de aplicacin que asigne el
instructor o uno con el que se est familiarizado.
30.11. Desarrollar un esquema de clasificacin por facetas para un dominio de aplicacin que
asigne el instructor o uno con el que se est familiarizado.
30.12. Investguese en la bibliografla para obtener datos recientes de calidad y productividad
que apoyen el uso de la 1SBC. Presntense los datos a la clase.
CAPTULO 30
901
En aos recientes se han publicado muchos libros acerca del desarrollo basado en componentes y la reutilizacin de stos. Heineman y COuncill [HEIOll, Brown (Large sea/e Component-Based
Development, Prentice-Hall, 2000), Allen (Realizing e-Business with Components, Addison-Wesley,
2000), Herzum y Sims (Business Component Factory, Wiley, 1999) y Allen, Frost y Yourdon (Component-Based DevelopmentJor Enterprise Systems: Applying the Select Perspective, Cambridge University Press, 1998) cubren todos los aspectos importantes del proceso de !SBC. Apperly y sus
colegas (Service- and Component-Based Development, Addison-Wesley, 2003), Atkinson [ATKOIJ
y Cheesman y Oaniels (UML Components, Addison-Wesley, 2000) examinan la ISBC poniendo especial cuidado en UML.
Leach (SOjtware Reuse: Methods, Models, and Costs, McGraw-Hill, 1997) proporciona un anlisis detallado de los conflictos de costo asociados con la ISBC y la reutilizacin. Poulin (Measuring Software Reuse: Principies, Practices, and Economic Mode/s, Addison-Wesley, 1996) sugieren
algunos mtodos cuantitativos para valorar los beneficios de la reutilizacin de software.
En aos recientes se han publicado docenas de libros que describen los estndares basados
en componentes de la industria. En ellos se abordan las funciones internas de los estndares
mismos, pero tambin consideran muchos tpicos importantes de la JSBC. A continuacin se
presenta una muestra de los tres estndares estudiados en este captulo:
CORBA
Box, D., K. Brown, T. Ewald y C. Sells, Ejfective COM: 50 way.s to lmprove Your COM- and MTSBased Applications, Addison-Wesley, 1999.
Gordon, A., The COM and COM+ Programming Primer, Prentice-Hall, 2000.
Kirtland, M., Designing Component-Based Applications, Microsoft Press, 1999.
Tapadiya, P., COM+ Programming, Prentice-Hall, 2000.
Muchas organizaciones aplican una combinacin de estndares de componentes. Los libros de
Geraghty y sus colegas (COM-CORBA Interoperabi/ily, Prentice-Hall, 1999), Pritchard (COM and
CORBA Side by Side: Architectures, Strategies, and lmplementations, Addison-Wesley, 1999), y Rosen y sus colegas (Integrating CORBA y COM Applications, Wiley, 1999) consideran los conflictos
asociados con el uso tanto de CORBA como de COM como la base para el desarrollo basado en
componentes.
JavaBeans
http:// www.mhhe.com/pressman.
CAPTULO
CONCEPTOS
CLAVE
anlisis de
Inventarlos .909
de dejar de pavimentar los senderos para vac~. En lugar de incrstqr procesos anticuados en silicio y software, debemos eliminarlos y comenzar de
Es el momento
Grq11itectra$
c/s ........ .920
Grt(Ult,cturos
00 .........921
economa .....923
modernas tecnologiclS de la informacin para redisear radicalmente nuestros procesos de negocios con la finalidad de aicanzar mejoras ra<lJcales .en su d,esempeo,
lngenierla
Cualquier compaia opera de acuerdo con una gran cantidad de reglas desarticuladas... La ringenieria luch~ por separ,arse de las viejas reglas acerca de; cmo ot-
dired .......918
llgemetQ
modelo de
procesQ IIPN ,903
promo de
reingeniera .908
,y.
,;;t~
,, ,._,.
reestruduradn 916
;1:
Al igual que todas las revoluciones, el llamado a las armas de Hammer gener
cambios positivos y negativos. Durante et decento de 1990, algunas compaas
aplicaron un esfuerzo legitimo en la realizacin de rengenitlrla, y losresultados
las condujeron a mejorar su competitMdad. Otras se apoyaron exclusivamente
en el rectimens!onamiento y la S\lbcontratacin (en lugar de la reingeniera) para
mejorar sus lneas base; po lo lrtt, cQo, frecuencia resultaron organizaciones
' con poco ptericial para tm fe(:ii:ntento r-uturo [DEM9$},
Duraqte esta prjmera dcada del siglo xx1, la promocin exagerada de la .reinseijfod.i
d~caao, R~ro el" prc~o en ;i CQ[J~ina en compah~s grandes y
pequeas. Los nexos entre la reingenied~ de neg9cos e ipgenirla del software
"se encuentran en una revisin de sistema;
ha
CAPTULO 31
~,c&v1
REINGENIERA
903
&'
ceso de negocios para lograr resultados de vanguardia". Pero, cmo se lleva a cabo
la bsqueda y cmo se logra la implementacin? Ms importante an, cmo se
puede garantizar que el "cambio radical" sugerido conducir a "resultados de vanguardia" en lugar de caos organizacional?
1 La explosin de aplicaciones y sistemas basados en Web estudiados en la parte 3 de este libro es un
indicio de esta tendencia.
904
PARTE CINCO
........
Enfr1111ar el mcilana con lo ideo de emplear los mtodos de ayer es visualizar la vida como una pcrimls!
31 .1.1
Procesos de negocios
Como ingeniero de
software, su lTobajo lo
desempeo en lo base
de estrJ ;erorqu{o. Sin
embargo, asegrese
de que alguien ho
pensado setK1111Mfe
MI fM niv/os sup,riores. Si esto no ha
ocvmdo, su lroboJO
esro en nesgo.
negocio.
cada proceso de negocio tiene un cliente definido: una persona o grupo que recibe el resultado (por ejemplo, una idea, un informe, un diseo, un producto). Adems,
los procesos de negocios traspasan las fronteras de la organizacin. Esto requiere
que diferentes grupos de organizaciones participen en las "tareas lgicamente relacionadas" que definen el proceso.
En el captulo 6 se indic que todo sistema es en realidad una jerarquia de subsistemas. Un negocio no es la excepcin. cada sistema de negocio (tambin llamado una funcin negocio) est compuesto de uno o ms procesos de negocio, y a cada
proceso de negocio lo define un conjunto de subprocesos.
La RPN se puede aplicar en cualquier nivel de la jerarqua, pero conforme se
ampla su mbito (es decir, conforme uno se mueve hacia arriba en la jerarqula) los riesgos asociados con ello crecen sustancialmente. Por esta razn, la mayoria de los
........
wwwJiirttt.aa/
Definicin del negocio. Las metas del negocio se identifican denle el contexto
de cuatro controladores clave: reduccin de costo, reduccin de tiempos, mejora de
la calidad y desarrollo y fortalecimiento del personal. Es posible definir las metas al
nivel del negocio o respecto de un componente especfico del negocio.
Identificacin del proceso. Se identifican los procesos cruciales para lograr las
metas precisadas en la definicin del negocio. Luego podra clasificarse de acuerdo
CAPTULO 31
REINGENJEruA
905
con su importancia, necesidad de cambio o en cualquier otra forma que sea adecuada para la actividad de reingeniera.
Evaluacin del proceso. El proceso existente se analiza y mide exhaustivamente. Se identifican las tareas del proceso; se anotan los costos y el tiempo que consumen las tareas del proceso; y se aslan los problemas de calidad y desempeo.
Especificacin y diseo del proceso. Con base en la retroalimentacin obtenida durante las primeras tres actividades de la RPN, se preparan casos de uso (captulo 7) para cada proceso que ser rediseado. En del contexto de la RPN los casos
de uso identifican un escenario que entrega cierto resultado a un cliente. Con el cas de
uso como la especificacin del proceso se disea un nuevo conjunto de tareas para
el proceso.
Elaboracin de prototipos. Un proceso de negocio rediseado debe convertirse en prototipo antes de que sea integrado por completo en el negocio. Esta actividad "prueba" el proceso de modo que puedan llevarse a cabo refinamientos.
Refinamiento y particularizacin. Con base en la retroalimentacin del prototipo, el proceso de negocio se refina y luego se particulariza dentro de un sistema
de negocio.
En ocasiones, estas actividades de RPN se utilizan junto con las herramientas de
anlisis de flujo de trabajo. La finalidad de estas herramientas es elaborar un modelo de flujo de trabajo prctico, esfuerzo encaminado a analizar mejor los procesos
existentes. Adems, para implementar las primeras cuatro actividades descritas en
el modelo de proceso se pueden aplicar las tcnicas de modelado usualmente asociadas con las actividades de ingenieria de procesos de negocio (captulo 6) .
ifalP.fih
Modelo de RPN.
Definicin del
negocio
Refinamiento e
instonciocin
(personolizocin)
Eloborocin de
prototipos
Especilicocin
y diseo de
procesos
ldentificocin
de procesos
E-.oluocin de
procesos
906
PARTE CIN CO
TEMAS AVANZADOS
"
Herramientas representativas 2
de proceso.
TI).
Workllow iools, desarrollados por MetaSoftwore
(www.metosoftwore.com), incorporo un conjunto de
herramientas poro modelado, simulacin y
colendorizocin del Rujo de trabajo.
Uno listo til de vnculos o herramientas de RPN se puede
encontrar en http:/ /www.donold
firesmith.com/Components/Produc81'$/Tools/BusinessProce
ssReengineeringTools.html.
Las herramientas expuestas el autor no las respalda; slo representan una muestra de las herramientas incluidas en esta categora. En la mayora de los casos, los nombres de las herramientas
son marcas registradas por sus respectivos desarrolladores.
CAPTULO 31
907
REINGENJERA
Otra razn respecto del problema del mantenimiento del software es la movilidad
del personal. Es probable que el equipo (o persona) de software que realiz el trabajo original ya no est. Peor an, las generaciones subsecuentes de personal han
modificado el sistema y lo han daado. En la actualidad, tal vez no haya nadie que
tenga algn conocimiento directo del sistema heredado.
Como se indic en el captulo 27, la naturaleza ubicua del cambio subyace en
todo el trabajo de software. El cambio es inevitable cuando se construyen sistemas
basados en computadora; en consecuencia, se deben desarrollar mecanismos para
evaluar, controlar y efectuar modificaciones.
i.a fedlidad de mantenimiento de los programas y lo romprensibilidod de los programas son conceptos patalelcis:
IIIIIIIS mOs cfifkil sea comprender un progromo, ms dificil ser su montenimienlo."
GeraWlerns
Despus de leer los prrafos anteriores un lector podra protestar: "Pero yo no
paso el 60 por ciento de mi tiempo componiendo errores en los programas que desarrollo". Desde luego, el mantenimiento del software es mucho ms que "componer errores". Es posible definir el mantenimiento describiendo cuatro actividades
[SWA76J que se realizan despus de que un programa es liberado para su utilizacin.
908
PARTE CINCO
~
~~
clilv1
El mantenimiento del
bi ii HN','Ha
Uno excelenre fuente
de !llfommn lkettO
de lo reingeniero del
softworese pede
encontrru ea
La reingeniera requiere tiempo, cuesta cantidades significativas de dinero y absorbe recursos que de otro modo se ocuparan en problemas inmediatos. Por todas
estas razones la reingeniera no se logra en unos cuantos meses, ni siquiera en unos
que tal vez tenga que reconstruirse por completo. Cmo se precederla?
CAPTULO 31
REINGENIERA
909
ifrHfif
Modelo de
proceso de la
reingeniera del
software.
Ingeniera
avanzado
Reestructuracin
de los datos
inverso
910
PARTE CINCO
floNsEJ05'
Si el tiempo y los
recursos eslOsean,
puede considerar Jo
aplicacin del principio
de Poreto al software
que ser sometido o
ingeniera. Aplique el
proceso de reingenierla ol 20 por cien/o
del software que
explico el 80 por
ciento de los
problemas.
niera.
Reestructuracin de documentos. La documentacin dbil es la marca de muchos sistemas heredados. Pero qu se hace acerca de ello? Cules son las opciones?
1. Crear documentacin consume muchsimo tiempo. Si el sistema funciona vivir
con lo que se tenga. En algunos casos ste es el enfoque correcto. No es posible recrear documentacin para cientos de programas de computadora. Si un
programa es relativamente esttico est llegando al final de su vida til, por lo
que es improbable que experimente un cambio significativo, djelo ser!
2. La. documentacin debe actualizarse, pero se tienen recursos limitados. Se utilizar un enfoque de "documentar cuando se toque". Tal vez sea innecesario
volver a documentar por completo la aplicacin. En cambio, se documentan
completamente aquellas porciones del sistema que en la actualidad experimentan cambios. Con el tiempo evolucionar una coleccin de documentacin til y relevante.
3 . El sistema es crucial para el negocio y debe volver a documentarse por completo.
CAPTULO 31
Un onlenomieillo de
ream J111 lo
(Oll1irlod de '1'
--~pullde
............
'""""''
citenre11
llllilscN/.
REINGEN!ERA
911
Ingenieria directa. En un mundo ideal, las aplicaciones se reconstruiran empleando un "motor de reingenieria" automatizado. El programa antiguo sera insertado
en el motor, analizado, reestructurado y luego regenerado en una forma que exhibiese los mejores aspectos de la calidad del software. A corto plazo es improbable
que tal "motor" aparezca, pero las empresas han introducido herramientas que
mejoran un limitado subconjunto de dichas capacidades que aborden dominios de
aplcacin especficos (por ejemplo , las apbcaciones que se implementan mediante
912
una lista fuente sin documentar y diseado casualmente, y del otro extremo sale una
descripcin (y toda la documentacin) completa del diseo para el programa de
computadora. Desdichadamente, la ranura mgica no existe. La ingeniera inversa
puede obtener informacin de diseo a partir del cdigo fuente, pero el grado de abstraccin, la completud de la documentacin, el grado en el que las herramientas y
un analista humano trabajan en conjunto, y la direcconalidad del proceso son enormemente variables.
El grado de abstraccin de un proceso de ingeniera inversa y las herramientas uti-
se ofrece en un grado de abstraccin. En la mayora de los casos, la integridad disminuye conforme el grado de abstraccin aumenta. Por ejemplo, dada una lista del
cdigo fuente, es relativamente sencillo desarrollar una representacin completa
del diseo del procedimiento. Tambin se pueden derivar representaciones sencillas
de diseo, pero es mucho ms dificil desarrollar un conjunto completo de diagramas
o modelos UML.
La completud mejora en proporcin directa con la cantidad de anlisis que efecta quien realiza la ingeniera inversa. La interactividad se refiere al grado en el que
el ser humano est "integrado" con las herramientas automatizadas para crear un
proceso de ingeniera inversa efectivo. En la mayora de los casos, conforme aumenta el grado de abstraccin la interactividad debe aumentar o la completud sufrir.
CAPnJLO 31 REINGENIERiA
913
ifaiUfii
Proceso de
ingerera
inversa.
~
~
ExlrOCQn d
ab$'1CICC1~s
Especificaci6n inicial
RefinomienlO y
$1MpljfkaciQn
--~,
c&v1
Especificacin final
31.3. l
4 El cdigo se reestructura empleando un motor de rttStructuracin, una herramienta que reestructura cdigo fuente.
914
PARTE CINCO
como parte de un esfuerzo global de reingeniera. En el nivel del sistema las estructuras globales de datos (por ejemplo, archivos, bases de datos) con frecuencia se
someten a reingenieria para ajustarlos con los nuevos paradigmas de gestin de
bases de datos (por ejemplo, el movimiento desde los archivos planos hacia los sistemas de bases de datos relacionales u orientados a objetos) . La ingeniera inversa
de las actuales estructuras globales de datos establece el escenario para la introduccin de una nueva base de datos que abarque todo el sistema.
Los compromisos
aparentemente insignificantes en los
estrocturos de daros
pueden conducir o
problemas potencio/mente cafl1str6ficos en
aos futuros.
Considere como
e;emplo el problema
Y2K.
CAPiTuLO 31
915
REINGENIERA
subfuncin y representa una abstraccin de procedimiento definida. Para cada componente se desarrolla una narrativa de procesamiento. En algunas situaciones ya
existen especificaciones del sistema, el programa y los componentes. Cuando ste
es el caso, las especificaciones se revisan para verificar si concuerdan con el cdigo
existente.5
:"frdde a pasi6il por la (01'11!)1'911Si, os como existe uno por lo m!.icd. Dkha pasin es mnomil lll
,,~,..mtls tarcll $1 pilllle en la mayora de los personas."
wllilios,
Las cosas se complican ms cuando se considera el cdigo dentro de un componente. El ingeniero busca las secciones de cdigo que representen patrones de procedimiento genricos. Casi en cada componente una seccin del cdigo prepara los
datos para el procesamiento (dentro del mdulo), una seccin diferente de cdigo
realiza el procesamiento y otra seccin del cdigo prepara los resultados del procesamiento para exportarlos desde el componente. Dentro de cada una de estas secciones se pueden encontrar pequeos patrones; por ejemplo, la validacin de los
datos y la verificacin de enlaces con frecuencia ocurre dentro de la seccin de cdigo que prepara los datos para el procesamiento.
En sistemas grandes la ingeniera inversa, por lo general, se logra utilizando un
enfoque semiautomatizado. Las herramientas automatizadas se utilizan para ayudar
al ingeniero de software a comprender la semntica del cdigo existente. Entonces
la salida de este proceso pasa a la reestructuracin y a las herramientas de ingeniera avanzada para completar el proceso de reingeniera.
31.3.3 Ingeniera inversa de interfaces de usuario
Las IGU sofisticadas ahora son indispensables en productos basados en computadora y en sistemas de todo tipo. En consecuencia, desarrollar de nuevo las interfaces
de usuario se ha vuelto uno de los tipos ms comunes de actividad de reingeniera.
Pero antes de que una interfaz de usuario se pueda reconstruir deber realizarse una
actividad de ingeniera inversa.
Entender por completo una interfaz de usuario existente requiere especificar la
estructura y el comportamiento de la interfaz. Merlo y sus colegas [MER93l sugieren
tres preguntas bsicas que se deben responder conforme comienza la ingeniera
inversa de la IGU:
Cules son las acciones bsicas (por ejemplo, presiones de tecla o clics de
ratn) que debe procesar la interfaz?
Con frecuencia, las especificaciones escntas en las primeras etapas en la historia de vida de un programa nunca se actualizan. Conforme los cammos se realizan, el cdigo ya no concuerda ms con
las especificaciones.
916
Cmo
entender las
fun<iunes de una
interfaz de usuario existente?
Qu se entiende por "reemplazo" o, ms exactamente, qu concepto de equivalencia de interfaces es relevante en este caso?
La notacin de modelado de comportamiento (captulo 8) puede ofrecer un medio
para desarrollar respuestas a las primeras dos preguntas. Gran parte de la informacin necesaria para crear un modelo de comportamiento se puede obtener observando la manifestacin externa de la interfaz existente. Pero la informacin adicional
necesaria para crear el modelo de comportamiento se debe extraer del cdigo.
Es importante sealar que una GUI de reemplazo tal vez no refleje exactamente
la interfaz antigua (de hecho, quiz sea radicalmente diferente). Con frecuencia vale la
pena desarrollar nuevas metforas de interaccin. Por ejemplo, una GUI antigua
solicita que un usuario proporcione un factor de escala (que vara desde 1 hasta l O)
para encoger o ampliar una imagen grfica. Una GUI sometida a reingenieria puede
utilizar una barra de deslizamiento y un ratn para realizar la misma funcin.
~ IngenJera inversa
~ Objetivo: Ayudar o los ingenieros de software
o comprender lo estructuro de diseo interno de
los programas complejos.
Herramientas representativas6
lmo9ix 4D, desorrollodo por lmogix (www.imogix.com),
Moyudo o los desarrolladores de software o comprender
Understand,
dad de adecuarlos para futuros cambios. En general, la reestructuracin no modifica la arquitectura global del programa. Tiende a enfocarse sobre los detalles de diseo
de los mdulos individuales y en las estructuras de datos locales definidos dentro de
los mdulos. Si el trabajo de reestructuracin se extiende ms all de las fronteras
6
Las herramientas expuestas el autor no las respalda, slo representan una muestra de las herramientas incluidas en esta categora. En la mayora de los casos, los nombres de las herramientas
son marcas registradas por sus respectivos desarrolladores.
CAPTULO 31
REINGENIERIA
917
slida, aun cuando el interior tcnico necesite trabajarse. Se inicia cuando grandes
partes del software son funcionales y slo un subconjunto de los componentes y
datos necesitan una modificacin extensa. 7
31.4.1
('0NS1Jo9"
Aunque la reestruc/lJrocin del cdigo
puede aliviar inmediatomente los
problemas asociados
con lo depuracin o
los cambios
pequeos, esto no es
reingenierfo. El
beneficio real se logro
slo cuando se rees
tructuran los datos y
lo arquiteclUro.
misma funcin que el programa original, pero con mayor calidad. En general, las tcnicas de reestructuracin de cdigo (por ejemplo, tcnicas de simplificacin lgica
de Warnier [WAR74]) modelan la lgica del programa utilizando lgebra booleana y
luego aplican una serie de reglas de transformacin que producen lgica reestructurada. El objetivo es tomar el "tazn de espagueti" de cdigo y derivar un diseo de
procedimiento que concuerde con la filosofia de la programacin estructurada (captulo 11).
Tambin se han propuesto otras tcnicas de reestructuracin para utilizarlas con
las herramientas de rengenieria. Un diagrama de intercambio de recursos correlaciona cada mdulo de programa y los recursos (tipos de datos, procedimientos y
variables) que se intercambian entre ellos y otros mdulos. Mediante la creacin de
representaciones del flujo de recursos se puede reestructurar la arquitectura del programa para lograr mnimos acoplamientos entre mdulos.
7 A veces es dificil distinguir entre reestructuracin extensa y volver a desarrollar. Ambos son reingeniera.
PARTE CINCO
918
Cuando la reestructuracin rebasa la estandarizacin y la nacionalizacin se realizan modificaciones fisicas a las estructuras de datos existentes para lograr que el
diseo de los datos sea ms efectivo. Esto puede significar una traduccin de un formato de archivo a otro o, en algunos casos, la traduccin desde un tipo de base de
datos a otro.
~ Reestructuractn de software
liii.I
Un programa con flujo de control -el equivalente grfico de un tazn de espagueti, con
"mdulos" que tienen 2 000 enunciados de longitud, con pocas lneas significativas
de comentarios en los 290 000 enunciados fuente y ninguna otra documentacin, se
debe modificar para que se ajuste a los cambiantes requerimientos de los usuarios.
Se tienen las siguientes opciones:
Qu opciones existen
cuando se enfren
ta un programa
deficientemente
diseado e implementado?
1. Se puede trabajar modificacin tras modificacin, luchando con el diseo implcito y el cdigo fuente para implementar los cambios necesarios.
2. Se puede intentar comprender el extenso funcionamiento interno del programa con el propsito de realizar modificaciones de manera ms eficiente.
3. Se puede redisear, recodificar y probar aquellas porciones del software que
Las herramientas expuestas slo representan una muestra de esta categora. En la mayoria de los
casos los nombres de las mismas son marcas registradas por sus respectivos desarrolladores.
CAPTULO 3 1 REINGENJERiA
919
Este enfoque de mantenimiento preventivo lo introdujo Miller [MJL8 l l con el nombre de retrofit estructurado. Este concepto se define como "la aplicacin de las metodologas de hoy a los sistemas del ayer para apoyar los requisitos del maana".
A primera vista, la sugerencia de que se desarrolle de nuevo un gran programa
cuando ya existe una versin operativa puede parecer bastante extravagante. Antes
de emitir un juicio, considrense los puntos siguientes:
1. El costo de mantener una linea de cdigo fuente tal vez oscile entre 20 y 40
La reingenierio es muy
3 . Puesto que ya existe un prototipo del software, el desarrollo de la productividad debe ser mucho mayor que el promedio.
4 . El usuario ahora tiene experiencia con el software. En consecuencia, los nuevos requisitos y la direccin del cambio pueden afirmarse con mayor facilidad.
5 . Las herramientas automatizadas para reingenieria facilitarn algunas partes
del trabajo.
El trmino
entre las
920
PARTE CINCO
31.5. l
Durante las dcadas pasadas muchas aplicaciones para computadora central se han
sometido a reingeniera para adaptarlas a arquitecturas cliente/servidor (incluso
WebApps). En esencia, los recursos de cmputo centralizados (que incluyen software) se distribuyen entre muchas plataformas cliente. Aunque se pueden disear
varios entornos distribuidos diferentes, la aplicacin tpica de computadora central
que se somete a reingeniera en una arquitectura cliente/servidor tiene las siguientes caractersticas:
La funcionalidad de la aplicacin migra hacia cada computadora cliente .
En algunos casos, lo
migracin hacia lo
arquitectura clienteservidor no debe
enfocarse como rei11geniero, sino como
un nuevo esfuerzo de
desarrollo. La reingeniero ingreso al
cuadro slo cuando lo
funcionalidad especf
fa del sistema
1111~ se integrar
en 6, /klel'!l orquitec-
lisis del entorno de negocios que incluye la computadora central existente. Se pueden identificar tres capas de abstraccin. La capa de base de datos pone los cimientos
de una arquitectura cliente/servidor y gestiona las transacciones y consultas desde
aplicaciones cliente. Aunque dichas transacciones y consultas se deben controlar
dentro del contexto de un conjunto de reglas de negocios (definidas mediante un
proceso de negocio existente o sometido a reingeniera). Las aplicaciones cliente
ofrecen la funcionalidad deseada para la comunidad de usuarios.
Las funciones del sistema de gestin de bases de datos existente y la arquitectura de datos de la base de datos existente deben someterse a ingeniera inversa como
precursores del rediseo de la capa de base de datos. En algunos casos se crea un
nuevo modelo de datos (captulo 8). En cada caso la base de datos cliente/servidor
se somete a reingeniera para garantizar que las transacciones se ejecutan en forma
CAPTULO 31
REJNGENIERA
92 1
consistente, que todas Jas actualizaciones las realizan slo usuarios autorizados,
que las reglas centrales del negocio se refuerzan (por ejemplo. antes de que se borre
el registro de una empresa el servidor se asegura de que no haya cuentas por pagar,
contratos o comunicaciones relacionados con dicha empresa), que las consultas se
pueden ajustar eficientemente y que se ha establecido una capacidad completa de
archivado.
La capa de reglas de negocios representa el sofhvare que reside tanto en el cliente como en el servidor. Este software realiza tareas de control y coordinacin para
garantizar que las transacciones y consultas entre la aplicacin cliente y la base de
datos se ajustan al proceso de negocios establecido.
La capa de aplicaciones cliente implementa funciones de negocios que requieren
grupos especficos de usuarios finales. En muchas instancias, una aplicacin de
computadora central se segmenta en varias aplicaciones de escritorio ms pequeas
y sometidas a reingeniera. La comunicacin entre las aplicaciones de escritorio
(cuando es necesario) se controla mediante la capa de reglas de negocios.
objetos utiliza muchas de las mismas tcnicas estudiadas en la parte 2 de este libro.
Primero, el software existente se somete a ingeniera inversa de modo que sea posible crear modelos de datos. funcionales y de comportamiento apropiados. Si el sistema de reingeniera ampla la funcionalidad o el comportamiento de la aplicacin
original, se crean casos de uso {captuJos 7 y 8). Luego los modelos de datos creados
durante la ingeniera inversa se utilizan junto con el modelado CRC (captulo 8) para
establecer la base con que se definirn las clases. Enseguida se definen las jerarquas
de clases, los modelos de relacin de objetos, los modelos de comportamiento de
objetos y los subsistemas y entonces comienza el diseo orientado a objetos.
Conforme la ingeniera directa orientada a objetos progresa desde el anlisis
hasta el diseo se puede invocar un modelo de proceso ISBC {captulo 30). Si la aplicacin antigua se encuentra en un dominio que ya ocupan muchas aplicaciones
orientadas a objetos, es probable que haya una buena biblioteca de componentes y
que se pueda utilizar durante la ingeniera directa.
PARTE CIN CO
En aquellas clases que daban construirse desde el principio tal vez sea posible
reutilizar algoritmos y estructuras de datos de la aplicacin convencional existente.
Sin embargo, quiz sea preciso disearlos de nuevo para ajustarlos a la arquitectura orientada a objetos.
tc0Nsuo9'
Qu pasos se deben
seguir poro someter a
reingeniero uno
intenaz de usuorio?
1. Comprender la interfaz original y los datos que se trasladan entre ella y el resto de
la aplicacin. La finalidad es entender cmo otros elementos de un programa
interactan con el cdigo existente que implementa la interfaz. Si se desarrollar una nueva GUI, los datos que fluyan entre sta y el programa restante
deben ser consistentes con los datos que actualmente fluyen entre la interfaz
basada en caracteres y el programa.
2. Remodelar el comportamiento implcito en la interfaz existente en una serie de
abstracc10nes que tengan sentido en el contexto de una GU!. Aunque el modo de
t\i-il i:ilii:W)
Un monool de l1Il5 de
300 pgmos ocerct1 de
los miones de
reilgeme!lo
FAMOOS ESPRIT) se
cf,/~scg/
Aldm/t-s/
patttns/Wex3.
......
4. Construir e integrar la nueva GUI. La existencia de bibliotecas de clases y herramientas automatizadas puede reducir significativamente el trabajo requerido
para construir la GUI. Sin embargo, la integracin con el software de la aplicacin existente puede requerir ms tiempo. Debe tenerse cuidado de garantizar
que la GUI no propagar efectos colaterales adversos en el resto de la aplicacin.
"Puede pagar poco dinero ohoro, opuede pagar mucho dinero ms adelante:
Anuncio de taller me<nko que sugiere un ateste
CAPTULO 31
923
REINGENIERiA
En un mundo perfecto, cualquier programa al que no se le pudiera dar mantenimiento sera retirado inmediatamente, y sera sustituido por aplicaciones de mayor
calidad con reingeniera desarrollada empleando modernas prcticas de ingeniera
del software. Sin embargo, se vive en un mundo de recursos limitados. La reingeniera demanda recursos que pueden utilizarse para otros propsitos del negocio. En
consecuencia, antes de que una organizacin intente someter a reingeniera una
aplicacin existente, debe realizar un anlisis costo-beneficio.
Sneed [SNE95J ha propuesto un modelo de anlisis costo-beneficio para la reingeniera. Se definen nueve parmetros:
P1
Con la utilizacin de los costos presentados en las ecuaciones (31 - 1) y (31 -2) el
beneficio global de la reingeniera se puede calcular como
costo beneficio
= Creing -
Cmant
(31-3)
PARTE CINCO
tuar los cambios para mejorar la competitividad en alguna rea del negocio. En el
mbito del software, la reingeniera examina los sistemas y aplicaciones de informacin con la finalidad de reestructurarlos o reconstruirlos de modo que muestren
mayor calidad.
La reingeniera de procesos de negocio (RPN) define metas del negocio, identifica
y evala los procesos de negocios existentes (en el contexto de metas definidas),
especifica y disea procesos revisados, y elabora prototipos, los refina y particulariza dentro de un negocio. La RPN tiene un objetivo que va ms all del software. Su
resultado con frecuencia es la definicin de las formas en las cuales las tecnologas
de la informacin pueden apoyar mejor a los negocios.
La reingeniera de software comprende una serie de actividades que incluyen
anlisis de inventario, reestructuracin de documentos, ingeniera inversa, reestructuracin de programas y datos, e ingeniera directa. La finalidad de estas actividades
es crear versiones de programas existentes que sean de mayor calidad y tengan
mayor facilidad de mantenimiento (programas que sern viables ya muy avanzado
el siglo xxl).
statu quo, esto es, el costo asociado con el soporte y el mantenimiento actuales de
una aplicacin existente, se compara con los costos proyectados de la reingeniera y
la reduccin resultante en los costos de mantenimiento. En casi todos los casos en
los que un programa tenga una vida larga y en la actualidad muestre escasa facilidad de mantenimiento, la reingeniera representa una estrategia de negocios efectiva en cuanto al costo.
,. HltJRPJQJAS ..
!CAN72J Canning, R., "The Maintenance 'Iceberg'", en EDPAnalyzer, vol. 10, nm. 10, octubre
de 1972.
(CAS88J "Case Tools for Reverse Engineering", en CASE Outlook, CASE Consulting Group, vol 2,
nm. 2, 1988, pp. 1- 15.
[CHI90) Chikofsky, E. J. y J. H. Cross, 11, "Reverse Engineering and Design Recovery: A
TaxonomY', en IEEE Software, enero de 1990, pp. 13-1 7.
[COUOO] Coulouris, G., J. Dollimore y T. Kindberg, Distributed Systems: Concepts and Design, 3a.
ed., Addison-Wesley, 2000.
[DAV90J Davenport, T. H. y J. E. Young, "The New Industrial Engineering: lnformation
Technology and Business Process Redesign", en Sloan managementReviei-v, verano de 1990,
pp. 11-27.
CAPTULO 31
REINGENIERA
925
[DEM95J DeMarco, T., "Lean and Mean", en IEEE Software, noviembre de 1995, pp. l 01-102.
(HAM90J Hammer, M., "Reengineer Work: Don't Automate, Obliterate", en Harvard Business
Review, julio-agosto de 1990, pp. 104-112.
[HAN93] Manna, M., "Maintenance Burden Begging for a Remedy", en Datamation, abril de
1993, pp. 53-63.
UAY94J Jaychandra, V., Re-engineering the Networked Enterprise, McGraw-Hill, 1994.
[MER931 Merlo, E. et al., "Reverse Engineering of user Interfaces", Proc. Working Conference on
Reverse Engineering, IEEE, Baltimore, mayo de 1993, pp. 171-178.
[MER95J Merlo, E. et al., "Reengineering User Interfaces", en IEEE Sojhvare, enero de 1995, pp.
64-73.
[MlLSl] Miller, J., en Techniques of Program and System Maintenance, (G. Parikh, ed.) Winthrop
Publishers, 1981.
f0RF991 Orfali, R., D. Harkey y J. Edwards, Client/Server Suvival Guide, 3a. ed., Wiley, 1999.
[OSB90] Osbome, W. M. y E. J. Chikofsky, "Fitting Pieces to the Maintenance Puzzle", en IEEE
software, enero de 1990, pp. 10-11.
(PRE94J Premerlani, W. J. y M. R. Blaha, "An Approach for Reverse Engineering of Relational
Databases", en CACM, vol. 37, nm. 5, mayo de 1994, pp. 42-49.
[RIC89) Ricketts, J. A., J. C. DelMonaco y M. W. Weeks, "Data Reengineering for Application
Systems", Proc. Conf SoftwareMaintenance-1989, IEEE, 1989, pp. 174-179.
[SNE951 Sneed, H., "Planning the Reengineering of Legacy Systems", en IEEE Software, enero de
1995, pp. 24-25.
[STE93J Stewart, T. A., "Reengineering: The Hot New Managing Too!", en Fortune, 23 de agosto
de 1993, pp. 41-48.
[SWA 76) Swanson, E. B., "The Dimensions of Maintenance", Proc. Second Intl. Conf Sojhvare
Engineerng, IEEE, octubre de 1976, pp. 492-497.
[VAN02] Van Steen, M. y A. Tanenbaum, Distributed Systems: Principies and Paradigms,
Prentice-hall, 2002.
[WAR74J Wamier,J. D., LogcalConstruction ofPrograms, Van Nostrand-Reinhold, 1974.
31.1. Considerar cualquier empleo realizado en los ltimos cinco aos. Describir el proceso de
negocio en el que se particip. Emplear el modelo de RPN descrito en la seccin 31. l.3 para
recomendar cambios al proceso con la finalidad de hacerlo ms eficiente.
31.2. Investigar un poco acerca de la eficacia de la reingenieria de procesos del negocio.
Presentar argumentos en favor y en contra de este enfoque.
31.3. El instructor seleccionar uno de los programas que todos en la clase han desarrollado
durante este curso. Intercambie su programa en forma aleatoria con alguien ms en la clase.
No explique u ofrezca un "paseo" por el programa. Ahora, implemente una mejora (que haya
especificado el instructor) en el programa que ha recibido.
a) Realice todas las tareas de ingeniera del software, incluso una breve prueba manual
pruebas.
e) Describa sus experiencias en clase.
31.4. Explorar la lista de verificacin del anlisis de inventario presentado en el sitio Web SEP e
intentar el desarrollo de un sistema cuantitativo de calficacin de software que pudiese aplicarse
a programas existentes con la finalidad de elegir programas candidatos para reingeniera. El
sistema debe rebasar el anlisis presentado en la seccin 31.6.
31.5. Sugerir opciones a la documentacin por escrito o electrnica convencional que
pudiesen servir como base para la reestructuracin de documentos. (Sugerencia: pinsese en
las nuevas tecnologas descriptivas que se pudieran usar para comunicar el propsito del
software.)
926
PARTE CINCO
31.6. Algunas personas creen que la tecnologa de inteligencia artificial aumentar el grado
de abstraccin del proceso de ingeniera inversa. Realizar algo de investigacin acerca de esta
materia (es decir, el uso de IA en la ingeniera inversa) y escribir un breve ensayo que contenga
una opinin acerca de este punto.
31. 7. Por qu la completud es dificil de lograr conforme aumenta el grado de abstraccin?
31.8. Por qu debe aumentar la interactividad si la completud aumenta?
31.9. Con base en la informacin obtenida va Internet, presente a su clase las caractersticas
de tres herramientas de ingeniera inversa.
31. 10. Existe una sutil diferencia entre reestructuracin e ingeniera directa. Cul es?
31.11. Investigue la bibliografia o fuentes de Internet para encontrar uno o ms escritos que
borden estudios de caso de reingeniera de computadora central a cliente-servidor. Presente un
resumen.
31.12. Cmo determinara de P4 a P7 en el modelo costo-beneficio presentado en la seccin 31.6?
Al igual que muchos temas apasionantes en la comunidad de negocios, las exageraciones que
rodeaban la reingeniera de procesos de negocio han dado paso a una visin ms pragmtica
de la materia. Hammer y Champy (Reengineering the Corporation, HarperBusiness, edicin revisada, 2001) precipit el inters temprano con el xito de ventas de su libro. Ms tarde, Hammer
(Beyond Reengineerng: How the Processed-Centered Organizaton Is Changing Our Work and our
Uves, HarperCollins, 1997) refin su visin al enfocarse sobre los temas "centrados en el proceso".
Los libros de Smith y Fingar (Business Process Management (BPM): The Third Wave, MeghanKiffer Press, 2003). Jacka y Keller (Business Process Mapping: lmproving customer Satifacton,
wiley, 2001), Sharp y McDcrmott (Workjlow Modeling, Artech House, 2001), Andersen (Business
Process lmprovement Toolbox, American Society for Quality, 1999) y Harrington et al. (Business
Process lmprovement Workbook, McGraw-Hill, I 997) presentan estudios de caso y directrices
C.ONCEPTOS
CJ.AVE
.Wtooel
coaodmie11to , ,934
4atos ........W
itka ........9l6
.-,-~
cW ~llff
928
f!lt.nJlCld6'i , ..933
pel'SOIIIIS ,930
p,oceso ......931
teMlltda
J,cnolgi<os 936
fas
927
928
PARTE CINCO
En el captulo I el software se caracteriz como un diferenciador. La funcin que proporciona el software diferencia productos, sistemas y servicios, y ofrece una ventaja
competitiva en el mercado. Pero el software es ms que un diferenciador. Los programas, documentos y datos que constituyen el software ayudan a generar el producto
ms importante que cualquier individuo, negocio o gobierno pueda adquirir: informa-
C APiTuJ.O 32
929
, . pllllcdones son nmy diWes de hacer, especialmente cuando se reloonon con el faturo.
Los cambos en la informtica durante los pasados 50 aos han sido dirigidos por
avances en las ciencias bsicas: flsica, qumica, ciencia de materiales e ingeniera
Esta tendencia continuar durante el primer cuarto del siglo xx1. El impacto de las
nuevas tecnologas es profundo: en las comunicaciones. la energa, el cuidado de la
salud, la transportacin, el entretenimiento, la economia, la industria manufacture
ra y la guerra, por mencionar slo unas cuantas.
biolgicas o qumicas.
930
PARTE CINCO
1tilf,ifrM1
A largo plazo, los avances revolucionarios en la informtica bien pueden dirigirlos las ciencias sociales: psicologa humana, sociologa, tilosofia, antropologia y
otras. El periodo de gestacin de las tecnologas informticas que se puedan derivar
de estas disciplinas es muy dificil de predecir, pero las primeras influencias ya han
comenzado (por ejemplo, las comunidades -una estructura antropolgica- de
usuarios, que son ramificaciones de las redes de pares a pares).
La influencia de las ciencias sociales quiz ayude a moldear la direccin de la
investigacin en informtica en las ciencias bsicas. Por ejemplo, el diseo de las
futuras computadoras tal vez Jo gue ms el conocimiento de la psicologa cerebral
que el de la microelectrnica convencional.
A corto plazo, los cambios que incidirn en la ingeniera del software durante la
siguiente dcada recibirn la influencia de cuatro fuentes simultneas: 1) las personas que realicen el trabajo, 2) el proceso que apliquen, 3) la naturaleza de la informacin y 4) la tecnologa informtica subyacente. En las secciones que siguen se
examinan con ms detalle cada uno de estos componentes: personas, proceso,
informacin y tecnologa.
l'llu mccione.s
l8cOOlogo yotro~
materias, vase
www.futlwtfattag.
CI&
a ~ue del.fulUro es la agotadora tensin ydesorientacin que inducimos en los indMduos olstieturlos 11
. "
, ,
Alvltwn.t
Si la comunidad de la ingeniera del software tiene que tratar con eficacia el dilema de la comunicacin, el camino que recorrern los ingenieros de software debe
incluir cambios radicales en la forma en que los individuos y los equipos se comunican entre s. El correo electrnico, los sitios Web y las conferencias de video centra-
CAPTULO 32
931
!izadas ahora son mecanismos comunes para conectar a un gran nmero de perso
nas a una red de informacin. La importancia de estas herramientas en el contexto
del trabajo de ingeniera del software no se debe sobrevaluar. Con un correo eleclrnico eficiente o un sistema de mensajera instantnea, el problema que encuentre un ingeniero de software en la ciudad de Nueva York puede resolverse con la
ayuda de un colega en Tokio. En realidad, las sesiones de conversacin (chatJ sobre
un tema particular y los grupos de noticias especializados se vuelven depsitos de
conocimiento que permiten que el saber colectivo de un gran grupo de tcnicos sea
aplicado para solucionar un problema tcnico o un conflicto de gestin
El video personaliza la comunicacin. En el mejor de los casos, permite que los
colegas en diferentes ubicaciones (o en diferentes continentes) se "renan" con cicr
ta regularidad. Adems, el video tambin ofrece otro beneficio: se puede usar como
depsito de conocimiento acerca del software y para entrenar a los recin llegados
a un proyecto.
"la,.....
III5lim aclecuodo ante lotecnologa digital es adoptarlo como uno nuevo ventano a todo lo
- - MICIIIO, y usmla con pasin, sabidura, temeridad y alegria."
Ralplit..re...
La evolucin de los agentes inteligentes tambin cambiar los patrones lab,xales
Msyms no
(Jl()gromod(){es estn
coostrvyendo sus
()(opios (pequeiios)
op/icociones. Esta
tendencia actual es
probable que se
acelere en lo futi.ro.
Estos civl1es
deberfon aplicar lo
tecnologfo estudiado
en este lilxo? Proooblemente no. Pero
debe,ron adoptor uno
filosofa de ingeniera
del software gil
iJuso si no odoptm
la pr6ctico.
932
se podran aplicar una serie de pasos secuenciales con la finalidad de resolver problemas complejos. Sin embargo, los enfoques lneales acerca del desarrollo de software corren contra la forma en la que la mayora de los sistemas realmente se construye. En realidad, los sistemas complejos evolucionan terativamente, incluso en
forma incremental. Por esta razn, un gran segmento de la comunidad de ingeniera del software se desplaza hacia modelos ncrementales giles para el desarrollo
del software.
Los modelos de proceso incremental gil reconocen que la incertidumbre domina
la mayora de los proyectos, que los plazos de entrega con frecuencia son imposibles
de cumplir y cortos, y que la teracin proporciona la habilidad de dar una solucin
parcial, incluso cuando un producto completo no es realizable dentro del tiempo asignado. Los modelos evolutvos subrayan la necesidad de productos de trabajo incrementales, anlisis de riesgo, planeacin y luego revsin del plan, y retroalimentacin
con el cliente. En muchos casos el equipo de software aplica un "manifiesto gil"
(captulo 4) que subraya "los individuos e interacciones sobre los procesos y herramientas; el software operativo sobre la documentacin detallada; la colaboracin del
cliente sobre la negociacin de contratos; y la respuesta al cambio sobre el seguimiento de un plan" [BECOl].
Las tecnolog1as de objetos, junto con la ingeniera del software basada en componentes (captulo 30), son una consecuencia natural de la tendencia hacia los
modelos de procesos incrementales y evolutivos. Ambos tendrn un profundo
impacto sobre la productividad del desarrollo de software y la calidad del producto.
La reutilizacin de componentes ofrece beneficios inmediatos y convincentes.
Cuando la reutilizacin se une con las herramientas CASE para los prototipos de una
aplicacin, los incrementos del programa se pueden construir mucho ms rpidamente que mediante los enfoques convencionales. La elaboracin de prototipos
involucra al cliente con el proceso. En consecuencia, es probable que los clientes y
usuarios se involucren mucho ms en el desarrollo del software. Esto, a su vez,
puede conducir a una mayor satisfaccin del usuario final y en general a mejorar la
calidad del software.
El rpido crecimiento en las tecnologas de red y multimedia (por ejemplo, el
aumento exponencial en las WebApps durante las pasadas dcadas) est cambiando tanto al proceso de ingeniera del software como a sus participantes. De nuevo,
se est ante un paradigma incremental gil que destaca la inmediatez. la seguridad
y la esttica, as como preocupacin por la ingeniera de software ms convencional. Los modernos equipos de software (por ejemplo, un equipo de ingeniera Web)
con frecuencia mezclan tcnicos con especialistas de contenido (por ejemplo, artistas, msicos, videogrfos) para construir una fuente de informacin destinada a una
CAPTULO 32
933
iihi.fA
Espectro de
"1n1ormactn".
Datos:
sin asociatividod
I>
Conocimiento:
osociotividod dentro de
mltiples contextos
Informacin:
asociatividod dentro
de un contexto
Sabidura:
creacin de principios
generalizados con
base en el conocimiento
procedente de fuentes
diferentes
934
,a safJidorla es el pode, que permite utili2or el conocimiento poro el beneficio d lSOtros mismos y de ons."
,
; ,. .... lWfa
Para ilustrar la progresin desde datos hasta conocimiento, considrense los
datos censales que indican que los nacimientos en 1996 en Estados Unidos fueron
4.9 millones. Este nmero representa un valor de datos. Al relacionar esta pieza de
datos con las tasas de nacimiento para los 40 aos precedentes, se puede derivar
una til pieza de informacin: los cada vez ms viejos baby boomers de la dcada de
1950 y de principios de la de 1960 hacan un ltimo esfuerzo para tener hijos antes
del final de su vida reproductiva. Adems, los gen-Xers (miembros de la generacin
X) comenzaban su vida reproductiva. Los datos censales entonces pueden vincularse con otras piezas de informacin aparentemente no relacionada. Por ejemplo, el
nmero actual de profeso res de escuela elemental que se retirarn durante la
siguiente dcada, el nmero de estudiantes universitarios que se graduarn en educacin primaria y secundaria, la presin sobre los polticos para mantener bajos los
impuestos y, por lo tanto, limitar los aumentos salariales a los profesores.
Todos estos elementos de informacin se pueden combinar para formular una
representacin del conocimiento: existir una presin significativa sobre el sistema
educativo en Estados Unidos en la primera dcada del siglo xx1, y esta presin continuar durante una dcada. Con la utilizacin de este conocimiento puede surgir
una oportunidad de negocio. Quiz haya significativas oportunidades para desarrollar nuevos modos de aprendizaje que sean ms eficaces y menos costosos que los
enfoques actuales.
El rpido crecimiento de las tecnologas de extraccin y almacenamiento de datos refleja esta tendencia creciente.
CAPTULO 32
935
El camino que recorrer el software conduce a sistemas que procesan el conocimiento. Se han estado procesando datos empleando computadoras durante 50 aos
y extrayendo informacin durante ms de tres dcadas. Uno de los desafios ms significativos que enfrenta la comunidad de ingeniera del software es construir sistemas
que den el prximo paso a Jo largo del espectro: sistemas que extraigan conocimiento a partir de los datos e informacin en una forma prctica y beneficiosa.
La gente que construye y utiliza software, el proceso de ingeniera del software que
se aplica y la informacin que se produce resultan afectados por los avances en el
hardware y la tecnologa del software. Histricamente, el hardware ha servido como
el impulsor tecnolgico en la computacin. Una nueva tecnologa de hardware proporciona potencial. Entonces los constructores de software reaccionan a las demandas de los consumidores con la finalidad de aprovechar el potencial.
Es probable que las tendencias futuras de la tecnologa de hardware avancen por
dos trayectorias paralelas. A lo largo de una trayectoria las tecnologas de hardware
contnuarn evolucionando con rapidez. Ante la mayor capacidad que ofrecen las
arquitecturas de hardware tradicionales, las demandas a los ingenieros de software
continuarn creciendo.
Pero los cambios verdaderos en la tecnologa de hardware podran producirse en
otra direccin. El desarrollo de arquitecturas de hardware no tradicionales (por
ejemplo, nanotubos de carbono, microprocesadores EUL, mquinas cognitivas, reticulas de cmputo) podran provocar cambios radicales en el tipo de software que se
construir y cambios fundamentales en el enfoque hacia la ingeniera del software.
Dado que estos enfoques no tradicionales se estn madurando, es dificil determinar
cul tendr un impacto significativo e incluso es ms dificil predecir cmo cambiar
el mundo del software para adaptarse a ellos.
Las tendencias futuras de la ingeniera del software las impulsan las tecnologas
de software. La reutilizacin y la ingeniera del software basada en componentes
ofrecen la mejor oportunidad en cuanto a mejoras en la magnitud de la calidad de
los sistemas y en el tiempo en que llegan al mercado. De hecho, conforme pasa el
tiempo, el negocio del software puede comenzar a parecerse mucho al negocio de
hardware de la actualidad. Quiz haya empresas que construyan dispositivos discretos (componentes de software reutilizables), otras empresas que construyan
componentes de sistemas (por ejemplo, un conjunto de herramientas para la interaccin hombre-mquina) e integradores de sistemas que ofrezcan soluciones (productos y sistemas construidos de forma personalizada) para el usuario final.
La ingeniera del software cambiar de eso se puede estar seguro. Pero, sin
importar cun radicales sean los cambios, se puede estar seguro de que la calidad
nunca perder su importancia, y de que el anlisis y el diseo efectivos y las pruebas competentes siempre tendrn un lugar en el desarrollo de los sistemas basados
en computadoras.
936
Tendencias tecnolgicas
P. Cripwell Associates (www.jpcripwell.com),
una firma de consultora especializada en
gestin del conocimiento e ingeniera de la informacin,
analiza cinco impulsores tecnolgicos que influirn en las
direcciones de la tecnologa en los aos por venir.
!~~tl
O/SE
..ettetl,,J
t,t,q/10 t
CAPTULO 32
937
seguridad y el bienestar del pblico, los ingenieros de software deben adherirse a los siguientes Ocho Principios:
1. PBLICO. Los ingenieros de software deben actuar consistentemente con el inters del
pblico.
2. CUENTES Y EMPLEADORES. Los ingenieros de software deben actuar en una forma que
beneficie los intereses de sus clientes y empleadores y sea consistente con el inters pblico.
3. PRODUCTO. Los ingenieros de software deben garantizar que sus productos y modificaciones relacionadas satisfacen los mayores estndares profesionales posibles.
4. JUICIO. Los ingenieros de software deben mantener la integridad y la independencia en
su juicio profesional.
5. GESTIN. Los gestores y lderes de la ingeniera del software deben suscribir y promover un enfoque tico de la gestin del desarrollo y el mantenimiento del software.
6. PROFESIN. Los ingenieros de software deben promover la integridad y la buena reputacin de la profesin en una forma consistente con el inters pblico.
7. COLEGAS. Los ingenieros de software deben ser justos con sus colegas y apoyarlos.
8. COMPROMISO PERSONAL. Los ingenieros de software deben participar en un aprendizaje permanente en relacin con la prctica de su profesin y promover un enfoque tico
para su prctica.
1. Permita a las compaas liberar el software sin revelar los defectos conocidos.
2 . Exentar a los desarrolladores de responsabilidad penal por cualesquiera daos que resulten debido a dichos defectos conocidos.
938
Ya han pasado 25 aos desde que se escribi la primera edicin de este libro. Todava
me recuerdo sentado en mi escritorio como un joven profesor, escribiendo el manuscrito de un libro acerca de una materia de la que poca gente se preocupaba e incluso todavia menos realmente comprenda. Recuerdo las cartas de rechazo de los editores, quienes argumentaban (gentil, pero firmemente) que nunca habra un mercado para un libro acerca de "ingeniera del software". Afortunadamente, McGraw-Hill
En realidad, el crdito corresponde a Peter Freeman y Eric Munson, quienes convencieron a McGrawHill de que vala la pena intentarlo.
CAPTULO 32
939
[ACM98J ACM/IEEE-CS Joint Task Force, Sflware Engineenng Code of Ethics and Professional
Practice, 1998, disponible en http://ww w.acm.org/serving/se/code.htm.
!BECO!] Beck, K. et al., "Manifesto for Agle Software Development", http://www.agilemanifesto.org/.
1BOL911 Bollinger, T. y C. McGowen, "A Critica( Look at software Capability Evaluations", en
IEEE Software, julio de 1991, pp. 25-41.
[GIL96J Gilb, T., "What is Leve! Six?", IEEE Sjlware, enero de 1996. pp. 97-98, 103.
[HOP90J Hopper, M. O., "Rattling SABRE, New Ways to Compete on lnformation", en Harvard Business Review, mayo-junio de 1990.
[PAU93] Paulk, M. et al., Capability Maturity Model far Sflware, Software Engineering Institute,
Camegie Mellen University, 1993
(PCM03J "Technologies to Watch", en PC Magazine, julio de 2003, disponible en http://www pcmag.com/article2/0,4149, l 130591.00.asp.
fPRE91J Pressman, R. s. y s. R. Herron, Sflware Shock, Dorset House, 1991.
[SEE03) The Software Engineering Ethics Research lnstitute, "UCITA Updates", 2003, disponible
en http://seeri.etsu.edu/default.htm
PARTE CINCO
32.3. Escribir una breve descripcin del entorno de desarrollo de un ingeniero de software
ideal hacia el 2010. Describir los elementos del entorno (hardware, software y tecnologias de
comunicacin) y su impacto sobre la calidad y el tiempo en que llega al mercado.
32.4. Revisar el estudio de los modelos de proceso incrementales giles en el capitulo 4.
Realizar una investigacin y recopilar artculos recientes acerca de la materia. Resumir las fortalezas y debilidades de los paradigmas giles con base en las experiencias subrayadas en los
artculos.
32.5. Intntese desarrollar un ejemplo que comience con la recopilacin de datos en bruto y
llvese a cabo la adquisicin de informacin, luego de conocimiento y, por ltimo, de sabidura.
32.6. Proporcionar ejemplos especficos que ilustren uno de los ochos principios ticos de la
ingeniera del software mencionados en la seccin 32.7.
Los libros que estudian las tendencias futuras del software y la computacin abarcan una
amplia variedad de temas tcnicos, cientficos, econmicos, pol!ticos y sociales. Sterling
(Tomorrow Now, Random House, 2002) recuerda que el progreso real rara vez es ordenado y eficiente. Teich (Techno/ogy and the Future, Wadworth, 2002) presenta reflexivos ensayos acerca
del impacto social de la tecnologa y cmo la cultura cambiante da forma a la tecnologa.
Naisbitt, Philips y Naisbitt (High Tech/High Touch, Nicholas Brealey, 2001) sealan que muchas
personas se han "intoxicado" con la alta tecnologa y que la "gran ironla de la era de la alta tecnologia es que la humanidad se ha esclavizado a los dispositivos que se supone brindaran libertad". zey (The Future Factor, McGraw-Hill, 2000) analiza cinco fuerzas que darn forma al destino
humano durante este siglo. Canton (Technofutures, Hay House, 1999) estudia cmo la tecnologa transformar los negocios en el siglo xx1. Robertson (The New Renaissance: Computers and
the Next Level of Civiliza/ion, Oxford University Press, 19981 argumenta que la revolucin en la
computacin puede ser el avance individual ms significativo en la historia de la civilizacin.
Broderick (Spike, Forge, 2001) analiza el impacto de las tecnologlas emergentes. Dertrouzos
y Gatcs (Whal Will be: How the New World oflnformation Will Change our Uves, Harper-Business,
1998) ofrecen un estudio detallado de algunas de las direcciones que pueden tomar las tecnologas de la informacin en las primeras dcadas de este siglo. Barnatt (Valueware: Technology,
Hwnanity and Organizalion, Praeger Publishing, 1999) presenta un intrigante estudio de una
"economa de ideas" y cmo el valor econmico se crear conforme evolucionen los cibernegocios. El de Negroponte (Being Digital, Alfred A. Knopf, 1995) fue un xito de ventas a mediados del decenio de 1990 y contina ofreciendo una interesante visin de la computacin y de su
impacto global.
Kroker y Kroker (Digital Delirium, New World Perspectives, 1997) han editado una controvertida coleccin de ensayos, poemas y humor que examinan el impacto de las tecnologas digitales sobre las personas y la sociedad. Brin (The Transparent Sociew: Will Technology Force Us to
Choose Between Privacy and Freedom?, Perseus Books, 1999) vuelven a revisar el continuo debate asociado con la inevitable prdida de privacidad personal que acompaa al crecimiento de
las tecnologas de la informacin. Shenk (Data Smog: Surviving the Informalion Glut,
HarperCollins, 1998) estudia los problemas asociados con una sociedad infestada de informacin" que se sofoca por el volumen de informacin que produce el software.
Brockman (The Ne.xt Fijly Years, Vintage Books, 2002) y Miller y sus colegas (21st Centwy
Technologies: Promises and Perils ofa Dynamic Future, Brookings Institution Press, 1999) han editado una coleccin de artculos y ensayos acerca del impacto de la tecnologa sobre las estructuras sociales, empresariales y econmicas. Para aquellos interesados en los temas tcnicos,
Luryi, Xu y Zaslavsky (Future nends in Microelectronics, Wiley, 1999) han editado una coleccin
de artculos acerca de las probables direcciones para el hardware de computadora, con nfasis
en las nanotecnologas. Hayzelden y Bigham (Software Agents Jor Future Communication
systems, Springer-Verlag, 1999) han editado una coleccin que analiza las tendencias en el
desarrollo de agentes de software inteligentes.
CAPTULO 32
941
,
INDICE ANALTICO
ABC MPI, 37
Abstraccin, 252
Accesibilidad, 375
Acciones, 25
Acoplamiento, 260, 482
niveles de, 329
medicin, 487,489
Actividades, 24
Actividades de sombrilla, 24, 28
Actividades del marco de trabajo,
24, 26
genricas, 26
Actores, 173, 206
Agilidad, 79. Vase tambin
Proceso gil
definicin de, 79
factores humanos, 82
principios de la, 80
Almacenamiento de datos, 278
Ambiente de trabajo, 368
mbito, 112
mbito del software, 651 , 693
lmites, 693
Anlisis, 192. Vase tambin
Anlisis de los requisitos
orientado a objetos, 201
patrones, 183 (Vase tambin
Patrones)
reglas por experiencia, 194
Anlisis de inventario, 909
Anlisis de peligros, 762
Anlisis de requisitos, 192. Vase
tambin Anlisis
objetivos del, 193
ingeniera Web, 545
Anlisis de tareas, 361
Anlisis del rbol de decisin,
717
Anlisis del dominio, 194
Anlisis del flujo de trabajo, 364
Anlisis del usuario, mtodos
l?ara el, 361
Anlisis del valor de frontera,
437,624
Anlisis del valor ganado (AVG),
742
Anlisis gramtico, 212
Anlisis Relacin-Navegacin
(ARN), 589
Aplicaciones basadas en Web.
Vase WebApps
rbol de datos, 552
rbol de requisitos de la calidad,
WebApps, 568
Arquetipos, 289
Arquitectura, 253
anlisis de sensibilidad, 294
cambio, 6, 7, 114
mbito del, 929
impacto sobre el software, 6
origen del, 797
caos,48
Capital del software, 22
Caracterstica, definicin de, 95
Cardinalidad, 199. 232
Casos de prueba
caractersticas de los, 420
derivacin, 427
Categoras de usuario, definicin
de las, 521
Centro de transaccin, 306
Certificacin, 874
Clase
agregada compuesta, 230
multiplicidad, 232
Clase-responsabilidad-colaborador, 225. Vase tambin
Modelado CRC
Clases de anlisis
aplicaciones basadas en Web,
554
atributos, 221
caractersticas de las, 221
identificacin de las, 219
operaciones, 223
tipos de, 219. 226-227
Clases de controlador, 227
Clases de diseo, 259
caractersticas de las, 260
tipos de, 259
Clases de entidad, 226
Clases de frontera, 226
Clientes, 111
COCOMO 11, 71 O
Codificacin, 631
Codificacin, principios, 123
Cdigo fuente
a nivel de programa, 493
medicin, 493
volumen, 493
Cohesin, 260, 483
medicin para la, 489
niveles de, 326
Colaboracin, 83, 11 O
definicin de CRC, 228
Complejidad, 482, 490
medicin, 491
Complejidad ciclomtica, 426
componentes
adaptacin de, 888
basados en clases, 321
clasificacin de, 893
composicin de, 888
convencionales, 317, 340
943
944
INDICE ANALTICO
Correccin, 677
comprobacin de la, 868
condiciones, 869
verificacin de la, 867, 868
Cortafuegos, 631
Costo, varianza, 744
Costos de falla, 771
Costos de prevencin, 770
Costos de valoracin, 770
Cristal, 95
Curva de la baera, 5
Curva Putnam-Raleigh-Norden,
730
Curvas de falla, 7
Decisin de hacer la compra, 71 7
Defectos, 775
Dependencias, 232
Depsito, 801
caractersticas del, 804
contenido, 804
Depuracin, 408
consideraciones psicolgicas.
410
estrategias, 41 1
proceso de, 409
tcticas, 412
Desarrollo basado en componentes (DBC), 63, 886
Desarrollo conducido por la
caracterstica (DCC), 95
Desarrollo del software adaptativo (OSA), 89
Desarrollo orientado a aspectos,
65
Descomposicin del problema,
652
Descomposicin funcional, 362
Desgaste, s, 6
Despliegue, 26
principios, 126
conjunto de tareas, 128
ingeniera Web, 510
945
NDICE ANATICO
proceso, 358
pasos, 368
reglas de oro, 351
Diseo de navegacin, 590
Diseo del contenido, 584
Diseo esttico, 572, 582
aplicaciones basadas en Web,
582
aspectos de configuracin, 582
Diseo grfico. Vase Diseo
esttico
Disponibilidad, aplicaciones
basadas en Web, 569
Distribucin, 286
Distribucin del esfuerzo, 732
Dominio semntico, 844
ECS,803
Ecuacin del software, 712, 731
Eficacia en la remocin de defectos (EED), 678
Eficiencia, 466
Elaboracin, 159, 652
Elaboracin de objetos, 364
Elaboracin de tareas, 363
objetos, 364
tareas, 363
Elementos de configuracin del
software (ECS), 800
Elementos de diseo
arquitectnico, 264
componentes, 266
datos, 263
despliegue,267
interfaz, 264
Elementos del sistema, 134
Encubrimiento de componentes,
888
Ensayo, 774. Vase tambin
Revisiones
Entrega incremental, 81
Envoltura, 888
Equipo de medicin, MDOO, 485
Equipos
giles, 82,649
coordinacin, 650
cuajados, 83, 90, 647
ingeniera Web, 526
organizacin propia, 83
programador en jefe, 647
tipos de, 646
Equipos giles, 649
Equipos de software. Vase
Equipos
Errores, 775
correccin de, 414
costo relativo, 771
Escalabilidad, WebApps, 569
Escenarios del usuario, 172
Especificacin, 160
Especificacin constructiva, 837
Especificacin de caja de estado,
866
463
Factores humanos, 82
Factorizacin, primer nivel, 302
Fiabilidad, 465, 786
medidas de, 787
Filtros, 283
Flujo de transformacin, 297
Formas de navegacin (FdN), 591
Formato de condicin-transmisin-consecuencia (CTq.
759
Formulacin, 510,517
de preguntas, 519
recopilacin de requisitos. 520
Fuente abierta, 10
Funcionalidad, 465
Funciones de ayuda, 373
Funciones de caracterizacin,
884
Fundamentos. 741
puntos de fijacin, 59
715
GCS, 797,815
elementos de la, 799
escenario, 798
estndares, 824
estratos del proceso, 807
funciones, 805
gestin del cambio, 820
gestin del contenido, 817
identificacin, 807
ingenieria Web,
medicin, 598
medicin del valor de nego
cios, 538
modelo de anlisis. 580
objetos de configuracin, 81 7
jerarqua del usuario, 546
proceso, 806
pruebas de desempeo, 631
pruebas de navegacin, 625
pruebas de seguridad. 680
tipos de, 506
Gestin de la calidad, 767. Vase
tambin Aseguramiento de
la calidad
Gestin de la configuracin del
software. Vase GCS
Gestin de la configuracin,
829. Vase tambin SCM
Gestin de requisitos, 161
Gestin del cambio, 796. Vase
tambin GCS
aplicaciones basadas en Web,
815
Gestin del contenido, 817
Gestin del proyecto, 640
aspectos de la, 643
prcticas criticas, 658
Gestin del proyecto de software.
Vase Gestin de proyecto
Gestin del riesgo, 747
946
NDICE ANALTICO
436
patrones, 455
principios, I 24
proceso para aplicaciones
ae
558
diagrama de carriles, 21 o
diagrama de clase, 181, 225
diagrama de despliegue, 268
diagrama de estado, 216,237,
555
diagrama de flujo de datos,
212,213,300
diagrama de secuencia, 238,
554
diagrama uso-caso, 178, 208
diseo de componente, 344
EP, 217
esquema conceptual, 597
estructura arquitectnica, 292,
306,310
estructura de la funcin de
seguridad, 292
modelo CRC, 231
narrativa de procesamiento,
212
objetos del contenido, 584
relaciones de clase, 290
USN, 592
uso-casos, 175,205,369,549
HogarSeguro (cuadros al margen), 17, 57, 62, 111, 143,
170, 172, 177, 182, 185,
203,207,216,224,231,
258,261,265,295,305,
323,328,330,354,362,
388,406,412,421,426,
448,477,486,521,533,
549,577,622,651,668,
679,702,719,742,758,
782,812
Hojas de informacin del riesgo,
757,762
Idiomas, 270
IMCM, 29
adopcin de la, 32
modelo continuo, 30
metas, 32
modelo por etapas, 32
niveles .de capacidad, 30
prcticas, 31
Impurezas, 775
Incremento. Vase Incrementos
del software
Incrementos de software, 51, 81
Independencia funcional, 256
Indicadores, 466
Indice de calidad de la estructura
del diseo (ICED), 480
Informacin, representacin de
la, 933
Informe de cambios, 810
Infraestructura, tecnologa, 141
Ingeniera de requisitos, 155
tareas de la, 157
Ingenierla de software de sala
limpia, 64, 850
certificacin, 874
diferenciacin de caractersticas, 862
diseo, 867
especificacin funcional, 863
estrategia, 860
pruebas, 872
Ingeniera del diseo, 245
Ingeniera del dominio, 883
Ingeniera del proceso de negocios (IPN), 903
jerarqua, 141
Ingeniera del producto, 142
Ingeniera del sistema
jerarqua, 136
visin mundial, 136
Ingeniera del software
definicin de la, 23
de sala limpia, 858
estratos, 24
tica, 936
futuro de la, 927
947
NDICE ANALTICO
NDICE ANALTICO
MEIEP, 37
Mejoramiento del proceso del
software (MPS), 664
estadstico, 667
Mel, 92
principios, 93
reuniones, 94
Metfora, 577
Mtodo de anlisis del cambio de
arquitectura (MACA), 294
Mtodos, 24
Mtodos formales, 64, 830
conceptos, 830, 833
definicin de, 830
directrices de los, 852
preliminares matemticas.
837
Miniespecificaciones, 169
Mitigacin del riesgo, 760
Mitos, 14-15
de la gestin, 13-14
del cliente, 15
del desarrollador, 16
Modalidad, 200
Modelado, 26
ingeniera Web, 51 O
Modelado gil, 97
principios del, 97- 98, 121
Modelado CRC, 225, 226
en PE, 86
Modelado de datos, 197
Modelado de Hatley-Pirbhai, 144
Modelado del anlisis, 159, 191
tu.1wdo en clai5ci5, 161, 21~
basado en escenarios, 179,
202
RPN,904
Programacin Extrema, 84
prescriptivo, 49
prototipos, 55
sala limpia, 859
Modelos evolutivos, 54-55
Modelos incrementales, 52
Modelos iterativos, 55
Modelos prescriptivos, 49. Vase
tambin Modelos de proceso
fallas de los, 78
Modo de bombero, 747
Modularidad, 254
Monitoreo del riesgo, 760
MS, 107
Multiplicidad, 232
Navegacin, 559, 572
anlisis de la, 559, 561
preguntas, 560
semntica, 591, 626
sintaxis, 590, 592, 625
Negociacin, 112, 160, 184
Nodos de navegacin, 591
Notacin del diseo
basada en texto, 242
comparacin de la, 345
grfica, 340
tabular, 342
Nueva economa,
lo
949
NDICE ANATICO
historia del, 67
productos del trabajo, 71
Procesos de negocios, 904
Producto, 651
aspectos de gestin, 642
del trabajo, 173
relacin con el proceso, 43
Producto esencial, 52
Programacin estructurada, 340
Programacin extrema (PE), 84
actividades del marco de trabajo, 85
codificacin, 87
diseo, 86
planeacin, 85
pruebas, 88
Programacin par, 87
Prototipos, 55
problemas con los, 57
Proyectos
diferencias. 526
estimacin, 690
medicin 00, 673
medicin para, 667
problemas, 656
seguimiento, 739
tipos de, 733
Proyectos de software. Vase
Proyectos
Prudencia, 934
Prueba beta, 405
Prueba de caja negra, 422, 433
Prueba de ruta bsica, 423
ejemplo de, 428
Prueba de unidad, 88
Pruebas
aleatorias, 48
a nivel de componente, 610,
623
aplicaciones basadas en Web,
604
arquitecturas convencionales,
386
arquitecturas 00, 388
basadas en el uso, 403
basadas en escenarios, 444
basadas en faltas, 443
basadas en grficas, 434
basadas en la clase, 44 7
basadas en ligas, 403
base de datos, 613
caractersticas genricas, 383
conjunto de tareas, 125
contenido, 610,6 12
cliente/ servidor, 452
criterio de completitud, 389
de clase mltiple, 449
de uso estadstico, 873
documentacin, 454
especializadas, 452
estrategias, 383, 390
estrategias 00, 402
950
INDICE ANATICO
Retraso, 93
Reutilizabilidad, 64
Reutilizacin, 8, 109, 269, 325,
894
Riesgo, 114
componentes, 753
estrategias, 74 7
formato CTC, 759
definicin de, 748
controladores, 753
identificacin, 750
impacto, 754, 757
planeacin, 759
proyeccin, 754
refinamiento del, 759
tipos de, 748
Rotulacin, mens y comandos,
374
Ruta crtica, 736
Rutas de accin, 306
Rutas independientes, 424
Salvaguarda del software, 762,
788
Seguimiento de conflictos, 808
Seguimiento de la dependencia,
805
Seguimiento de requisitos, 805
Seguimiento del proyecto, TWeb,
535
Seguridad, 407, 506
aplicaciones basadas en la
Web, 569
pruebas de, 407, 630
Servicios otorgados, 807
Sigma seis, 785
Similaridad, 482
Simulacin del sistema. 139
Sistema
definicin de, 134
elemento macro, 135
Sistema de versiones concurrentes (SVC), 809
Sistemas basados en componentes, 880
Sitios Web, bien diseados, 583
Software
aplicaciones heredadas, 11
caractersticas del, 5
definicin de. 4
mitos acerca del, 14
papel evolutivo del, 2
preguntas fundamentales, 4-5
referencias histricas, 4
Software de ingeniera y cientfico, 9
Software de Inteligencia
Artificial, 9- 1o
Software de lnea de producto, 9
Software de sistema, 8
Software heredado, 11
calidad del, 12
Software, categoras de aplicacin, 8-9
Software empotrado, 9
Solicitud de cambio, 81 O
INDICE AMATICO
Siglas espaol/ingls
Trmino equivalente en espaol
ABC MPI (apreciacin basada en el CMM para el mejoramiento del proceso interno) 37
ACC (autoridad del control del cambio) 8 1O
ADP (paradigma de diseo abstracto) 883
AECO (acoplamiento entre clases de objetos) 485
AG2D (anlisis geomtrico bidimensional) 701
AG3D (anlisis geomtrico tridimensional) 70 I
AIE (archivos de interfaz externos) 475
ALI (archivos lgicos internos) 474
AOO (anlisis orientado a objetos) 201
APD (acceso pblico a datos) 495
APH (rbol de profundidad de la herencia) 484
ARN (anlisis relacin-navegacin) 560
AVCi (anlisis del valor ganado) 742
AVL (anlisis de valores lmite) 437
CAD (diseo asistido por computadora) 700
CCYD (componentes comerciales ya desarrollados)
695
CDL (componentes comerciales de lnea) 88 1
CE (consultas externas) 474
CN (Contador numrico) 6?6
CO (complejidad de la operacin) 491
coc oMO (modelo constructivo de costos) 7 LO
COM (modelo de objetos para componentes) 889
CORBA (arquitectura comn de distribucin de objetos)
889
953
65
744
IHC (interfaz hombre-computadora ambigua o inconsistente) 784
IMCM (integracin del modelo de capacidad de madurez) 29
IMS (ndice de madurez del software) 496
IPA (interfaz de programacin de la aplicacin) 887
IPN (ingeniera de procesos de negocios) 140
IR (ingeniera de requisitos) 157
ISBC (ingeniera del software basada en componentes) 879
ISO (organizacin internacional de estandarizacin) 38
ro (interfaz con et usuario) 264
KLOC (miles de lneas de cdigo) 669
LOA (lenguaje de descripcin arquitectnica) 296
LOP (lenguaje de diseo de programas) 217
MA (modelado gil) 97
MACA (mtodo de anlisis de compensacin para la
arquitectura) 294
MAD (mdulos de anlisis de diseo) 701
MCC (mala interpretacin de la comunicacin del cliente) 784
MDHOO (mtodo de diseo hipermedia orientado a
objetos) 595
954
ME (metas especficas) 31
MEIEMP (mtodo de evaluacin de la IMCM estndar
SG (specific goals)
sin) 325
PERI' (tcnica de evaluacin y revisin de programa)
736
PF (punto de funcin)
474
FP (function points)
PG (prcticas genricas) 32
GP (generic practices)
955
es (class size)
rr (information technologies)
PLT (error programming language translation)
, MTIC (mean-time-to-change)
MTTC & MTTF (mean-time-to-charge) and (meantime-to-failure)
MTBF (mean time between failures)
MTTR (mean time to repair)
0S.v8 (average operation size)
UML (unified modeling language)
NSU (navigation semantic unit)
ADV (abstract data view)
CV (cost variance)
VPS (violation of programming standards)
V & V (verification and validation)
956
CBAIPI)
CMMI rcapability maturity model integration)
ou (definition-use chain)
to-failure)
MTTC (mean-time to-change)
MITR (mean time to repa1r)
MVC (model-view-controller)
NC (numerical control)
NCSC (commerc1al off-the-self (COTS) software
component)
NOA (number of operations added by a subclass)
NOC (number of children)
NOO (number of operations overrdden by subclass)
NOR (number of root classes)
NPvi (average number of paramelers per operation)
NSU (navigation semantic umt)
oc (operalion complexity)
OCL (object constraint language)
OCP (open closed principie)
OMG (Object management group)
OODA (object-oriented domain analys1s)
OOHDM (object--0riented hipermedia design method)
957
958
y versin)
325
485
RSGR (reduccin, supervisin y gestin del riesgo) 761
ARN (anlisis relacin-navegacin) 560
MEIEMP (mtodo de evaluacin de la IMCM estndar
para el mejoramiento del proceso) 37
DCS (diagrama de contexto del sistema) 145
ECS (elementos de configuracin del software) 800
GCS (gestin de la configuracin del software) 796
ME (metas especificas) 31
EIS (entorno de ingeniera del software) 696
SEi (instituto de ingeniera del software) 29
DFS (diagrama de flujo del sistema) 146
IMS (ndice de madurez del software) 496
SQA (garanta de la calidad del software) 767
SQL (lenguaje de consultas estructurado) 614
PE (prcticas especficas) 31
MEPS (mejora estadstica del proceso de software) 667
PSE (proceso de software en equipo) 40
IU (interfaz con el usuario) 264
FIUC (facilidades de interfaz del usuario y control) 701
UML (lenguaje de modelado unificado) 68
PU (proceso unificado) 67
vyv (verificacin y validacin) 384
VEP (violacin de los estndares de programacin) 784
EAT (estructura de anlisis del trabajo) 737
MPC (mtodos ponderados por clase) 484
FdN (formas de navegacin) 591
McGraw-HIII
lnteramerlcana
11111 11 111 1