You are on page 1of 61

{\rtf\ansi\deff0\ansicpg1252

{\fonttbl
{\f0\froman times new roman;}{\f1\fswiss helvetica;}{\f2\ftech symbol;}{\f3\ftec
h wingdings;}}
{\colortbl\red0\green0\blue0;}
{\info{\author }}
\jexpand\viewkind1\viewscale100
\paperw11920\paperh16840\margl666\margr133\margt666\margb213
\cols2\colno1\colw8946\colsr-0\colno2\colw2173\pard\li4960\ri0\sl-213\slmult0 \f
s18\cf0\par\pard\li4960\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li4960\ri0\sl-213\
slmult0 \fs18\cf0\par\pard\li4960\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li4960\r
i0\sl-213\slmult0 \fs18\cf0\par\pard\li4960\ri0\sl-213\slmult0 \fs18\cf0\par\par
d\li4960\ri0\sl-453\slmult0 \fs30\cf0\f0\charscalex100\b {TEMA 2}\b0 \fs30\cf0\f
0\charscalex100\b { }\b0 \par\pard\li3520\ri0\sl-213\slmult0 \fs18\cf0\par\pard\
li3520\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li3520\ri0\sl-413\slmult0 \fs30\cf0
\f0\charscalex100\b {M}\b0 \fs30\cf0\f0\charscalex100\b {TRICAS DEL SOFTWARE}\b0
\fs30\cf0\f0\charscalex100\b { }\b0 \par\pard\li1026\ri0\sl-213\slmult0 \fs18\cf
0\par\pard\li1026\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li1026\ri0\sl-413\slmult
0 \fs26\cf0\f0\charscalex100 {2.1.}\fs26\cf0\f0\charscalex100 {-}\fs26\cf0\f0\ch
arscalex100 { Mtricas del software., }\fs26\cf0\f0\charscalex100 { }\par\pard\li1
746\ri0\sl-480\slmult0 \fs26\cf0\f0\charscalex100 {2.1.1.}\fs26\cf0\f0\charscale
x100 {-}\fs26\cf0\f0\charscalex100 { Mtricas de tamao., }\fs26\cf0\f0\charscalex10
0 { }\par\pard\li1746\ri0\sl-480\slmult0 \fs26\cf0\f0\charscalex100 {2.1.2.}\fs2
6\cf0\f0\charscalex100 {-}\fs26\cf0\f0\charscalex100 { Mtricas de estr}\fs26\cf0\
f0\charscalex100 {ucturas de control., }\fs26\cf0\f0\charscalex100 { }\par\pard\
li1746\ri0\sl-480\slmult0 \fs26\cf0\f0\charscalex100 {2.1.3.}\fs26\cf0\f0\charsc
alex100 {-}\fs26\cf0\f0\charscalex100 { Mtricas compuestas., }\fs26\cf0\f0\charsc
alex100 { }\par\pard\li1746\ri0\sl-480\slmult0 \fs26\cf0\f0\charscalex100 {2.1.4
.}\fs26\cf0\f0\charscalex100 {-}\fs26\cf0\f0\charscalex100 { Mtricas de esfuerzo.
, }\fs26\cf0\f0\charscalex100 { }\par\pard\li1746\ri0\sl-480\slmult0 \fs26\cf0\f
0\charscalex100 {2.1.5.}\fs26\cf0\f0\charscalex100 {-}\fs26\cf0\f0\charscalex100
{ Mtricas de calidad y fiabilidad.,}\fs26\cf0\f0\charscalex100 { }\par\pard\li
1746\ri0\sl-480\slmult0 \fs26\cf0\f0\charscalex100 {2.1.6.}\fs26\cf0\f0\charscal
ex100 {-}\fs26\cf0\f0\charscalex100 { Mtricas de diseo., }\fs26\cf0\f0\charscalex1
00 { }\par\pard\li1746\ri0\sl-480\slmult0 \fs26\cf0\f0\charscalex100 {2.1.7.}\fs
26\cf0\f0\charscalex100 {-}\fs26\cf0\f0\charscalex100 { Otra mtricas del software
., }\fs26\cf0\f0\charscalex100 { }\par\pard\li5493\ri0\sl-213\slmult0 \fs18\cf0\
par\pard\li5493\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li5493\ri0\sl-213\slmult0
\fs18\cf0\par\pard\li5493\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li5493\ri0\sl-21
3\slmult0 \fs18\cf0\par\pard\li5493\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li5493
\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li5493\ri0\sl-213\slmult0 \fs18\cf0\par\p
ard\li5493\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li5493\ri0\sl-213\slmult0 \fs18
\cf0\par\pard\li5493\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li5493\ri0\sl-213\slm
ult0 \fs18\cf0\par\pard\li5493\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li5493\ri0\
sl-213\slmult0 \fs18\cf0\par\pard\li5493\ri0\sl-213\slmult0 \fs18\cf0\par\pard\l
i5493\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li5493\ri0\sl-213\slmult0 \fs18\cf0\
par\pard\li5493\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li5493\ri0\sl-213\slmult0
\fs18\cf0\par\pard\li5493\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li5493\ri0\sl-21
3\slmult0 \fs18\cf0\par\pard\li5493\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li5493
\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li5493\ri0\sl-213\slmult0 \fs18\cf0\par\p
ard\li5493\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li5493\ri0\sl-213\slmult0 \fs18
\cf0\par\pard\li5493\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li5493\ri0\sl-213\slm
ult0 \fs18\cf0\par\pard\li5493\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li5493\ri0\
sl-213\slmult0 \fs18\cf0\par\pard\li5493\ri0\sl-213\slmult0 \fs18\cf0\par\pard\l
i5493\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li5493\ri0\sl-213\slmult0 \fs18\cf0\
par\pard\li5493\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li5493\ri0\sl-213\slmult0
\fs18\cf0\par\pard\li5493\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li5493\ri0\sl-21
3\slmult0 \fs18\cf0\par\pard\li5493\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li5493
\ri0\sl-400\slmult0 \fs24\cf0\f0\charscalex100 {i}\fs24\cf0\f0\charscalex100 { }
\par\column\pard\li0\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li0\ri0\sl-213\slmult

0 \fs18\cf0\par\pard\li0\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li0\ri0\sl-213\sl
mult0 \fs18\cf0\par\pard\li0\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li0\ri0\sl-21
3\slmult0 \fs18\cf0\par\pard\li0\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li0\ri0\s
l-213\slmult0 \fs18\cf0\par\pard\li0\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li0\r
i0\sl-213\slmult0 \fs18\cf0\par\pard\li0\ri0\sl-213\slmult0 \fs18\cf0\par\pard\l
i0\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li0\ri0\sl-213\slmult0 \fs18\cf0\par\pa
rd\li0\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li0\ri0\sl-426\slmult0 \fs26\cf0\f0
\charscalex100 {2 }\fs26\cf0\f0\charscalex100 {-}\fs26\cf0\f0\charscalex100 { 1}
\fs26\cf0\f0\charscalex100 { }\par\pard\li0\ri0\sl-480\slmult0 \fs26\cf0\f0\char
scalex100 {2 }\fs26\cf0\f0\charscalex100 {-}\fs26\cf0\f0\charscalex100 { 3}\fs26
\cf0\f0\charscalex100 { }\par\pard\li0\ri0\sl-480\slmult0 \fs26\cf0\f0\charscale
x100 {2 }\fs26\cf0\f0\charscalex100 {-}\fs26\cf0\f0\charscalex100 { 12}\fs26\cf0
\f0\charscalex100 { }\par\pard\li0\ri0\sl-480\slmult0 \fs26\cf0\f0\charscalex100
{2 }\fs26\cf0\f0\charscalex100 {-}\fs26\cf0\f0\charscalex100 { 15}\fs26\cf0\f0\
charscalex100 { }\par\pard\li0\ri0\sl-480\slmult0 \fs26\cf0\f0\charscalex100 {2
}\fs26\cf0\f0\charscalex100 {-}\fs26\cf0\f0\charscalex100 { 17}\fs26\cf0\f0\char
scalex100 { }\par\pard\li0\ri0\sl-480\slmult0 \fs26\cf0\f0\charscalex100 {2 }\fs
26\cf0\f0\charscalex100 {-}\fs26\cf0\f0\charscalex100 { 19}\fs26\cf0\f0\charscal
ex100 { }\par\pard\li0\ri0\sl-480\slmult0 \fs26\cf0\f0\charscalex100 {2 }\fs26\c
f0\f0\charscalex100 {-}\fs26\cf0\f0\charscalex100 { 25}\fs26\cf0\f0\charscalex10
0 { }\par\pard\li0\ri0\sl-480\slmult0 \fs26\cf0\f0\charscalex100 {2 }\fs26\cf0\f
0\charscalex100 {-}\fs26\cf0\f0\charscalex100 { 27}\fs26\cf0\f0\charscalex100 {
}\par\pard\sect\sectd\sbkpage\pgwsxn11920\pghsxn16840\marglsxn666\margrsxn133\ma
rgtsxn666\margbsxn213\pard\li1026\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li1026\r
i0\sl-213\slmult0 \fs18\cf0\par\pard\li1026\ri0\sl-213\slmult0 \fs18\cf0\par\par
d\li1026\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li1026\ri0\sl-213\slmult0 \fs18\c
f0\par\pard\li1026\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li1026\ri0\sl-453\slmul
t0 \fs26\cf0\f0\charscalex100\b {2.1.}\b0 \fs26\cf0\f0\charscalex100\b {-}\b0 \f
s26\cf0\f0\charscalex100\b { Mtricas del software.}\b0 \fs26\cf0\f0\charscalex100
\b { }\b0 \par\pard\li1746\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li1746\ri0\sl-3
86\slmult0 \fs26\cf0\f0\charscalex100 {Toda magnitud fsica es susceptible de ser
medida. Sin embargo, el}\fs26\cf0\f0\charscalex100 { }\par\pard\li1026\ri0\sl-36
0\slmult0 \fs26\cf0\f0\charscalex100 {software es una actividad fundamentalmente
intelectual, no slo en su origen, sino}\par\pard\li1026\ri0\sl-360\slmult0 \fs26
\cf0\f0\charscalex100 {que su resultado final tambin los es. El software no tiene
}\fs26\cf0\f0\charscalex100 {de entidad fsica ms}\par\pard\li1026\ri0\sl-360\slmu
lt0 \fs26\cf0\f0\charscalex100 {que el soporte que lo registra: el papel, materi
al magntico, los circuitos de la}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0
\charscalex100 {memoria. Las medidas realizadas sobre estos soportes no lo son e
strictamente del}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100
{software, sino que se trata nicamente de referencias indirectas.}\fs26\cf0\f0\ch
arscalex100 { }\par\pard\li1746\ri0\sl-480\slmult0 \fs26\cf0\f0\charscalex100 {D
e ah que muchas medidas del software incidan en aspectos abstractos,}\par\pard\li
1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {que resultan difciles de desc
ribir de forma clara. Cuando se miden las magnitudes}\par\pard\li1026\ri0\sl-360
\slmult0 \fs26\cf0\f0\charscalex100 {del software se toman las referencias adecu
adas sobre los soportes del software,}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\
cf0\f0\charscalex100 {generalmente el cdigo f}\fs26\cf0\f0\charscalex100 {uente,
y de ah se obtienen cuantificaciones de conceptos}\par\pard\li1026\ri0\sl-360\slm
ult0 \fs26\cf0\f0\charscalex100 {tales como legibilidad o dificultad, junto con
otras ms accesibles como son el}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\
charscalex100 {propio tamao fsico del cdigo.}\fs26\cf0\f0\charscalex100 { }\par\par
d\li1746\ri0\sl-480\slmult0 \fs26\cf0\f0\charscalex100 {Las mtricas del software
responden a dos objetivos:}{ }\fs26\cf0\f0\charscalex100\b {valorar}\b0 \fs26\cf
0\f0\charscalex100 { y}{ }\fs26\cf0\f0\charscalex100\b {estimar}\b0 \fs26\cf0\f0
\charscalex100 {.}\par\pard\li1026\ri0\sl-360\slmult0 \*\tx7013\*\tx8066\*\tx926
6\fs26\cf0\f0\charscalex100 {Las magnitudes objeto de valoracin son tres: la}\fs2
6\cf0\f0\charscalex100 { }\tab \fs26\cf0\f0\charscalex100\b {calidad}\b0 \fs26\c
f0\f0\charscalex100 {,}\tab \fs26\cf0\f0\charscalex100\b {fiabilidad}\b0 \tab \f
s26\cf0\f0\charscalex100 {y}\fs26\cf0\f0\charscalex100 { }\par\pard\li1026\ri0\s

l-360\slmult0 \fs26\cf0\f0\charscalex100\b {productividad}\b0 \fs26\cf0\f0\chars


calex100 {. La estimacin parte de mediciones histricas para prever el}\par\pard\li
1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100\b {esfuerzo}\b0 { }\fs26\cf0\
f0\charscalex100 { y el}{ }\fs26\cf0\f0\charscalex100\b {tiempo}\b0 \fs26\cf0\f0
\charscalex100 { que debe invertirse en un proyecto dado, y las caractersticas}\p
ar\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {del resultado fina
l. }\fs26\cf0\f0\charscalex100 { }\par\pard\li1746\ri0\sl-480\slmult0 \fs26\cf0\
f0\charscalex100 {Cualquiera de}\fs26\cf0\f0\charscalex100 { estas tareas (valor
acin y estimacin) resulta tremendamente}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\
cf0\f0\charscalex100 {compleja, a pesar de contar con las mtricas del software. C
alidad y fiabilidad son}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charsca
lex100 {conceptos importados de la ingeniera hardware, pero que en el software ti
enen un}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {sentido
muy distinto. La productividad es un concepto ampliamente desarrollado}\par\pard
\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {en otras reas industriales
, pero la carencia de un sistema mtrico unificado, y la}\par\pard\li1026\ri0\sl-3
60\slmult0 \fs26\cf0\f0\charscalex100 {diversidad de factores que influyen en el
la, hacen que tampoco sea posible obtener}\par\pard\li1026\ri0\sl-360\slmult0 \f
s26\cf0\f0\charscalex100 {valoraciones fiables de esa magnitud e}\fs26\cf0\f0\ch
arscalex100 {n el mbito del software. }\fs26\cf0\f0\charscalex100 { }\par\pard\li
1746\ri0\sl-480\slmult0 \fs26\cf0\f0\charscalex100 {La diversidad de mtricas del
software es enorme. Son muchos los autores}\par\pard\li1026\ri0\sl-360\slmult0 \
fs26\cf0\f0\charscalex100 {que han sugerido un sistema mtrico propio. De ah que se
a difcil comparar (una}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscale
x100 {de las tareas bsicas de la medicin) los trabajos efectuados hasta la fecha s
in}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {contar con un
alto grado de incertidumbre e imprecisin.}\fs26\cf0\f0\charscalex100 { }\par\par
d\li1746\ri0\sl-480\slmult0 \fs26\cf0\f0\charscalex100 {An cuando hay medidas que
son generalmente aceptadas (las lneas de}\par\pard\li1026\ri0\sl-360\slmult0 \fs
26\cf0\f0\charscalex100 {cdigo como mtrica de tamao, por ejemplo), no desaparecen l
os problemas por}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100
{completo: matices de apreciacin (conside}\fs26\cf0\f0\charscalex100 {rar o no l
os comentarios y las lneas}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\chars
calex100 {en blanco) y sistemas de referencia de compatibilidad dudosa (cdigo gen
erado en}\par\pard\li5040\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li5040\ri0\sl-21
3\slmult0 \fs18\cf0\par\pard\li5040\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li5040
\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li5040\ri0\sl-333\slmult0 \fs24\cf0\f0\ch
arscalex100 {2 }\fs24\cf0\f0\charscalex100 {-}\fs24\cf0\f0\charscalex100 { }\fs2
4\cf0\f0\charscalex100 {1}\fs24\cf0\f0\charscalex100 { }\par\pard\sect\sectd\sbk
page
{\shp{\*\shpinst\shpleft6786\shptop14533\shpright6813\shpbottom14826\shpfhdr0\sh
pwr3\shpwrk0\shpfblwtxt1\shplid2028\shpz0\shpbxpage\shpbypage
{\sp{\sn shapeType}{\sv 0}}
{\sp{\sn fFlipH}{\sv 0}}
{\sp{\sn fFlipV}{\sv 0}}
{\sp{\sn rotation}{\sv 0}}
{\sp{\sn geoRight}{\sv 27}}
{\sp{\sn geoBottom}{\sv 293}}
{\sp{\sn shapePath}{\sv 4}}
{\sp{\sn pVerticies}{\sv 8;5;(0,0);(0,306);(26,306);(26,0);(0,0);}}
{\sp{\sn pSegmentInfo}{\sv 2;12;16384;45824;1;45824;1;45824;1;45824;1;45824;2457
7;32768}}
{\sp{\sn fFillOK}{\sv 1}}
{\sp{\sn fFilled}{\sv 1}}
{\sp{\sn fillColor}{\sv 0}}
{\sp{\sn fLine}{\sv 0}}{\sp{\sn lineColor}{\sv 0}}
{\sp{\sn lineType}{\sv 0}}
{\sp{\sn fArrowheadsOK}{\sv 0}}
{\sp{\sn fBehindDocument}{\sv 1}}
{\sp{\sn fLayoutInCell}{\sv 1}}}}\pgwsxn11920\pghsxn16840\marglsxn666\margrsxn13

3\margtsxn666\margbsxn213\pard\li1026\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li10
26\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li1026\ri0\sl-213\slmult0 \fs18\cf0\par
\pard\li1026\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li1026\ri0\sl-213\slmult0 \fs
18\cf0\par\pard\li1026\ri0\sl-306\slmult0 \fs26\cf0\f0\charscalex100 {distintos
lenguajes) hacen difcil encontrar una referencia consolidada en la que}\par\pard\
li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {basar las observaciones.}\
fs26\cf0\f0\charscalex100 { }\par\pard\li1746\ri0\sl-480\slmult0 \fs26\cf0\f0\ch
arscalex100 {A continuacin se enumeran algunas de las mtricas del software ms}\par\
pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {comunes ordenadas por
el mbito del software a que se refiere. A cada una de}\par\pard\li1026\ri0\sl-36
0\slmult0 \fs26\cf0\f0\charscalex100 {ellas, podra aadirse una larga serie de vari
aciones segn los distintos autores,}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0
\f0\charscalex100 {pero se pretende dar una visin de conjunto, ms que hac}\fs26\cf
0\f0\charscalex100 {er una enumeracin}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\c
f0\f0\charscalex100 {exhaustiva.}\fs26\cf0\f0\charscalex100 { }\par\pard\li1746\
ri0\sl-480\slmult0 \fs26\cf0\f0\charscalex100 {Hay muchas magnitudes que pueden
ser medidas en el software: el tamao}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf
0\f0\charscalex100 {en lneas de cdigo, el coste monetario del desarrollo, el tiemp
o de desarrollo en}\par\pard\li1026\ri0\sl-360\slmult0 \fs24\cf0\f0\charscalex10
0 {das de trabajo, el tamao de la memoria precisada en bytes, e incluso el nmero}\p
ar\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {de quejas del usua
rio antes de entregar el producto. Diferentes observadores del}\par\pard\li1026\
ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {mismo producto, pueden obtener di
stintas medidas, incluso en una misma}\fs26\cf0\f0\charscalex100 { }\par\pard\li
1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {magnitud.}\fs26\cf0\f0\chars
calex100 { }\par\pard\li1746\ri0\sl-480\slmult0 \fs24\cf0\f0\charscalex100 {Un tp
ico ejemplo de esta circunstancia son las lneas de cdigo. Un}\fs24\cf0\f0\charscal
ex100 { }\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {anlisis
pu}\fs26\cf0\f0\charscalex100 {ede considerar el nmero total de lneas en el listad
o, incluyendo las}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100
{lneas en blanco y las de comentarios. Otro podra ignorarlos dado que no afectan}
\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {al programa. Otr
o ms no considerara como lneas contables aquellas copiadas de}\par\pard\li1026\ri0\
sl-360\slmult0 \fs26\cf0\f0\charscalex100 {algn otro sistema (libreras, generadas
automticamente, ...). La necesidad de una}\par\pard\li1026\ri0\sl-360\slmult0 \fs
26\cf0\f0\charscalex100 {definicin unificada de las lneas de cdigo, o de cualquier
otra medida es una}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex10
0 {exigencia comn de los ingenieros del software.}\fs26\cf0\f0\charscalex100 { }\
par\pard\li1746\ri0\sl-480\slmult0 \fs26\cf0\f0\charscalex100 {Una posible clasi
ficacin de las mtricas empleadas para valorar}\fs26\cf0\f0\charscalex100 { el}\fs2
6\cf0\f0\charscalex100 { }\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\chars
calex100 {software aparece en la figura 2.1 y establece dos categoras principales
:}{ }\fs26\cf0\f0\charscalex100\b {mtricas}\b0 \par\pard\li1026\ri0\sl-360\slmult
0 \*\tx3280\fs24\cf0\f0\charscalex100\b {del producto}\b0 \fs24\cf0\f0\charscale
x100 {, y}\fs24\cf0\f0\charscalex100 { }\tab \fs24\cf0\f0\charscalex100\b {mtrica
s del proceso}\b0 \fs24\cf0\f0\charscalex100 {. Las primeras son las que}\fs24\c
f0\f0\charscalex100 { }\par\pard\li1026\ri0\sl-360\slmult0 \fs24\cf0\f0\charscal
ex100 {tradicionalmente se han empleado en la medida del software, y pueden ser}
\fs24\cf0\f0\charscalex100 { }\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\c
harscalex100 {obtenidas automticamente tomando como entrada el cdigo fuente: tamao,
}\fs26\cf0\f0\charscalex100 { }\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\
charscalex100 {estructuras de datos y lgica. Las mtricas del proceso por su parte
dependen}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {esencia
lmente del entorno de desarrollo. Un ejemplo de este tipo de mtricas es}\par\pard
\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {el tiempo empleado para d
esarrollar un elemento software }\fs26\cf0\f0\charscalex100 {q}\fs26\cf0\f0\char
scalex100 {ue depende de}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charsc
alex100 {distintos factores externos (dificultad del problema, capacidad del per
sonal,}\fs26\cf0\f0\charscalex100 { }\par\pard\li1026\ri0\sl-360\slmult0 \fs26\c
f0\f0\charscalex100 {metodologa empleada,...).}\fs26\cf0\f0\charscalex100 { }\par

\pard\li6200\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li6200\ri0\sl-213\slmult0 \fs


18\cf0\par\pard\li6200\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li6200\ri0\sl-213\s
lmult0 \fs18\cf0\par\pard\li6200\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li6200\ri
0\sl-213\slmult0 \fs18\cf0\par\pard\li6200\ri0\sl-213\slmult0 \fs18\cf0\par\pard
\li6200\ri0\sl-373\slmult0 \fs24\cf0\f0\charscalex100 {Tamao}\fs24\cf0\f0\charsca
lex100 { }\par\pard\li5040\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li5040\ri0\sl-2
13\slmult0 \fs18\cf0\par\pard\li5040\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li504
0\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li5040\ri0\sl-266\slmult0 \fs24\cf0\f0\c
harscalex100 {2 }\fs24\cf0\f0\charscalex100 {-}\fs24\cf0\f0\charscalex100 { }\fs
24\cf0\f0\charscalex100 {2}\fs24\cf0\f0\charscalex100 { }\par\pard\sect\sectd\sb
kpage
{\shp{\*\shpinst\shpleft3946\shptop1693\shpright3973\shpbottom1986\shpfhdr0\shpw
r3\shpwrk0\shpfblwtxt1\shplid2029\shpz0\shpbxpage\shpbypage
{\sp{\sn shapeType}{\sv 0}}
{\sp{\sn fFlipH}{\sv 0}}
{\sp{\sn fFlipV}{\sv 0}}
{\sp{\sn rotation}{\sv 0}}
{\sp{\sn geoRight}{\sv 27}}
{\sp{\sn geoBottom}{\sv 293}}
{\sp{\sn shapePath}{\sv 4}}
{\sp{\sn pVerticies}{\sv 8;5;(0,0);(0,306);(26,306);(26,0);(0,0);}}
{\sp{\sn pSegmentInfo}{\sv 2;12;16384;45824;1;45824;1;45824;1;45824;1;45824;2457
7;32768}}
{\sp{\sn fFillOK}{\sv 1}}
{\sp{\sn fFilled}{\sv 1}}
{\sp{\sn fillColor}{\sv 0}}
{\sp{\sn fLine}{\sv 0}}{\sp{\sn lineColor}{\sv 0}}
{\sp{\sn lineType}{\sv 0}}
{\sp{\sn fArrowheadsOK}{\sv 0}}
{\sp{\sn fBehindDocument}{\sv 1}}
{\sp{\sn fLayoutInCell}{\sv 1}}}}
{\shp{\*\shpinst\shpleft6786\shptop1693\shpright6813\shpbottom1986\shpfhdr0\shpw
r3\shpwrk0\shpfblwtxt1\shplid2030\shpz1\shpbxpage\shpbypage
{\sp{\sn shapeType}{\sv 0}}
{\sp{\sn fFlipH}{\sv 0}}
{\sp{\sn fFlipV}{\sv 0}}
{\sp{\sn rotation}{\sv 0}}
{\sp{\sn geoRight}{\sv 27}}
{\sp{\sn geoBottom}{\sv 293}}
{\sp{\sn shapePath}{\sv 4}}
{\sp{\sn pVerticies}{\sv 8;5;(0,0);(0,306);(26,306);(26,0);(0,0);}}
{\sp{\sn pSegmentInfo}{\sv 2;12;16384;45824;1;45824;1;45824;1;45824;1;45824;2457
7;32768}}
{\sp{\sn fFillOK}{\sv 1}}
{\sp{\sn fFilled}{\sv 1}}
{\sp{\sn fillColor}{\sv 0}}
{\sp{\sn fLine}{\sv 0}}{\sp{\sn lineColor}{\sv 0}}
{\sp{\sn lineType}{\sv 0}}
{\sp{\sn fArrowheadsOK}{\sv 0}}
{\sp{\sn fBehindDocument}{\sv 1}}
{\sp{\sn fLayoutInCell}{\sv 1}}}}
{\shp{\*\shpinst\shpleft3946\shptop1986\shpright3973\shpbottom2293\shpfhdr0\shpw
r3\shpwrk0\shpfblwtxt1\shplid2031\shpz2\shpbxpage\shpbypage
{\sp{\sn shapeType}{\sv 0}}
{\sp{\sn fFlipH}{\sv 0}}
{\sp{\sn fFlipV}{\sv 0}}
{\sp{\sn rotation}{\sv 0}}
{\sp{\sn geoRight}{\sv 27}}
{\sp{\sn geoBottom}{\sv 307}}
{\sp{\sn shapePath}{\sv 4}}

{\sp{\sn pVerticies}{\sv 8;5;(0,0);(0,306);(26,306);(26,0);(0,0);}}


{\sp{\sn pSegmentInfo}{\sv 2;12;16384;45824;1;45824;1;45824;1;45824;1;45824;2457
7;32768}}
{\sp{\sn fFillOK}{\sv 1}}
{\sp{\sn fFilled}{\sv 1}}
{\sp{\sn fillColor}{\sv 0}}
{\sp{\sn fLine}{\sv 0}}{\sp{\sn lineColor}{\sv 0}}
{\sp{\sn lineType}{\sv 0}}
{\sp{\sn fArrowheadsOK}{\sv 0}}
{\sp{\sn fBehindDocument}{\sv 1}}
{\sp{\sn fLayoutInCell}{\sv 1}}}}
{\shp{\*\shpinst\shpleft6786\shptop1986\shpright6813\shpbottom2293\shpfhdr0\shpw
r3\shpwrk0\shpfblwtxt1\shplid2032\shpz3\shpbxpage\shpbypage
{\sp{\sn shapeType}{\sv 0}}
{\sp{\sn fFlipH}{\sv 0}}
{\sp{\sn fFlipV}{\sv 0}}
{\sp{\sn rotation}{\sv 0}}
{\sp{\sn geoRight}{\sv 27}}
{\sp{\sn geoBottom}{\sv 307}}
{\sp{\sn shapePath}{\sv 4}}
{\sp{\sn pVerticies}{\sv 8;5;(0,0);(0,306);(26,306);(26,0);(0,0);}}
{\sp{\sn pSegmentInfo}{\sv 2;12;16384;45824;1;45824;1;45824;1;45824;1;45824;2457
7;32768}}
{\sp{\sn fFillOK}{\sv 1}}
{\sp{\sn fFilled}{\sv 1}}
{\sp{\sn fillColor}{\sv 0}}
{\sp{\sn fLine}{\sv 0}}{\sp{\sn lineColor}{\sv 0}}
{\sp{\sn lineType}{\sv 0}}
{\sp{\sn fArrowheadsOK}{\sv 0}}
{\sp{\sn fBehindDocument}{\sv 1}}
{\sp{\sn fLayoutInCell}{\sv 1}}}}
{\shp{\*\shpinst\shpleft3946\shptop2293\shpright3973\shpbottom2586\shpfhdr0\shpw
r3\shpwrk0\shpfblwtxt1\shplid2033\shpz4\shpbxpage\shpbypage
{\sp{\sn shapeType}{\sv 0}}
{\sp{\sn fFlipH}{\sv 0}}
{\sp{\sn fFlipV}{\sv 0}}
{\sp{\sn rotation}{\sv 0}}
{\sp{\sn geoRight}{\sv 27}}
{\sp{\sn geoBottom}{\sv 293}}
{\sp{\sn shapePath}{\sv 4}}
{\sp{\sn pVerticies}{\sv 8;5;(0,0);(0,306);(26,306);(26,0);(0,0);}}
{\sp{\sn pSegmentInfo}{\sv 2;12;16384;45824;1;45824;1;45824;1;45824;1;45824;2457
7;32768}}
{\sp{\sn fFillOK}{\sv 1}}
{\sp{\sn fFilled}{\sv 1}}
{\sp{\sn fillColor}{\sv 0}}
{\sp{\sn fLine}{\sv 0}}{\sp{\sn lineColor}{\sv 0}}
{\sp{\sn lineType}{\sv 0}}
{\sp{\sn fArrowheadsOK}{\sv 0}}
{\sp{\sn fBehindDocument}{\sv 1}}
{\sp{\sn fLayoutInCell}{\sv 1}}}}
{\shp{\*\shpinst\shpleft6786\shptop2293\shpright6813\shpbottom2586\shpfhdr0\shpw
r3\shpwrk0\shpfblwtxt1\shplid2034\shpz5\shpbxpage\shpbypage
{\sp{\sn shapeType}{\sv 0}}
{\sp{\sn fFlipH}{\sv 0}}
{\sp{\sn fFlipV}{\sv 0}}
{\sp{\sn rotation}{\sv 0}}
{\sp{\sn geoRight}{\sv 27}}
{\sp{\sn geoBottom}{\sv 293}}
{\sp{\sn shapePath}{\sv 4}}

{\sp{\sn pVerticies}{\sv 8;5;(0,0);(0,306);(26,306);(26,0);(0,0);}}


{\sp{\sn pSegmentInfo}{\sv 2;12;16384;45824;1;45824;1;45824;1;45824;1;45824;2457
7;32768}}
{\sp{\sn fFillOK}{\sv 1}}
{\sp{\sn fFilled}{\sv 1}}
{\sp{\sn fillColor}{\sv 0}}
{\sp{\sn fLine}{\sv 0}}{\sp{\sn lineColor}{\sv 0}}
{\sp{\sn lineType}{\sv 0}}
{\sp{\sn fArrowheadsOK}{\sv 0}}
{\sp{\sn fBehindDocument}{\sv 1}}
{\sp{\sn fLayoutInCell}{\sv 1}}}}
{\shp{\*\shpinst\shpleft3946\shptop2586\shpright3973\shpbottom2893\shpfhdr0\shpw
r3\shpwrk0\shpfblwtxt1\shplid2035\shpz6\shpbxpage\shpbypage
{\sp{\sn shapeType}{\sv 0}}
{\sp{\sn fFlipH}{\sv 0}}
{\sp{\sn fFlipV}{\sv 0}}
{\sp{\sn rotation}{\sv 0}}
{\sp{\sn geoRight}{\sv 27}}
{\sp{\sn geoBottom}{\sv 307}}
{\sp{\sn shapePath}{\sv 4}}
{\sp{\sn pVerticies}{\sv 8;5;(0,0);(0,306);(26,306);(26,0);(0,0);}}
{\sp{\sn pSegmentInfo}{\sv 2;12;16384;45824;1;45824;1;45824;1;45824;1;45824;2457
7;32768}}
{\sp{\sn fFillOK}{\sv 1}}
{\sp{\sn fFilled}{\sv 1}}
{\sp{\sn fillColor}{\sv 0}}
{\sp{\sn fLine}{\sv 0}}{\sp{\sn lineColor}{\sv 0}}
{\sp{\sn lineType}{\sv 0}}
{\sp{\sn fArrowheadsOK}{\sv 0}}
{\sp{\sn fBehindDocument}{\sv 1}}
{\sp{\sn fLayoutInCell}{\sv 1}}}}
{\shp{\*\shpinst\shpleft3946\shptop2893\shpright3973\shpbottom3186\shpfhdr0\shpw
r3\shpwrk0\shpfblwtxt1\shplid2036\shpz7\shpbxpage\shpbypage
{\sp{\sn shapeType}{\sv 0}}
{\sp{\sn fFlipH}{\sv 0}}
{\sp{\sn fFlipV}{\sv 0}}
{\sp{\sn rotation}{\sv 0}}
{\sp{\sn geoRight}{\sv 27}}
{\sp{\sn geoBottom}{\sv 293}}
{\sp{\sn shapePath}{\sv 4}}
{\sp{\sn pVerticies}{\sv 8;5;(0,0);(0,306);(26,306);(26,0);(0,0);}}
{\sp{\sn pSegmentInfo}{\sv 2;12;16384;45824;1;45824;1;45824;1;45824;1;45824;2457
7;32768}}
{\sp{\sn fFillOK}{\sv 1}}
{\sp{\sn fFilled}{\sv 1}}
{\sp{\sn fillColor}{\sv 0}}
{\sp{\sn fLine}{\sv 0}}{\sp{\sn lineColor}{\sv 0}}
{\sp{\sn lineType}{\sv 0}}
{\sp{\sn fArrowheadsOK}{\sv 0}}
{\sp{\sn fBehindDocument}{\sv 1}}
{\sp{\sn fLayoutInCell}{\sv 1}}}}
{\shp{\*\shpinst\shpleft6786\shptop2893\shpright6813\shpbottom3186\shpfhdr0\shpw
r3\shpwrk0\shpfblwtxt1\shplid2037\shpz8\shpbxpage\shpbypage
{\sp{\sn shapeType}{\sv 0}}
{\sp{\sn fFlipH}{\sv 0}}
{\sp{\sn fFlipV}{\sv 0}}
{\sp{\sn rotation}{\sv 0}}
{\sp{\sn geoRight}{\sv 27}}
{\sp{\sn geoBottom}{\sv 293}}
{\sp{\sn shapePath}{\sv 4}}

{\sp{\sn pVerticies}{\sv 8;5;(0,0);(0,306);(26,306);(26,0);(0,0);}}


{\sp{\sn pSegmentInfo}{\sv 2;12;16384;45824;1;45824;1;45824;1;45824;1;45824;2457
7;32768}}
{\sp{\sn fFillOK}{\sv 1}}
{\sp{\sn fFilled}{\sv 1}}
{\sp{\sn fillColor}{\sv 0}}
{\sp{\sn fLine}{\sv 0}}{\sp{\sn lineColor}{\sv 0}}
{\sp{\sn lineType}{\sv 0}}
{\sp{\sn fArrowheadsOK}{\sv 0}}
{\sp{\sn fBehindDocument}{\sv 1}}
{\sp{\sn fLayoutInCell}{\sv 1}}}}
{\shp{\*\shpinst\shpleft3946\shptop3186\shpright3973\shpbottom3493\shpfhdr0\shpw
r3\shpwrk0\shpfblwtxt1\shplid2038\shpz9\shpbxpage\shpbypage
{\sp{\sn shapeType}{\sv 0}}
{\sp{\sn fFlipH}{\sv 0}}
{\sp{\sn fFlipV}{\sv 0}}
{\sp{\sn rotation}{\sv 0}}
{\sp{\sn geoRight}{\sv 27}}
{\sp{\sn geoBottom}{\sv 307}}
{\sp{\sn shapePath}{\sv 4}}
{\sp{\sn pVerticies}{\sv 8;5;(0,0);(0,306);(26,306);(26,0);(0,0);}}
{\sp{\sn pSegmentInfo}{\sv 2;12;16384;45824;1;45824;1;45824;1;45824;1;45824;2457
7;32768}}
{\sp{\sn fFillOK}{\sv 1}}
{\sp{\sn fFilled}{\sv 1}}
{\sp{\sn fillColor}{\sv 0}}
{\sp{\sn fLine}{\sv 0}}{\sp{\sn lineColor}{\sv 0}}
{\sp{\sn lineType}{\sv 0}}
{\sp{\sn fArrowheadsOK}{\sv 0}}
{\sp{\sn fBehindDocument}{\sv 1}}
{\sp{\sn fLayoutInCell}{\sv 1}}}}
{\shp{\*\shpinst\shpleft6786\shptop3186\shpright6813\shpbottom3493\shpfhdr0\shpw
r3\shpwrk0\shpfblwtxt1\shplid2039\shpz10\shpbxpage\shpbypage
{\sp{\sn shapeType}{\sv 0}}
{\sp{\sn fFlipH}{\sv 0}}
{\sp{\sn fFlipV}{\sv 0}}
{\sp{\sn rotation}{\sv 0}}
{\sp{\sn geoRight}{\sv 27}}
{\sp{\sn geoBottom}{\sv 307}}
{\sp{\sn shapePath}{\sv 4}}
{\sp{\sn pVerticies}{\sv 8;5;(0,0);(0,306);(26,306);(26,0);(0,0);}}
{\sp{\sn pSegmentInfo}{\sv 2;12;16384;45824;1;45824;1;45824;1;45824;1;45824;2457
7;32768}}
{\sp{\sn fFillOK}{\sv 1}}
{\sp{\sn fFilled}{\sv 1}}
{\sp{\sn fillColor}{\sv 0}}
{\sp{\sn fLine}{\sv 0}}{\sp{\sn lineColor}{\sv 0}}
{\sp{\sn lineType}{\sv 0}}
{\sp{\sn fArrowheadsOK}{\sv 0}}
{\sp{\sn fBehindDocument}{\sv 1}}
{\sp{\sn fLayoutInCell}{\sv 1}}}}
{\shp{\*\shpinst\shpleft6786\shptop3493\shpright6813\shpbottom3786\shpfhdr0\shpw
r3\shpwrk0\shpfblwtxt1\shplid2040\shpz11\shpbxpage\shpbypage
{\sp{\sn shapeType}{\sv 0}}
{\sp{\sn fFlipH}{\sv 0}}
{\sp{\sn fFlipV}{\sv 0}}
{\sp{\sn rotation}{\sv 0}}
{\sp{\sn geoRight}{\sv 27}}
{\sp{\sn geoBottom}{\sv 293}}
{\sp{\sn shapePath}{\sv 4}}

{\sp{\sn pVerticies}{\sv 8;5;(0,0);(0,306);(26,306);(26,0);(0,0);}}


{\sp{\sn pSegmentInfo}{\sv 2;12;16384;45824;1;45824;1;45824;1;45824;1;45824;2457
7;32768}}
{\sp{\sn fFillOK}{\sv 1}}
{\sp{\sn fFilled}{\sv 1}}
{\sp{\sn fillColor}{\sv 0}}
{\sp{\sn fLine}{\sv 0}}{\sp{\sn lineColor}{\sv 0}}
{\sp{\sn lineType}{\sv 0}}
{\sp{\sn fArrowheadsOK}{\sv 0}}
{\sp{\sn fBehindDocument}{\sv 1}}
{\sp{\sn fLayoutInCell}{\sv 1}}}}
{\shp{\*\shpinst\shpleft6786\shptop3786\shpright6813\shpbottom4093\shpfhdr0\shpw
r3\shpwrk0\shpfblwtxt1\shplid2041\shpz12\shpbxpage\shpbypage
{\sp{\sn shapeType}{\sv 0}}
{\sp{\sn fFlipH}{\sv 0}}
{\sp{\sn fFlipV}{\sv 0}}
{\sp{\sn rotation}{\sv 0}}
{\sp{\sn geoRight}{\sv 27}}
{\sp{\sn geoBottom}{\sv 307}}
{\sp{\sn shapePath}{\sv 4}}
{\sp{\sn pVerticies}{\sv 8;5;(0,0);(0,306);(26,306);(26,0);(0,0);}}
{\sp{\sn pSegmentInfo}{\sv 2;12;16384;45824;1;45824;1;45824;1;45824;1;45824;2457
7;32768}}
{\sp{\sn fFillOK}{\sv 1}}
{\sp{\sn fFilled}{\sv 1}}
{\sp{\sn fillColor}{\sv 0}}
{\sp{\sn fLine}{\sv 0}}{\sp{\sn lineColor}{\sv 0}}
{\sp{\sn lineType}{\sv 0}}
{\sp{\sn fArrowheadsOK}{\sv 0}}
{\sp{\sn fBehindDocument}{\sv 1}}
{\sp{\sn fLayoutInCell}{\sv 1}}}}\pgwsxn11920\pghsxn16840\marglsxn666\margrsxn13
3\margtsxn666\margbsxn213\cols3\colno1\colw3773\colsr-0\colno2\colw2426\colsr-0\
colno3\colw4920\pard\li1480\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li1480\ri0\sl213\slmult0 \fs18\cf0\par\pard\li1480\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li14
80\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li1480\ri0\sl-213\slmult0 \fs18\cf0\par
\pard\li1480\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li1480\ri0\sl-213\slmult0 \fs
18\cf0\par\pard\li1480\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li1480\ri0\sl-213\s
lmult0 \fs18\cf0\par\pard\li1480\ri0\sl-293\slmult0 \fs24\cf0\f0\charscalex100\b
{MTRICAS}\b0 \par\column\pard\li0\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li0\ri0\
sl-213\slmult0 \fs18\cf0\par\pard\li0\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li0\
ri0\sl-213\slmult0 \fs18\cf0\par\pard\li0\ri0\sl-466\slmult0 \fs26\cf0\f0\charsc
alex100 {DEL PRODUCTO}\fs26\cf0\f0\charscalex100 { }\par\pard\li106\ri0\sl-213\s
lmult0 \fs18\cf0\par\pard\li106\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li106\ri0\
sl-213\slmult0 \fs18\cf0\par\pard\li106\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li
106\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li106\ri0\sl-426\slmult0 \fs26\cf0\f0\
charscalex100 {DEL PROCESO}\fs26\cf0\f0\charscalex100 { }\par\column\pard\li0\ri
0\sl-213\slmult0 \fs18\cf0\par\pard\li0\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li
0\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li0\ri0\sl-213\slmult0 \fs18\cf0\par\par
d\li0\ri0\sl-466\slmult0 \fs24\cf0\f0\charscalex100 {Estructura de datos}\fs24\c
f0\f0\charscalex100 { }\par\pard\li0\ri0\sl-293\slmult0 \fs24\cf0\f0\charscalex1
00 {Lgica}\fs24\cf0\f0\charscalex100 { }\par\pard\li0\ri0\sl-306\slmult0 \fs24\cf
0\f0\charscalex100 {.............. }\par\pard\li0\ri0\sl-213\slmult0 \fs18\cf0\p
ar\pard\li0\ri0\sl-386\slmult0 \fs24\cf0\f0\charscalex100 {Tiempo de desarrollo}
\fs24\cf0\f0\charscalex100 { }\par\pard\li0\ri0\sl-293\slmult0 \fs24\cf0\f0\char
scalex100 {Reusabilidad}\fs24\cf0\f0\charscalex100 { }\par\pard\li0\ri0\sl-306\s
lmult0 \fs24\cf0\f0\charscalex100 {Productividad}\fs24\cf0\f0\charscalex100 { }\
par\pard\li0\ri0\sl-293\slmult0 \fs24\cf0\f0\charscalex100 {................. }\
par\pard\sect\sectd\sbknone\pgwsxn11920\pghsxn16840\marglsxn666\margrsxn133\pard
\li3133\ri0\sl-480\slmult0 \fs24\cf0\f0\charscalex100\i {Fig. 2.1. Mtricas del so
ftware. Categoras.}\i0 \fs24\cf0\f0\charscalex100\i { }\i0 \par\pard\li1746\ri0\s

l-213\slmult0 \fs18\cf0\par\pard\li1746\ri0\sl-386\slmult0 \fs26\cf0\f0\charscal


ex100 {Un problema asociado al empleo de mtricas del software es el de}\fs26\cf0\
f0\charscalex100 { }\par\pard\li1026\ri0\sl-360\slmult0 \*\tx2226\*\tx3266\fs26\
cf0\f0\charscalex100\b {comparar}\b0 \tab \fs26\cf0\f0\charscalex100\b {medidas}
\b0 \tab \fs26\cf0\f0\charscalex100\b {diferentes}\b0 \fs26\cf0\f0\charscalex100
{, aunque aparentemente se refieran a }\fs26\cf0\f0\charscalex100 {la misma}\pa
r\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {magnitud. Slo la def
inicin precisa de las condiciones y los elementos que}\par\pard\li1026\ri0\sl-360
\slmult0 \fs26\cf0\f0\charscalex100 {intervienen en una medida determinada permi
tirn que la comparacin de dos}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\cha
rscalex100 {valores pueda realizarse con garantas y pueda servir de base a estudi
os ms}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {completos y
fiables. }\fs26\cf0\f0\charscalex100 { }\par\pard\li1746\ri0\sl-480\slmult0 \fs
26\cf0\f0\charscalex100 {En las siguientes secciones se enumerarn algunas de las
mtricas ms}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {difundi
das siguiendo la clasificacin mencionada anteriormente.}\fs26\cf0\f0\charscalex10
0 { }\par\pard\li1026\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li1026\ri0\sl-213\sl
mult0 \fs18\cf0\par\pard\li1026\ri0\sl-413\slmult0 \fs26\cf0\f0\charscalex100\b
{2.1.1.}\b0 \fs26\cf0\f0\charscalex100\b {-}\b0 \fs26\cf0\f0\charscalex100\b { Mt
ricas de tamao.}\b0 \fs26\cf0\f0\charscalex100\b { }\b0 \par\pard\li1746\ri0\sl-2
13\slmult0 \fs18\cf0\par\pard\li1746\ri0\sl-386\slmult0 \fs26\cf0\f0\charscalex1
00 {Los programas se escriben en lenguajes muy distintos y con propsitos}\par\par
d\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {muy diferentes, }\fs26\c
f0\f0\charscalex100 {usando tcnicas y mtodos dispares, pero con una caracterstica}\
par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {comn: tienen un ta
mao.}\fs26\cf0\f0\charscalex100 { }\par\pard\li1746\ri0\sl-480\slmult0 \fs24\cf0\
f0\charscalex100 {Este tamao se determina habitualmente tomando como referencia e
l}\fs24\cf0\f0\charscalex100 { }\par\pard\li1026\ri0\sl-360\slmult0 \fs24\cf0\f0
\charscalex100 {programa en cdigo fuente. Podran emplearse otras magnitudes para e
ste}\fs24\cf0\f0\charscalex100 { }\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\
f0\charscalex100 {propsito (la memoria que se necesita para almacenarlo), pero el
tratamiento de}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {
un fichero fuente es relativamente sencillo, lo que facilita la sistematizacin y}
\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {automatizacin del
proceso de medida. El tamao es una medida empleada}\fs26\cf0\f0\charscalex100 {
}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {fundamentalment
e por tres razones: es}{ }\fs26\cf0\f0\charscalex100\b {fcil de obt}\b0 \fs26\cf0
\f0\charscalex100\b {ener}\b0 \fs26\cf0\f0\charscalex100 { una vez que el progra
ma}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {ha sido compl
etado, es uno de los factores}{ }\fs26\cf0\f0\charscalex100\b {ms importantes}\b0
\fs26\cf0\f0\charscalex100 { en los mtodos de}\par\pard\li1026\ri0\sl-360\slmult
0 \fs26\cf0\f0\charscalex100 {desarrollo, y la}{ }\fs26\cf0\f0\charscalex100\b {
productividad se expresa tradicionalmente con el tamao del}\b0 \par\pard\li1026\r
i0\sl-360\slmult0 \fs26\cf0\f0\charscalex100\b {cdigo}\b0 \fs26\cf0\f0\charscalex
100 {.}\fs26\cf0\f0\charscalex100 { }\par\pard\li1746\ri0\sl-480\slmult0 \fs26\c
f0\f0\charscalex100 {La medida de tamao ms usada es la}{ }\fs26\cf0\f0\charscalex1
00\b {cantidad de lneas de cdigo}\b0 \fs26\cf0\f0\charscalex100 { que se}\par\pard
\li1026\ri0\sl-360\slmult0 \*\tx4706\fs26\cf0\f0\charscalex100 {representa como
S}\fs26\cf0\f0\charscalex100 {s}\fs26\cf0\f0\charscalex100 {, y se mide en}\tab
\fs26\cf0\f0\charscalex100\b {LOC}\b0 \fs26\cf0\f0\charscalex100 { (Lines Of Cod
e, lneas de cdigo). Para}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscal
ex100 {programas grandes es ms adecuado el uso de}{ }\fs26\cf0\f0\charscalex100\b
{KLOC}\b0 \fs26\cf0\f0\charscalex100 { (miles de lneas de cdigo)}\par\pard\li1026
\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {representadas como S. A pesar de
que la lnea de cdigo podra suponerse una}\par\pard\li5040\ri0\sl-213\slmult0 \fs18
\cf0\par\pard\li5040\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li5040\ri0\sl-213\slm
ult0 \fs18\cf0\par\pard\li5040\ri0\sl-426\slmult0 \fs24\cf0\f0\charscalex100 {2
}\fs24\cf0\f0\charscalex100 {-}\fs24\cf0\f0\charscalex100 { }\fs24\cf0\f0\charsc
alex100 {3}\fs24\cf0\f0\charscalex100 { }\par\pard\sect\sectd\sbknone\pgwsxn1192
0\pghsxn16840\marglsxn666\margrsxn133\pard\sect\sectd\sbkpage\pgwsxn11920\pghsxn

16840\marglsxn666\margrsxn133\margtsxn666\margbsxn213\pard\li1026\ri0\sl-213\slm
ult0 \fs18\cf0\par\pard\li1026\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li1026\ri0\
sl-213\slmult0 \fs18\cf0\par\pard\li1026\ri0\sl-213\slmult0 \fs18\cf0\par\pard\l
i1026\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li1026\ri0\sl-306\slmult0 \fs26\cf0\
f0\charscalex100 {medida simple qu}\fs26\cf0\f0\charscalex100 {e puede obtenerse
fcilmente no lo es tanto. Para muchos}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\
cf0\f0\charscalex100 {autores, las lneas de cdigo medidas no deben incluir comenta
rios o lneas en}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {b
lanco, dado que su presencia o ausencia no afectar al funcionamiento del}\par\par
d\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {programa. Adems, incluir
comentarios o lneas en blanco no supone el mismo}\par\pard\li1026\ri0\sl-360\slmu
lt0 \fs26\cf0\f0\charscalex100 {nivel de dificultad que desarrollar una lnea de cd
igo. La inclusin de estos}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charsc
alex100 {elementos en la medida de productividad induce a muchos programadores a
}\fs26\cf0\f0\charscalex100 { }\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\
charscalex100 {producirlos artificialmente con objeto de inflar los resultados d
ando luga}\fs26\cf0\f0\charscalex100 {r a}\par\pard\li1026\ri0\sl-360\slmult0 \f
s26\cf0\f0\charscalex100 {elevadas}{ }\fs26\cf0\f0\charscalex100\b {tasas de pro
ductividad}\b0 \fs26\cf0\f0\charscalex100 {, generalmente estimada en}{ }\fs26\c
f0\f0\charscalex100\b {LOC/PM}\b0 \fs26\cf0\f0\charscalex100 { (lneas de}\par\par
d\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {cdigo por Programmer Mont
h, programadores o personas por mes). Por contra,}\par\pard\li1026\ri0\sl-360\sl
mult0 \fs26\cf0\f0\charscalex100 {comentarios y lneas en blanco aumentan la legib
ilidad del cdigo, por lo que}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\cha
rscalex100 {facilitan la depuracin de errores y el mantenimiento, si bien es difci
l cuantificar}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {en
qu grado.}\fs26\cf0\f0\charscalex100 { }\par\pard\li1746\ri0\sl-480\slmult0 \fs2
6\cf0\f0\charscalex100 {Por otra parte, el uso de lenguajes de alto nivel compli
ca la definicin de}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100
{lneas computables: una instruccin puede extenderse a travs de varias lneas, o}\par
\pard\li1026\ri0\sl-360\slmult0 \fs24\cf0\f0\charscalex100 {dos o ms instrucc}\fs
24\cf0\f0\charscalex100 {iones pueden situarse en una nica lnea. Adems, hay}\fs24\c
f0\f0\charscalex100 { }\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscal
ex100 {elementos del programa que tienen un peso desigual en el resultado final:
}\fs26\cf0\f0\charscalex100 { }\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\
charscalex100 {declaraciones de variables, tipo, constantes, cabeceras de funcio
nes, directivas de}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex10
0 {preprocesador. }\fs26\cf0\f0\charscalex100 { }\par\pard\li1746\ri0\sl-480\slm
ult0 \fs26\cf0\f0\charscalex100 {Todo esto contribuye a complicar el uso de las
lneas de cdigo como}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100
{mtrica fiable, ante la falta de definiciones estrictas y nicas de esta medida.}\
fs26\cf0\f0\charscalex100 { }\par\pard\li1746\ri0\sl-480\slmult0 \fs26\cf0\f0\ch
arscalex100 {Una posible solucin a los problemas mencionados anteriormente viene
de}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {la mano de la
medida de tamao como cuenta de los}{ }\fs26\cf0\f0\charscalex100\b {"tokens"}\b0
\fs26\cf0\f0\charscalex100\b { del cdigo fuente}\b0 \fs26\cf0\f0\charscalex100 {
.}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {Un token es un
elemento de lenguaje que tiene significado por s mismo. Los}\par\pard\li1026\ri0
\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {tokens de un programa son las instru
cciones del lenguajes, los identificadores,}\par\pard\li1026\ri0\sl-360\slmult0
\fs24\cf0\f0\charscalex100 {constantes, operadores delimitadores de comentario y
signos especiales del}\fs24\cf0\f0\charscalex100 { }\par\pard\li1026\ri0\sl-360
\slmult0 \fs26\cf0\f0\charscalex100 {mismo. De esta forma se obtiene una medida
ms realista de la cantidad de}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\ch
arscalex100 {informacin contenida en el cdigo fuente. Ver para ello la subrutina F
ORTRAN}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {de la fig
ura adjunta y el anlisis y descomposicin en tokens de la misma en la}\par\pard\li1
026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {figura siguiente.}\fs26\cf0\f
0\charscalex100 { }\par\pard\li5040\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li5040
\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li5040\ri0\sl-213\slmult0 \fs18\cf0\par\p

ard\li5040\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li5040\ri0\sl-213\slmult0 \fs18


\cf0\par\pard\li5040\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li5040\ri0\sl-213\slm
ult0 \fs18\cf0\par\pard\li5040\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li5040\ri0\
sl-213\slmult0 \fs18\cf0\par\pard\li5040\ri0\sl-213\slmult0 \fs18\cf0\par\pard\l
i5040\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li5040\ri0\sl-213\slmult0 \fs18\cf0\
par\pard\li5040\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li5040\ri0\sl-213\slmult0
\fs18\cf0\par\pard\li5040\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li5040\ri0\sl-26
6\slmult0 \fs24\cf0\f0\charscalex100 {2 }\fs24\cf0\f0\charscalex100 {-}\fs24\cf0
\f0\charscalex100 { }\fs24\cf0\f0\charscalex100 {4}\fs24\cf0\f0\charscalex100 {
}\par\pard\sect\sectd\sbkpage
{\shp{\*\shpinst\shpleft1693\shptop7306\shpright9986\shpbottom7320\shpfhdr0\shpw
r3\shpwrk0\shpfblwtxt1\shplid2044\shpz2\shpbxpage\shpbypage
{\sp{\sn shapeType}{\sv 0}}
{\sp{\sn fFlipH}{\sv 0}}
{\sp{\sn fFlipV}{\sv 0}}
{\sp{\sn rotation}{\sv 0}}
{\sp{\sn geoRight}{\sv 8293}}
{\sp{\sn geoBottom}{\sv 14}}
{\sp{\sn shapePath}{\sv 4}}
{\sp{\sn pVerticies}{\sv 8;5;(0,0);(0,13);(8293,13);(8293,0);(0,0);}}
{\sp{\sn pSegmentInfo}{\sv 2;12;16384;45824;1;45824;1;45824;1;45824;1;45824;2457
7;32768}}
{\sp{\sn fFillOK}{\sv 1}}
{\sp{\sn fFilled}{\sv 1}}
{\sp{\sn fillColor}{\sv 0}}
{\sp{\sn fLine}{\sv 1}}{\sp{\sn lineColor}{\sv 0}}
{\sp{\sn lineType}{\sv 0}}
{\sp{\sn fArrowheadsOK}{\sv 0}}
{\sp{\sn fBehindDocument}{\sv 1}}
{\sp{\sn fLayoutInCell}{\sv 1}}}}
{\shp{\*\shpinst\shpleft1693\shptop11346\shpright10333\shpbottom11360\shpfhdr0\s
hpwr3\shpwrk0\shpfblwtxt1\shplid2045\shpz3\shpbxpage\shpbypage
{\sp{\sn shapeType}{\sv 0}}
{\sp{\sn fFlipH}{\sv 0}}
{\sp{\sn fFlipV}{\sv 0}}
{\sp{\sn rotation}{\sv 0}}
{\sp{\sn geoRight}{\sv 8640}}
{\sp{\sn geoBottom}{\sv 14}}
{\sp{\sn shapePath}{\sv 4}}
{\sp{\sn pVerticies}{\sv 8;5;(0,0);(0,13);(8640,13);(8640,0);(0,0);}}
{\sp{\sn pSegmentInfo}{\sv 2;12;16384;45824;1;45824;1;45824;1;45824;1;45824;2457
7;32768}}
{\sp{\sn fFillOK}{\sv 1}}
{\sp{\sn fFilled}{\sv 1}}
{\sp{\sn fillColor}{\sv 0}}
{\sp{\sn fLine}{\sv 1}}{\sp{\sn lineColor}{\sv 0}}
{\sp{\sn lineType}{\sv 0}}
{\sp{\sn fArrowheadsOK}{\sv 0}}
{\sp{\sn fBehindDocument}{\sv 1}}
{\sp{\sn fLayoutInCell}{\sv 1}}}}\pgwsxn11920\pghsxn16840\marglsxn666\margrsxn13
3\margtsxn666\margbsxn213\cols3\colno1\colw2586\colsr-0\colno2\colw5640\colsr-0\
colno3\colw2893\pard\li1320\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li1320\ri0\sl213\slmult0 \fs18\cf0\par\pard\li1320\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li13
20\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li1320\ri0\sl-466\slmult0 \fs24\cf0\f0\
charscalex100\ul {Lnea}\ul0 \fs24\cf0\f0\charscalex100\ul { }\ul0 \fs24\cf0\f0\ch
arscalex100\ul { }\ul0 \par\pard\li1320\ri0\sl-266\slmult0 \fs24\cf0\f0\charscal
ex100 { 1}\fs24\cf0\f0\charscalex100 { }\par\pard\li1320\ri0\sl-266\slmult0 \fs2
4\cf0\f0\charscalex100 { 2}\fs24\cf0\f0\charscalex100 { }\par\pard\li1320\ri0\sl
-266\slmult0 \*\tx1880\fs24\cf0\f0\charscalex100 { 3}\fs24\cf0\f0\charscalex100
{ }\tab \fs24\cf0\f0\charscalex100 {C}\fs24\cf0\f0\charscalex100 { }\par\pard\li

1320\ri0\sl-280\slmult0 \*\tx1880\fs22\cf0\f0\charscalex100 { }\fs22\cf0\f0\char


scalex100 {4}\fs22\cf0\f0\charscalex100 { }\tab \fs22\cf0\f0\charscalex100 {C}\f
s22\cf0\f0\charscalex100 { }\par\pard\li1320\ri0\sl-266\slmult0 \fs24\cf0\f0\cha
rscalex100 { 5}\fs24\cf0\f0\charscalex100 { }\par\pard\li1320\ri0\sl-266\slmult0
\fs24\cf0\f0\charscalex100 { }\fs24\cf0\f0\charscalex100 {6}\fs24\cf0\f0\charsc
alex100 { }\par\pard\li1320\ri0\sl-266\slmult0 \fs24\cf0\f0\charscalex100 { 7}\f
s24\cf0\f0\charscalex100 { }\par\pard\li1320\ri0\sl-280\slmult0 \fs24\cf0\f0\cha
rscalex100 { 8}\fs24\cf0\f0\charscalex100 { }\par\pard\li1320\ri0\sl-266\slmult0
\fs24\cf0\f0\charscalex100 { }\fs24\cf0\f0\charscalex100 {9}\fs24\cf0\f0\charsc
alex100 { }\par\pard\li1320\ri0\sl-266\slmult0 \fs24\cf0\f0\charscalex100 {10}\f
s24\cf0\f0\charscalex100 { }\par\pard\li1320\ri0\sl-266\slmult0 \fs24\cf0\f0\cha
rscalex100 {11}\fs24\cf0\f0\charscalex100 { }\par\pard\li1320\ri0\sl-280\slmult0
\fs24\cf0\f0\charscalex100 {12}\fs24\cf0\f0\charscalex100 { }\par\pard\li1320\r
i0\sl-266\slmult0 \*\tx1880\fs24\cf0\f0\charscalex100 {13}\fs24\cf0\f0\charscale
x100 { }\tab \fs24\cf0\f0\charscalex100 {220}\fs24\cf0\f0\charscalex100 { }\par\
pard\li1320\ri0\sl-266\slmult0 \*\tx1880\fs22\cf0\f0\charscalex100 {14}\fs22\cf0
\f0\charscalex100 { }\tab \fs22\cf0\f0\charscalex100 {210}\fs22\cf0\f0\charscale
x100 { }\par\pard\li1320\ri0\sl-266\slmult0 \*\tx1880\fs22\cf0\f0\charscalex100
{15}\fs22\cf0\f0\charscalex100 { }\tab \fs22\cf0\f0\charscalex100 {200}\fs22\cf0
\f0\charscalex100 { }\par\pard\li1320\ri0\sl-280\slmult0 \fs24\cf0\f0\charscalex
100 {16}\fs24\cf0\f0\charscalex100 { }\par\column\pard\li0\ri0\sl-213\slmult0 \f
s18\cf0\par\pard\li0\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li0\ri0\sl-213\slmult
0 \fs18\cf0\par\pard\li0\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li0\ri0\sl-213\sl
mult0 \fs18\cf0\par\pard\li0\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li0\ri0\sl-30
6\slmult0 \fs24\cf0\f0\charscalex100 {SUBROUTINE SORT (X,N)}\fs24\cf0\f0\charsca
lex100 { }\par\pard\li0\ri0\sl-266\slmult0 \fs24\cf0\f0\charscalex100 {INTEGER X
(100), N, I, J, SAVE IM1}\fs24\cf0\f0\charscalex100 { }\par\pard\li0\ri0\sl-266\
slmult0 \fs24\cf0\f0\charscalex100 {THIS ROUTINE SORTS ARRAY X INTO ASCENDING}\f
s24\cf0\f0\charscalex100 { }\par\pard\li0\ri0\sl-280\slmult0 \fs24\cf0\f0\charsc
alex100 {ORDER.}\fs24\cf0\f0\charscalex100 { }\par\pard\li0\ri0\sl-266\slmult0 \
fs24\cf0\f0\charscalex100 {IF (N.LT.2) GO TO 200}\fs24\cf0\f0\charscalex100 { }\
par\pard\li600\ri0\sl-266\slmult0 \fs24\cf0\f0\charscalex100 {DO 210 I=2,N}\fs24
\cf0\f0\charscalex100 { }\par\pard\li1320\ri0\sl-266\slmult0 \fs24\cf0\f0\char
scalex100 {IM1=I}\fs24\cf0\f0\charscalex100 {-}\fs24\cf0\f0\charscalex100 {1}\fs
24\cf0\f0\charscalex100 { }\par\pard\li1320\ri0\sl-280\slmult0 \fs24\cf0\f0\char
scalex100 {DO 220 J=1, IM1}\fs24\cf0\f0\charscalex100 { }\par\pard\li2040\ri0\sl
-266\slmult0 \fs24\cf0\f0\charscalex100 {IF (X(I).GE.X(J)) GO TO 220}\fs24\cf0\f
0\charscalex100 { }\par\pard\li2760\ri0\sl-266\slmult0 \fs24\cf0\f0\charscalex
100 {SAVE=X(I)}\fs24\cf0\f0\charscalex100 { }\par\pard\li2760\ri0\sl-266\slmult0
\fs24\cf0\f0\charscalex100 {X(I)=X(J)}\fs24\cf0\f0\charscalex100 { }\par\pard\l
i2760\ri0\sl-280\slmult0 \fs24\cf0\f0\charscalex100 {X(J)=SAVE}\fs24\cf0\f0\char
scalex100 { }\par\pard\li2040\ri0\sl-266\slmult0 \fs24\cf0\f0\charscalex100 {CON
TINUE}\fs24\cf0\f0\charscalex100 { }\par\pard\li1320\ri0\sl-266\slmult0 \fs24\
cf0\f0\charscalex100 {CONTINUE}\fs24\cf0\f0\charscalex100 { }\par\pard\li600\r
i0\sl-266\slmult0 \fs24\cf0\f0\charscalex100 {RETURN}\fs24\cf0\f0\charscalex100
{ }\par\pard\li0\ri0\sl-280\slmult0 \fs24\cf0\f0\charscalex100 {END}\fs24\cf0\f0
\charscalex100 { }\par\pard\li1200\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li1200\
ri0\sl-266\slmult0 \fs24\cf0\f0\charscalex100\i {Fig. 2.2. Subrutina FORTRAN.}\i
0 \fs24\cf0\f0\charscalex100\i { }\i0 \par\column\pard\li0\ri0\sl-213\slmult0 \f
s18\cf0\par\pard\li0\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li0\ri0\sl-213\slmult
0 \fs18\cf0\par\pard\li0\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li0\ri0\sl-466\sl
mult0 \fs24\cf0\f0\charscalex100\ul {
}\ul0 \fs24\cf0\f0\charscalex100\ul
{Nivel}\ul0 \fs24\cf0\f0\charscalex100\ul { }\ul0 \par\pard\li720\ri0\sl-213\slm
ult0 \fs18\cf0\par\pard\li720\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li720\ri0\sl
-213\slmult0 \fs18\cf0\par\pard\li720\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li72
0\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li720\ri0\sl-280\slmult0 \fs24\cf0\f0\ch
arscalex100 {1}\fs24\cf0\f0\charscalex100 { }\par\pard\li720\ri0\sl-266\slmult0
\fs24\cf0\f0\charscalex100 {2}\fs24\cf0\f0\charscalex100 { }\par\pard\li720\ri0\
sl-266\slmult0 \fs24\cf0\f0\charscalex100 {3}\fs24\cf0\f0\charscalex100 { }\par\
pard\li720\ri0\sl-280\slmult0 \fs24\cf0\f0\charscalex100 {3}\fs24\cf0\f0\charsca

lex100 { }\par\pard\li720\ri0\sl-266\slmult0 \fs24\cf0\f0\charscalex100 {4}\fs24


\cf0\f0\charscalex100 { }\par\pard\li720\ri0\sl-266\slmult0 \fs24\cf0\f0\charsca
lex100 {5}\fs24\cf0\f0\charscalex100 { }\par\pard\li720\ri0\sl-266\slmult0 \fs24
\cf0\f0\charscalex100 {5}\fs24\cf0\f0\charscalex100 { }\par\pard\li720\ri0\sl-28
0\slmult0 \fs24\cf0\f0\charscalex100 {5}\fs24\cf0\f0\charscalex100 { }\par\pard\
li720\ri0\sl-266\slmult0 \fs24\cf0\f0\charscalex100 {3}\fs24\cf0\f0\charscalex10
0 { }\par\pard\li720\ri0\sl-266\slmult0 \fs24\cf0\f0\charscalex100 {2}\fs24\cf0\
f0\charscalex100 { }\par\pard\li720\ri0\sl-266\slmult0 \fs24\cf0\f0\charscalex10
0 {1}\fs24\cf0\f0\charscalex100 { }\par\pard\sect\sectd\sbknone\pgwsxn11920\pghs
xn16840\marglsxn666\margrsxn133\cols6\colno1\colw3186\colsr-0\colno2\colw1440\co
lsr-0\colno3\colw720\colsr-0\colno4\colw2880\colsr-0\colno5\colw1440\colsr-0\col
no6\colw1453\pard\li1026\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li1026\ri0\sl-320
\slmult0 \fs24\cf0\f0\charscalex100 {Operadores}\fs24\cf0\f0\charscalex100 { }\p
ar\pard\li1026\ri0\sl-266\slmult0 \fs24\cf0\f0\charscalex100 {SUBROUTINE}\fs24\c
f0\f0\charscalex100 { }\par\pard\li1026\ri0\sl-280\slmult0 \fs24\cf0\f0\charscal
ex100 {( )}\fs24\cf0\f0\charscalex100 { }\par\pard\li1026\ri0\sl-266\slmult0 \fs
24\cf0\f0\charscalex100 {' }\fs24\cf0\f0\charscalex100 { }\par\pard\li1026\ri0\s
l-266\slmult0 \fs24\cf0\f0\charscalex100 {INTEGER}\fs24\cf0\f0\charscalex100 { }
\par\pard\li1026\ri0\sl-266\slmult0 \fs24\cf0\f0\charscalex100 {IF}\fs24\cf0\f0\
charscalex100 { }\par\pard\li1026\ri0\sl-280\slmult0 \fs24\cf0\f0\charscalex100
{.LT.}\fs24\cf0\f0\charscalex100 { }\par\pard\li1026\ri0\sl-266\slmult0 \fs24\cf
0\f0\charscalex100 {GO TO}\fs24\cf0\f0\charscalex100 { }\par\pard\li1026\ri0\sl266\slmult0 \fs24\cf0\f0\charscalex100 {DO}\fs24\cf0\f0\charscalex100 { }\par\pa
rd\li1026\ri0\sl-266\slmult0 \fs24\cf0\f0\charscalex100 {=}\fs24\cf0\f0\charscal
ex100 { }\par\pard\li1026\ri0\sl-280\slmult0 \fs24\cf0\f0\charscalex100 {-}\fs24
\cf0\f0\charscalex100 { }\par\pard\li1026\ri0\sl-266\slmult0 \fs24\cf0\f0\charsc
alex100 {.GE.}\fs24\cf0\f0\charscalex100 { }\par\pard\li1026\ri0\sl-266\slmult0
\fs24\cf0\f0\charscalex100 {CONTINUE}\fs24\cf0\f0\charscalex100 { }\par\pard\l
i1026\ri0\sl-266\slmult0 \fs24\cf0\f0\charscalex100 {RETURN}\fs24\cf0\f0\charsca
lex100 { }\par\pard\li1026\ri0\sl-280\slmult0 \fs22\cf0\f0\charscalex100 {end}\f
s22\cf0\f0\charscalex100 {-}\fs22\cf0\f0\charscalex100 {of}\fs22\cf0\f0\charscal
ex100 {-}\fs22\cf0\f0\charscalex100 {line}\fs22\cf0\f0\charscalex100 { }\par\par
d\li1026\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li1026\ri0\sl-320\slmult0 \fs24\c
f0\f0\charscalex100 {n}\fs24\cf0\f0\charscalex100 {1}\fs24\cf0\f0\charscalex100
{=14}\fs24\cf0\f0\charscalex100 { }\par\column\pard\li0\ri0\sl-213\slmult0 \fs
18\cf0\par\pard\li0\ri0\sl-320\slmult0 \fs24\cf0\f0\charscalex100 {Ocurrencias}\
fs24\cf0\f0\charscalex100 { }\par\pard\li720\ri0\sl-213\slmult0 \fs18\cf0\par\pa
rd\li720\ri0\sl-333\slmult0 \fs24\cf0\f0\charscalex100 {10}\fs24\cf0\f0\charscal
ex100 { }\par\pard\li720\ri0\sl-266\slmult0 \fs24\cf0\f0\charscalex100 {8}\fs24\
cf0\f0\charscalex100 { }\par\pard\li720\ri0\sl-266\slmult0 \fs24\cf0\f0\charscal
ex100 {1}\fs24\cf0\f0\charscalex100 { }\par\pard\li720\ri0\sl-266\slmult0 \fs24\
cf0\f0\charscalex100 {2}\fs24\cf0\f0\charscalex100 { }\par\pard\li720\ri0\sl-280
\slmult0 \fs24\cf0\f0\charscalex100 {1}\fs24\cf0\f0\charscalex100 { }\par\pard\l
i720\ri0\sl-266\slmult0 \fs24\cf0\f0\charscalex100 {2}\fs24\cf0\f0\charscalex100
{ }\par\pard\li720\ri0\sl-266\slmult0 \fs24\cf0\f0\charscalex100 {2}\fs24\cf0\f
0\charscalex100 { }\par\pard\li720\ri0\sl-266\slmult0 \fs24\cf0\f0\charscalex100
{6}\fs24\cf0\f0\charscalex100 { }\par\pard\li720\ri0\sl-280\slmult0 \fs24\cf0\f
0\charscalex100 {1}\fs24\cf0\f0\charscalex100 { }\par\pard\li720\ri0\sl-266\slmu
lt0 \fs24\cf0\f0\charscalex100 {1}\fs24\cf0\f0\charscalex100 { }\par\pard\li720\
ri0\sl-266\slmult0 \fs24\cf0\f0\charscalex100 {2}\fs24\cf0\f0\charscalex100 { }\
par\pard\li720\ri0\sl-266\slmult0 \fs24\cf0\f0\charscalex100 {1}\fs24\cf0\f0\cha
rscalex100 { }\par\pard\li720\ri0\sl-280\slmult0 \fs24\cf0\f0\charscalex100 {13}
\fs24\cf0\f0\charscalex100 { }\par\pard\li0\ri0\sl-213\slmult0 \fs18\cf0\par\par
d\li0\ri0\sl-320\slmult0 \fs24\cf0\f0\charscalex100 {
N}\fs24\cf0\f0\charscal
ex100 {1}\fs24\cf0\f0\charscalex100 {=51}\fs24\cf0\f0\charscalex100 { }\par\colu
mn\pard\li0\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li0\ri0\sl-213\slmult0 \fs18\c
f0\par\pard\li0\ri0\sl-373\slmult0 \fs24\cf0\f0\charscalex100 {1}\fs24\cf0\f0\ch
arscalex100 { }\par\column\pard\li720\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li72
0\ri0\sl-320\slmult0 \fs24\cf0\f0\charscalex100 {Operandos}\fs24\cf0\f0\charscal
ex100 { }\par\pard\li1440\ri0\sl-266\slmult0 \fs24\cf0\f0\charscalex100 {SORT}\f

s24\cf0\f0\charscalex100 { }\par\pard\li720\ri0\sl-280\slmult0 \fs24\cf0\f0\ch


arscalex100 {X}\fs24\cf0\f0\charscalex100 { }\par\pard\li720\ri0\sl-266\slmult0
\fs24\cf0\f0\charscalex100 {N}\fs24\cf0\f0\charscalex100 { }\par\pard\li720\ri0\
sl-266\slmult0 \fs24\cf0\f0\charscalex100 {100}\fs24\cf0\f0\charscalex100 { }\pa
r\pard\li720\ri0\sl-266\slmult0 \fs24\cf0\f0\charscalex100 {I}\fs24\cf0\f0\chars
calex100 { }\par\pard\li720\ri0\sl-280\slmult0 \fs24\cf0\f0\charscalex100 {J}\fs
24\cf0\f0\charscalex100 { }\par\pard\li720\ri0\sl-266\slmult0 \fs24\cf0\f0\chars
calex100 {SAVE}\fs24\cf0\f0\charscalex100 { }\par\pard\li720\ri0\sl-266\slmult
0 \fs24\cf0\f0\charscalex100 {IM1}\fs24\cf0\f0\charscalex100 { }\par\pard\li720\
ri0\sl-266\slmult0 \fs24\cf0\f0\charscalex100 {2}\fs24\cf0\f0\charscalex100 { }\
par\pard\li720\ri0\sl-280\slmult0 \fs24\cf0\f0\charscalex100 {200}\fs24\cf0\f0\c
harscalex100 { }\par\pard\li720\ri0\sl-266\slmult0 \fs24\cf0\f0\charscalex100 {2
10}\fs24\cf0\f0\charscalex100 { }\par\pard\li720\ri0\sl-266\slmult0 \fs24\cf0\f0
\charscalex100 {1}\fs24\cf0\f0\charscalex100 { }\par\pard\li720\ri0\sl-266\slmul
t0 \fs24\cf0\f0\charscalex100 {220}\fs24\cf0\f0\charscalex100 { }\par\pard\li0\r
i0\sl-213\slmult0 \fs18\cf0\par\pard\li0\ri0\sl-213\slmult0 \fs18\cf0\par\pard\l
i0\ri0\sl-386\slmult0 \fs24\cf0\f0\charscalex100 {
n}\fs24\cf0\f0\charsc
alex100 {2}\fs24\cf0\f0\charscalex100 {=13}\fs24\cf0\f0\charscalex100 { }\par\
column\pard\li0\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li0\ri0\sl-320\slmult0 \fs
24\cf0\f0\charscalex100 {Ocurrencias}\fs24\cf0\f0\charscalex100 { }\par\pard\li7
20\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li720\ri0\sl-333\slmult0 \fs24\cf0\f0\c
harscalex100 {8}\fs24\cf0\f0\charscalex100 { }\par\pard\li720\ri0\sl-266\slmult0
\fs24\cf0\f0\charscalex100 {4}\fs24\cf0\f0\charscalex100 { }\par\pard\li720\ri0
\sl-266\slmult0 \fs24\cf0\f0\charscalex100 {1}\fs24\cf0\f0\charscalex100 { }\par
\pard\li720\ri0\sl-266\slmult0 \fs24\cf0\f0\charscalex100 {6}\fs24\cf0\f0\charsc
alex100 { }\par\pard\li720\ri0\sl-280\slmult0 \fs24\cf0\f0\charscalex100 {5}\fs2
4\cf0\f0\charscalex100 { }\par\pard\li720\ri0\sl-266\slmult0 \fs24\cf0\f0\charsc
alex100 {3}\fs24\cf0\f0\charscalex100 { }\par\pard\li720\ri0\sl-266\slmult0 \fs2
4\cf0\f0\charscalex100 {3}\fs24\cf0\f0\charscalex100 { }\par\pard\li720\ri0\sl-2
66\slmult0 \fs24\cf0\f0\charscalex100 {2}\fs24\cf0\f0\charscalex100 { }\par\pard
\li720\ri0\sl-280\slmult0 \fs24\cf0\f0\charscalex100 {2}\fs24\cf0\f0\charscalex1
00 { }\par\pard\li720\ri0\sl-266\slmult0 \fs24\cf0\f0\charscalex100 {2}\fs24\cf0
\f0\charscalex100 { }\par\pard\li720\ri0\sl-266\slmult0 \fs24\cf0\f0\charscalex1
00 {2}\fs24\cf0\f0\charscalex100 { }\par\pard\li720\ri0\sl-266\slmult0 \fs24\cf0
\f0\charscalex100 {3}\fs24\cf0\f0\charscalex100 { }\par\pard\li0\ri0\sl-213\slmu
lt0 \fs18\cf0\par\pard\li0\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li0\ri0\sl-386\
slmult0 \fs24\cf0\f0\charscalex100 { N}\fs24\cf0\f0\charscalex100 {2}\fs24\cf0\
f0\charscalex100 {=42}\fs24\cf0\f0\charscalex100 { }\par\column\pard\li0\ri0\sl213\slmult0 \fs18\cf0\par\pard\li0\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li0\ri0
\sl-373\slmult0 \fs24\cf0\f0\charscalex100 {1}\fs24\cf0\f0\charscalex100 { }\par
\pard\sect\sectd\sbknone\pgwsxn11920\pghsxn16840\marglsxn666\margrsxn133\pard\li
2480\ri0\sl-480\slmult0 \fs24\cf0\f0\charscalex100\i {Fig. 2.3. Anlisis de tokens
de la subrutina de la Fig. 2.2.}\i0 \fs24\cf0\f0\charscalex100\i { }\i0 \par\pa
rd\li1746\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li1746\ri0\sl-386\slmult0 \fs26\
cf0\f0\charscalex100 {La Ciencia del Software de Halstead constituye un sistema
mtrico m}\fs26\cf0\f0\charscalex100 {uy}\par\pard\li1026\ri0\sl-360\slmult0 \fs26
\cf0\f0\charscalex100 {original que considera el}{ }\fs26\cf0\f0\charscalex100\b
{tamao del cdigo en tokens}\b0 { }\fs26\cf0\f0\charscalex100 {. Las mtricas bsicas
de}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {la Ciencia de
l Software son:}\fs26\cf0\f0\charscalex100 { }\par\pard\li1746\ri0\sl-480\slmult
0 \fs26\cf0\f0\charscalex100 {n}\fs26\cf0\f0\charscalex100 {1}\fs26\cf0\f0\chars
calex100 { : nmero de operadores diferentes del lenguaje}\fs26\cf0\f0\charscalex1
00 { }\par\pard\li1746\ri0\sl-480\slmult0 \fs26\cf0\f0\charscalex100 {n}\fs26\cf
0\f0\charscalex100 {2}\fs26\cf0\f0\charscalex100 { : nmero de operandos diferente
s del lenguaje}\fs26\cf0\f0\charscalex100 { }\par\pard\li5040\ri0\sl-213\slmult0
\fs18\cf0\par\pard\li5040\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li5040\ri0\sl-2
13\slmult0 \fs18\cf0\par\pard\li5040\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li504
0\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li5040\ri0\sl-213\slmult0 \fs18\cf0\par\
pard\li5040\ri0\sl-266\slmult0 \fs24\cf0\f0\charscalex100 {2 }\fs24\cf0\f0\chars
calex100 {-}\fs24\cf0\f0\charscalex100 { }\fs24\cf0\f0\charscalex100 {5}\fs24\cf

0\f0\charscalex100 { }\par\pard\sect\sectd\sbknone\pgwsxn11920\pghsxn16840\margl
sxn666\margrsxn133\pard\sect\sectd\sbkpage\pgwsxn11920\pghsxn16840\marglsxn666\m
argrsxn133\margtsxn666\margbsxn213\pard\li1746\ri0\sl-213\slmult0 \fs18\cf0\par\
pard\li1746\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li1746\ri0\sl-213\slmult0 \fs1
8\cf0\par\pard\li1746\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li1746\ri0\sl-213\sl
mult0 \fs18\cf0\par\pard\li1746\ri0\sl-306\slmult0 \fs26\cf0\f0\charscalex100 {N
}\fs26\cf0\f0\charscalex100 {1}\fs26\cf0\f0\charscalex100 { : nmero total de oper
adores}\fs26\cf0\f0\charscalex100 { }\par\pard\li1746\ri0\sl-480\slmult0 \fs26\c
f0\f0\charscalex100 {N}\fs26\cf0\f0\charscalex100 {2}\fs26\cf0\f0\charscalex100
{ : nmero total de operandos}\fs26\cf0\f0\charscalex100 { }\par\pard\li1746\ri0\s
l-213\slmult0 \fs18\cf0\par\pard\li1746\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li
1746\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li1746\ri0\sl-320\slmult0 \fs26\cf0\f
0\charscalex100 {Considerando operadores los smbolos o palabras clave que especif
ican}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {una accin (i
nstrucciones, signos matemticos, de puntuacin), y operandos los}\par\pard\li1026\r
i0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {elementos que representan datos (v
ariables, constantes, etiquetas).}\fs26\cf0\f0\charscalex100 { }\par\pard\li1746
\ri0\sl-480\slmult0 \fs26\cf0\f0\charscalex100 {El tam}\fs26\cf0\f0\charscalex10
0 {ao de un programa en trminos de tokens se expresa como:}\fs26\cf0\f0\charscalex
100 { }\par\pard\li4560\ri0\sl-480\slmult0 \fs26\cf0\f0\charscalex100 {N = N}\fs
26\cf0\f0\charscalex100 {1}\fs26\cf0\f0\charscalex100 { + N}\fs26\cf0\f0\charsca
lex100 {2}\fs26\cf0\f0\charscalex100 { }\par\pard\li1746\ri0\sl-213\slmult0 \fs1
8\cf0\par\pard\li1746\ri0\sl-386\slmult0 \fs26\cf0\f0\charscalex100 {Los conflic
tos entre medidas de tokens surgen a la hora de considerar}\par\pard\li1026\ri0\
sl-360\slmult0 \fs24\cf0\f0\charscalex100 {como uno solo las instrucciones de en
trada/salida, las declaraciones y las lneas}\par\pard\li1026\ri0\sl-360\slmult0 \
fs26\cf0\f0\charscalex100 {que contienen etiquetas, o por el contrario computar
todos los posibles tokens que}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\c
harscalex100 {puedan aparecer en estas circunstancias. Las reglas usadas para co
ntar tokens}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {depe
nden mucho del lenguaje en que est escrito un programa. Con frecuencia}\par\pard\
li1026\ri0\sl-360\slmult0 \fs24\cf0\f0\charscalex100 {aparecen ambigedades a la h
ora de considerar elem}\fs24\cf0\f0\charscalex100 {entos del cdigo en una de las}
\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {dos categoras de
tokens, e incluso al tratar de computarlos como elementos con}\par\pard\li1026\r
i0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {significado.}\fs26\cf0\f0\charscal
ex100 { }\par\pard\li1746\ri0\sl-480\slmult0 \fs26\cf0\f0\charscalex100 {La Cien
cia del Software define algunas otras mtricas adicionales. Por}\par\pard\li1026\r
i0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {ejemplo el}{ }\fs26\cf0\f0\charsca
lex100\b {vocabulario}\b0 \fs26\cf0\f0\charscalex100 { se define como:}\fs26\cf0
\f0\charscalex100 { }\par\pard\li4640\ri0\sl-480\slmult0 \fs26\cf0\f0\charscalex
100 {n = n}\fs26\cf0\f0\charscalex100 {1}\fs26\cf0\f0\charscalex100 { + n}\fs26\
cf0\f0\charscalex100 {2}\fs26\cf0\f0\charscalex100 { }\par\pard\li1746\ri0\sl-21
3\slmult0 \fs18\cf0\par\pard\li1746\ri0\sl-386\slmult0 \fs26\cf0\f0\charscalex10
0 {Otra medida basada en las anteriores es el}{ }\fs26\cf0\f0\charscalex100\b {v
olumen de programa}\b0 \fs26\cf0\f0\charscalex100 {:}\fs26\cf0\f0\charscalex100
{ }\par\pard\li4533\ri0\sl-480\slmult0 \fs26\cf0\f0\charscalex100 {V = N . log}\
fs26\cf0\f0\charscalex100 {2}\fs26\cf0\f0\charscalex100 {n}\fs26\cf0\f0\charscal
ex100 { }\par\pard\li1746\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li1746\ri0\sl-38
6\slmult0 \fs26\cf0\f0\charscalex100 {La unidad de medida del volumen es el bit.
El volumen mide de esta forma}\par\pard\li1026\ri0\sl-360\slmult0 \fs24\cf0\f0\
charscalex100 {el espacio mnimo requerido en memoria para almacenar el programa (
suponiendo}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {que c
ada elemento del vocabul}\fs26\cf0\f0\charscalex100 {ario va a estar representad
o por un nico nmero}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100
{binario). Estudios realizados sobre mdulos en lenguajes de alto y bajo nivel ha
n}\par\pard\li1026\ri0\sl-360\slmult0 \fs24\cf0\f0\charscalex100 {mostrado que}{
}\fs24\cf0\f0\charscalex100\b {S}\b0 \fs24\cf0\f0\charscalex100\b {s}\b0 \fs24\
cf0\f0\charscalex100 {,}{ }\fs24\cf0\f0\charscalex100\b {N}\b0 \fs24\cf0\f0\char
scalex100 { y}{ }\fs24\cf0\f0\charscalex100\b {V}\b0 \fs24\cf0\f0\charscalex100

{ estn linealmente relacionados, y son todas ellas medidas}\par\pard\li1026\ri0\s


l-360\slmult0 \*\tx6560\*\tx6973\*\tx7480\*\tx7826\fs26\cf0\f0\charscalex100 {vli
das del tamao de un programa (aparentemente}\tab \fs26\cf0\f0\charscalex100\b {S}
\b0 \fs26\cf0\f0\charscalex100\b {s}\b0 \fs26\cf0\f0\charscalex100 {,}\tab \fs26
\cf0\f0\charscalex100\b {N}\b0 { }\fs26\cf0\f0\charscalex100 {y}\tab \fs26\cf0\f
0\charscalex100\b {V}\b0 \tab \fs26\cf0\f0\charscalex100 {miden la misma}\par\pa
rd\sect\sectd\sbknone\pgwsxn11920\pghsxn16840\marglsxn666\margrsxn133\cols2\coln
o1\colw5440\colsr-0\colno2\colw5680\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\
charscalex100 {caracterstica del software).}\fs26\cf0\f0\charscalex100 { }{ }\fs2
6\cf0\f0\charscalex100\b {N}\b0 { }\fs26\cf0\f0\charscalex100 {y}\fs26\cf0\f0\ch
arscalex100 { }{ }\fs26\cf0\f0\charscalex100\b {V}\b0 \par\column\pard\li0\ri0\s
l-360\slmult0 \fs26\cf0\f0\charscalex100 {son medidas "robustas" de tamao: una}\f
s26\cf0\f0\charscalex100 { }\par\pard\sect\sectd\sbknone\pgwsxn11920\pghsxn16840
\marglsxn666\margrsxn133\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex1
00 {variacin significativa de las reglas de clasificacin de operadores y operandos
no}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {afectan nota
blemente al tamao resultante.}\fs26\cf0\f0\charscalex100 { }\par\pard\li1746\ri0\
sl-480\slmult0 \fs26\cf0\f0\charscalex100 {Algunos autores han sug}\fs26\cf0\f0\
charscalex100 {erido unidades mayores que la lnea de cdigo para}\par\pard\li1026\r
i0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {medir el tamao de un programa, espe
cialmente cuando el cdigo es muy extenso.}\par\pard\li5040\ri0\sl-213\slmult0 \fs
18\cf0\par\pard\li5040\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li5040\ri0\sl-213\s
lmult0 \fs18\cf0\par\pard\li5040\ri0\sl-306\slmult0 \fs24\cf0\f0\charscalex100 {
2 }\fs24\cf0\f0\charscalex100 {-}\fs24\cf0\f0\charscalex100 { }\fs24\cf0\f0\char
scalex100 {6}\fs24\cf0\f0\charscalex100 { }\par\pard\sect\sectd\sbknone\pgwsxn11
920\pghsxn16840\marglsxn666\margrsxn133\pard\sect\sectd\sbkpage\pgwsxn11920\pghs
xn16840\marglsxn666\margrsxn133\margtsxn666\margbsxn213\pard\li1026\ri0\sl-213\s
lmult0 \fs18\cf0\par\pard\li1026\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li1026\ri
0\sl-213\slmult0 \fs18\cf0\par\pard\li1026\ri0\sl-213\slmult0 \fs18\cf0\par\pard
\li1026\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li1026\ri0\sl-306\slmult0 \fs26\cf
0\f0\charscalex100 {Una de estas unidades es el}{ }\fs26\cf0\f0\charscalex100\b
{mdulo}\b0 \fs26\cf0\f0\charscalex100 {. Para grandes programas, es ms fcil estimar
}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {el nmero de mdulo
s que contendrn, en lugar del tamao en lneas. Sin embargo,}\par\pard\li1026\ri0\sl360\slmult0 \fs26\cf0\f0\charscalex100 {esta mtrica aporta una informacin reducida
pues es difcil determinar cul es la}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0
\f0\charscalex100 {equivalencia entre mdulos y lneas de cdigo. El tamao de un mdulo d
epende}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {de su com
plejidad, de la forma de trabajo de cada programad}\fs26\cf0\f0\charscalex100 {o
r, del lenguaje y de}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex
100 {otros factores. De hecho, cuando se divide el cdigo en mdulos, se hace}\fs26\
cf0\f0\charscalex100 { }\par\pard\li1026\ri0\sl-360\slmult0 \*\tx2120\*\tx5560\f
s26\cf0\f0\charscalex100 {siguiendo}\tab \fs26\cf0\f0\charscalex100\b {considera
ciones funcionales}\b0 \tab \fs26\cf0\f0\charscalex100 {y no de tamao pues el mdul
o es una}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {unidad
funcional (efecta una tarea determinada), pero no es un mltiplo que}\par\pard\li10
26\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {contenga una cantidad exacta d
e lneas de cdigo.}\fs26\cf0\f0\charscalex100 { }\par\pard\li1746\ri0\sl-480\slmult
0 \fs26\cf0\f0\charscalex100 {Como consecuencia de lo anterior, se ha propuesto
como medida del}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {
tamao de un programa el}{ }\fs26\cf0\f0\charscalex100\b {nmero de funciones}\b0 \f
s26\cf0\f0\charscalex100 { que contiene. Una funcin es una}\par\pard\li1026\ri0\s
l-360\slmult0 \fs24\cf0\f0\charscalex100 {coleccin de instrucciones que realizan
una tarea determinada para lo}\fs24\cf0\f0\charscalex100 { que}\fs24\cf0\f0\char
scalex100 { }\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {dis
ponen de un conjunto particular de variables locales. El uso de funciones como}\
par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {mtricas se basa en
el hecho de que un programador piensa en el cdigo en}\par\pard\li1026\ri0\sl-360
\slmult0 \fs26\cf0\f0\charscalex100 {trminos de las funciones que debe realizar,
y no de los mdulos o lneas que lo}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0

\charscalex100 {constituyen.}\fs26\cf0\f0\charscalex100 { }\par\pard\li1746\ri0\


sl-480\slmult0 \fs26\cf0\f0\charscalex100 {Un mdulo puede contener una o ms funcio
nes. La evaluacin del nmero}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\chars
calex100 {de funciones de un programa es una tarea compleja, aunque supone una a
yuda el}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {que el p
rograma est estructurado en mdulos. De hecho, los estudios que tratan}\par\pard\li
1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {sobre la estimacin de tam}\fs
26\cf0\f0\charscalex100 {ao siguiendo puntos de funcin muestran que la}\fs26\cf0\f
0\charscalex100 { }\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex10
0 {experiencia del evaluador es fundamental a la hora de identificar las funcion
es de}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {un sistema
, y de cuantificar su nmero.}\fs26\cf0\f0\charscalex100 { }\par\pard\li1746\ri0\s
l-480\slmult0 \fs26\cf0\f0\charscalex100 {El nmero de lneas que contiene una funcin
es normalmente pequeo.}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscal
ex100 {Una explicacin a este hecho est en las limitaciones de la mente humana que
la}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {impiden manip
ular una gran cantidad de informacin al mismo tiempo. Para}\fs26\cf0\f0\charscale
x100 { }\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {algunos
autores, el tamao ptimo de un mdulo est entre 50 y 200 LOC, y debe}\par\pard\li1026\
ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {admitirse que cantidades mayores
que i}\fs26\cf0\f0\charscalex100 {mpiden abarcar de una mirada la totalidad}\par
\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {del texto del mdulo,
dificultan la comprensin de lo escrito.}\fs26\cf0\f0\charscalex100 { }\par\pard\l
i1746\ri0\sl-480\slmult0 \fs26\cf0\f0\charscalex100 {Los programadores no desarr
ollan siempre software completamente nuevo.}\par\pard\li1026\ri0\sl-360\slmult0
\fs26\cf0\f0\charscalex100 {De hecho, buena parte del trabajo de un programador
se refiere a la modificacin}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\char
scalex100 {de cdigo ya existente. En las tareas de mantenimiento este hecho es ev
idente,}\par\pard\li1026\ri0\sl-360\slmult0 \*\tx3640\fs26\cf0\f0\charscalex100
{pero en el desarrollo, la}\tab \fs26\cf0\f0\charscalex100\b {reusabilidad}\b0 \
fs26\cf0\f0\charscalex100 { de cdigo es una prctica aconsejable que}\par\pard\li10
26\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {reduce el esfuerzo total. }\fs
26\cf0\f0\charscalex100 { }\par\pard\li1746\ri0\sl-480\slmult0 \fs26\cf0\f0\char
scalex100 {Actualmente, segn los casos y reas de aplicacin, entre un 50 }\fs26\cf0\
f0\charscalex100 {y un 95%}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\char
scalex100 {del trabajo de los programadores es modificacin de programas. Esto pla
ntea}\par\pard\li5040\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li5040\ri0\sl-213\sl
mult0 \fs18\cf0\par\pard\li5040\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li5040\ri0
\sl-426\slmult0 \fs24\cf0\f0\charscalex100 {2 }\fs24\cf0\f0\charscalex100 {-}\fs
24\cf0\f0\charscalex100 { }\fs24\cf0\f0\charscalex100 {7}\fs24\cf0\f0\charscalex
100 { }\par\pard\sect\sectd\sbkpage\pgwsxn11920\pghsxn16840\marglsxn666\margrsxn
133\margtsxn666\margbsxn213\pard\li1026\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li
1026\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li1026\ri0\sl-213\slmult0 \fs18\cf0\p
ar\pard\li1026\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li1026\ri0\sl-213\slmult0 \
fs18\cf0\par\pard\li1026\ri0\sl-306\slmult0 \fs26\cf0\f0\charscalex100 {problema
s a la hora de medir el cdigo: no se puede valorar de igual manera el}\par\pard\l
i1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {cdigo reusado que el nuevo,
y an en el nuevo se debe distinguir entre el que se}\par\pard\li1026\ri0\sl-360\s
lmult0 \fs24\cf0\f0\charscalex100 {desarrolla para adaptar el viejo (que exige ms
trabajo), y el que es absolutamente}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\c
f0\f0\charscalex100 {nuevo y no depende del cdigo reusado ms que de otras seccione
s de cdigo}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {nuevo.
}\fs26\cf0\f0\charscalex100 { }\par\pard\li1746\ri0\sl-480\slmult0 \*\tx8653\*\t
x9040\fs26\cf0\f0\charscalex100 {En muchos programas, el tamao tiene}\fs26\cf0\f0
\charscalex100 { }{ }\fs26\cf0\f0\charscalex100\b {dos componentes}\b0 \fs26\cf0
\f0\charscalex100 {:}\tab \fs26\cf0\f0\charscalex100\b {S}\b0 \fs26\cf0\f0\chars
calex100\b {n}\b0 \tab \fs26\cf0\f0\charscalex100 {que}\fs26\cf0\f0\charscalex10
0 { }\par\pard\li1026\ri0\sl-360\slmult0 \*\tx4213\*\tx4706\fs26\cf0\f0\charscal
ex100 {representa al cdigo nuevo, y}\tab \fs26\cf0\f0\charscalex100\b {S}\b0 \fs2
6\cf0\f0\charscalex100\b {u}\b0 \tab \fs26\cf0\f0\charscalex100 {que}\fs26\cf0\f

0\charscalex100 { es el cdigo reusado. Cualquiera que sean}\par\pard\li1026\ri0\s


l-360\slmult0 \fs26\cf0\f0\charscalex100 {las unidades en las que se mida el tam
ao, es necesario que un valor}{ }\fs26\cf0\f0\charscalex100\b {S}\b0 \fs26\cf0\f0
\charscalex100\b {e}\b0 \fs26\cf0\f0\charscalex100 { o tamao}\par\pard\li1026\ri0
\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {equivalente, que sea funcin de}{ }\fs
26\cf0\f0\charscalex100\b {S}\b0 \fs26\cf0\f0\charscalex100\b {n}\b0 { }\fs26\cf
0\f0\charscalex100 {y de}{ }\fs26\cf0\f0\charscalex100\b {S}\b0 \fs26\cf0\f0\cha
rscalex100\b {u}\b0 \fs26\cf0\f0\charscalex100 {. El tamao equivalente representa
el}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {que debera te
ner el cdigo si no hubiera sido construido con cdigo reusado, esto}\par\pard\li102
6\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {es, partiendo de cero.}\fs26\cf
0\f0\charscalex100 { }\par\pard\li1746\ri0\sl-480\slmult0 \*\tx5200\fs26\cf0\f0\
charscalex100 {Boehm propone para su modelo}\tab \fs26\cf0\f0\charscalex100\b {C
OCOMO}\b0 \fs26\cf0\f0\charscalex100 { (que se ver ms adelante) la}\par\pard\li102
6\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {siguiente relacin:}\fs26\cf0\f0\
charscalex100 { }\par\pard\li4253\ri0\sl-480\slmult0 \fs26\cf0\f0\charscalex100
{S}\fs26\cf0\f0\charscalex100 {e}\fs26\cf0\f0\charscalex100 { = S}\fs26\cf0\f0\c
harscalex100 {n}\fs26\cf0\f0\charscalex100 { + a/100 S}\fs26\cf0\f0\charscalex10
0 {u}\fs26\cf0\f0\charscalex100 { }\par\pard\sect\sectd\sbknone\pgwsxn11920\pghs
xn16840\marglsxn666\margrsxn133\cols2\colno1\colw2386\colsr-0\colno2\colw8733\pa
rd\li1026\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li1026\ri0\sl-386\slmult0 \*\tx1
746\fs26\cf0\f0\charscalex100 {donde}\tab \fs26\cf0\f0\charscalex100\b {a}\b0 \p
ar\column\pard\li0\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li0\ri0\sl-386\slmult0
\fs26\cf0\f0\charscalex100 {es un factor de ajuste que depende del porcentaje de
modificacin que}\par\pard\sect\sectd\sbknone\pgwsxn11920\pghsxn16840\marglsxn666
\margrsxn133\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {haya suf
rido el}\fs26\cf0\f0\charscalex100 { diseo (DM) y el cdigo (CM), y del esfuerzo pr
eciso para la}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {in
tegracin (IM):}\fs26\cf0\f0\charscalex100 { }\par\pard\li3560\ri0\sl-480\slmult0
\fs26\cf0\f0\charscalex100 {a = 0,4(DM)+0,3(CM)+O,3(IM)}\fs26\cf0\f0\charscalex1
00 { }\par\pard\li1746\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li1746\ri0\sl-386\s
lmult0 \fs26\cf0\f0\charscalex100 {El valor mximo que puede tomar a es 100, y rep
resenta el caso en que la}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\chars
calex100 {adaptacin del cdigo sea tan difcil como reescribirlo por completo.}\fs26\
cf0\f0\charscalex100 { }\par\pard\li1746\ri0\sl-480\slmult0 \fs26\cf0\f0\charsca
lex100 {Una frmula similar es la propuesta por}{ }\fs26\cf0\f0\charscalex100\b {B
ailey}\b0 \fs26\cf0\f0\charscalex100 { y}{ }\fs26\cf0\f0\charscalex100\b {Basili
}\b0 \fs26\cf0\f0\charscalex100 {:}\fs26\cf0\f0\charscalex100 { }\par\pard\li449
3\ri0\sl-480\slmult0 \fs26\cf0\f0\charscalex100 {S}\fs26\cf0\f0\charscalex100 {e
}\fs26\cf0\f0\charscalex100 {= S}\fs26\cf0\f0\charscalex100 {n }\fs26\cf0\f0\ch
arscalex100 {+ k S}\fs26\cf0\f0\charscalex100 {u}\fs26\cf0\f0\charscalex100 { }\
par\pard\li1026\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li1026\ri0\sl-386\slmult0
\*\tx3146\fs26\cf0\f0\charscalex100 {y sugieren el valor}\tab \fs26\cf0\f0\chars
calex100\b {k}\b0 { }\fs26\cf0\f0\charscalex100 {= 0,2 obtenido de la base de pr
oyectos evaluados para su}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\chars
calex100 {modelo. Sin embargo, fijar un valor para}{ }\fs26\cf0\f0\charscalex100
\b {k}\b0 \fs26\cf0\f0\charscalex100 { a priori, no es realista, y no debe pasar
}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {de una primera
apr}\fs26\cf0\f0\charscalex100 {oximacin al problema.}\fs26\cf0\f0\charscalex100
{ }\par\pard\sect\sectd\sbknone\pgwsxn11920\pghsxn16840\marglsxn666\margrsxn133\
cols2\colno1\colw3306\colsr-0\colno2\colw7813\pard\li1746\ri0\sl-480\slmult0 \fs
26\cf0\f0\charscalex100\b {Thebaut}\b0 \par\column\pard\li0\ri0\sl-480\slmult0 \
fs26\cf0\f0\charscalex100 {modifica la frmula anterior aventurando que la relacin
entre}\par\pard\sect\sectd\sbknone\pgwsxn11920\pghsxn16840\marglsxn666\margrsxn1
33\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {tamao equivalente y
cdigo reusado no es lineal:}\fs26\cf0\f0\charscalex100 { }\par\pard\li4520\ri0\s
l-480\slmult0 \fs26\cf0\f0\charscalex100 {S}\fs26\cf0\f0\charscalex100 {e }\fs26
\cf0\f0\charscalex100 {= S}\fs26\cf0\f0\charscalex100 {n }\fs26\cf0\f0\charscale
x100 {+ S}\fs26\cf0\f0\charscalex100 {u}\fs26\cf0\f0\charscalex100 {k}\fs26\cf0\
f0\charscalex100 { }\par\pard\li1026\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li102

6\ri0\sl-386\slmult0 \fs26\cf0\f0\charscalex100 {donde}{ }\fs26\cf0\f0\charscale


x100\b {k}\b0 \fs26\cf0\f0\charscalex100 { es un positivo menor o igual que 1. U
sando bases de proyectos en la que}\par\pard\li1026\ri0\sl-426\slmult0 \fs24\cf0
\f0\charscalex100 {tanto}{ }\fs24\cf0\f0\charscalex100\b {S}\b0 \fs24\cf0\f0\cha
rscalex100\b {n}\b0 \fs24\cf0\f0\charscalex100 { }\fs24\cf0\f0\charscalex100 {co
mo}{ }\fs24\cf0\f0\charscalex100\b {S}\b0 \fs24\cf0\f0\charscalex100\b {u}\b0 \f
s24\cf0\f0\charscalex100 { estaban disponibles, Thebaut obtuvo valores de}{ }\fs
24\cf0\f0\charscalex100\b {k}\b0 \fs24\cf0\f0\charscalex100 { en torno a 6/7.}\p
ar\pard\li1026\ri0\sl-293\slmult0 \fs26\cf0\f0\charscalex100 {En este caso:}\fs2
6\cf0\f0\charscalex100 { }\par\pard\li5040\ri0\sl-213\slmult0 \fs18\cf0\par\pard
\li5040\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li5040\ri0\sl-213\slmult0 \fs18\cf
0\par\pard\li5040\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li5040\ri0\sl-333\slmult
0 \fs24\cf0\f0\charscalex100 {2 }\fs24\cf0\f0\charscalex100 {-}\fs24\cf0\f0\char
scalex100 { }\fs24\cf0\f0\charscalex100 {8}\fs24\cf0\f0\charscalex100 { }\par\pa
rd\sect\sectd\sbknone\pgwsxn11920\pghsxn16840\marglsxn666\margrsxn133\pard\sect\
sectd\sbkpage\pgwsxn11920\pghsxn16840\marglsxn666\margrsxn133\margtsxn666\margbs
xn213\pard\li4573\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li4573\ri0\sl-213\slmult
0 \fs18\cf0\par\pard\li4573\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li4573\ri0\sl213\slmult0 \fs18\cf0\par\pard\li4573\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li45
73\ri0\sl-306\slmult0 \fs26\cf0\f0\charscalex100 {S}\fs26\cf0\f0\charscalex100 {
u}\fs26\cf0\f0\charscalex100 {6/7}\fs26\cf0\f0\charscalex100 { > 0,25}\fs26\cf0\
f0\charscalex100 { }\par\pard\li1746\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li174
6\ri0\sl-386\slmult0 \fs26\cf0\f0\charscalex100 {En cualquier caso, no hay conse
nso acerca de lo que mide exactamente el}\par\pard\li1026\ri0\sl-360\slmult0 \fs
26\cf0\f0\charscalex100 {tamao equivalente. Aunque las frmulas de este tipo son re
almente tiles a la}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100
{hora de}\fs26\cf0\f0\charscalex100 { establecer comparaciones entre sistemas d
istintos.}\fs26\cf0\f0\charscalex100 { }\par\pard\li1026\ri0\sl-213\slmult0 \fs1
8\cf0\par\pard\li1026\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li1026\ri0\sl-293\sl
mult0 \fs26\cf0\f0\charscalex100\b {Mtricas de estructuras de datos.}\b0 \fs26\cf
0\f0\charscalex100\b { }\b0 \par\pard\li1746\ri0\sl-213\slmult0 \fs18\cf0\par\pa
rd\li1746\ri0\sl-386\slmult0 \fs26\cf0\f0\charscalex100 {Una de las razones fund
amentales de la programacin es el proceso de}\par\pard\li1026\ri0\sl-360\slmult0
\fs24\cf0\f0\charscalex100 {datos. Parte de estos datos constituyen la entrada d
el sistema, parte tiene un uso}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\
charscalex100 {exclusivamente interno y, por ltimo, una tercera parte constituye
la salida del}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {si
stema.}\fs26\cf0\f0\charscalex100 { }\par\pard\li1746\ri0\sl-480\slmult0 \fs24\c
f0\f0\charscalex100 {As pues, disponer de un conjunto de mtricas con el que medir
la cantidad}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {de d
atos usado en la entrada, la salida, e internamente resultar de utilidad para}\pa
r\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {valorar el software
. }\fs26\cf0\f0\charscalex100 {Este conjunto es el formado por las mtricas de est
ructuras de}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {dato
s que atienden a la}{ }\fs26\cf0\f0\charscalex100\b {cantidad de datos}\b0 \fs26
\cf0\f0\charscalex100 {, al}{ }\fs26\cf0\f0\charscalex100\b {uso que se les da}\
b0 \fs26\cf0\f0\charscalex100 {, y a su}{ }\fs26\cf0\f0\charscalex100\b {aparicin
}\b0 \par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100\b {en distin
tas partes del sistema}\b0 \fs26\cf0\f0\charscalex100 {.}\fs26\cf0\f0\charscalex
100 { }\par\pard\li1746\ri0\sl-480\slmult0 \fs26\cf0\f0\charscalex100 {Un mtodo p
ara determinar la cantidad de datos es contar las entradas de la}\par\pard\li102
6\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {tabla de referencias cruzadas a
sociada al cdigo. Esta tabla contiene}\fs26\cf0\f0\charscalex100 { }\par\pard\li1
026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {fundamentalmente las variable
s del programa, aunque tambin puede incluir otros}\par\pard\li1026\ri0\sl-360\slm
ult0 \fs26\cf0\f0\charscalex100 {elementos como etiquetas, tipos, o el propio no
mbre del programa. En general, se}\par\pard\li1026\ri0\sl-360\slmult0 \fs24\cf0\
f0\charscalex100 {puede considerar datos de}\fs24\cf0\f0\charscalex100 { un prog
rama todos aquellos elementos no}\fs24\cf0\f0\charscalex100 { }\par\pard\li1026\
ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {pertenecientes al lenguaje (instr

ucciones, signos, operadores, constantes de todo}\par\pard\li1026\ri0\sl-360\slm


ult0 \fs26\cf0\f0\charscalex100 {tipo) que aparecen a lo largo del cdigo.}\fs26\c
f0\f0\charscalex100 { }\par\pard\li1746\ri0\sl-480\slmult0 \*\tx6760\fs26\cf0\f0
\charscalex100 {Una primera medida de cantidad de datos es}\tab \fs26\cf0\f0\cha
rscalex100\b {VARS}\b0 \fs26\cf0\f0\charscalex100 {, que representa el}\par\pard
\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {nmero de variables de un p
rograma. La mtrica}{ }\fs26\cf0\f0\charscalex100\b {n}\b0 \fs26\cf0\f0\charscalex
100\b {2}\b0 \fs26\cf0\f0\charscalex100 { de Hasteald es vlida tambin}\par\pard\li
1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {para estimar la cantidad de
datos:}\fs26\cf0\f0\charscalex100 { }\par\pard\li3040\ri0\sl-480\slmult0 \fs26\c
f0\f0\charscalex100 {n}\fs26\cf0\f0\charscalex100 {2}\fs26\cf0\f0\charscalex100
{ = VARS + constantes nicas + etiquetas}\fs26\cf0\f0\charscalex100 { }\par\pard\l
i1026\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li1026\ri0\sl-386\slmult0 \fs26\cf0\
f0\charscalex100\b {n}\b0 \fs26\cf0\f0\charscalex100\b {2}\b0 \fs26\cf0\f0\chars
calex100 { representa la cuenta de operandos distintos, por lo que no resulta es
trictamente}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {una
mtrica que contenga la cantida}\fs26\cf0\f0\charscalex100 {d total de datos. Con
objeto de subsanar esta}\par\pard\li1026\ri0\sl-426\slmult0 \fs26\cf0\f0\charsca
lex100 {carencia, Hasteald propone}{ }\fs26\cf0\f0\charscalex100\b {N}\b0 \fs26\
cf0\f0\charscalex100\b {2}\b0 \fs26\cf0\f0\charscalex100 {,}\fs26\cf0\f0\charsca
lex100 { que representa el nmero total de ocurrencias de}\par\pard\li1026\ri0\sl293\slmult0 \fs26\cf0\f0\charscalex100 {operandos.}\fs26\cf0\f0\charscalex100 {
}\par\pard\li1746\ri0\sl-480\slmult0 \fs26\cf0\f0\charscalex100 {Otro aspecto im
portante a la hora de valorar la informacin (los datos)}\par\pard\li1026\ri0\sl-3
60\slmult0 \fs26\cf0\f0\charscalex100 {usada por un programa es estudiar la form
a en que se emplea. Estas mtricas estn}\par\pard\li1026\ri0\sl-360\slmult0 \*\tx24
40\fs26\cf0\f0\charscalex100 {orientadas al}\tab \fs26\cf0\f0\charscalex100\b {u
so de mdulos}\b0 \fs26\cf0\f0\charscalex100 {, y refieren informacin concerniente
al uso de la}\par\pard\li5040\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li5040\ri0\s
l-213\slmult0 \fs18\cf0\par\pard\li5040\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li
5040\ri0\sl-426\slmult0 \fs24\cf0\f0\charscalex100 {2 }\fs24\cf0\f0\charscalex10
0 {-}\fs24\cf0\f0\charscalex100 { }\fs24\cf0\f0\charscalex100 {9}\fs24\cf0\f0\ch
arscalex100 { }\par\pard\sect\sectd\sbkpage
{\shp{\*\shpinst\shpleft6626\shptop10586\shpright6880\shpbottom10946\shpfhdr0\sh
pwr3\shpwrk0\shpfblwtxt1\shplid2050\shpz4\shpbxpage\shpbypage
{\sp{\sn shapeType}{\sv 0}}
{\sp{\sn fFlipH}{\sv 0}}
{\sp{\sn fFlipV}{\sv 0}}
{\sp{\sn rotation}{\sv 0}}
{\sp{\sn geoRight}{\sv 254}}
{\sp{\sn geoBottom}{\sv 360}}
{\sp{\sn shapePath}{\sv 4}}
{\sp{\sn pVerticies}{\sv 8;2;(253,0);(0,360);}}
{\sp{\sn pSegmentInfo}{\sv 2;5;16384;45824;1;45824;32768}}
{\sp{\sn fFillOK}{\sv 1}}
{\sp{\sn fFilled}{\sv 0}}
{\sp{\sn lineWidth}{\sv 9525}}
{\sp{\sn lineColor}{\sv 0}}
{\sp{\sn lineDashing}{\sv 0}}
{\sp{\sn fLine}{\sv 1}}{\sp{\sn lineColor}{\sv 0}}
{\sp{\sn lineType}{\sv 0}}
{\sp{\sn fArrowheadsOK}{\sv 0}}
{\sp{\sn fBehindDocument}{\sv 1}}
{\sp{\sn fLayoutInCell}{\sv 1}}}}
{\shp{\*\shpinst\shpleft6546\shptop12186\shpright6800\shpbottom12546\shpfhdr0\sh
pwr3\shpwrk0\shpfblwtxt1\shplid2051\shpz5\shpbxpage\shpbypage
{\sp{\sn shapeType}{\sv 0}}
{\sp{\sn fFlipH}{\sv 0}}
{\sp{\sn fFlipV}{\sv 0}}
{\sp{\sn rotation}{\sv 0}}

{\sp{\sn geoRight}{\sv 254}}


{\sp{\sn geoBottom}{\sv 360}}
{\sp{\sn shapePath}{\sv 4}}
{\sp{\sn pVerticies}{\sv 8;2;(253,0);(0,360);}}
{\sp{\sn pSegmentInfo}{\sv 2;5;16384;45824;1;45824;32768}}
{\sp{\sn fFillOK}{\sv 1}}
{\sp{\sn fFilled}{\sv 0}}
{\sp{\sn lineWidth}{\sv 9525}}
{\sp{\sn lineColor}{\sv 0}}
{\sp{\sn lineDashing}{\sv 0}}
{\sp{\sn fLine}{\sv 1}}{\sp{\sn lineColor}{\sv 0}}
{\sp{\sn lineType}{\sv 0}}
{\sp{\sn fArrowheadsOK}{\sv 0}}
{\sp{\sn fBehindDocument}{\sv 1}}
{\sp{\sn fLayoutInCell}{\sv 1}}}}\pgwsxn11920\pghsxn16840\marglsxn666\margrsxn13
3\margtsxn666\margbsxn213\pard\li1026\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li10
26\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li1026\ri0\sl-213\slmult0 \fs18\cf0\par
\pard\li1026\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li1026\ri0\sl-213\slmult0 \fs
18\cf0\par\pard\li1026\ri0\sl-306\slmult0 \fs26\cf0\f0\charscalex100 {informacin.
Pero la cantidad de variables y operandos no aporta informacin}\par\pard\li1026\
ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {sobre la complejidad del programa
o su construccin.}\fs26\cf0\f0\charscalex100 { }\par\pard\li1746\ri0\sl-480\slmu
lt0 \fs26\cf0\f0\charscalex100 {El proce}\fs26\cf0\f0\charscalex100 {so de progr
amacin, que depende casi en exclusiva del esfuerzo}\par\pard\li1026\ri0\sl-360\sl
mult0 \fs26\cf0\f0\charscalex100 {humano, debe contar con las limitaciones de la
mente. Una de estas limitaciones}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\
f0\charscalex100 {se refiere a la cantidad de informacin diferente que puede tene
r una persona "en}\par\pard\li1026\ri0\sl-360\slmult0 \*\tx8426\fs24\cf0\f0\char
scalex100 {mente" al tiempo que realiza una tarea determinada. El concepto de}\t
ab \fs24\cf0\f0\charscalex100\b {variables}\b0 \par\pard\sect\sectd\sbknone\pgws
xn11920\pghsxn16840\marglsxn666\margrsxn133\cols2\colno1\colw2320\colsr-0\colno2
\colw8800\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100\b {vivas}\b0
\par\column\pard\li0\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {en una inst
ruccin determinada representa esta limitacin. Las variables}\par\pard\sect\sectd\s
bknone\pgwsxn11920\pghsxn16840\marglsxn666\margrsxn133\pard\li1026\ri0\sl-360\sl
mult0 \fs26\cf0\f0\charscalex100 {tienen un periodo de vida que empieza con su p
rimer uso (no con la declaracin) y}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\
f0\charscalex100 {termina con la ltima mencin que se hace de una }\fs26\cf0\f0\cha
rscalex100 {de ellas. El nmero de variables}\par\pard\li1026\ri0\sl-360\slmult0 \
fs26\cf0\f0\charscalex100 {vivas en una instruccin determinada indica la cantidad
de informacin que el}\par\pard\li1026\ri0\sl-360\slmult0 \*\tx7760\fs26\cf0\f0\c
harscalex100 {programador debe tener presente al construir el cdigo.}\fs26\cf0\f0
\charscalex100 { }{ }\fs26\cf0\f0\charscalex100\b {LV}\b0 \tab \fs26\cf0\f0\char
scalex100 {(variables vivas)}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\ch
arscalex100 {indica la complejidad del cdigo en un punto determinado (al margen d
e la propia}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {comp
lejidad del algoritmo desarrollado). Una medida global referida a todo el}\par\p
ard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {cdigo sera el nmero medio
de variables vivas por instruccin (}\fs24\cf0\f1\charscalex100\ul {L}\ul0 \fs24\
cf0\f1\charscalex100\ul {V}\ul0 { }\fs26\cf0\f0\charscalex100 {) que puede}\par\
pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {servir como referenci
a en comparaciones entre distintos programas}\fs26\cf0\f0\charscalex100 {.}\fs26
\cf0\f0\charscalex100 { }\par\pard\li1746\ri0\sl-480\slmult0 \fs26\cf0\f0\charsc
alex100 {Otra mtrica que estudia el uso que se hace de los datos es la}{ }\fs26\c
f0\f0\charscalex100\b {envergadura}\b0 \par\pard\li1026\ri0\sl-360\slmult0 \fs26
\cf0\f0\charscalex100 {(SP, span) que representa el nmero de instrucciones entre
dos usos de una misma}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscale
x100 {variable. Grandes envergaduras requieren del programador que retenga en me
moria}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {durante mu
cho tiempo la informacin referida a una variable sin darle uso. La}\par\pard\li10

26\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {envergadura adquiere sentido p


lenamente cuando se usa su valor medio (}\fs24\cf0\f1\charscalex100\ul {SP}\ul0
{ }\fs26\cf0\f0\charscalex100 {)}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f
0\charscalex100 {referido a las variables.}\fs26\cf0\f0\charscalex100 { }\par\pa
rd\li1746\ri0\sl-480\slmult0 \fs26\cf0\f0\charscalex100 {Las dos mtricas anterior
es se refieren habitualmente a mdulos. El pas}\fs26\cf0\f0\charscalex100 {o a}\pa
r\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {mtricas globales de
todo el programa se obtiene fcilmente:}\fs26\cf0\f0\charscalex100 { }\par\pard\li
5453\ri0\sl-280\slmult0 \fs16\cf0\f0\charscalex100 {m}\par\pard\sect\sectd\sbkno
ne\pgwsxn11920\pghsxn16840\marglsxn666\margrsxn133\cols3\colno1\colw4493\colsr-0
\colno2\colw666\colsr-0\colno3\colw5960\pard\li4133\ri0\sl-293\slmult0 \fs28\cf0
\f0\charscalex100 {LV}\par\column\pard\li0\ri0\sl-280\slmult0 \fs14\cf0\f0\chars
calex100 {programa}\par\column\pard\li0\ri0\sl-480\slmult0 \fs28\cf0\f2\charscal
ex100 {=}{ }\fs38\cf0\f2\charscalex100 {\uc1\u8721X}{ }\fs28\cf0\f0\charscalex10
0 {LV}\fs16\cf0\f0\charscalex100 {i}{\sub \fs28\cf0\f0\charscalex100 {m}}\par\pa
rd\sect\sectd\sbknone\pgwsxn11920\pghsxn16840\marglsxn666\margrsxn133\pard\li542
6\ri0\sl-160\slmult0 \fs16\cf0\f0\charscalex100 {i }\fs16\cf0\f0\charscalex100 {
1}\par\pard\li1026\ri0\sl-413\slmult0 \fs26\cf0\f0\charscalex100 {donde LV}\fs26
\cf0\f0\charscalex100 {i}\fs26\cf0\f0\charscalex100 { es la vida media de las va
riables del mdulo i}\fs26\cf0\f0\charscalex100 {-}\fs26\cf0\f0\charscalex100 {simo
, y}{ }\fs26\cf0\f0\charscalex100\b {m}\b0 \fs26\cf0\f0\charscalex100 { es el nme
ro}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {de mdulos.}\fs
26\cf0\f0\charscalex100 { }\par\pard\li5440\ri0\sl-280\slmult0 \fs16\cf0\f0\char
scalex100 {m}\par\pard\sect\sectd\sbknone\pgwsxn11920\pghsxn16840\marglsxn666\ma
rgrsxn133\cols2\colno1\colw5133\colsr-0\colno2\colw5986\pard\li4226\ri0\sl-293\s
lmult0 \fs28\cf0\f0\charscalex100 {SP}\par\pard\li4506\ri0\sl-160\slmult0 \fs12\
cf0\f0\charscalex100 {programa}\par\column\pard\li0\ri0\sl-493\slmult0 \fs28\cf0
\f2\charscalex100 {=}{ }\fs38\cf0\f2\charscalex100 {\uc1\u8721X}{ }\fs28\cf0\f0\
charscalex100 {SP}\fs16\cf0\f0\charscalex100 {i}{\sub \fs28\cf0\f0\charscalex100
{n}\fs28\cf0\f0\charscalex100 { }}\par\pard\sect\sectd\sbknone\pgwsxn11920\pghs
xn16840\marglsxn666\margrsxn133\pard\li5400\ri0\sl-160\slmult0 \fs16\cf0\f0\char
scalex100 {i }\fs16\cf0\f0\charscalex100 {1}\par\pard\li1026\ri0\sl-400\slmult0
\fs26\cf0\f0\charscalex100 {donde}{ }\fs26\cf0\f0\charscalex100\b {n}\b0 \fs26\c
f0\f0\charscalex100 { es el nmero de posibles envergaduras del programa.}\fs26\cf
0\f0\charscalex100 { }\par\pard\li1746\ri0\sl-480\slmult0 \fs26\cf0\f0\charscale
x100 {Las mtricas de datos mostradas hasta ahora se refieren exclusivamente}\par\
pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {(salvo las generaliza
ciones) al espacio de un mdulo. Sin embargo, los datos no}\par\pard\li1026\ri0\sl
-360\slmult0 \fs26\cf0\f0\charscalex100 {estn siempre limitados a un rea determina
da del cdigo: es una prctica habitual}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf
0\f0\charscalex100 {el uso}\fs26\cf0\f0\charscalex100 { de datos comunes a vario
s mdulos. La magnitud del flujo de informacin}\par\pard\li4973\ri0\sl-213\slmult0
\fs18\cf0\par\pard\li4973\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li4973\ri0\sl-21
3\slmult0 \fs18\cf0\par\pard\li4973\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li4973
\ri0\sl-360\slmult0 \fs24\cf0\f0\charscalex100 {2 }\fs24\cf0\f0\charscalex100 {}\fs24\cf0\f0\charscalex100 { }\fs24\cf0\f0\charscalex100 {10}\fs24\cf0\f0\chars
calex100 { }\par\pard\sect\sectd\sbknone\pgwsxn11920\pghsxn16840\marglsxn666\mar
grsxn133\pard\sect\sectd\sbkpage\pgwsxn11920\pghsxn16840\marglsxn666\margrsxn133
\margtsxn666\margbsxn213\pard\li1026\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li102
6\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li1026\ri0\sl-213\slmult0 \fs18\cf0\par\
pard\li1026\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li1026\ri0\sl-213\slmult0 \fs1
8\cf0\par\pard\li1026\ri0\sl-306\slmult0 \fs26\cf0\f0\charscalex100 {entre los c
omponentes de un sistema da informacin adicional sobre la}\fs26\cf0\f0\charscalex
100 { }\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {complejid
ad del diseo y las relaciones entre mdulos.}\fs26\cf0\f0\charscalex100 { }\par\par
d\li1746\ri0\sl-480\slmult0 \fs26\cf0\f0\charscalex100 {En teora, todos los mdulos
estn interrelacionados, si no es as, no}\par\pard\li1026\ri0\sl-360\slmult0 \fs26
\cf0\f0\charscalex100 {pertenecen al mismo programa. Pero el grado de relacin ent
re mdulos depende}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100
{de la cantidad de datos que constituya el flujo de informacin entre ellos. Este}

\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {flujo puede esta


r formado por parmetros, o variables globales. En este ltimo}\par\pard\li1026\ri0\
sl-360\slmult0 \fs26\cf0\f0\charscalex100 {cas}\fs26\cf0\f0\charscalex100 {o, la
complejidad del programa es mayor y resulta ms difcil comprender su}\par\pard\li1
026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {funcionamiento. En el otro ex
tremo estn las variables locales cuya vida discurre}\par\pard\li1026\ri0\sl-360\s
lmult0 \fs26\cf0\f0\charscalex100 {en los lmites del mdulo, por lo que su evolucin
es ms fcil de prever.}\fs26\cf0\f0\charscalex100 { }\par\pard\li1746\ri0\sl-480\sl
mult0 \*\tx3413\*\tx5506\fs26\cf0\f0\charscalex100 {Del estudio de}\tab \fs26\cf
0\f0\charscalex100\b {Basili}\b0 \fs26\cf0\f0\charscalex100 { y}{ }\fs26\cf0\f0\
charscalex100\b {Turner}\b0 \tab \fs26\cf0\f0\charscalex100 {se extraen dos mtric
as referidas a esta}\par\pard\li1026\ri0\sl-360\slmult0 \*\tx4106\fs26\cf0\f0\ch
arscalex100 {cuestiones. La primera es el}\tab \fs26\cf0\f0\charscalex100\b {par
de uso local }\b0 \fs26\cf0\f0\charscalex100\b {-}\b0 \fs26\cf0\f0\charscalex10
0\b {global}\b0 { }\fs26\cf0\f0\charscalex100 { (P, R) que representa una}\par\p
ard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {instancia de un mdulo}{
}\fs26\cf0\f0\charscalex100\b {P}\b0 \fs26\cf0\f0\charscalex100 { que usa a la
variable}{ }\fs26\cf0\f0\charscalex100\b {R}\b0 { }\fs26\cf0\f0\charscalex100 {(
P lee o escribe el valor de R). El}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0
\f0\charscalex100 {nmero total de pares entre los mdulos y}\fs26\cf0\f0\charscalex
100 { las variables globales da una medida de}\par\pard\li1026\ri0\sl-360\slmul
t0 \fs26\cf0\f0\charscalex100 {la complejidad de la forma en que comparten los d
atos. La segunda mtrica aporta}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\c
harscalex100 {informacin sobre la forma en que los mdulos comparten informacin, y s
e}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {representa por
medio de tres valores: (P, R, Q) que indica que el dato}{ }\fs26\cf0\f0\charsca
lex100\b {R}\b0 \fs26\cf0\f0\charscalex100 { adquiere}\par\pard\li1026\ri0\sl-36
0\slmult0 \fs26\cf0\f0\charscalex100 {su valor en el mdulo}{ }\fs26\cf0\f0\charsc
alex100\b {P}\b0 \fs26\cf0\f0\charscalex100 { y se lee en}{ }\fs26\cf0\f0\charsc
alex100\b {Q}\b0 \fs26\cf0\f0\charscalex100 {. Para que exista (P, R, Q) deben e
xistir los}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {pares
(P, R) y (Q, R).}\fs26\cf0\f0\charscalex100 { }\par\pard\li1746\ri0\sl-480\slmu
lt0 \fs26\cf0\f0\charscalex100 {Otra medida que expresa la complejidad de los da
tos compartidos es la}\par\pard\li1026\ri0\sl-360\slmult0 \*\tx1920\*\tx2706\*\t
x5533\*\tx5946\fs26\cf0\f0\charscalex100 {llamada}\tab \fs26\cf0\f0\charscalex10
0\b {fan}\b0 \fs26\cf0\f0\charscalex100\b {-}\b0 \fs26\cf0\f0\charscalex100\b {i
n}\b0 \tab \fs26\cf0\f0\charscalex100 {(HENR81). Se supone que}\tab \fs26\cf0\f0
\charscalex100\b {R}\b0 \tab \fs26\cf0\f0\charscalex100 {puede ser tant}\fs26\cf
0\f0\charscalex100 {o una variable global}\par\pard\li1026\ri0\sl-360\slmult0 \f
s26\cf0\f0\charscalex100 {como un parmetro entre dos mdulos, y el fan}\fs26\cf0\f0
\charscalex100 {-}\fs26\cf0\f0\charscalex100 {in de un mdulo}{ }\fs26\cf0\f0\char
scalex100\b {Q}\b0 \fs26\cf0\f0\charscalex100 { es el nmero}\par\pard\li1026\ri0\
sl-360\slmult0 \fs26\cf0\f0\charscalex100 {de mdulos}{ }\fs26\cf0\f0\charscalex10
0\b {P}\b0 \fs26\cf0\f0\charscalex100 { que cumplen alguna de las siguientes con
diciones:}\fs26\cf0\f0\charscalex100 { }\par\pard\li1386\ri0\sl-480\slmult0 \fs2
0\cf0\f2\charscalex100 {\uc1\u61623X}\fs26\cf0\f0\charscalex100 { }\fs26\cf0\f0
\charscalex100 {Existe una variable}{ }\fs26\cf0\f0\charscalex100\b {R}\b0 \fs26
\cf0\f0\charscalex100 { que verifica (P, R, Q).}\fs26\cf0\f0\charscalex100 { }\p
ar\pard\li1386\ri0\sl-480\slmult0 \fs20\cf0\f2\charscalex100 {\uc1\u61623X}\fs26
\cf0\f0\charscalex100 { }\fs26\cf0\f0\charscalex100 {Existe un mdulo}{ }\fs26\cf
0\f0\charscalex100\b {T}\b0 \fs26\cf0\f0\charscalex100 { y unas variables}{ }\fs
26\cf0\f0\charscalex100\b {R}\b0 \fs26\cf0\f0\charscalex100 { y}{ }\fs26\cf0\f0\
charscalex100\b {S}\b0 \fs24\cf0\f0\charscalex100 { tales que (P, R, T) y (T, S,
Q). }\fs24\cf0\f0\charscalex100 { }\par\pard\sect\sectd\sbknone\pgwsxn11920\pgh
sxn16840\marglsxn666\margrsxn133\cols2\colno1\colw3466\colsr-0\colno2\colw7653\p
ard\li1746\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li1746\ri0\sl-213\slmult0 \fs18
\cf0\par\pard\li1746\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li1746\ri0\sl-320\slm
ult0 \*\tx2093\fs26\cf0\f0\charscalex100 {El}\tab \fs26\cf0\f0\charscalex100\b {
fan}\b0 \fs26\cf0\f0\charscalex100\b {-}\b0 \fs26\cf0\f0\charscalex100\b {in}\b0
\par\column\pard\li0\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li0\ri0\sl-213\slmul

t0 \fs18\cf0\par\pard\li0\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li0\ri0\sl-320\s
lmult0 \fs26\cf0\f0\charscalex100 {de un mdulo es el nmero de mdulos que directamen
te o}\par\pard\sect\sectd\sbknone\pgwsxn11920\pghsxn16840\marglsxn666\margrsxn13
3\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {indirectamente le p
asan alguna informacin. De forma similar, es posible definir}\par\pard\sect\sectd
\sbknone\pgwsxn11920\pghsxn16840\marglsxn666\margrsxn133\cols2\colno1\colw2600\c
olsr-0\colno2\colw8520\pard\li1026\ri0\sl-360\slmult0 \*\tx1320\fs26\cf0\f0\char
scalex100 {el}\tab \fs26\cf0\f0\charscalex100\b {fa}\b0 \fs26\cf0\f0\charscalex1
00\b {n}\b0 \fs26\cf0\f0\charscalex100\b {-}\b0 \fs26\cf0\f0\charscalex100\b {ou
t}\b0 \par\column\pard\li0\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {como e
l nmero de mdulos a los que directa o indirectamente pasa}\par\pard\sect\sectd\sbk
none\pgwsxn11920\pghsxn16840\marglsxn666\margrsxn133\pard\li1026\ri0\sl-360\slmu
lt0 \fs26\cf0\f0\charscalex100 {informacin un mdulo determinado.}\fs26\cf0\f0\char
scalex100 { }\par\pard\li1026\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li1026\ri0\s
l-213\slmult0 \fs18\cf0\par\pard\li1026\ri0\sl-413\slmult0 \fs26\cf0\f0\charscal
ex100\b {2.1.2.}\b0 \fs26\cf0\f0\charscalex100\b {-}\b0 \fs26\cf0\f0\charscalex1
00\b { Mtricas de estructuras de control.}\b0 \fs26\cf0\f0\charscalex100\b { }\b0
\par\pard\li1746\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li1746\ri0\sl-386\slmult
0 \fs26\cf0\f0\charscalex100 {La estructura lgica de un programa es el mecanismo
que le permite}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {r
ealizar las distintas funciones para las que fue construido. La estructura lgica
del}\par\pard\li4973\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li4973\ri0\sl-213\slm
ult0 \fs18\cf0\par\pard\li4973\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li4973\ri0\
sl-213\slmult0 \fs18\cf0\par\pard\li4973\ri0\sl-333\slmult0 \fs24\cf0\f0\charsca
lex100 {2 }\fs24\cf0\f0\charscalex100 {-}\fs24\cf0\f0\charscalex100 { }\fs24\cf0
\f0\charscalex100 {11}\fs24\cf0\f0\charscalex100 { }\par\pard\sect\sectd\sbknone
\pgwsxn11920\pghsxn16840\marglsxn666\margrsxn133\pard\sect\sectd\sbkpage\pgwsxn1
1920\pghsxn16840\marglsxn666\margrsxn133\margtsxn666\margbsxn213\pard\li1026\ri0
\sl-213\slmult0 \fs18\cf0\par\pard\li1026\ri0\sl-213\slmult0 \fs18\cf0\par\pard\
li1026\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li1026\ri0\sl-213\slmult0 \fs18\cf0
\par\pard\li1026\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li1026\ri0\sl-306\slmult0
\fs26\cf0\f0\charscalex100 {programa representa los algoritmos empleados en su
diseo y procesa los datos}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charsc
alex100 {(la expresin "Algoritmos + Estructuras de Datos = Programas" WIRT76 es u
na}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {estupenda def
inicin de programa). La estructura d}\fs26\cf0\f0\charscalex100 {e un algoritmo s
e representa}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {per
fectamente con las grficas denominadas diagramas de flujo. Son muchos los}\par\pa
rd\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {mtodos de medicin del sof
tware que se basan en estos diagramas.}\fs26\cf0\f0\charscalex100 { }\par\pard\l
i1746\ri0\sl-480\slmult0 \fs26\cf0\f0\charscalex100 {El flujo de control en un p
rograma es habitualmente secuencial, aunque}\par\pard\li1026\ri0\sl-360\slmult0
\fs26\cf0\f0\charscalex100 {puede ser interrumpido en ciertas ocasiones:}\fs26\c
f0\f0\charscalex100 { }\par\pard\li1386\ri0\sl-480\slmult0 \fs18\cf0\f2\charscal
ex100 {\uc1\u61623X}\fs24\cf0\f0\charscalex100 { }\fs24\cf0\f0\charscalex100 {E
n una decisin, se divide en dos nuevas lneas de flujo que responden a la}\par\pard
\li1746\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {evaluacin de una condicin d
eterminada.}\fs26\cf0\f0\charscalex100 { }\par\pard\li1386\ri0\sl-480\slmult0 \f
s18\cf0\f2\charscalex100 {\uc1\u61623X}\fs24\cf0\f0\charscalex100 { }\fs24\cf0\
f0\charscalex100 {Un salto hacia atrs devuelve el}\fs24\cf0\f0\charscalex100 { fl
ujo de control a una instruccin que ya ha}\par\pard\li1746\ri0\sl-360\slmult0 \fs
26\cf0\f0\charscalex100 {sido ejecutada. Normalmente son la base de los bucles.}
\fs26\cf0\f0\charscalex100 { }\par\pard\li1386\ri0\sl-480\slmult0 \fs20\cf0\f2\c
harscalex100 {\uc1\u61623X}\fs26\cf0\f0\charscalex100 { }\fs26\cf0\f0\charscale
x100 {Una transferencia de control a una rutina o procedimiento externo, hace}\p
ar\pard\li1746\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {que el flujo discu
rra por un camino externo al programa.}\fs26\cf0\f0\charscalex100 { }\par\pard\l
i1746\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li1746\ri0\sl-213\slmult0 \fs18\cf0\
par\pard\li1746\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li1746\ri0\sl-320\slmult0
\fs26\cf0\f0\charscalex100 {La mtrica denominada}{ }\fs26\cf0\f0\charscalex100\b

{cuenta de decisin}\b0 \fs26\cf0\f0\charscalex100 { (DE) mide la cantidad de vece


s}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {que ocurren si
tuaciones como las mencionadas en primer y segundo lugar. Esto}\par\pard\li1026\
ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {es, cuenta el nmero de instruccion
es de decisin y bucles condicionales. A la}\par\pard\li1026\ri0\sl-360\slmult0 \f
s26\cf0\f0\charscalex100 {hora de contar}\fs26\cf0\f0\charscalex100 { decisiones
debe tenerse en cuenta los casos en que estas son}\par\pard\li1026\ri0\sl-360\s
lmult0 \fs26\cf0\f0\charscalex100 {compuestas, en esta situaciones DE cuenta pre
dicados ms que instrucciones en}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\
charscalex100 {s, por lo que las situaciones en las que se usan los operadores AN
D y OR}\fs26\cf0\f0\charscalex100 { }\par\pard\li1026\ri0\sl-360\slmult0 \fs26\c
f0\f0\charscalex100 {incrementan en ms de uno el valor de DE (algo similar ocurre
con instrucciones}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex10
0 {del tipo CASE).}\fs26\cf0\f0\charscalex100 { }\par\pard\li1746\ri0\sl-480\slm
ult0 \fs26\cf0\f0\charscalex100 {Una mtrica ms sofisticada referida a esta misma c
uestin es el}{ }\fs26\cf0\f0\charscalex100\b {nmero}\b0 \par\pard\sect\sectd\sbkno
ne\pgwsxn11920\pghsxn16840\marglsxn666\margrsxn133\cols2\colno1\colw4800\colsr-0
\colno2\colw6320\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100\b {de
complejidad ciclomtica}\b0 \par\column\pard\li0\ri0\sl-360\slmult0 \fs26\cf0\f0\
charscalex100 {(v(G)). Esta medida est orientada a valorar el}\par\pard\sect\sect
d\sbknone\pgwsxn11920\pghsxn16840\marglsxn666\margrsxn133\pard\li1026\ri0\sl-360
\slmult0 \fs26\cf0\f0\charscalex100 {nmero de caminos linealmente independientes
de un pr}\fs26\cf0\f0\charscalex100 {ograma, lo que est}\fs26\cf0\f0\charscalex10
0 { }\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {relacionado
con la facilidad para probar y mantener el cdigo. Una aproximacin}\par\pard\li102
6\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {al valor del nmero ciclomtico se
obtiene de la siguiente expresin:}\fs26\cf0\f0\charscalex100 { }\par\pard\li4453\
ri0\sl-480\slmult0 \fs26\cf0\f0\charscalex100 {v(G) = e }\fs26\cf0\f0\charscalex
100 {-}\fs26\cf0\f0\charscalex100 { n + p }\fs26\cf0\f0\charscalex100 { }\par\pa
rd\li1026\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li1026\ri0\sl-386\slmult0 \fs26\
cf0\f0\charscalex100 {donde}{ }\fs26\cf0\f0\charscalex100\b {e}\b0 \fs26\cf0\f0\
charscalex100 { es el nmero de lneas del diagrama de flujo,}{ }\fs26\cf0\f0\charsc
alex100\b {n}\b0 \fs26\cf0\f0\charscalex100 { es el nmero de nodos, y}{ }\fs26\cf
0\f0\charscalex100\b {p}\b0 \par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\cha
rscalex100 {el total de elementos interconectados (figura 6.10). Otra aproximacin
sugiere}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {que el
nmero de elementos interconectados es siempre dos (inicio y final), por}\par\pard
\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {lo que :}\fs26\cf0\f0\cha
rscalex100 { }\par\pard\li4466\ri0\sl-480\slmult0 \fs26\cf0\f0\charscalex100 {v(
G)= e }\fs26\cf0\f0\charscalex100 {-}\fs26\cf0\f0\charscalex100 { n + 2}\fs26\cf
0\f0\charscalex100 { }\par\pard\li4973\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li4
973\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li4973\ri0\sl-213\slmult0 \fs18\cf0\pa
r\pard\li4973\ri0\sl-426\slmult0 \fs24\cf0\f0\charscalex100 {2 }\fs24\cf0\f0\cha
rscalex100 {-}\fs24\cf0\f0\charscalex100 { }\fs24\cf0\f0\charscalex100 {12}\fs24
\cf0\f0\charscalex100 { }\par\pard\sect\sectd\sbknone\pgwsxn11920\pghsxn16840\ma
rglsxn666\margrsxn133\pard\sect\sectd\sbkpage{\shp
{\*\shpinst
\shpleft1693\shptop6373\shpright10106\shpbottom11280
\shpfhdr0\shpwr3\shpwrk0\shpfblwtxt1\shplid2052\shpz0\shpbxpage\shpbypage
\absh16840\absw11920{\sp{\sn shapeType}{\sv 75}}
{\sp{\sn fFlipH}{\sv 0}}
{\sp{\sn fFlipV}{\sv 0}}
{\sp{\sn pibFlags}{\sv 2}}
{\sp{\sn fLine}{\sv 0}}{\sp{\sn fEditedWrap}{\sv 0}}
{\sp{\sn fBehindDocument}{\sv 1}}
{\sp{\sn pib}{\sv {\pict
\jpegblip
FFD8FFE000104A46494600010101004800480000FFDB004300080606070605080707070909080A0C
140D0C0B0B0C1912130F141D1A1F1E1D1A1C1C20242E2720222C231C1C2837292C30313434341F27
393D38323C2E333432FFDB0043010909090C0B0C180D0D1832211C21323232323232323232323232

3232323232323232323232323232323232323232323232323232323232323232323232323232FFC0
0011080167026803012200021101031101FFC4001F00000105010101010101000000000000000001
02030405060708090A0BFFC400B5100002010303020403050504040000017D010203000411051221
31410613516107227114328191A1082342B1C11552D1F02433627282090A161718191A2526272829
2A3435363738393A434445464748494A535455565758595A636465666768696A737475767778797A
838485868788898A92939495969798999AA2A3A4A5A6A7A8A9AAB2B3B4B5B6B7B8B9BAC2C3C4C5C6
C7C8C9CAD2D3D4D5D6D7D8D9DAE1E2E3E4E5E6E7E8E9EAF1F2F3F4F5F6F7F8F9FAFFC4001F010003
0101010101010101010000000000000102030405060708090A0BFFC400B511000201020404030407
05040400010277000102031104052131061241510761711322328108144291A1B1C109233352F015
6272D10A162434E125F11718191A262728292A35363738393A434445464748494A53545556575859
5A636465666768696A737475767778797A82838485868788898A92939495969798999AA2A3A4A5A6
A7A8A9AAB2B3B4B5B6B7B8B9BAC2C3C4C5C6C7C8C9CAD2D3D4D5D6D7D8D9DAE2E3E4E5E6E7E8E9EA
F2F3F4F5F6F7F8F9FAFFDA000C03010002110311003F00F42D0B42D45F58F13AAF8B3598CA6A68AC
CB159E643F64B73B9B30119C1038C0C28E3392773FE11ED53FE872D73FEFCD97FF0023D1E1EFF90E
78B3FEC2B1FF00E915AD7414015EC6DE5B4B38E09AF67BD917399E7081DF249E422AAF1D3803A7AF
35628A2800A28A2800A28A2800A28A2800A28A2800A28A2800A28A2800A28A2800A28A2800A28A28
00A28A2800A28A2800A28A2800A28A2800A28A2800A28A2800A28A2800A28A2800A28A2800A28A28
00A28A2800A28A2800A28A2800A28A2800A28A2800A28A2800A28A2800A28A2800A28A2800A28A28
00A28A2800A28A2800A28A2800A28A2800A28A2800A28A2800A28A2800A28A2802BDBD8DBDA4F773
411EC92EE5134E7713BDC22C60F3D3E5451C7A7AE6AC514500145145001451450014514500145145
00145145001451450014514500145145001451450014514500145145001451450014514500145145
001451450014514500145145001451450014514500145145001451450014514500145158FAFF0088
ECFC39FD97F6C8E77FED2D422D3E1F2541DB2499DA5B246178392327DA803628A28A0028A28A0028
A28A0028A28A0028A28A0028A28A0028A28A0028A28A0028A28A0028A28A0028A28A0028A28A0028
A28A0028A28A0028A28A0028A28A0028A28A0028A28A0028A28A0028A28A0028A28A0028AE6FC57E
3CF0E7832DCBEB3A8C71CE53747691FCF3C9C363083900952371C2E78245709FF0B6FC51FF0021EF
F840AFBFE111FBBE7F3F69DBF7FCFDBD3CBF2F9E9B73FF002D2803D7E8AE6FC29E3CF0E78CEDC3E8
DA8C724E137496927C93C7C2E7287920160370CAE7804D7494005145140051451400514514005145
140051451400514514005145140051451400514514005145701E23F11F8BFF00E16147E17F0BC7A1
FF00C8286A0F26A6B37FCF531900C67FDDE31EBCD0077F45701FF177FF00EA47FF00C9BA3FE2EFFF
00D48FFF00937401DFD15C07FC5DFF00FA91FF00F26E8FF8BBFF00F523FF00E4DD0077F45701FF00
177FFEA47FFC9BA3FE2EFF00FD48FF00F937401DFD15C07FC5DFFF00A91FFF0026E8FF008BBFFF00
523FFE4DD0077F4572FF000EFC4779E2DF0269BAE5FC70477575E6EF4814841B6574180493D1477A
EA2800AE03E29FFCC95FF63558FF00ECF5DFD701F14FFE64AFFB1AAC7FF67A00EFE8AE1FC6FE23F1
2699E23F0DE87E1A8F4A6BAD5FED597D496428BE522BF54391905BB1EDD2A0FF008BBFFF00523FFE
4DD0077F45701FF177FF00EA47FF00C9BA3FE2EFFF00D48FFF00937401DFD15C07FC5DFF00FA91FF
00F26E8FF8BBFF00F523FF00E4DD0077F45701FF00177FFEA47FFC9BA3FE2EFF00FD48FF00F93740
1DFD15C07FC5DFFF00A91FFF0026EA7F04788FC49A9F88FC49A1F8963D296EB48FB2E1F4D5902379
A8CFD5CE4E005EC3BF5A00EE28A28A0028A28A0028A28A0028A28A0028A28A0028A28A0028A28A00
28A28A0028A28A0028A28A0028A28A0028A28A0028A28A0028A28A0028A2A9EAD6736A1A35F595BD
DC9673DC5BC9147731E7742CCA4071820E4139EA3A75A00C7F15F8F3C39E0CB72FACEA31C7394DD1
DA47F3CF270D8C20E402548DC70B9E0915C27F6F7C45F891F2787ACBFE116F0F4BC7F695D8CDCCD1
9FE28C76CA3AB0DA31953896B97B5F0C6B1F0ABC433EB9AE785E0F15D8995A66D6616792E60F9F79
9191C90194465CB6382D8F37B57B1F853C79E1CF19DB87D1B518E49C26E92D24F9278F85CE50F240
2C06E195CF009A00C7F0A7C26F0E786AE06A370926AFAD33F9B26A17E7CC6F372AC5954F0A772EE0
DCB8C9F98D779451401C1F8AFE137873C4B70751B749348D695FCD8F50B03E5B79B9660CCA3863B9
B716E1CE07CC2B9CFEDEF88BF0DFE4F10D97FC253E1E8B8FED2B418B98631FC520EF844663B8632C
332D7AFD737E2BF1E7873C196E5F59D4638E729BA3B48FE79E4E1B1841C804A91B8E173C122800F0
A78F3C39E33B70FA36A31C9384DD25A49F24F1F0B9CA1E480580DC32B9E0135D257CF175E18D63E2
AF8860D7343F0BC1E14B112ACCBACCCCF1DCCFF3EF122A2100B3090386C72571E6F6AF4483E154CB
6F12DC7C40F1AC938402478F5428ACD8E4852A4819ED938F53401E8745701FF0AB3FEA7CF1C7FE0E
3FFB0A3FE1567FD4F9E38FFC1C7FF61401DFD15C07FC2ACFFA9F3C71FF00838FFEC28FF8559FF53E
78E3FF00071FFD850077F45701FF000AB3FEA7CF1C7FE0E3FF00B0A3FE1567FD4F9E38FF00C1C7FF
0061401DFD15C07FC2ACFF00A9F3C71FF838FF00EC28FF008559FF0053E78E3FF071FF00D850077F
45701FF0AB3FEA7CF1C7FE0E3FFB0A3FE1567FD4F9E38FFC1C7FF61401DFD15C07FC2ACFFA9F3C71
FF00838FFEC28FF8559FF53E78E3FF00071FFD850077F45701FF000AB3FEA7CF1C7FE0E3FF00B0A3
FE1567FD4F9E38FF00C1C7FF0061401DFD15C07FC2ACFF00A9F3C71FF838FF00EC28FF008559FF00
53E78E3FF071FF00D850076F757F6763E47DB2EE0B7F3E55821F3A409E648DF75173D58E0E00E4D7
11FF00370BFF0072AFFEDDD72FE39F83BA8EA5A55A5B69BE23F11EA9235D8DE9AA6A0B3430AF96F8
90A9DBD1B68246582B310AC7831FC3BF0B6A5E0FF8B71E97AA6B126A738F0B875662C5605F3D17CA

4DC49D8A54E385EBF745007B5D1451400514514005145140051451401C07C12FF9243A17FDBC7FE8
F92BBFAE03E097FC921D0BFEDE3FF47C95DFD0015C07C53FF992BFEC6AB1FF00D9EBBFAE03E29FFC
C95FF63558FF00ECF40078B7FE4AF7C3AFFB897FE885AEFEB80F16FF00C95EF875FF00712FFD10B5
DFD0014514500145145001451450015C0784BFE4AF7C45FF00B86FFE886AEFEB80F097FC95EF88BF
F70DFF00D10D401DFD14514005145140051451400514514005145140051451400514514005145140
0514514005145140051451400514514005145140051451400514514005707E2BF84DE1CF12DC1D46
DD24D235A57F363D42C0F96DE6E5983328E18EE6DC5B87381F30AEF28A00F20FEDEF88BF0DFE4F10
D97FC253E1E8B8FED2B418B98631FC520EF844663B8632C332D741FF000BA3C0DFF08F7F6BFF006B
FF00B3F62F2CFDA77ECDDB367E9BF3B33C6EAEFEBCC3FB0B47FF008685FF0090558FFC8BFF006EFF
008F74FF008F8FB5FF00AEE9FEB3FDAEBEF4019FFDBDF117E247C9E1EB2FF845BC3D2F1FDA576337
33467F8A31DB28EAC368C654E25AE8FC29F09BC39E1AB81A8DC249ABEB4CFE6C9A85F9F31BCDCAB1
6553C29DCBB8372E327E635DE5140051451400514514005145140051451400514514005145140051
45140051451400514514005794788FC53A3784BE3A477FAE5E7D92D64F0D0855FCA7932E6E490308
09E8A7F2AF57A280380FF85DBF0F3FE861FF00C92B8FFE3747FC2EDF879FF430FF00E495C7FF001B
AEFE8A00E03FE176FC3CFF00A187FF0024AE3FF8DD1FF0BB7E1E7FD0C3FF0092571FFC6EBBFAE03E
36FF00C921D77FEDDFFF0047C74007FC2EDF879FF430FF00E495C7FF001BA3FE176FC3CFFA187FF2
4AE3FF008DD77F4500701FF0BB7E1E7FD0C3FF0092571FFC6E8FF85DBF0F3FE861FF00C92B8FFE37
5DFD1401C07C12FF009243A17FDBC7FE8F92BBFA28A002B80F8A7FF3257FD8D563FF00B3D77F5C07
C53FF992BFEC6AB1FF00D9E8033FE246B7A77873E23780755D56E3ECF6307F68F992EC67DBBA1451
C2824F240E95A1FF000BB7E1E7FD0C3FF92571FF00C6EBBFA280380FF85DBF0F3FE861FF00C92B8F
FE3747FC2EDF879FF430FF00E495C7FF001BAEFE8A00E03FE176FC3CFF00A187FF0024AE3FF8DD1F
F0BB7E1E7FD0C3FF0092571FFC6EB5FE22DFD9D8FC3DD7FED97705BF9FA7DC410F9D204F324689F6
A2E7AB1C1C01C9AAFF000EB5DD1EFBC1BA069F67AAD8DC5F41A55BF9D6D0DC23C91ED8D15B728391
824039E8680287FC2EDF879FF430FF00E495C7FF001BA3FE176FC3CFFA187FF24AE3FF008DD77F45
00701FF0BB7E1E7FD0C3FF0092571FFC6EB3FE1BEB7A7788FE2378FB55D2AE3ED1633FF677972EC6
4DDB61753C30047208E95E9F45001451450014514500145145001451450014514500145145001451
450014514500145145001451450014514500145145001451450014514500145145001451450015E3
17FF00113C2BA67C74B9BFBCD53CBB5B5D15B4C99FECF29DB72B724B2602E4E003C8E3DEBD5F59D7
34BF0F69CF7FABDFC1656AB91BE67C6E2013B547566C038519271C0AF9E355F12F84B54F8C365E38
7B1D557C3D04B1C32DF7D95CC735E479D8D9DE36A8411BE00DC4260A7CC6803E97A2B3F46D734BF1
0E9C97FA45FC17B6AD81BE17CED2403B587556C119538233C8AD0A0028A28A0028A28A0028A28A00
28A28A0028A28A0028A28A0028A28A0028A28A0028A28A0028A28A0028A28A002BCC3E3C6B7A758F
C39BBD2AE6E365F6A5B3EC916C63E6797344CFC81818073C919ED5E9F5E21F17FC63E1AF16686DE1
4D17CFD775B69526B51A6A34C913AE093B94E1F31B483E5DD8E73822803D5FC39E29D1BC5BA7497F
A1DE7DAED6394C2CFE53C787001230E01E8C3F3AD8AF38F84FE2DF075CF85F4CF0F687A86CBAB58B
61B5BA1E54D23E599DC29660DB8877C2336D04671D2BD1E800A28A2800A28A2800AE03E29FFCC95F
F63558FF00ECF5DFD701F14FFE64AFFB1AAC7FF67A00EFE8A28A0028AE6FC57E3CF0E7832DCBEB3A
8C71CE53747691FCF3C9C363083900952371C2E78245709FDBDF117E247C9E1EB2FF00845BC3D2F1
FDA57633733467F8A31DB28EAC368C654E25A00D8F8CDA8F85FF00E106BFD2B5CD4208AFA58BCEB1
8461A6F394318D82E0955254A17C0182C32335CBFECF373E1AB3D0EE2DA2D5606F10DF4BBE7B57DC
8E11376C450C71260077257A6FC1E82BB3F0A7C26F0E786AE06A370926AFAD33F9B26A17E7CC6F37
2AC5954F0A772EE0DCB8C9F98D5CF177C32F0BF8D374BA958F957C71FE9D6A44737F0F53821F850B
F303819C62803B0A2BC83FE2E8FC39FF00A9DF445FF796F13FF4263977FF00A69F2A7F00AEBFC23F
137C2FE34DB169B7DE55F1CFFA0DD011CDFC5D06487E14B7CA4E06338A00EC28A28A0028A28A0028
A28A0028A28A0028A28A0028A28A0028A28A0028A28A0028A28A0028A28A0028A28A0028A28A0028
A28A0028A28A0028A28A0028A2A9EAD1DF4DA35F45A5CD1C1A83DBC8B6B2C832A92953B18F0780D8
3D0FD0D0047ACEB9A5F87B4E7BFD5EFE0B2B55C8DF33E371009DAA3AB3601C28C938E0579A4FF137
C47E33B8974FF871A1492401CC526B77EBB208F9DA4A83C120346E01CB63398CD707F61FF8473C65
F6FF008C1A46ABAA6F9765BEA7E779F64B9932A3CB00617895B667EE9C795CD7D07E1FD5745D5F46
827D02E6D27D3D11638C5AE02C4028210A8FB84295F9480471C0A00E1346F83B6F71A8A6B7E38D4E
7F126AE70DB26622DA2390FB553F89436FC038421B1B057A3FD82CFF00B3BFB3FEC907D87CAF23EC
DE58F2FCBC6DD9B7A6DC718E98AB145007986B3F076DEDF517D6FC0FA9CFE1BD5C65B642C4DB4A72
5F6B27F0A96D99032802E361AA707C4DF11F832E22D3FE23E852470171147ADD82EF824E7682C070
090B239030D8C62315EB7597E20D5745D23469E7D7EE6D20D3DD1A3905D60ACA0A925029FBE4A86F
94024F3C1A009346D734BF10E9C97FA45FC17B6AD81BE17CED2403B587556C119538233C8AD0AF9A
3EC3FF00091F8CBEDFF07F48D574BD92ECB8D4FCEF22C9B1265879641CAF3136CCFDD18F2B8AF548
3C29F125ADE26B8F8971C739406448F4381D55B1C80C7048CF7C0CFA0A00F43A2B80FF00844BE21F
FD14FF00FCA05BFF008D1FF0897C43FF00A29FFF00940B7FF1A00EFE8AE03FE112F887FF00453FFF
002816FF00E347FC225F10FF00E8A7FF00E502DFFC6803BFA2B80FF844BE21FF00D14FFF00CA05BF
F8D1FF000897C43FFA29FF00F940B7FF001A00EFE8AE03FE112F887FF453FF00F2816FFE347FC225

F10FFE8A7FFE502DFF00C6803BFA2BCC2297C65E1CF88DE15D2B55F187F6C58EADF6BF322FECC86D
F6F950EE1CAE49E483D474EF9AF4FA0028A28A0028A28A0028A28A0028A28A002BCE3C43F19742D3
EF0699E1EB79FC4DABBFDCB6D372E870031FDE0073F2963F206C6D20EDAE5FE2EF87BC73A8EAF24F
B2FB56F08F1FF12CD2AE04530F9631F3AF96C5FF0078370F964C007EEF5AEA3E18788FE1D5CD98B0
F08C7069B7527DFB39D765CC982E46589265C0DC7866DA0F38E94018FF00F08278E7E207EF3C7BAD
FF0065698DFF00306D28819FF7DB2CBF7911C64C9D4E3657A3F87BC2BA17852CCDAE87A641651B7D
F28097930491B9CE59B1B8E324E3381C56C51401C7F8BBE19785FC69BA5D4AC7CABE38FF004EB522
39BF87A9C10FC285F981C0CE315C87FC5D1F873FF53BE88BFEF2DE27FE84C72EFF00F4D3E54FE015
EBF450071FE11F89BE17F1A6D8B4DBEF2AF8E7FD06E808E6FE2E83243F0A5BE5270319C57615E11F
13F58F875E24BC36361A4CFE21F12C9F725D0F8738084EE942B093E45207CB26DDAC3E4EB5B1E11F
0A7C5BFEC854D57C6FFD97B73E5C325B457F372CD9DEEDF811F337071C631401EBF45701FF000897
C43FFA29FF00F940B7FF001ACFD7745F887A2787B53D57FE164F9DF61B496E7CAFEC3B75DFB10B6D
CE4E338C6706803D3EB80F8A7FF3257FD8D563FF00B3D74FE13BEB8D4FC1BA1DFDE49E65D5D69F04
D33ED0373B46A58E0703249E95CC7C53FF00992BFEC6AB1FFD9E803BFAF28F8C1ADF8E74BF293438
67B7F0F3440DF6A563009AE61FF59E6606E1B54200DBB0B838F9C57ABD1401E41F0A741F8757DB75
5D3EF7FB6FC427FD22E25D4CE6E6393E4667111E98720EF1B882C46F35EBF5C1F8AFE137873C4B70
751B749348D695FCD8F50B03E5B79B9660CCA3863B9B716E1CE07CC2B9CFEDEF88BF0DFE4F10D97F
C253E1E8B8FED2B418B98631FC520EF844663B8632C332D007AFD15CDF853C79E1CF19DB87D1B518
E49C26E92D24F9278F85CE50F2402C06E195CF009A3C57E3CF0E7832DCBEB3A8C71CE53747691FCF
3C9C363083900952371C2E78245007495E59F1674DF8686DDEE3C54D1DB6A8C9BA37B1205ECBC71F
280430223D81A41B474CAE6A9FF6F7C45F891F2787ACBFE116F0F4BC7F695D8CDCCD19FE28C76CA3
AB0DA31953896BA3F0A7C26F0E786AE06A370926AFAD33F9B26A17E7CC6F372AC5954F0A772EE0DC
B8C9F98D00701F0FF54F8BF736FB34F8A3BED1E473F66BFF0011A1460982EAFF002BF98C1C32F3FB
C03800E01AEF3FE2EFFF00D48FFF009375DFD1401C07FC5DFF00FA91FF00F26E8FF8BBFF00F523FF
00E4DD77F4500701FF00177FFEA47FFC9BA3FE2EFF00FD48FF00F9375DFD1401C07FC5DFFF00A91F
FF0026E8FF008BBFFF00523FFE4DD77F4500701FF177FF00EA47FF00C9BA3FE2EFFF00D48FFF0093
75DFD57BFF00B67F675CFF0067F91F6EF29BECFF0068CF97E660EDDF8E76E719C738A00E5FE1E788
F58F11E9DAC7F6E476297DA6EAB369EDF615711B79613246F249E49E78E31C57615E09F057C4DE29
D43C61AD697369D69059C97B71A96A8D2412AC90CCF85F2979C29DCA3E5619C2BF3915EF74005145
14005145140051451400514514005145140051451400514514005145140051451400514514011CF0
43756F2DBDC451CD04A85248E450CAEA460820F0411C62BCD359F83B6F6FA8BEB7E07D4E7F0DEAE3
2DB21626DA5392FB593F854B6CC81940171B0D7A7D1401E4907C4DF11F832E22D3FE23E852470171
147ADD82EF824E7682C070090B239030D8C62315DDFF00C271E17FF847BFB7BFB7AC7FB33A79FE68
FBDB37F97B7EF799B79D98DDED5B93C10DD5BCB6F711473412A1492391432BA9182083C104718AF1
CFF8575E12FF0085E9FD9FFD8907D87FB17FB4BECDB9FCBFB47DA76EEDB9C6DC71B3EE63B5005C9F
E26F88FC67712E9FF0E34292480398A4D6EFD76411F3B49507824068DC0396C67319AB9A37C1DB7B
8D4535BF1C6A73F89357386D933116D11C87DAA9FC4A1B7E01C210D8D82BD2E0821B5B78ADEDE28E
18224091C71A8554503000038000E3152500470410DADBC56F6F1470C112048E38D42AA28180001C
000718A928A2800A28A2800A28A2800A2BC63C1FF0EFC2BE2DD47C637FAE697F6BBA8FC4B7B0ABFD
A258F080A90308C07563F9D751FF000A4BE1E7FD0BDFF93B71FF00C72803BFA2B80FF8525F0F3FE8
5EFF00C9DB8FFE3947FC292F879FF42F7FE4EDC7FF001CA00F3FF8C371E32D2FE28787AE749BEDDE
7EE8F465F2A11E4CD2058A58F2D9DD9CA1DCFC0DF81F749AF77B086E2DF4EB686F2EBED7751C4A93
5C79623F35C0019F68E17272703A66B88FF8525F0F3FE85EFF00C9DB8FFE3947FC292F879FF42F7F
E4EDC7FF001CA00EFE8AE03FE1497C3CFF00A17BFF00276E3FF8E51FF0A4BE1E7FD0BDFF0093B71F
FC72803BFA2BCA3C59F083C09A678375CBFB3D0BCBBAB5D3E79A17FB5CE76BAC6C54E0BE0E081D6B
B7F027FC93DF0D7FD82AD7FF00452D0074145145001451450015C7F8BBE19785FC69BA5D4AC7CABE
38FF004EB52239BF87A9C10FC285F981C0CE315D851401E41FF1747E1CFF00D4EFA22FFBCB789FFA
131CBBFF00D34F953F80575FE11F89BE17F1A6D8B4DBEF2AF8E7FD06E808E6FE2E83243F0A5BE527
0319C57615E51F1CBC2BA14FE04D53C42FA640357B7F2B65DA028E774B1A1DD8C6FF009781BB38ED
8A00D0F10FC65D0B4FBC1A6787ADE7F136AEFF0072DB4DCBA1C00C7F7801CFCA58FC81B1B483B6B1
FF00E104F1CFC40FDE78F75BFECAD31BFE60DA51033FEFB6597EF2238C993A9C6CAF47F0F785742F
0A599B5D0F4C82CA36FBE5012F260923739CB36371C649C67038AD8A00C7F0F785742F0A599B5D0F
4C82CA36FBE5012F260923739CB36371C649C67038AD8A28A002B9FF001DFF00C93DF12FFD82AEBF
F45357415CFF008EFF00E49EF897FEC1575FFA29A800F027FC93DF0D7FD82AD7FF00452D607C53FF
00992BFEC6AB1FFD9EB7FC09FF0024F7C35FF60AB5FF00D14B581F14FF00E64AFF00B1AAC7FF0067
A00EFE8A28A0028A28A00F34F891F0E7C3975A36A7E27B7B6934ED6B4FB796FA3BBB07F259E58D5E
405801824B725B01F81F351F0DFE1CF872D746D33C4F716D26A3AD6A16F15F49777EFE7324B22A48
4A8230086E4360BF27E6AEAFC77FF24F7C4BFF0060ABAFFD14D47813FE49EF86BFEC156BFF00A296
803A0A28A2800A28A2800A28A2800AE1FE2FDFDE699F0B759BCB0BB9ED2EA3F2364D0486375CCF18
3861C8C8247E35DC5701F1B7FE490EBBFF006EFF00FA3E3A003FE1567FD4F9E38FFC1C7FF6147FC2

ACFF00A9F3C71FF838FF00EC2BBFA280380FF8559FF53E78E3FF00071FFD851FF0AB3FEA7CF1C7FE
0E3FFB0AEFE8A00F34B3F82DA6E9F71757165E2CF175B4F76FBEE24875154699B24E5C84CB1CB139
3EA7D6AE7FC2ACFF00A9F3C71FF838FF00EC2BBFA280380FF8559FF53E78E3FF00071FFD851FF0AB
3FEA7CF1C7FE0E3FFB0AEFE8A00F30F0E69F79E1CF8C92687FF090EB9AA58BF87CDE6CD4EF4CFB64
37013206001C0F4CF279E6BD3EBCA3C47E16D1BC5BF1D23B0D72CFED76B1F8684CA9E6BC78717240
39420F463F9D6C7FC292F879FF0042F7FE4EDC7FF1CA00EFE8AE03FE1497C3CFFA17BFF276E3FF00
8E557F83B636FA669DE2BB0B38FCBB5B5F12DE430A6E276A288C28C9E4E001D6803D1E8A28A0028A
28A0028A28A0028A28A0028A28A0028A28A0028A2BCE2C7E3159EA7671DE587837C63776B26764D0
6982446C120E183E0E0823F0A00F47A2B80FF85A7FF521F8E3FF0004FF00FD9D1FF0B4FF00EA43F1
C7FE09FF00FB3A00EFEBCB27F12E836BF1F25B8B8D6F4D8608BC3A6D64924BA4554985D64C649380
E073B7AD6A7FC2D3FF00A90FC71FF827FF00ECEBC8F5CD2E1D5BE2C5B7890780FC5C345775B8BEB4
6D206E9265CF013054A31085B71C9DCFEA2803E9BA2B80FF0085A7FF00521F8E3FF04FFF00D9D1FF
000B4FFEA43F1C7FE09FFF00B3A00EFE8AE03FE169FF00D487E38FFC13FF00F67447F15ECFFB474F
B3BCF0AF8AB4FF00B7DDC7670CD7DA788A3F31CE14162FF53C64E01E2803BFA28A2800A28A280380
F859FF0033AFFD8D57DFFB2577F5C07C2CFF0099D7FEC6ABEFFD92BBFA0028A28A0028A28A0028A2
8A00E7FC77FF0024F7C4BFF60ABAFF00D14D47813FE49EF86BFEC156BFFA2968F1DFFC93DF12FF00
D82AEBFF0045351E04FF00927BE1AFFB055AFF00E8A5A00E828A28A002B97F11FC44F0AF84B518EC
35CD53EC9752442654FB3CB26509201CA291D54FE55D45701FF370BFF72AFF00EDDD001FF0BB7E1E
7FD0C3FF0092571FFC6E8FF85DBF0F3FE861FF00C92B8FFE375DFD1401C07FC2EDF879FF00430FFE
495C7FF1BAF37F8CBE31F0278DBC2F03E99AD79BABD84BBEDD3ECB3AF988E409132CA147456C9CFD
CC0EB5F43D1401E21F0CBC7DF0F3C17E06B2D365D7B6DF4BFE937BFE87707F7CE0657EE91F280A99
07076E7BD761FF000BB7E1E7FD0C3FF92571FF00C6EBBFA280380FF85DBF0F3FE861FF00C92B8FFE
3747FC2EDF879FF430FF00E495C7FF001BAEFE8A00CFD135BD3BC47A441AAE9571F68B19F77972EC
64DDB58A9E1802390474ACFF001DFF00C93DF12FFD82AEBFF4535607C12FF9243A17FDBC7FE8F92B
7FC77FF24F7C4BFF0060ABAFFD14D4007813FE49EF86BFEC156BFF00A296B03E29FF00CC95FF0063
558FFECF5BFE04FF00927BE1AFFB055AFF00E8A5AC0F8A7FF3257FD8D563FF00B3D0077F45145001
4567EB3AE697E1ED39EFF57BF82CAD57237CCF8DC40276A8EACD8070A324E3815E693FC4DF11F8CE
E25D3FE1C6852490073149ADDFAEC823E7692A0F0480D1B8072D8CE633401B9F19B4DD2F53F86D7E
9A95E4169241FE9164F349B774E8AC4228DC37332EF5039FBD9C122B93FD9D743D36DBC3F7DACADD
5A4FAA5D38478E3915A4B584121430C6E42ECACD8CE182A1ED5B9A37C1DB7B8D4535BF1C6A73F893
57386D933116D11C87DAA9FC4A1B7E01C210D8D82AC7887E0D685A85E0D4FC3D713F867574FB973A
6E51064053FBB0463E50C3E42B9DC49DD401E8F457907FC277E39F87FF00BBF1EE89FDABA62FFCC6
74A00E3FDF5C2AFDE7441911F438DF5E8FE1EF15685E2BB3375A1EA705EC6BF7C2121E3C9206E438
65CED38C819C6471401B145145001451450015C07C6DFF009243AEFF00DBBFFE8F8EBBFAE3FE28E8
9A8F88FE1CEABA56956FF68BE9FC9F2E2DEA9BB6CC8C796200E013D6803B0A2B80FF0084B7E21FFD
130FFCAFDBFF00851FF096FC43FF00A261FF0095FB7FF0A00EFE8AE03FE12DF887FF0044C3FF002B
F6FF00E147FC25BF10FF00E8987FE57EDFFC2803BFA2B80FF84B7E21FF00D130FF00CAFDBFF851FF
00096FC43FFA261FF95FB7FF000A00EFE8AE03FE12DF887FF44C3FF2BF6FFE147FC25BF10FFE8987
FE57EDFF00C2800FF9B85FFB957FF6EEBBFAF38F0E5AF8AB53F8A7278975CF0CFF0062DAAE8A6C14
7DBE2B9DCFE78907DCE46413DBB75E6BD1E800AE03E167FCCEBFF6355F7FEC95DFD701F0B3FE675F
FB1AAFBFF64A00EFE8A28A0028A28A0028A28A0028A28A0028A28A0028A28A002B80F825FF002487
42FF00B78FFD1F2577F5C07C12FF009243A17FDBC7FE8F92803BFA28A2800A28A2800A28A2800AE0
3E29FF00CC95FF0063558FFECF5DFD701F14FF00E64AFF00B1AAC7FF0067A00EFE8A28A0028A28A0
0F30D3FC39F11FC39A8EBBFD8727855EC752D56E3505FB735C1917CC2300EC000E00E39E73CD687F
C5DFFF00A91FFF0026EBBFA280380FF8BBFF00F523FF00E4DD1FF177FF00EA47FF00C9BAEFE8A00F
28D47C47F14F4CF11E8BA1CD1F839AEB57F3FECEE8B74517CA40EDB893919078C03F856C7FC5DFFF
00A91FFF0026EB87F8ABE3FB8F0C7C57D0269F44F323D1E29A680FDAC0FB5A4F188C9E14ECDACAC3
9CE71D8115ED7A4DE4DA868D637B7169259CF716F1CB25B499DD0B328250E403904E3A0E9D28038C
FF008BBFFF00523FFE4DD1FF00177FFEA47FFC9BAEFE8A00F34D5B4DF8B3ACE8D7DA5DC3782960BD
B792DE468CDD060AEA54919046707D0D76FE1AD366D1BC2DA469770D1B4F65650DBC8D19254B2205
2464038C8F415A945001451450015C07FCDC2FFDCABFFB775DFD701FF370BFF72AFF00EDDD0077F4
514500145145001451450014514500701F04BFE490E85FF6F1FF00A3E4ADFF001DFF00C93DF12FFD
82AEBFF4535607C12FF9243A17FDBC7FE8F92B7FC77FF24F7C4BFF0060ABAFFD14D4007813FE49EF
86BFEC156BFF00A296B03E29FF00CC95FF0063558FFECF5BFE04FF00927BE1AFFB055AFF00E8A5AC
0F8A7FF3257FD8D563FF00B3D0077F5E59F167E22EBDE0FB8B5D3F4BD3E3B782ED1036B7751BBC10
33975DA02A91BD4287FE2E33F21AF53A8E7821BAB796DEE228E6825429247228657523041078208E
31401E49E0DF873A178A7CAF157887C45FF0985F3E0E7CC3F66818ED93CBD9D7E52CDF23055C3E0C
62BD6E0821B5B78ADEDE28E18224091C71A8554503000038000E315E69ACFC1DB7B7D45F5BF03EA7
3F86F57196D90B136D29C97DAC9FC2A5B6640CA00B8D86A9C1F137C47E0CB88B4FF88FA1491C05C4
51EB760BBE0939DA0B01C0242C8E40C363188C5007ADD159FA36B9A5F8874E4BFD22FE0BDB56C0DF

0BE769201DAC3AAB608CA9C119E451ACEB9A5F87B4E7BFD5EFE0B2B55C8DF33E371009DAA3AB3601
C28C938E050068579478EBE1B783B4E88F88AD757FF8432FA2C84BCB37F2D09DBCA888119628AE02
C6549C924374A8E7F89BE23F19DC4BA7FC38D0A49200E62935BBF5D9047CED2541E0901A3700E5B1
9CC66AE68DF076DEE3514D6FC71A9CFE24D5CE1B64CC45B44721F6AA7F1286DF80708436360A00E5
FC0DF15BC7BA9F9B64BE1AFF0084A552568A3D4EDB3691B15CB1DEEC9B0654AE0108718C824D771F
F096FC43FF00A261FF0095FB7FF0AEEE0821B5B78ADEDE28E18224091C71A8554503000038000E31
52500701FF00096FC43FFA261FF95FB7FF000A3FE12DF887FF0044C3FF002BF6FF00E15DFD1401C0
7FC25BF10FFE8987FE57EDFF00C28FF84B7E21FF00D130FF00CAFDBFF8577F4500701FF096FC43FF
00A261FF0095FB7FF0A3FE12DF887FF44C3FF2BF6FFE15DFD1401C07FC25BF10FF00E8987FE57EDF
FC28FF0084B7E21FFD130FFCAFDBFF008577F4500701FF00096FC43FFA261FF95FB7FF000A3FE12D
F887FF0044C3FF002BF6FF00E15DFD1401C07FC25BF10FFE8987FE57EDFF00C28FF84B7E21FF00D1
30FF00CAFDBFF8577F4500701FF096FC43FF00A261FF0095FB7FF0A3FE12DF887FF44C3FF2BF6FFE
15DFD1401C7F837C65A8F88F57D6F4AD5740FEC7BED27C8F322FB62DC6EF3559872AA00E003D4F5E
D8AA1F0B3FE675FF00B1AAFBFF0064A3C25FF257BE22FF00DC37FF0044351F0B3FE675FF00B1AAFB
FF0064A00EFE8A28A0028A28A0028A28A0028A28A0028A28A0028A28A002B80F825FF248742FFB78
FF00D1F2577F5C07FC292F879FF42F7FE4EDC7FF001CA00EFE8AE03FE1497C3CFF00A17BFF00276E
3FF8E51FF0A4BE1E7FD0BDFF0093B71FFC72803BFA2B80FF008525F0F3FE85EFFC9DB8FF00E395C7
FF00C2AEF06FFC2E4FEC1FEC6FF8967FC23FF6DF23ED537FAEFB46CDDBB7EEFBBC6338F6A00F6FA2
B80FF8525F0F3FE85EFF00C9DB8FFE3947FC292F879FF42F7FE4EDC7FF001CA00EFEB80F8A7FF325
7FD8D563FF00B3D1FF000A4BE1E7FD0BDFF93B71FF00C72A7B0F841E04D3351B6BFB3D0BCBBAB595
6685FED739DAEA415382F8382075A00EE28A28A0028A28A00F28D1078EFC5BA8F8926B3F1CFF0066
5AD86B575610DBFF0064C13611082BF31C1E8C0739E9D79AD8FF00844BE21FFD14FF00FCA05BFF00
8D1F0B3FE675FF00B1AAFBFF0064AEFE80380FF844BE21FF00D14FFF00CA05BFF8D1FF000897C43F
FA29FF00F940B7FF001AEFE8A00F28D63E14F8AB5ED474CBFD4FE21F9F75A5CBE759BFF62C4BE53E
54E70AE01E517AE7A56C7FC225F10FFE8A7FFE502DFF00C6BBFA280380FF00844BE21FFD14FF00FC
A05BFF008D1FF0897C43FF00A29FFF00940B7FF1AEFE8A00F30D7745F887A2787B53D57FE164F9DF
61B496E7CAFEC3B75DFB10B6DCE4E338C6706BB7F09DF5C6A7E0DD0EFEF24F32EAEB4F82699F681B
9DA352C70381924F4AAFE3BFF927BE25FF00B055D7FE8A6A3C09FF0024F7C35FF60AB5FF00D14B40
1D051451400571FE23F87967E23F10C7AE7F6DEB9A5DF25A0B3DFA65D8837461CBE09DA49E4FAE38
1C715D851401C07FC2ACFF00A9F3C71FF838FF00EC28FF008559FF0053E78E3FF071FF00D8577F45
00701FF0AB3FEA7CF1C7FE0E3FFB0AE5FE22783EF3C25E04D4B5CB0F1C78C64BAB5F2B624FAB1287
74A88720283D18F7AF67AE03E36FFC921D77FEDDFF00F47C74007FC2ACFF00A9F3C71FF838FF00EC
28FF008559FF0053E78E3FF071FF00D8577F4500701FF0AB3FEA7CF1C7FE0E3FFB0A3FE1567FD4F9
E38FFC1C7FF615DFD14018FE16F0E59F84BC3969A1D8493C96B6BBF63CEC0B9DCECE724003AB1ED5
5FC77FF24F7C4BFF0060ABAFFD14D5D0573FE3BFF927BE25FF00B055D7FE8A6A003C09FF0024F7C3
5FF60AB5FF00D14B581F14FF00E64AFF00B1AAC7FF0067ADFF00027FC93DF0D7FD82AD7FF452D607
C53FF992BFEC6AB1FF00D9E803BFA28A2800A8E7821BAB796DEE228E682542924722865752304107
8208E315251401E69A97C1CB187595D67C1FABDDF85F502E0C9F651E640EBB8B106324705B6FCB9D
98503651A6FC1CB19B596D67C61ABDDF8A3500E4C7F6A1E5C08BB83002304F01B77CB9D98623657A
5D14011C10436B6F15BDBC51C304481238E350AA8A06000070001C62A4A28A0028A28A0028A28A00
28A28A0028A28A0028A28A0028A28A0028A28A0028A28A00E03C25FF00257BE22FFDC37FF44351F0
B3FE675FFB1AAFBFF64A3C25FF00257BE22FFDC37FF44351F0B3FE675FFB1AAFBFF64A00EFE8A28A
0028A28A0028A28A0028A28A0028A28A0028A28A002B9FFF0084EFC21FF435E87FF83187FF008AAE
82BCA3E10784FC37A9FC2DD1AF2FFC3FA55DDD49E7EF9A7B38E476C4F2019623270001F850076FFF
0009DF843FE86BD0FF00F0630FFF001547FC277E10FF00A1AF43FF00C18C3FFC551FF0827843FE85
4D0FFF0005D0FF00F1347FC209E10FFA15343FFC1743FF00C4D001FF0009DF843FE86BD0FF00F063
0FFF00155E01E237F3BE38C7F61F1F797A66A1876D4A1D631F66B72C5E483CD1F2A6195B62723E68
F3D4D7BFFF00C209E10FFA15343FFC1743FF00C4D1FF000827843FE854D0FF00F05D0FFF00134007
FC277E10FF00A1AF43FF00C18C3FFC551FF09DF843FE86BD0FFF000630FF00F1547FC209E10FFA15
343FFC1743FF00C4D1FF000827843FE854D0FF00F05D0FFF00134007FC277E10FF00A1AF43FF00C1
8C3FFC5549078CFC2D757115BDBF897469A795C2471C77F1333B1380000D9249E3151FFC209E10FF
00A15343FF00C1743FFC4D719F107C35A0E8D71E0CB8D2F44D36C676F1458A3496B6A91315CB9C12
A01C64038F61401EA7451450014514500701F0B3FE675FFB1AAFBFF64AEFEBC83C35E25BCF076A3E
2AB3BCF07F8AAF3ED5E20BBBC866B1D30C91B46C405218919CED278E304735D07FC2D3FF00A90FC7
1FF827FF00ECE803BFA2B80FF85A7FF521F8E3FF0004FF00FD9D1FF0B4FF00EA43F1C7FE09FF00FB
3A00EFE8AF389BE3159DBDE5B59CDE0DF18C77575BBECF0BE9803CBB465B6A97CB607271D2AC7FC2
D3FF00A90FC71FF827FF00ECE803BFA2B80FF85A7FF521F8E3FF0004FF00FD9D1FF0B4FF00EA43F1
C7FE09FF00FB3A00DFF1DFFC93DF12FF00D82AEBFF0045351E04FF00927BE1AFFB055AFF00E8A5AE
33C4BF1066D67C2DABE976FE05F1AACF7B6535BC6D26904286742A09C3138C9F435DBF83209AD7C0
BE1EB7B88A48678B4CB64923914AB2308941041E41078C5006E51451400565EA5E25D0746B85B7D5

35BD36C67640EB1DD5D244C5724640620E3208CFB1AD4AF34D4B49D3759F8F8B6FAA69F697D02F85
C3AC7750ACAA1BED4464060467048CFB9A00EAFF00E13BF087FD0D7A1FFE0C61FF00E2A8FF0084EF
C21FF435E87FF83187FF008AA3FE104F087FD0A9A1FF00E0BA1FFE268FF8413C21FF0042A687FF00
82E87FF89A003FE13BF087FD0D7A1FFE0C61FF00E2ABCC3E39EAFA3EBDE0B49746F17D8C925ACA3C
EB0B6D4908BA8D8AF58D49DECAC1186780379EB8AF4FFF008413C21FF42A687FF82E87FF0089A3FE
104F087FD0A9A1FF00E0BA1FFE2680390F865E26D1F4BF03597F6F78EAC6F353BAFF004A9BEDBABA
48F0EE036C7F390CB850B953D18B575FFF0009DF843FE86BD0FF00F0630FFF001547FC209E10FF00
A15343FF00C1743FFC4D1FF0827843FE854D0FFF0005D0FF00F134007FC277E10FFA1AF43FFC18C3
FF00C551FF0009DF843FE86BD0FF00F0630FFF001547FC209E10FF00A15343FF00C1743FFC4D1FF0
827843FE854D0FFF0005D0FF00F13401B1637F67A9D9C779617705DDAC99D934120911B0483861C1
C1047E158FE3BFF927BE25FF00B055D7FE8A6AC0F825FF00248742FF00B78FFD1F256FF8EFFE49EF
897FEC1575FF00A29A800F027FC93DF0D7FD82AD7FF452D607C53FF992BFEC6AB1FF00D9EB7FC09F
F24F7C35FF0060AB5FFD14B581F14FFE64AFFB1AAC7FF67A00CFF891A269DE23F88DE01D2B55B7FB
458CFF00DA3E645BD9376D851872A411C807AD687FC292F879FF0042F7FE4EDC7FF1CA3C5BFF0025
7BE1D7FDC4BFF442D77F401C07FC292F879FF42F7FE4EDC7FF001CA3FE1497C3CFFA17BFF276E3FF
008E577F4500701FF0A4BE1E7FD0BDFF0093B71FFC728FF8525F0F3FE85EFF00C9DB8FFE395DFD14
01C07FC292F879FF0042F7FE4EDC7FF1CA3FE1497C3CFF00A17BFF00276E3FF8E577F4500701FF00
0A4BE1E7FD0BDFF93B71FF00C72B3FE1BE89A77873E2378FB4AD2ADFECF6307F6779716F67DBBA17
63CB124F249EB5E9F5C0784BFE4AF7C45FFB86FF00E886A00EFE8A28A0028A28A0028A28A0028A28
A0028A28A0028A28A0028A28A00E03C25FF257BE22FF00DC37FF0044351F0B3FE675FF00B1AAFBFF
0064A3C25FF257BE22FF00DC37FF0044351F0B3FE675FF00B1AAFBFF0064A00EFE8A28A0028A28A0
028A28A0028A28A0028A28A0028A28A002B80F825FF248742FFB78FF00D1F2577F5C07C12FF9243A
17FDBC7FE8F92803BFA28A2800A28A2800A28A2800AE03E29FFCC95FF63558FF00ECF5DFD701F14F
FE64AFFB1AAC7FF67A00EFE8A28A0028A28A0028A28A0028A28A00E03C5BFF00257BE1D7FDC4BFF4
42D77F5C078B7FE4AF7C3AFF00B897FE885AEFE800A28A2800A28A2800A28A2800AE03FE6E17FEE5
5FFDBBAEFEB80FF9B85FFB957FF6EE803BFA28A2800A28A2800A28A2800A28A280380F825FF24874
2FFB78FF00D1F256FF008EFF00E49EF897FEC1575FFA29AB03E097FC921D0BFEDE3FF47C95BFE3BF
F927BE25FF00B055D7FE8A6A003C09FF0024F7C35FF60AB5FF00D14B581F14FF00E64AFF00B1AAC7
FF0067ADFF00027FC93DF0D7FD82AD7FF452D607C53FF992BFEC6AB1FF00D9E800F16FFC95EF875F
F712FF00D10B5DFD701E3DD3FC45FF00097F84B5ED0743FED7FECAFB679D07DAE3B7FF005B1AA2FC
CE7FDE3C03D3B668FF0084B7E21FFD130FFCAFDBFF00850077F45701FF00096FC43FFA261FF95FB7
FF000A3FE12DF887FF0044C3FF002BF6FF00E1401DFD15E717FE3BF1DE99A75CDFDE7C34F2ED6D62
69A67FEDD80ED4504B1C05C9C007A5161E3BF1DEA7A75B5FD9FC34F32D6EA259A17FEDD806E4600A
9C15C8C823AD007A3D15C07FC25BF10FFE8987FE57EDFF00C28FF84B7E21FF00D130FF00CAFDBFF8
50077F5C0784BFE4AF7C45FF00B86FFE886A3FE12DF887FF0044C3FF002BF6FF00E14780B4FF0011
7FC25FE2DD7B5ED0FF00B23FB57EC7E4C1F6B8EE3FD546C8DF321FF74F2075EF8A00EFE8A28A0028
A28A0028A28A0028A28A0028A28A0028A28A0028A28A00E03C25FF00257BE22FFDC37FF44351F0B3
FE675FFB1AAFBFF64A3C25FF00257BE22FFDC37FF44351F0B3FE675FFB1AAFBFF64A00EFE8A28A00
28A28A0028A28A0028A28A0028A28A0028A28A002BCA3C2DE1CF8A7E12F0E5A687612783A4B5B5DF
B1E76BA2E773B39C9000EAC7B57ABD1401C07FC5DFFF00A91FFF0026E8FF008BBFFF00523FFE4DD7
7F4500701FF177FF00EA47FF00C9BAC7FF00848FE29FFC265FF08BF97E0EFB77F67FF68799B6EBCB
F2FCCF2F19CE7767B6318EF5EAF5E01ADFC45D4747F8F73EDF0D79F7CB68BA2416BF6E55F3B7CC24
8E5DFB485DC197E53D33C9E0D007A07FC5DFFF00A91FFF0026E8FF008BBFFF00523FFE4DD77F4500
701FF177FF00EA47FF00C9BACFD43C39F11FC47A8E85FDB9278552C74DD56DF506FB0B5C091BCB27
206F041E09E38E71CD7A7D140051451400514514005145140051451401C078B7FE4AF7C3AFFB897F
E885AEFEB80F16FF00C95EF875FF00712FFD10B5DFD0014514500145145001451450015C0788FC39
E2FF00F85851F8A3C2F2687FF20A1A7BC7A9B4DFF3D4C848118FF779CFAF15DFD1401C07FC5DFF00
FA91FF00F26E8FF8BBFF00F523FF00E4DD77F4500701FF00177FFEA47FFC9BAC7F14F88FE29F84BC
3977AE5FC7E0E92D6D766F4816E8B9DCEA8300903AB0EF5EAF5C07C6DFF9243AEFFDBBFF00E8F8E8
00FF008BBFFF00523FFE4DD1FF00177FFEA47FFC9BAEFE8A00E03FE2EFFF00D48FFF0093747FC5DF
FF00A91FFF0026EBBFA280397F877E1CBCF0978134DD0EFE4824BAB5F377BC0C4A1DD2BB8C1201E8
C3B558F1DFFC93DF12FF00D82AEBFF0045357415CFF8EFFE49EF897FEC1575FF00A29A800F027FC9
3DF0D7FD82AD7FF452D607C53FF992BFEC6AB1FF00D9EB7FC09FF24F7C35FF0060AB5FFD14B581F1
4FFE64AFFB1AAC7FF67A00EFE8A28A0028A28A00E7FC77FF0024F7C4BFF60ABAFF00D14D47813FE4
9EF86BFEC156BFFA296B1FE2E6B371A27C36D5A6834FFB5C771135A4E7CE11F9092A98C49C83BB0C
CA368FEF75001AC8F831E34BCF14F87A2B0FEC5FB2D8E8F69059FDB1AE0B79F22A01855D800E064F
CC48DCBC1CE4007A7D14514005145140051451400514514005145140051451400514514005145140
051451401C0784BFE4AF7C45FF00B86FFE886A3E167FCCEBFF006355F7FEC94784BFE4AF7C45FF00
B86FFE886A3E167FCCEBFF006355F7FEC9401DFD1451400514514005145140051451400514514005
1451400579078260F887E31F0858EBDFF0B0FEC7F6AF33F71FD8B6F26DDB2327DEE339DB9E9DEBD7

EB80F825FF00248742FF00B78FFD1F25001FF0897C43FF00A29FFF00940B7FF1A3FE112F887FF453
FF00F2816FFE35DFD1401C07FC225F10FF00E8A7FF00E502DFFC6B1EE3E14F8AAEFC5169E259FE21
EFD5ED2230C171FD8B10D8843023687DA7EFB751DFE95EAF4500701FF0897C43FF00A29FFF00940B
7FF1A3FE112F887FF453FF00F2816FFE35DFD1401C07FC225F10FF00E8A7FF00E502DFFC6B1F5B1E
3BF096A3E1B9AF3C73FDA76B7FAD5AD84D6FFD9304394724B7CC327A291C63AF5E2BD5EB80F8A7FF
003257FD8D563FFB3D0077F4514500145145001451450014514500701E2DFF0092BDF0EBFEE25FFA
216BBFAE03C5BFF257BE1D7FDC4BFF00442D77F40051451400514514005145140051451400514514
005701F1B7FE490EBBFF006EFF00FA3E3AEFEB80F8DBFF0024875DFF00B77FFD1F1D0077F4514500
1451450015CFF8EFFE49EF897FEC1575FF00A29ABA0AE7FC77FF0024F7C4BFF60ABAFF00D14D4007
813FE49EF86BFEC156BFFA296B03E29FFCC95FF63558FF00ECF5BFE04FF927BE1AFF00B055AFFE8A
5AC0F8A7FF003257FD8D563FFB3D0077F45159FACEB9A5F87B4E7BFD5EFE0B2B55C8DF33E371009D
AA3AB3601C28C938E050068567EB3AE697E1ED39EFF57BF82CAD57237CCF8DC40276A8EACD8070A3
24E3815E693FC4DF11F8CEE25D3FE1C6852490073149ADDFAEC823E7692A0F0480D1B8072D8CE633
57346F83B6F71A8A6B7E38D4E7F126AE70DB26622DA2390FB553F89436FC038421B1B050065EADE3
FD6BE235BDF681E03F0F4971A7DCA496975AC5F831C0A8C0A3ED1C73B5D1C6496C67F7759FA06B3E
23F82DA5AE93E23F0BC775A0A397FED6D23E63B9B9264DD8C9DCD1C60B797C2F1BB02BDBE0821B5B
78ADEDE28E18224091C71A8554503000038000E315250063F87BC55A178AECCDD687A9C17B1AFDF0
84878F2481B90E1973B4E32067191C56C579C7887E0D685A85E0D4FC3D713F867574FB973A6E5106
4053FBB0463E50C3E42B9DC49DD58FFF0009DF8E7E1FFEEFC7BA27F6AE98BFF319D28038FF007D70
ABF79D106447D0E37D007AFD158FE1EF15685E2BB3375A1EA705EC6BF7C2121E3C9206E43865CED3
8C819C64715B140051451400571FF1475BD47C39F0E755D574AB8FB3DF41E4F972EC57DBBA6453C3
020F048E95D857947C4CF15685E2BF82BAF5D687A9C17B1AFD9F784243C79B8403721C32E769C640
CE3238A00D8FF844BE21FF00D14FFF00CA05BFF8D1FF000897C43FFA29FF00F940B7FF001AEFE8A0
0E03FE112F887FF453FF00F2816FFE347FC225F10FFE8A7FFE502DFF00C6BBFA280380FF00844BE2
1FFD14FF00FCA05BFF008D1FF0897C43FF00A29FFF00940B7FF1AEFE8A00E03FE112F887FF00453F
FF002816FF00E347FC225F10FF00E8A7FF00E502DFFC6BBFA2803CE3C3975E2AD33E29C9E1AD73C4
DFDB56ADA29BF53F608ADB6BF9E231F7393800F7EFD38AF47AE03FE6E17FEE55FF00DBBAEFE80380
F097FC95EF88BFF70DFF00D10D47C2CFF99D7FEC6ABEFF00D928F097FC95EF88BFF70DFF00D10D47
C2CFF99D7FEC6ABEFF00D92803BFA28A2800A28A2800A28A2800A28A2800A28A2800A28A2800AE03
E097FC921D0BFEDE3FF47C95DFD78C7C3BF185E784BC09A6E877FE07F18C9756BE6EF78349250EE9
5DC609607A30ED401ECF45701FF0B4FF00EA43F1C7FE09FF00FB3A3FE169FF00D487E38FFC13FF00
F67401DFD15C07FC2D3FFA90FC71FF00827FFECEABFF00C2E2B3FED1FECFFF008437C63F6EF2BCFF
00B37F660F33CBCEDDFB77E76E78CF4CD007A3D15C07FC2D3FFA90FC71FF00827FFECE8FF85A7FF5
21F8E3FF0004FF00FD9D0077F5C07C53FF00992BFEC6AB1FFD9E8FF85A7FF521F8E3FF0004FF00FD
9D73FE25F12DE78C751F0AD9D9F83FC5567F65F105A5E4D35F698638D63524312C09C63703CF1807
9A00F5FA28A2800A28A2800A28A2800A28A280380F16FF00C95EF875FF00712FFD10B5DFD701E2DF
F92BDF0EBFEE25FF00A216BBFA0028A28A0028A28A0028A28A0028A28A0028A28A002B80F8DBFF00
24875DFF00B77FFD1F1D77F5C07C6DFF009243AEFF00DBBFFE8F8E803BFA28A2800A28A2800AE7FC
77FF0024F7C4BFF60ABAFF00D14D5D0573FE3BFF00927BE25FFB055D7FE8A6A003C09FF24F7C35FF
0060AB5FFD14B581F14FFE64AFFB1AAC7FF67ADFF027FC93DF0D7FD82AD7FF00452D607C53FF0099
2BFEC6AB1FFD9E803BFAF38F88FF000A93C6DA8DBEB767A8FD9757B48963852E2159ADA4085DD55D
08EECC324EE1818DA6BD1E8A00F20B0F88DAEF80BECDA3F8FF00C3BF65B18F6DBDBEAFA6460DB151
855CA0E178477C2E1800008C57A7E8DAE697E21D392FF48BF82F6D5B037C2F9DA48076B0EAAD8232
A70467915727821BAB796DEE228E6825429247228657523041078208E315E69ACFC1DB7B7D45F5BF
03EA73F86F57196D90B136D29C97DAC9FC2A5B6640CA00B8D86803D3E8AF2483E26F88FC1971169F
F11F4292380B88A3D6EC177C1273B416038048591C8186C63118A27F89BE23F19DC4BA7FC38D0A49
200E62935BBF5D9047CED2541E0901A3700E5B19CC66803D2F59D734BF0F69CF7FABDFC1656AB91B
E67C6E2013B547566C038519271C0AF349FE26F88FC67712E9FF000E34292480398A4D6EFD76411F
3B49507824068DC0396C67319AB9A37C1DB7B8D4535BF1C6A73F89357386D933116D11C87DAA9FC4
A1B7E01C210D8D82BD2E0821B5B78ADEDE28E18224091C71A8554503000038000E31401E41A07ECF
BA2C4EB7DE26BB9351BC91CC92DBDAA8B6B505979501006C062482A506303681907A4FF8525F0F3F
E85EFF00C9DB8FFE395DFD1401C07FC292F879FF0042F7FE4EDC7FF1CA3FE1497C3CFF00A17BFF00
276E3FF8E577F4500701FF000A4BE1E7FD0BDFF93B71FF00C72BC9FC57F05EDFC27F0D2FF5ABEBBD
FA9DAF92552DDCB2659E38DC33301B9792CA02A15DC4132601AFA5EB87F8BF6179A9FC2DD66CEC2D
27BBBA93C8D90C11991DB13C64E147270013F850077145701FF0B4FF00EA43F1C7FE09FF00FB3A3F
E169FF00D487E38FFC13FF00F67401DFD15C07FC2D3FFA90FC71FF00827FFECE8FF85A7FF521F8E3
FF0004FF00FD9D0077F4579C5AFC62B3BEF3FEC7E0DF18DC7912B413793A607F2E45FBC8D87E1864
641E4558FF0085A7FF00521F8E3FF04FFF00D9D0077F45701FF0B4FF00EA43F1C7FE09FF00FB3A3F
E169FF00D487E38FFC13FF00F674007FCDC2FF00DCABFF00B775DFD798787350BCF11FC64935CFF8
47B5CD2EC53C3E6CF7EA76460DD20B80F807241E0FAE783C715E9F401C0784BFE4AF7C45FF00B86F

FE886A3E167FCCEBFF006355F7FEC94784BFE4AF7C45FF00B86FFE886A3E167FCCEBFF006355F7FE
C9401DFD1451400514514005145140051451400514514005145140051451400514514005701FF370
BFF72AFF00EDDD77F5C07FCDC2FF00DCABFF00B77401DFD145140051451400514514005145140051
45140051451401C078B7FE4AF7C3AFFB897FE885AEFEBC53E24FC40D37C3FF0016BC32F7D63A904D
112E5E66585713ACF0854316586E0181049C60A90338AF63B0BAFB769D6D79F679EDFCF8965F26E1
36491EE00ED75ECC33823B1A00B145145001451450014514500145145001451450015C07C6DFF924
3AEFFDBBFF00E8F8EBBFAE03E36FFC921D77FEDDFF00F47C7401DFD145140051451400573FE3BFF9
27BE25FF00B055D7FE8A6AE82B9FF1DFFC93DF12FF00D82AEBFF004535001E04FF00927BE1AFFB05
5AFF00E8A5AC0F8A7FF3257FD8D563FF00B3D6FF00813FE49EF86BFEC156BFFA296B03E29FFCC95F
F63558FF00ECF401DFD145140051451401CFF8EFFE49EF897FEC1575FF00A29A8F027FC93DF0D7FD
82AD7FF452D65FC56D721D0BE1CEAEF3DADDCE9796F25906B78C3089A48D955DF246D4DD819F5603
073599F08BC7361E27F0F5A68D63657CB268FA7DBC3753CCB188F7840A02E1CB1CEC623E5E839C1C
0201E8F45145001451450014514500145145001451450014514500701F0B3FE675FF00B1AAFBFF00
64AEFEB80F859FF33AFF00D8D57DFF00B2577F4005145140051451401C0784BFE4AF7C45FF00B86F
FE886A3E167FCCEBFF006355F7FEC94784BFE4AF7C45FF00B86FFE886A3E167FCCEBFF006355F7FE
C9401DFD1451400514514005145140051451400514514005145140051451400514514005701FF370
BFF72AFF00EDDD77F5C07FCDC2FF00DCABFF00B77401DFD14514005145140051451400514557FB7D
9FF68FF67FDAE0FB7795E7FD9BCC1E67979DBBF6F5DB9E33D33401E71A7F88FE23F88F51D77FB0E3
F0AA58E9BAADC69EBF6E5B81237964609D8483C11CF1CE78AD0FF8BBFF00F523FF00E4DD1F0B3FE6
75FF00B1AAFBFF0064AEFE80380FF8BBFF00F523FF00E4DD1FF177FF00EA47FF00C9BAEFE8A00F14
F14FC3BF883E30D674AD53548FC1467D39F2AA8B71B675DC1B64BB94964C83C647DF6F5AEB3FE2EF
FF00D48FFF009375DFD1401C07FC5DFF00FA91FF00F26E8FF8BBFF00F523FF00E4DD77F450079A6A
DA97C59D1B46BED52E17C14D0595BC97122C62E8B15452C40C903381EA2BB7F0D6A536B3E16D2354
B858D67BDB286E2458C10A19D03103249C64FA9AA7E3BFF927BE25FF00B055D7FE8A6AF14D63C31F
142EFE1A68E74BD764D4F45974C8246B0B58D6DE78E3309FDD9DA019902E171B896247C8719A00FA
2E8AF2CF0D7843E20AF85B4854F881269E82CA10B6526850B35B8D83F764B1C92BD3279E39AD4FF8
44BE21FF00D14FFF00CA05BFF8D0077F45701FF0897C43FF00A29FFF00940B7FF1A3FE112F887FF4
53FF00F2816FFE3401DFD15C07FC225F10FF00E8A7FF00E502DFFC68FF00844BE21FFD14FF00FCA0
5BFF008D0077F5C07C6DFF009243AEFF00DBBFFE8F8E8FF844BE21FF00D14FFF00CA05BFF8D67EB7
F0DFC65E23D227D2B55F88FF0068B19F6F9917F61C29BB6B061CAB023900F5A00F4FA28A2800A28A
2800AE7FC77FF24F7C4BFF0060ABAFFD14D5D0573FE3BFF927BE25FF00B055D7FE8A6A003C09FF00
24F7C35FF60AB5FF00D14B581F14FF00E64AFF00B1AAC7FF0067ADFF00027FC93DF0D7FD82AD7FF4
52D607C53FF992BFEC6AB1FF00D9E8027F1BF88FC49A6788FC37A1F86A3D29AEB57FB565F52590A2
F948AFD50E46416EC7B74A83FE2EFF00FD48FF00F937478B7FE4AF7C3AFF00B897FE885AEFE80380
FF008BBFFF00523FFE4DD1FF00177FFEA47FFC9BAEFE8A00F30D7346F8A7E21D0EF748BF4F03BDAD
DC4D13E05D12B9E8CB9040607041C7040359FE0EF077C4BF03E87FD93A4FFC21CD0B4AD34924EF76
CF239C0C9C000701470074F5C93EBF4500701FF177FF00EA47FF00C9BA3FE2EFFF00D48FFF009375
DFD1401C07FC5DFF00FA91FF00F26EA7F04788FC49A9F88FC49A1F8963D296EB48FB2E1F4D590237
9A8CFD5CE4E005EC3BF5AEE2BC627D2FC5BA8FC52F1F37847C4106957517F676F8E7B649127CC1C6
58AB14DA0374539CE0E3AD007B3D15F3C7C35F0E78FA4F11F8A6D66F154FA36AF6FF0064FB719EDE
3D41E6DC8E63CBB31C617D09EB8ED5E91FF0897C43FF00A29FFF00940B7FF1A00EFE8AE03FE112F8
87FF00453FFF002816FF00E347FC225F10FF00E8A7FF00E502DFFC6803BFA2B80FF844BE21FF00D1
4FFF00CA05BFF8D1FF000897C43FFA29FF00F940B7FF001A00EFE8AE03FE112F887FF453FF00F281
6FFE347FC225F10FFE8A7FFE502DFF00C6800F859FF33AFF00D8D57DFF00B2577F5CBF81FC2771E1
2D3B5186F355FED3BABFD425BF9AE3ECE21CBB850DF2824755278C75E9C575140051451400514514
01C0784BFE4AF7C45FFB86FF00E886A3E167FCCEBFF6355F7FEC94784BFE4AF7C45FFB86FF00E886
A3E167FCCEBFF6355F7FEC9401DFD145140051451400514514005145140051451400514514005145
140051451400571FE23F87967E23F10C7AE7F6DEB9A5DF25A0B3DFA65D8837461CBE09DA49E4FAE3
81C715D851401C07FC2ACFFA9F3C71FF00838FFEC28FF8559FF53E78E3FF00071FFD8577F4500701
FF000AB3FEA7CF1C7FE0E3FF00B0A3FE1567FD4F9E38FF00C1C7FF00615DFD1401C07FC2ACFF00A9
F3C71FF838FF00EC28FF008559FF0053E78E3FF071FF00D8577F4500701FF0AB3FEA7CF1C7FE0E3F
FB0AE0FC4DF057C47A878EAC26D2F5ED4A4B386DE376D5B55BEF3A78641293B63DB86C80438E8339
F981AF7BA2803CD3E0B59CDA7E8DE27B2B8BB92F27B7F115D4525CC99DD332AC60B9C927248CF53D
7AD7A5D78C783FE227857C25A8F8C6C35CD53EC97527896F6654FB3CB26509500E5148EAA7F2AEA3
FE176FC3CFFA187FF24AE3FF008DD0077F45701FF0BB7E1E7FD0C3FF0092571FFC6E8FF85DBF0F3F
E861FF00C92B8FFE37401DFD15C07FC2EDF879FF00430FFE495C7FF1BA3FE176FC3CFF00A187FF00
24AE3FF8DD0077F45701FF000BB7E1E7FD0C3FF92571FF00C6E8FF0085DBF0F3FE861FFC92B8FF00
E37401BFE3BFF927BE25FF00B055D7FE8A6ACFF0EEB9A5F87BE167872FF57BF82CAD574AB61BE67C
6E220076A8EACD8070A324E3815CC78B3E2FF81353F06EB96167AEF997575A7CF0C29F649C6E768D
828C94C0C923AD7363E04691E24F02E89AA68D75269DAA4FA641348B213241348D16E24E7E642598

7209000E12803DCEC2FADF53D3ADAFECE4F32D6EA259A17DA46E4600A9C1E46411D6AC579A693F03
BC150E8D6316A9A2C73EA096F1ADD4B1DE4E15E50A37B0F9C705B27A0FA0AB9FF0A4BE1E7FD0BDFF
0093B71FFC72803BFA2B80FF008525F0F3FE85EFFC9DB8FF00E3947FC292F879FF0042F7FE4EDC7F
F1CA00EFE8AE03FE1497C3CFFA17BFF276E3FF008E51FF000A4BE1E7FD0BDFF93B71FF00C72803BF
A2B80FF8525F0F3FE85EFF00C9DB8FFE3947FC292F879FF42F7FE4EDC7FF001CA00EFE8AE03FE149
7C3CFF00A17BFF00276E3FF8E51FF0A4BE1E7FD0BDFF0093B71FFC72803BFA2B80FF008525F0F3FE
85EFFC9DB8FF00E3947FC292F879FF0042F7FE4EDC7FF1CA00EFEB9FF1DFFC93DF12FF00D82AEBFF
004535607FC292F879FF0042F7FE4EDC7FF1CA3FE1497C3CFF00A17BFF00276E3FF8E5006FF813FE
49EF86BFEC156BFF00A296B03E29FF00CC95FF0063558FFECF5DBD858DBE99A75B5859C7E5DADAC4
B0C29B89DA8A005193C9C003AD711F14FF00E64AFF00B1AAC7FF0067A003C5BFF257BE1D7FDC4BFF
00442D77F5E61F1235BD3BC39F11BC03AAEAB71F67B183FB47CC97633EDDD0A28E1412792074AD0F
F85DBF0F3FE861FF00C92B8FFE37401DFD15C07FC2EDF879FF00430FFE495C7FF1BA3FE176FC3CFF
00A187FF0024AE3FF8DD0077F45701FF000BB7E1E7FD0C3FF92571FF00C6E8FF0085DBF0F3FE861F
FC92B8FF00E37401DFD15C07FC2EDF879FF430FF00E495C7FF001BA3FE176FC3CFFA187FF24AE3FF
008DD0077F5E313F84EF3C53F14BC7CB61E25D5743BA83FB3B6496331547DD073E62820B6029C7CC
31B89E7A5751FF000BB7E1E7FD0C3FF92571FF00C6EB87D2FC39E12F8BFE3BF1BDFBC93CF6A3EC1F
63BC819E274FDD10F85718E4C78F994FB63AD0063FC27F00FDAF57F12E9FFF00096DF43F61FB2FFA
4F86F52DB0DC6F576E5B6FCDB7A76C1DD5EA1FF0AB3FEA7CF1C7FE0E3FFB0AE5FC27FB3FE93A65E6
A6BE25F2359B56F2BEC322492C0EB80DE66E556C0C92B8F99BA678CE2BA8FF008525F0F3FE85EFFC
9DB8FF00E394007FC2ACFF00A9F3C71FF838FF00EC28FF008559FF0053E78E3FF071FF00D851FF00
0A4BE1E7FD0BDFF93B71FF00C728FF008525F0F3FE85EFFC9DB8FF00E394007FC2ACFF00A9F3C71F
F838FF00EC28FF008559FF0053E78E3FF071FF00D851FF000A4BE1E7FD0BDFF93B71FF00C728FF00
8525F0F3FE85EFFC9DB8FF00E394007FC2ACFF00A9F3C71FF838FF00EC28FF008559FF0053E78E3F
F071FF00D851FF000A4BE1E7FD0BDFF93B71FF00C728FF008525F0F3FE85EFFC9DB8FF00E394007F
C2ACFF00A9F3C71FF838FF00EC28FF008559FF0053E78E3FF071FF00D851FF000A4BE1E7FD0BDFF9
3B71FF00C728FF008525F0F3FE85EFFC9DB8FF00E394007FC2ACFF00A9F3C71FF838FF00EC28FF00
8559FF0053E78E3FF071FF00D851FF000A4BE1E7FD0BDFF93B71FF00C728FF008525F0F3FE85EFFC
9DB8FF00E394007FC2ACFF00A9F3C71FF838FF00EC28FF008559FF0053E78E3FF071FF00D851FF00
0A4BE1E7FD0BDFF93B71FF00C728FF008525F0F3FE85EFFC9DB8FF00E39401AFE13F03D9F84AF353
BC8754D5751BAD47CAFB44DA95C099CF96182FCC141E8D8E73D05647C2CFF99D7FEC6ABEFF00D928
FF008525F0F3FE85EFFC9DB8FF00E395D3F873C2DA3784B4E92C343B3FB25AC9299993CD7932E400
4E5C93D147E5401B1451450014514500145145001451450014514500145145001451450014514500
1451450014514500145145001451450014514500145145001451450073F69E24074CB8D46F619FC9
FED0B8B48A3B3B39AE1D44523C59611862726366CE001B9579232D634ED67EDDAE5ED946F04F6A96
96D7B6D7109C878E6F3140CE486E612C186010E063E5CB73EFE0DB8BFB136F72B625ADF50BD9922D
46D05E5A4C93CC6659045BD4891436C0C48C6650010C1AB43C2DE1EB8D0EF1A391B7DBDB69561A64
529014CC6012969028276A9F340009CE55B8C60B0075145145001451450014514500145145001451
45001451450014514500145145001451450015C07C53FF00992BFEC6AB1FFD9EBBFA2800A28A2800
A28A2800A28A2800A28A2800A28A2800A28A2800A28A28038B8FC6D247ABDBA5DDBC86CEE1F51445
B4B29AE25436D3C700CF9618E1899189DA00CA2F5196DCD3B59FB76B97B651BC13DAA5A5B5EDB5C4
2721E39BCC5033921B984B0618043818F972D8767E1AD6A0BB4BAB4BCB4B3B8B5B8D4941B9B53711
CF15D5C2DC065DB2A152B80A73DC3704618E8787B406D17549D62590585BE9963A6DB34ACA5E4107
9A4B9DBC6312A8E7072ADC01B4900E928A28A0028A28A0028A28A0028A28A0028A28A0028A28A002
8A28A0028A28A0028A28A0028A28A0028A28A0028A28A0028A28A0028A28A0028A28A0028A28A002
8A28A0028A28A0028A28A0028A28A0028A28A0028A28A0028A28A0028A28A0028A28A0028A28A002
8A28A0028A28A0028A28A0028A28A0028A28A0028A28A0028A28A0028A28A0028A28A0028A28A002
8A28A0028A28A0028A28A0028A28A0028A28A0028A28A0028A28A0028A28A0028A28A0028A28A002
8A28A0028A28A0028A28A0028A28A0028A28A0028A28A0028A28A0028A28A0028A28A0028A28A002
8A28A0028A28A0028A28A0028A28A0028A28A0028A28A0028A28A0028A28A0028A28A0028A28A002
8A28A0028A28A0028A28A0028A28A0028A28A0028A28A0028A28A0028A28A0028A28A0028A28A002
8A28A0028A28A0028A28A0028A28A0028A28A0028A28A0028A28A0028A28A0028A28A0028A28A002
8A28A0028A28A0028A28A0028A28A0028A28A0028A28A0028A28A0028A28A0028A28A0028A28A002
8A28A0028A28A0028A28A0028A28A0028A28A0028A28A0028A28A0028A28A0028A28A0028A28A002
8A28A0028A28A0028A28A0028A28A0028A28A0028A28A0028A28A0028A28A0028A28A0028A28A002
8A28A0028A28A0028A28A0028A28A0028A28A0028A28A0028A28A0028A28A00FFFD9}
}}}}\pgwsxn11920\pghsxn16840\marglsxn666\margrsxn133\margtsxn666\margbsxn213\par
d\li1746\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li1746\ri0\sl-213\slmult0 \fs18\c
f0\par\pard\li1746\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li1746\ri0\sl-213\slmul
t0 \fs18\cf0\par\pard\li1746\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li1746\ri0\sl
-306\slmult0 \fs26\cf0\f0\charscalex100 {El nmero de complejidad ciclomtica puede

asimilars}\fs26\cf0\f0\charscalex100 {e al nmero de}\par\pard\li1026\ri0\sl-360\s


lmult0 \fs26\cf0\f0\charscalex100 {lneas que constituiran el "esqueleto" de un dia
grama cuyo flujo se ha}\fs26\cf0\f0\charscalex100 { }\par\pard\li1026\ri0\sl-360
\slmult0 \fs26\cf0\f0\charscalex100 {simplificado al mximo. El diagrama ms simple,
que es aquel que posee un slo}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\c
harscalex100 {camino, presenta un v(G) = 1. Un posible lmite de complejidad estara
en torno a}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {v(G)
= 10, ms all de esta cifra, las tareas de prueba y mantenimiento resultan}\par\pa
rd\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {muy complicadas.}\fs26\
cf0\f0\charscalex100 { }\par\pard\li1746\ri0\sl-480\slmult0 \fs26\cf0\f0\charsca
lex100 {Si}{ }\fs26\cf0\f0\charscalex100\b {t}\b0 \fs26\cf0\f0\charscalex100 { r
epresenta el nmero de predicados, se puede demostrar que }\fs26\cf0\f0\charscalex
100 { }\par\pard\li4653\ri0\sl-480\slmult0 \fs26\cf0\f0\charscalex100 {e }\fs26\
cf0\f0\charscalex100 {-}\fs26\cf0\f0\charscalex100 { n = t }\fs26\cf0\f0\charsca
lex100 {-}\fs26\cf0\f0\charscalex100 { 1}\fs26\cf0\f0\charscalex100 { }\par\pard
\li4026\ri0\sl-480\slmult0 \fs26\cf0\f0\charscalex100 {v(G) = e }\fs26\cf0\f0\ch
arscalex100 {-}\fs26\cf0\f0\charscalex100 { n + 2 = t + 1}\fs26\cf0\f0\charscal
ex100 { }\par\pard\li1026\ri0\sl-480\slmult0 \fs26\cf0\f0\charscalex100 {dado qu
e t y DE son prcticamente la misma cosa:}\fs26\cf0\f0\charscalex100 { }\par\pard
\li4493\ri0\sl-480\slmult0 \fs26\cf0\f0\charscalex100 {v(G) }\fs26\cf0\f0\charsc
alex100 {= DE + 1}\fs26\cf0\f0\charscalex100 { }\par\pard\sect\sectd\sbknone\pgw
sxn11920\pghsxn16840\marglsxn666\margrsxn133\cols2\colno1\colw6266\colsr-0\colno
2\colw4853\pard\li2760\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li2760\ri0\sl-213\s
lmult0 \fs18\cf0\par\pard\li2760\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li2760\ri
0\sl-213\slmult0 \fs18\cf0\par\pard\li2760\ri0\sl-213\slmult0 \fs18\cf0\par\pard
\li2760\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li2760\ri0\sl-213\slmult0 \fs18\cf
0\par\pard\li2760\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li2760\ri0\sl-213\slmult
0 \fs18\cf0\par\pard\li2760\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li2760\ri0\sl213\slmult0 \fs18\cf0\par\pard\li2760\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li27
60\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li2760\ri0\sl-213\slmult0 \fs18\cf0\par
\pard\li2760\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li2760\ri0\sl-213\slmult0 \fs
18\cf0\par\pard\li2760\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li2760\ri0\sl-213\s
lmult0 \fs18\cf0\par\pard\li2760\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li2760\ri
0\sl-213\slmult0 \fs18\cf0\par\pard\li2760\ri0\sl-213\slmult0 \fs18\cf0\par\pard
\li2760\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li2760\ri0\sl-213\slmult0 \fs18\cf
0\par\pard\li2760\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li2760\ri0\sl-333\slmult
0 \fs24\cf0\f0\charscalex100 {e = 14}\fs24\cf0\f0\charscalex100 { }\par\pard\li2
760\ri0\sl-293\slmult0 \fs22\cf0\f0\charscalex100 {n = 12}\fs22\cf0\f0\charscale
x100 { }\par\pard\li2000\ri0\sl-306\slmult0 \fs24\cf0\f0\charscalex100 {v(G) = 1
4 }\fs24\cf0\f0\charscalex100 {-}\fs24\cf0\f0\charscalex100 { 12 + 2 = 4}\fs24\c
f0\f0\charscalex100 { }\par\column\pard\li693\ri0\sl-213\slmult0 \fs18\cf0\par\p
ard\li693\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li693\ri0\sl-213\slmult0 \fs18\c
f0\par\pard\li693\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li693\ri0\sl-213\slmult0
\fs18\cf0\par\pard\li693\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li693\ri0\sl-213
\slmult0 \fs18\cf0\par\pard\li693\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li693\ri
0\sl-213\slmult0 \fs18\cf0\par\pard\li693\ri0\sl-213\slmult0 \fs18\cf0\par\pard\
li693\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li693\ri0\sl-213\slmult0 \fs18\cf0\p
ar\pard\li693\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li693\ri0\sl-213\slmult0 \fs
18\cf0\par\pard\li693\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li693\ri0\sl-213\slm
ult0 \fs18\cf0\par\pard\li693\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li693\ri0\sl
-213\slmult0 \fs18\cf0\par\pard\li693\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li69
3\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li693\ri0\sl-213\slmult0 \fs18\cf0\par\p
ard\li693\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li693\ri0\sl-213\slmult0 \fs18\c
f0\par\pard\li693\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li693\ri0\sl-333\slmult0
\fs24\cf0\f0\charscalex100 {e = 10}\fs24\cf0\f0\charscalex100 { }\par\pard\li74
6\ri0\sl-293\slmult0 \fs24\cf0\f0\charscalex100 {n = 8}\fs24\cf0\f0\charscalex10
0 { }\par\pard\li0\ri0\sl-306\slmult0 \fs24\cf0\f0\charscalex100 {v(G) = 10 }\fs
24\cf0\f0\charscalex100 {-}\fs24\cf0\f0\charscalex100 { 8 + 2 = 4}\fs24\cf0\f0\c
harscalex100 { }\par\pard\sect\sectd\sbknone\pgwsxn11920\pghsxn16840\marglsxn666
\margrsxn133\pard\li2426\ri0\sl-480\slmult0 \fs24\cf0\f0\charscalex100\i {Fig. 2

.4: Nmeros ciclomticos de dos diagramas de flujo.}\i0 \fs24\cf0\f0\charscalex100\i


{ }\i0 \par\pard\li1746\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li1746\ri0\sl-386
\slmult0 \fs26\cf0\f0\charscalex100 {Por otra parte, tambin se puede demostrar qu
e la complejidad ciclomtica}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\char
scalex100 {de un programa formado por varios mdulos, es igual a la suma de las di
stintas}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {compleji
dades.}\fs26\cf0\f0\charscalex100 { }\par\pard\li1746\ri0\sl-480\slmult0 \fs26\c
f0\f0\charscalex100 {Si}{ }\fs26\cf0\f0\charscalex100\b {m}\b0 \fs26\cf0\f0\char
scalex100 { es el nmero de mdulos:}\fs26\cf0\f0\charscalex100 { }\par\pard\li4973\
ri0\sl-213\slmult0 \fs18\cf0\par\pard\li4973\ri0\sl-213\slmult0 \fs18\cf0\par\pa
rd\li4973\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li4973\ri0\sl-213\slmult0 \fs18\
cf0\par\pard\li4973\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li4973\ri0\sl-306\slmu
lt0 \fs24\cf0\f0\charscalex100 {2 }\fs24\cf0\f0\charscalex100 {-}\fs24\cf0\f0\ch
arscalex100 { }\fs24\cf0\f0\charscalex100 {13}\fs24\cf0\f0\charscalex100 { }\par
\pard\sect\sectd\sbknone\pgwsxn11920\pghsxn16840\marglsxn666\margrsxn133\pard\se
ct\sectd\sbkpage\pgwsxn11920\pghsxn16840\marglsxn666\margrsxn133\margtsxn666\mar
gbsxn213\cols3\colno1\colw5560\colsr-0\colno2\colw733\colsr-0\colno3\colw4826\pa
rd\li4386\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li4386\ri0\sl-213\slmult0 \fs18\
cf0\par\pard\li4386\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li4386\ri0\sl-213\slmu
lt0 \fs18\cf0\par\pard\li4386\ri0\sl-320\slmult0 \fs16\cf0\f0\charscalex100 {m}\
par\column\pard\li0\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li0\ri0\sl-213\slmult0
\fs18\cf0\par\pard\li0\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li0\ri0\sl-213\slm
ult0 \fs18\cf0\par\pard\li0\ri0\sl-320\slmult0 \fs16\cf0\f0\charscalex100 {m}\pa
r\column\pard\li0\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li0\ri0\sl-213\slmult0 \
fs18\cf0\par\pard\li0\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li0\ri0\sl-213\slmul
t0 \fs18\cf0\par\pard\li0\ri0\sl-320\slmult0 \fs16\cf0\f0\charscalex100 {m}\par\
pard\sect\sectd\sbknone\pgwsxn11920\pghsxn16840\marglsxn666\margrsxn133\cols3\co
lno1\colw3120\colsr-0\colno2\colw1493\colsr-0\colno3\colw6506\pard\li1026\ri0\sl
-213\slmult0 \fs18\cf0\par\pard\li1026\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li1
026\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li1026\ri0\sl-333\slmult0 \fs26\cf0\f0
\charscalex100 {y de aqu:}\fs26\cf0\f0\charscalex100 { }\par\column\pard\li693\ri
0\sl-400\slmult0 \fs28\cf0\f2\charscalex100 {) }\fs28\cf0\f2\charscalex100 {=}{
}\fs38\cf0\f2\charscalex100 {\uc1\u8721X}\par\pard\li0\ri0\sl-293\slmult0 \fs28\
cf0\f0\charscalex100 {v }\fs28\cf0\f0\charscalex100 {G}\fs16\cf0\f0\charscalex10
0 {prog}\par\pard\li1226\ri0\sl-173\slmult0 \fs16\cf0\f0\charscalex100 {i}\fs16\
cf0\f2\charscalex100 {=}\fs16\cf0\f0\charscalex100 {1}\par\column\pard\li133\ri0
\sl-440\slmult0 \fs28\cf0\f2\charscalex100 {( }\fs28\cf0\f2\charscalex100 {) }\f
s28\cf0\f2\charscalex100 {=}{ }\fs38\cf0\f2\charscalex100 {\uc1\u8721X}{ }\fs28\
cf0\f0\charscalex100 {e}\fs16\cf0\f0\charscalex100 {i}{ }\fs28\cf0\f2\charscalex
100 {\uc1\u8722X}{ }\fs38\cf0\f2\charscalex100 {\uc1\u8721X}{ }\fs28\cf0\f0\char
scalex100 {n}\fs16\cf0\f0\charscalex100 {i}{\super \fs28\up-1\cf0\f2\charscalex1
00 {+}}\fs28\cf0\f0\charscalex100 {2}\fs28\cf0\f0\charscalex100 {m}\par\pard\li0
\ri0\sl-293\slmult0 \fs28\cf0\f0\charscalex100 {v }\fs28\cf0\f0\charscalex100 {G
}\fs16\cf0\f0\charscalex100 {i}\par\pard\li906\ri0\sl-173\slmult0 \*\tx1653\fs16
\cf0\f0\charscalex100 {i}\fs16\cf0\f2\charscalex100 {=}\fs16\cf0\f0\charscalex10
0 {1}\tab \fs16\cf0\f0\charscalex100 {i}\fs16\cf0\f2\charscalex100 {=}\fs16\cf0\
f0\charscalex100 {1}\par\pard\li693\ri0\sl-346\slmult0 \fs16\cf0\f0\charscalex10
0 {m}\par\pard\sect\sectd\sbknone\pgwsxn11920\pghsxn16840\marglsxn666\margrsxn13
3\pard\li4040\ri0\sl-440\slmult0 \fs28\cf0\f0\charscalex100 {v }\fs28\cf0\f0\cha
rscalex100 {G}\fs16\cf0\f0\charscalex100 {prog}{\super \fs28\up0\cf0\f2\charscal
ex100 {) }\fs28\up0\cf0\f2\charscalex100 {=}}\fs38\cf0\f2\charscalex100 {\uc1\u8
721X}{ }\fs28\cf0\f0\charscalex100 {DE}\fs16\cf0\f0\charscalex100 {i}{\super \fs
28\up-1\cf0\f2\charscalex100 {+}}\fs28\cf0\f0\charscalex100 {m}\par\pard\li5280\
ri0\sl-160\slmult0 \fs16\cf0\f0\charscalex100 {i }\fs16\cf0\f0\charscalex100 {1}
\par\pard\li1746\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {La}{ }\fs26\cf0\
f0\charscalex100\b {entropa}\b0 \fs26\cf0\f0\charscalex100 { es otra medida relac
ionada con la complejida}\fs26\cf0\f0\charscalex100 {d y el anlisis de}\par\pard\
li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {diagramas de flujo. La exp
resin general es:}\fs26\cf0\f0\charscalex100 { }\par\pard\li4106\ri0\sl-280\slmul
t0 \fs16\cf0\f0\charscalex100 {n}\fs16\cf0\f0\charscalex100 {-}\fs16\cf0\f0\char

scalex100 {1}\par\pard\li3453\ri0\sl-440\slmult0 \fs28\cf0\f0\charscalex100 {Z}{


\sub \fs16\cf0\f0\charscalex100 {n}}\fs28\cf0\f2\charscalex100 {=}{ }\fs38\cf0\f
2\charscalex100 {\uc1\u8721X}{ }\fs28\cf0\f0\charscalex100 {log }\fs28\cf0\f0\ch
arscalex100 {p }\fs28\cf0\f0\charscalex100 {X }\fs28\cf0\f0\charscalex100 {q }\f
s28\cf0\f0\charscalex100 { }\fs28\cf0\f2\charscalex100 {+}{\sub \fs16\cf0\f0\cha
rscalex100 {j}}\fs28\cf0\f0\charscalex100 {) }\fs28\cf0\f0\charscalex100 {;}\fs2
6\cf0\f0\charscalex100 { }\fs26\cf0\f0\charscalex100 { X = 2}\fs26\cf0\f0\char
scalex100 { }\par\pard\li4093\ri0\sl-160\slmult0 \fs16\cf0\f0\charscalex100 {i }
\fs16\cf0\f0\charscalex100 {1}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\c
harscalex100 {donde q}\fs26\cf0\f0\charscalex100 {i}\fs26\cf0\f0\charscalex100 {
es la probabilidad de que el elemento de decisin i}\fs26\cf0\f0\charscalex100 {}\fs26\cf0\f0\charscalex100 {simo (smbolo}{ }\fs26\cf0\f0\charscalex100\b {IF}\b0
\fs26\cf0\f0\charscalex100\b {-}\b0 \par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf
0\f0\charscalex100\b {THEN}\b0 \fs26\cf0\f0\charscalex100 {) est en serie con el
anterior. Por su parte p}\fs26\cf0\f0\charscalex100 {i}\fs26\cf0\f0\charscalex10
0 { es igual a 1 menos la cantidad}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0
\f0\charscalex100 {anterior. }\fs26\cf0\f0\charscalex100 { }\par\pard\li1746\ri0
\sl-480\slmult0 \*\tx4386\fs26\cf0\f0\charscalex100 {Z}\fs26\cf0\f0\charscalex10
0 {n}\fs26\cf0\f0\charscalex100 { est relacionada con}\tab \fs26\cf0\f0\charscale
x100\b {MIN}\b0 \fs26\cf0\f0\charscalex100 {, el nmero de regiones delimitadas po
r un}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {diagrama de
flujo. En una sola lnea de flujo MIN vale 1, con un bucle o una}\par\pard\li1026
\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {decisin es 2, con varias decision
es anidadas su clculo se complica y la entropa}\par\pard\li1026\ri0\sl-360\slmult0
\fs26\cf0\f0\charscalex100 {da una }\fs26\cf0\f0\charscalex100 {expresin ms exact
a que el clculo manual.}\fs26\cf0\f0\charscalex100 { }\par\pard\li1746\ri0\sl-480
\slmult0 \fs26\cf0\f0\charscalex100 {La entropa ha querido ser la mtrica de unin en
tre complejidad y}\fs26\cf0\f0\charscalex100 { }\par\pard\li1026\ri0\sl-360\slmu
lt0 \fs26\cf0\f0\charscalex100 {productividad. Actualmente varias herramientas d
e medida del software la emplean}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f
0\charscalex100 {para valorar la complejidad frente a mtricas ms clsicas como el nme
ro de}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {complejida
d ciclomtica.}\fs26\cf0\f0\charscalex100 { }\par\pard\li1746\ri0\sl-480\slmult0 \
*\tx8586\fs26\cf0\f0\charscalex100 {Otras mtricas referidas a la estructura de un
programa son el}\tab \fs26\cf0\f0\charscalex100\b {nmero}\b0 \par\pard\li1026\ri
0\sl-360\slmult0 \fs26\cf0\f0\charscalex100\b {mnimo de caminos}\b0 \fs26\cf0\f0\
charscalex100 { N}\fs26\cf0\f0\charscalex100 {p}\fs26\cf0\f0\charscalex100 { y l
a}{ }\fs26\cf0\f0\charscalex100\b {accesibilidad del cdigo R}\b0 \fs26\cf0\f0\cha
rscalex100 {. Obviamente, el nmero}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\
f0\charscalex100 {de posibles caminos en un cdigo que contenga bucles es infinito
, si}\fs26\cf0\f0\charscalex100 {n embargo,}\par\pard\li1026\ri0\sl-360\slmult0
\fs26\cf0\f0\charscalex100 {N}\fs26\cf0\f0\charscalex100 {p}\fs26\cf0\f0\charsca
lex100 { no toma en consideracin aquellos caminos que se repiten ms de una vez. Po
r}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {su parte, la a
ccesibilidad del cdigo se obtiene dividiendo el nmero total de}\par\pard\li1026\ri
0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {caminos entre el nmero de nodos. En
relacin a otras unidades del software,}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\
cf0\f0\charscalex100 {siempre se verifica que N}\fs26\cf0\f0\charscalex100 {p}{
}\fs26\cf0\f2\charscalex100 {\uc1\u8805X}\fs26\cf0\f0\charscalex100 { v(G).}\fs2
6\cf0\f0\charscalex100 { }\par\pard\li1746\ri0\sl-480\slmult0 \fs26\cf0\f0\chars
calex100 {El}{ }\fs26\cf0\f0\charscalex100\b {nivel de anidamiento}\b0 \fs26\cf0
\f0\charscalex100 { (NL) es una mtrica de complejidad que afecta a}\par\pard\li10
26\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {lenguajes de alto nivel. Cada
instruccin tiene un nivel de anidamiento}\fs26\cf0\f0\charscalex100 { }\par\pard\
li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {determinado, y el nivel me
dio que define un programa (}\fs24\cf0\f1\charscalex100\ul {N }\ul0 \fs24\cf0\f1
\charscalex100\ul {L}\ul0 { }\fs26\cf0\f0\charscalex100 {) se obtiene aplicando}
\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {recursivamente e
l siguiente procedimiento:}\fs26\cf0\f0\charscalex100 { }\par\pard\sect\sectd\sb
knone\pgwsxn11920\pghsxn16840\marglsxn666\margrsxn133\cols2\colno1\colw1746\cols

r-0\colno2\colw9373\pard\li1173\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li1173\ri0
\sl-266\slmult0 \fs20\cf0\f2\charscalex100 {\uc1\u61623X}\par\column\pard\li0\ri
0\sl-480\slmult0 \fs26\cf0\f0\charscalex100 {La primera instruccin ejecutable rec
ibe el nivel 1.}\fs26\cf0\f0\charscalex100 { }\par\pard\sect\sectd\sbknone\pgwsx
n11920\pghsxn16840\marglsxn666\margrsxn133\cols3\colno1\colw1746\colsr-0\colno2\
colw2680\colsr-0\colno3\colw6693\pard\li1173\ri0\sl-213\slmult0 \fs18\cf0\par\pa
rd\li1173\ri0\sl-266\slmult0 \fs20\cf0\f2\charscalex100 {\uc1\u61623X}\par\colum
n\pard\li0\ri0\sl-480\slmult0 \*\tx2040\fs26\cf0\f0\charscalex100 {Si la instruc
cin}\fs26\cf0\f0\charscalex100 { }\tab \fs26\cf0\f0\charscalex100\b {a}\b0 \par\c
olumn\pard\li0\ri0\sl-480\slmult0 \*\tx2146\*\tx4240\fs26\cf0\f0\charscalex100 {
est en el nivel}\fs26\cf0\f0\charscalex100 { }{ }\fs26\cf0\f0\charscalex100\b {n}
\b0 \tab \fs26\cf0\f0\charscalex100 {y la instruccin}\fs26\cf0\f0\charscalex100 {
}{ }\fs26\cf0\f0\charscalex100\b {b}\b0 \tab \fs26\cf0\f0\charscalex100 {la sig
ue}\fs26\cf0\f0\charscalex100 { }\par\pard\sect\sectd\sbknone\pgwsxn11920\pghsxn
16840\marglsxn666\margrsxn133\pard\li1746\ri0\sl-360\slmult0 \fs26\cf0\f0\charsc
alex100 {secuencialmente, su nivel tambin ser}{ }\fs26\cf0\f0\charscalex100\b {n}\
b0 \fs26\cf0\f0\charscalex100 {.}\fs26\cf0\f0\charscalex100 { }\par\pard\li4973\
ri0\sl-213\slmult0 \fs18\cf0\par\pard\li4973\ri0\sl-213\slmult0 \fs18\cf0\par\pa
rd\li4973\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li4973\ri0\sl-293\slmult0 \fs24\
cf0\f0\charscalex100 {2 }\fs24\cf0\f0\charscalex100 {-}\fs24\cf0\f0\charscalex10
0 { }\fs24\cf0\f0\charscalex100 {14}\fs24\cf0\f0\charscalex100 { }\par\pard\sect
\sectd\sbknone\pgwsxn11920\pghsxn16840\marglsxn666\margrsxn133\pard\sect\sectd\s
bkpage\pgwsxn11920\pghsxn16840\marglsxn666\margrsxn133\margtsxn666\margbsxn213\c
ols2\colno1\colw1746\colsr-0\colno2\colw9373\pard\li1173\ri0\sl-213\slmult0 \fs1
8\cf0\par\pard\li1173\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li1173\ri0\sl-213\sl
mult0 \fs18\cf0\par\pard\li1173\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li1173\ri0
\sl-213\slmult0 \fs18\cf0\par\pard\li1173\ri0\sl-306\slmult0 \fs20\cf0\f2\charsc
alex100 {\uc1\u61623X}\par\column\pard\li0\ri0\sl-213\slmult0 \fs18\cf0\par\pard
\li0\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li0\ri0\sl-213\slmult0 \fs18\cf0\par\
pard\li0\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li0\ri0\sl-213\slmult0 \fs18\cf0\
par\pard\li0\ri0\sl-306\slmult0 \*\tx1813\*\tx2133\*\tx3720\fs26\cf0\f0\charscal
ex100 {Si la instruccin}\tab \fs26\cf0\f0\charscalex100\b {a}\b0 \tab \fs26\cf0\f
0\charscalex100 {est en el nivel}\tab \fs26\cf0\f0\charscalex100\b {n}\b0 \fs26\c
f0\f0\charscalex100 { y la instruccin}{ }\fs26\cf0\f0\charscalex100\b {b}\b0 \fs2
6\cf0\f0\charscalex100 { est en un bucle o}\par\pard\li0\ri0\sl-360\slmult0 \fs26
\cf0\f0\charscalex100 {pertenece a una condicin definida por}{ }\fs26\cf0\f0\char
scalex100\b {a}\b0 \fs26\cf0\f0\charscalex100 {, el nivel de}{ }\fs26\cf0\f0\cha
rscalex100\b {b}\b0 \fs26\cf0\f0\charscalex100 { ser}{ }\fs26\cf0\f0\charscalex10
0\b {n+1}\b0 \fs26\cf0\f0\charscalex100 {.}\fs26\cf0\f0\charscalex100 { }\par\pa
rd\li0\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li0\ri0\sl-213\slmult0 \fs18\cf0\pa
r\pard\li0\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li0\ri0\sl-320\slmult0 \fs26\cf
0\f0\charscalex100 {Una mtrica}\fs26\cf0\f0\charscalex100 { }\fs26\cf0\f0\charsc
alex100 {ms de complejidad relacionada con la construccin del}\par\pard\sect\sectd
\sbknone\pgwsxn11920\pghsxn16840\marglsxn666\margrsxn133\pard\li1026\ri0\sl-360\
slmult0 \fs26\cf0\f0\charscalex100 {software es la}{ }\fs26\cf0\f0\charscalex100
\b {cuenta de transferencias incondicionales del control.}\b0 \fs26\cf0\f0\chars
calex100 { Dado que}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex1
00 {el seguimiento de las acciones de un programa a la hora de la prueba y el}\p
ar\pard\li1026\ri0\sl-360\slmult0 \fs24\cf0\f0\charscalex100 {mantenimiento debe
hacerse manualmente, y que resulta difcil averiguar que es lo}\par\pard\li1026\r
i0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {que hace un cdigo en el que abundan
los saltos (representados por instrucciones}\par\pard\li1026\ri0\sl-360\slmult0
\fs26\cf0\f0\charscalex100 {GOTO), el nmero absoluto de stos es una medida de com
plejidad. El nmero}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100
{medio de saltos por mdulo, o de instrucciones entre dos saltos sir}\fs26\cf0\f0
\charscalex100 {ve como}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charsca
lex100 {referencias a la hora de comparar cdigo de orgenes diversos.}\fs26\cf0\f0\
charscalex100 { }\par\pard\li1026\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li1026\r
i0\sl-213\slmult0 \fs18\cf0\par\pard\li1026\ri0\sl-413\slmult0 \fs26\cf0\f0\char
scalex100\b {2.1.3.}\b0 \fs26\cf0\f0\charscalex100\b {-}\b0 \fs26\cf0\f0\charsca

lex100\b { Mtricas compuestas.}\b0 \fs26\cf0\f0\charscalex100\b { }\b0 \par\pard\


li1746\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li1746\ri0\sl-386\slmult0 \fs26\cf0
\f0\charscalex100 {Las medidas descritas hasta ahora miden una nica magnitud para
darle}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {sentido c
omo una caracterstica del software. Sin embargo, ocurre con frecuencia}\par\pard\
li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {que para describir una det
erminada cualidad del software es preciso componer}\par\pard\li1026\ri0\sl-360\s
lmult0 \fs26\cf0\f0\charscalex100 {(construir un par) de medidas simples.}\fs26\
cf0\f0\charscalex100 { }\par\pard\li1746\ri0\sl-480\slmult0 \fs26\cf0\f0\charsca
lex100 {Una medida alternativa a la complejidad ciclomtica es la formada por el}\
par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {par (CYC}\fs26\cf
0\f0\charscalex100 {-}\fs26\cf0\f0\charscalex100 {mid, CYD}\fs26\cf0\f0\charscal
ex100 {-}\fs26\cf0\f0\charscalex100 {max) donde:}\fs26\cf0\f0\charscalex100 { }\
par\pard\sect\sectd\sbknone\pgwsxn11920\pghsxn16840\marglsxn666\margrsxn133\cols
3\colno1\colw1746\colsr-0\colno2\colw1853\colsr-0\colno3\colw7520\pard\li1173\ri
0\sl-213\slmult0 \fs18\cf0\par\pard\li1173\ri0\sl-266\slmult0 \fs20\cf0\f2\chars
calex100 {\uc1\u61623X}\par\column\pard\li0\ri0\sl-480\slmult0 \fs26\cf0\f0\char
scalex100\b {C}\b0 \fs26\cf0\f0\charscalex100\b {YC}\b0 \fs26\cf0\f0\charscalex1
00\b {-}\b0 \fs26\cf0\f0\charscalex100\b {min}\b0 \par\column\pard\li0\ri0\sl-48
0\slmult0 \fs26\cf0\f0\charscalex100 {es el nmero total de instrucciones condicio
nales y bucles}\par\pard\sect\sectd\sbknone\pgwsxn11920\pghsxn16840\marglsxn666\
margrsxn133\cols2\colno1\colw1746\colsr-0\colno2\colw9373\pard\li1173\ri0\sl-213
\slmult0 \fs18\cf0\par\pard\li1173\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li1173\
ri0\sl-413\slmult0 \fs20\cf0\f2\charscalex100 {\uc1\u61623X}\par\column\pard\li0
\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {(incluyendo instrucciones CASE).
}\fs26\cf0\f0\charscalex100 { }\par\pard\li0\ri0\sl-480\slmult0 \*\tx1480\fs26\c
f0\f0\charscalex100\b {CYC}\b0 \fs26\cf0\f0\charscalex100\b {-}\b0 \fs26\cf0\f0\
charscalex100\b {mid}\b0 \tab \fs26\cf0\f0\charscalex100 {es igual a CYC}\fs26\c
f0\f0\charscalex100 {-}\fs26\cf0\f0\charscalex100 {min ms un nmero igual a 2 menos
el nmero}\par\pard\li0\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {de selecci
ones de una instruccin CASE.}\fs26\cf0\f0\charscalex100 { }\par\pard\sect\sectd\s
bknone\pgwsxn11920\pghsxn16840\marglsxn666\margrsxn133\cols3\colno1\colw1746\col
sr-0\colno2\colw2173\colsr-0\colno3\colw7200\pard\li1173\ri0\sl-213\slmult0 \fs1
8\cf0\par\pard\li1173\ri0\sl-266\slmult0 \fs20\cf0\f2\charscalex100 {\uc1\u61623
X}\par\column\pard\li0\ri0\sl-480\slmult0 \fs26\cf0\f0\charscalex100\b {CYC}\b0
\fs26\cf0\f0\charscalex100\b {-}\b0 \fs26\cf0\f0\charscalex100\b {max}\b0 \par\c
olumn\pard\li0\ri0\sl-480\slmult0 \fs26\cf0\f0\charscalex100 {es igual a CYC}\fs
26\cf0\f0\charscalex100 {-}\fs26\cf0\f0\charscalex100 {mid ms los operadores lgico
s de una}\fs26\cf0\f0\charscalex100 { }\par\pard\sect\sectd\sbknone\pgwsxn11920\
pghsxn16840\marglsxn666\margrsxn133\pard\li1746\ri0\sl-360\slmult0 \fs26\cf0\f0\
charscalex100 {instruccin condicional (es equivalente a V(G).}\fs26\cf0\f0\charsc
alex100 { }\par\pard\li1746\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li1746\ri0\sl213\slmult0 \fs18\cf0\par\pard\li1746\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li17
46\ri0\sl-320\slmult0 \fs26\cf0\f0\charscalex100 {Las medidas compuestas ms conoc
idas son las de la Ciencia del Software}\par\pard\li1026\ri0\sl-360\slmult0 \fs2
4\cf0\f0\charscalex100 {de Halstead. Este conjunto de mtricas dispone de}\fs24\cf
0\f0\charscalex100 { las medidas simples (N}\fs24\cf0\f0\charscalex100 {1}\fs24\
cf0\f0\charscalex100 {, N}\fs24\cf0\f0\charscalex100 {2}\fs24\cf0\f0\charscalex1
00 {,}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {n}\fs26\cf
0\f0\charscalex100 {1}\fs26\cf0\f0\charscalex100 { y n}\fs26\cf0\f0\charscalex10
0 {2}\fs26\cf0\f0\charscalex100 { ) ya mostradas y de otras compuestas basadas e
n stas.}\fs26\cf0\f0\charscalex100 { }\par\pard\li1746\ri0\sl-480\slmult0 \fs26\c
f0\f0\charscalex100 {La}{ }\fs26\cf0\f0\charscalex100\b {longitud estimada de pr
ograma}\b0 \fs26\cf0\f0\charscalex100 { (^N) depende nicamente del nmero}\par\pard
\li1026\ri0\sl-360\slmult0 \fs24\cf0\f0\charscalex100 {de operadores y operandos
distintos ( N = N}\fs24\cf0\f0\charscalex100 {1}\fs24\cf0\f0\charscalex100 { +
N}\fs24\cf0\f0\charscalex100 {2}\fs24\cf0\f0\charscalex100 { ). El valor calcula
do para este}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {val
or proviene de la siguiente expresin:}\fs26\cf0\f0\charscalex100 { }\par\pard\li4
973\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li4973\ri0\sl-213\slmult0 \fs18\cf0\pa

r\pard\li4973\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li4973\ri0\sl-213\slmult0 \f
s18\cf0\par\pard\li4973\ri0\sl-453\slmult0 \fs24\cf0\f0\charscalex100 {2 }\fs24\
cf0\f0\charscalex100 {-}\fs24\cf0\f0\charscalex100 { }\fs24\cf0\f0\charscalex100
{15}\fs24\cf0\f0\charscalex100 { }\par\pard\sect\sectd\sbknone\pgwsxn11920\pghs
xn16840\marglsxn666\margrsxn133\pard\sect\sectd\sbkpage\pgwsxn11920\pghsxn16840\
marglsxn666\margrsxn133\margtsxn666\margbsxn213\pard\li3600\ri0\sl-213\slmult0 \
fs18\cf0\par\pard\li3600\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li3600\ri0\sl-213
\slmult0 \fs18\cf0\par\pard\li3600\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li3600\
ri0\sl-213\slmult0 \fs18\cf0\par\pard\li3600\ri0\sl-306\slmult0 \fs26\cf0\f0\cha
rscalex100 {^N = n}\fs26\cf0\f0\charscalex100 {1}\fs26\cf0\f0\charscalex100 { .
log}\fs26\cf0\f0\charscalex100 {2}\fs26\cf0\f0\charscalex100 { n}\fs26\cf0\f0\ch
arscalex100 {1}\fs26\cf0\f0\charscalex100 { + n}\fs26\cf0\f0\charscalex100 {2}\f
s26\cf0\f0\charscalex100 { . log}\fs26\cf0\f0\charscalex100 {2}\fs26\cf0\f0\char
scalex100 { n}\fs26\cf0\f0\charscalex100 {2}\fs26\cf0\f0\charscalex100 { }\par\p
ard\li1026\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li1026\ri0\sl-386\slmult0 \fs26
\cf0\f0\charscalex100 {el}{ }\fs26\cf0\f0\charscalex100\b {volumen de un program
a}\b0 \fs26\cf0\f0\charscalex100 { es definido por Halstead como:}\fs26\cf0\f0\c
harscalex100 { }\par\pard\li4506\ri0\sl-480\slmult0 \fs26\cf0\f0\charscalex100 {
V = N . log}\fs26\cf0\f0\charscalex100 {2}\fs26\cf0\f0\charscalex100 { n}\fs26\c
f0\f0\charscalex100 { }\par\pard\li1026\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li
1026\ri0\sl-386\slmult0 \fs26\cf0\f0\charscalex100 {que se puede interpretar com
o el nmero de "comparaciones mentales" necesarias}\par\pard\li1026\ri0\sl-360\slm
ult0 \fs24\cf0\f0\charscalex100 {para escribir un programa de longitud}\fs24\cf0
\f0\charscalex100 { }\fs24\cf0\f0\charscalex100\b {N}\b0 \fs24\cf0\f0\charscalex
100 {. Esta interpretacin sugiere que la mente}\par\pard\li1026\ri0\sl-360\slmult
0 \fs26\cf0\f0\charscalex100 {humana sigue un proceso de bsqueda binaria para sel
eccionar un token de un}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charsca
lex100 {vocabulario de tamao}{ }\fs26\cf0\f0\charscalex100\b {n}\b0 \fs26\cf0\f0\
charscalex100 {.}\fs26\cf0\f0\charscalex100 { }\par\pard\li1746\ri0\sl-480\slmul
t0 \fs26\cf0\f0\charscalex100 {Un algoritmo puede ser interpretado por varios pr
ogramas equivalentes.}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscale
x100 {Entre otros programas, uno tiene el volumen mnimo, tambin llamado}{ }\fs26\c
f0\f0\charscalex100\b {volumen}\b0 \par\pard\li1026\ri0\sl-360\slmult0 \fs24\cf0
\f0\charscalex100\b {potencial}\b0 { }\fs24\cf0\f0\charscalex100 { (V*). Halstea
d indica que la implementacin mnima de un algoritmo es}\par\pard\li1026\ri0\sl-360
\slmult0 \fs26\cf0\f0\charscalex100 {una llamada a un procedimiento desarrollado
previamente. La implementacin de}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f
0\charscalex100 {este algoritmo requerir tan slo invocar el procedimiento }\fs26\c
f0\f0\charscalex100 {y enviar y recibir los}\par\pard\li1026\ri0\sl-360\slmult0
\fs26\cf0\f0\charscalex100 {parmetros de entrada y salida. El}{ }\fs26\cf0\f0\cha
rscalex100\b {volumen potencial}\b0 { }\fs26\cf0\f0\charscalex100 { se calcula c
omo:}\fs26\cf0\f0\charscalex100 { }\par\pard\li3720\ri0\sl-480\slmult0 \fs26\cf0
\f0\charscalex100 {V* = (2+n}\fs26\cf0\f0\charscalex100 {2}\fs26\cf0\f0\charscal
ex100 {* ) log}\fs26\cf0\f0\charscalex100 {2}\fs26\cf0\f0\charscalex100 { (2 + n
}\fs26\cf0\f0\charscalex100 {2}\fs26\cf0\f0\charscalex100 {*)}\fs26\cf0\f0\chars
calex100 { }\par\pard\li1746\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li1746\ri0\sl
-386\slmult0 \fs26\cf0\f0\charscalex100 {El primer trmino entre parntesis, 2, repr
esenta los dos elementos}\fs26\cf0\f0\charscalex100 { }\par\pard\li1026\ri0\sl-3
60\slmult0 \fs26\cf0\f0\charscalex100 {mnimos de la llamada al procedimiento (el
nombre y el signo que le separa de}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf
0\f0\charscalex100 {sus parmetros).}\fs26\cf0\f0\charscalex100 { }\par\pard\li174
6\ri0\sl-480\slmult0 \*\tx4480\fs26\cf0\f0\charscalex100 {Un programa de volumen
}\tab \fs26\cf0\f0\charscalex100\b {V}\b0 \fs26\cf0\f0\charscalex100 { est implem
entado a un nivel del programa}{ }\fs26\cf0\f0\charscalex100\b {L}\b0 \par\pard\
li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {que se expresa como:}\fs26
\cf0\f0\charscalex100 { }\par\pard\li4693\ri0\sl-480\slmult0 \fs26\cf0\f0\charsc
alex100 {L = V* / V}\fs26\cf0\f0\charscalex100 { }\par\pard\li1746\ri0\sl-480\sl
mult0 \fs26\cf0\f0\charscalex100 {Al inverso del nivel de programa, Halstead le
denomina}{ }\fs26\cf0\f0\charscalex100\b {dificultad D}\b0 \fs26\cf0\f0\charscal
ex100 {. Si el}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {v

olumen V de una implementacin aumenta, e}\fs26\cf0\f0\charscalex100 {l nivel de p


rograma decrece y la}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex
100 {dificultad se incrementa.}\fs26\cf0\f0\charscalex100 { }\par\pard\li1746\ri
0\sl-480\slmult0 \fs26\cf0\f0\charscalex100 {Una frmula alternativa al clculo de n
ivel de programa se obtiene de:}\fs26\cf0\f0\charscalex100 { }\par\pard\li4253\r
i0\sl-480\slmult0 \fs26\cf0\f0\charscalex100 {L = 2 / n}\fs26\cf0\f0\charscalex1
00 {1 }\fs26\cf0\f0\charscalex100 {. n}\fs26\cf0\f0\charscalex100 {2}\fs26\cf0\f
0\charscalex100 { / N}\fs26\cf0\f0\charscalex100 {2}\fs26\cf0\f0\charscalex100 {
}\par\pard\li1746\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li1746\ri0\sl-386\slmul
t0 \fs26\cf0\f0\charscalex100 {Una hiptesis de la Ciencia del Software dice que e
l esfuerzo preciso para}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charsca
lex100 {implementar un programa se incrementa cuando el tamao del programa crece.
El}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {esfuerzo segn
Halstead se obtiene de:}\fs26\cf0\f0\charscalex100 { }\par\pard\li3066\ri0\sl-4
80\slmult0 \fs26\cf0\f0\charscalex100 {E = V / L = D . V = n}\fs26\cf0\f0\charsc
alex100 {1}\fs26\cf0\f0\charscalex100 { N}\fs26\cf0\f0\charscalex100 {2}\fs26\cf
0\f0\charscalex100 { N (log}\fs26\cf0\f0\charscalex100 {2}\fs26\cf0\f0\charscale
x100 { n) /2 n}\fs26\cf0\f0\charscalex100 {2}\fs26\cf0\f0\charscalex100 { }\par\
pard\li4973\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li4973\ri0\sl-213\slmult0 \fs1
8\cf0\par\pard\li4973\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li4973\ri0\sl-213\sl
mult0 \fs18\cf0\par\pard\li4973\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li4973\ri0
\sl-213\slmult0 \fs18\cf0\par\pard\li4973\ri0\sl-213\slmult0 \fs18\cf0\par\pard\
li4973\ri0\sl-293\slmult0 \fs24\cf0\f0\charscalex100 {2 }\fs24\cf0\f0\charscalex
100 {-}\fs24\cf0\f0\charscalex100 { }\fs24\cf0\f0\charscalex100 {16}\fs24\cf0\f0
\charscalex100 { }\par\pard\sect\sectd\sbkpage\pgwsxn11920\pghsxn16840\marglsxn6
66\margrsxn133\margtsxn666\margbsxn213\pard\li1746\ri0\sl-213\slmult0 \fs18\cf0\
par\pard\li1746\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li1746\ri0\sl-213\slmult0
\fs18\cf0\par\pard\li1746\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li1746\ri0\sl-21
3\slmult0 \fs18\cf0\par\pard\li1746\ri0\sl-306\slmult0 \*\tx7520\fs26\cf0\f0\cha
rscalex100 {La unidad empleada para el esfuerzo es el nmero de}\tab \fs26\cf0\f0\
charscalex100\b {discriminaciones}\b0 \par\pard\li1026\ri0\sl-360\slmult0 \fs26\
cf0\f0\charscalex100\b {mentales elementales}\b0 \fs26\cf0\f0\charscalex100 {. T
omando como base que la me}\fs26\cf0\f0\charscalex100 {nte humana es capaz de}\p
ar\pard\sect\sectd\sbknone\pgwsxn11920\pghsxn16840\marglsxn666\margrsxn133\cols2
\colno1\colw5293\colsr-0\colno2\colw5826\pard\li1026\ri0\sl-360\slmult0 \fs26\cf
0\f0\charscalex100 {realizar un nmero mximo}\fs26\cf0\f0\charscalex100 { }{ }\fs26
\cf0\f2\charscalex100 {\uc1\u946X}\par\column\pard\li0\ri0\sl-360\slmult0 \fs26\
cf0\f0\charscalex100 {de discriminaciones por segundo (5 a 20,}\fs26\cf0\f0\char
scalex100 { }\par\pard\sect\sectd\sbknone\pgwsxn11920\pghsxn16840\marglsxn666\ma
rgrsxn133\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {normalmente
18), se puede obtener el tiempo de programacin total como:}\fs26\cf0\f0\charscal
ex100 { }\par\pard\li4773\ri0\sl-480\slmult0 \fs26\cf0\f0\charscalex100 {T = E /
}{ }\fs26\cf0\f2\charscalex100 {\uc1\u946X}\par\pard\li1746\ri0\sl-213\slmult0 \
fs18\cf0\par\pard\li1746\ri0\sl-386\slmult0 \*\tx2813\*\tx4226\*\tx5506\*\tx6053
\*\tx7840\*\tx9160\fs26\cf0\f0\charscalex100 {Existen}\tab \fs26\cf0\f0\charscal
ex100 {numerosos}\tab \fs26\cf0\f0\charscalex100 {lenguajes}\tab \fs26\cf0\f0\ch
arscalex100 {de}\tab \fs26\cf0\f0\charscalex100 {programacin.}\tab \fs26\cf0\f0\c
harscalex100 {Comparar}\tab \fs26\cf0\f0\charscalex100 {las}\fs26\cf0\f0\charsca
lex100 { }\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {caract
ersticas de unos y otros es una tarea compleja. Con objeto de obtener una}\par\p
ard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {referencia vlida entre
lenguajes, Halstead propone como resultado de un estudio}\par\pard\li1026\ri0\sl
-360\slmult0 \fs26\cf0\f0\charscalex100 {sobre una serie de lenguajes, la mtrica}
{ }\fs26\cf0\f0\charscalex100\b {nivel de lenguaje}\b0 { }\fs26\cf0\f2\charscale
x100 {\uc1\u915X}\fs26\cf0\f0\charscalex100 {:}\fs26\cf0\f0\charscalex100 { }\pa
r\pard\li4293\ri0\sl-480\slmult0 \fs26\cf0\f2\charscalex100 {\uc1\u915X}\fs26\cf
0\f0\charscalex100 { = L . V* = L V}\fs26\cf0\f0\charscalex100 { }\par\pard\li17
46\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li1746\ri0\sl-386\slmult0 \fs26\cf0\f0\
charscalex100 {Algunos valores obtenidos por este mtodo son:}\fs26\cf0\f0\charsca
lex100 { }\par\pard\sect\sectd\sbknone\pgwsxn11920\pghsxn16840\marglsxn666\margr

sxn133\cols2\colno1\colw3906\colsr-0\colno2\colw7213\pard\li2173\ri0\sl-213\slmu
lt0 \fs18\cf0\par\pard\li2173\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li2173\ri0\s
l-293\slmult0 \fs26\cf0\f0\charscalex100 {Pascal}\fs26\cf0\f0\charscalex100 { }\
par\pard\li2173\ri0\sl-306\slmult0 \fs26\cf0\f0\charscalex100 {Algol }\fs26\cf0\
f0\charscalex100 { }\par\pard\li2173\ri0\sl-293\slmult0 \fs26\cf0\f0\charscalex1
00 {Fortran }\fs26\cf0\f0\charscalex100 { }\par\column\pard\li0\ri0\sl-213\slm
ult0 \fs18\cf0\par\pard\li0\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li0\ri0\sl-293
\slmult0 \fs26\cf0\f0\charscalex100 {: 1.53}\fs26\cf0\f0\charscalex100 { }\par\p
ard\li0\ri0\sl-306\slmult0 \fs26\cf0\f0\charscalex100 {: 1.21}\fs26\cf0\f0\chars
calex100 { }\par\pard\li0\ri0\sl-293\slmult0 \fs26\cf0\f0\charscalex100 {: 1.14}
\fs26\cf0\f0\charscalex100 { }\par\pard\sect\sectd\sbknone\pgwsxn11920\pghsxn168
40\marglsxn666\margrsxn133\pard\li2173\ri0\sl-306\slmult0 \*\tx3906\fs26\cf0\f0\
charscalex100 {Ensamblador }\fs26\cf0\f0\charscalex100 { }\tab \fs26\cf0\f0\char
scalex100 {: 0.88}\fs26\cf0\f0\charscalex100 { }\par\pard\li1746\ri0\sl-213\slmu
lt0 \fs18\cf0\par\pard\li1746\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li1746\ri0\s
l-413\slmult0 \fs26\cf0\f0\charscalex100 {Sin embargo, se detecta, segn los estud
ios, variaciones en torno a 1, lo}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f
0\charscalex100 {que da una idea de la fluctuacin de estas "constantes".}\fs26\cf
0\f0\charscalex100 { }\par\pard\li1026\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li1
026\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li1026\ri0\sl-413\slmult0 \fs26\cf0\f0
\charscalex100\b {2.1.4.}\b0 \fs26\cf0\f0\charscalex100\b {-}\b0 \fs26\cf0\f0\ch
arscalex100\b { Mtricas de esfuerzo.}\b0 \fs26\cf0\f0\charscalex100\b { }\b0 \par
\pard\li1746\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li1746\ri0\sl-386\slmult0 \fs
26\cf0\f0\charscalex100 {El desarrollo del software es una actividad humana que
depende en gran}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {
medida del trabajo personal. A la hora de valorar un sistema software debe}\par\
pard\li1026\ri0\sl-360\slmult0 \fs24\cf0\f0\charscalex100 {considera}\fs24\cf0\f
0\charscalex100 {rse la cantidad de esfuerzo que debe invertir el equipo de desa
rrollo para}\par\pard\li1026\ri0\sl-360\slmult0 \fs24\cf0\f0\charscalex100 {culm
inar su construccin. El coste del desarrollo es prcticamente el del trabajo}\par\p
ard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {empleado, pues la part
e asignada a materiales es de tan poca entidad que resulta}\par\pard\li1026\ri0\
sl-360\slmult0 \fs26\cf0\f0\charscalex100 {despreciable frente a la mano de obra
.}\fs26\cf0\f0\charscalex100 { }\par\pard\li1746\ri0\sl-480\slmult0 \fs26\cf0\f0
\charscalex100 {El esfuerzo requerido para construir un sistema puede ser medido
con}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {muchas unid
ades. Desde las discriminaciones mentales de Halstead, hasta el}\par\pard\li1026
\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {nmero real de horas y minutos que
invierte un programador, la variedad es}\par\pard\li1026\ri0\sl-360\slmult0 \fs
24\cf0\f0\charscalex100 {enorme, sin em}\fs24\cf0\f0\charscalex100 {bargo hay un
a medida que destaca por su universalidad: la}{ }\fs24\cf0\f0\charscalex100\b {p
ersona}\b0 \fs24\cf0\f0\charscalex100\b {-}\b0 \par\pard\li1026\ri0\sl-360\slmul
t0 \fs26\cf0\f0\charscalex100\b {mes}\b0 \fs26\cf0\f0\charscalex100 { o meses }\
fs26\cf0\f0\charscalex100 {-}\fs26\cf0\f0\charscalex100 {hombre. Por otra parte,
aunque el esfuerzo es muy importante, en}\par\pard\li1026\ri0\sl-360\slmult0 \f
s26\cf0\f0\charscalex100 {realidad la ms importante mtrica del esfuerzo es el cost
e.}\fs26\cf0\f0\charscalex100 { }\par\pard\li4973\ri0\sl-213\slmult0 \fs18\cf0\p
ar\pard\li4973\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li4973\ri0\sl-213\slmult0 \
fs18\cf0\par\pard\li4973\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li4973\ri0\sl-386
\slmult0 \fs24\cf0\f0\charscalex100 {2 }\fs24\cf0\f0\charscalex100 {-}\fs24\cf0\
f0\charscalex100 { }\fs24\cf0\f0\charscalex100 {17}\fs24\cf0\f0\charscalex100 {
}\par\pard\sect\sectd\sbknone\pgwsxn11920\pghsxn16840\marglsxn666\margrsxn133\pa
rd\sect\sectd\sbkpage\pgwsxn11920\pghsxn16840\marglsxn666\margrsxn133\margtsxn66
6\margbsxn213\pard\li1746\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li1746\ri0\sl-21
3\slmult0 \fs18\cf0\par\pard\li1746\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li1746
\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li1746\ri0\sl-213\slmult0 \fs18\cf0\par\p
ard\li1746\ri0\sl-306\slmult0 \fs26\cf0\f0\charscalex100 {La importancia de la m
edida del esfuerzo y coste responde ms a}\fs26\cf0\f0\charscalex100 { }\par\pard\
li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {necesidades de tipo admini
strativo y de gestin que estrictamente tcnicas. Pero}\par\pard\li1026\ri0\sl-360\s

lmult0 \fs26\cf0\f0\charscalex100 {por ello no deben menospreciarse: el aspecto


econmico del software, que es el}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0
\charscalex100 {que subyace a la gestin, determina la viabilidad de los proyectos
. El}\fs26\cf0\f0\charscalex100 { }\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0
\f0\charscalex100 {conocimien}\fs26\cf0\f0\charscalex100 {to del esfuerzo invert
ido ayuda a valorar la productividad y a preparar}\par\pard\li1026\ri0\sl-360\sl
mult0 \fs26\cf0\f0\charscalex100 {las medidas de correccin oportunas para mejorar
el trabajo del equipo y, estimar}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\
f0\charscalex100 {las necesidades de futuros proyectos.}\fs26\cf0\f0\charscalex1
00 { }\par\pard\li1746\ri0\sl-480\slmult0 \fs26\cf0\f0\charscalex100 {La precisin
de la medida viene determinada por el tipo de aplicacin. No}\par\pard\li1026\ri0
\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {puede medirse de igual manera el esf
uerzo y coste invertido en un proyecto}\par\pard\li1026\ri0\sl-360\slmult0 \fs26
\cf0\f0\charscalex100 {pequeo, unipersonal, que el precisado para llevar adelante
un proyecto grande,}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex
100 {desarrollado por un equipo de trabajo formado por muchas personas.}\fs26\cf
0\f0\charscalex100 { }\par\pard\li1746\ri0\sl-480\slmult0 \fs26\cf0\f0\charscale
x100 {Los proyectos peque}\fs26\cf0\f0\charscalex100 {os son completados habitual
mente por una sola}\fs26\cf0\f0\charscalex100 { }\par\pard\li1026\ri0\sl-360\slm
ult0 \fs26\cf0\f0\charscalex100 {persona en unos pocos das o semanas. Por ello, l
as unidades temporales ms}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charsc
alex100 {adecuadas seran los minutos, horas, o como muchos, los das. As, el esfuerz
o se}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {mide en}{ }
\fs26\cf0\f0\charscalex100\b {personas}\b0 \fs26\cf0\f0\charscalex100\b {-}\b0 \
fs26\cf0\f0\charscalex100\b {da.}\b0 \par\pard\li1746\ri0\sl-480\slmult0 \fs26\cf
0\f0\charscalex100 {A esta escala, el aprovechamiento de la jornada laboral resu
lta muy}\fs26\cf0\f0\charscalex100 { }\par\pard\li1026\ri0\sl-360\slmult0 \fs26\
cf0\f0\charscalex100 {importante. Las posibles interrupciones a lo largo de un da
de trabajo son}\fs26\cf0\f0\charscalex100 { }\par\pard\li1026\ri0\sl-360\slmult
0 \fs26\cf0\f0\charscalex100 {innumerables: llamadas telefnicas, pequeos descansos
, comentarios con otras}\par\pard\li1026\ri0\sl-360\slmult0 \fs24\cf0\f0\charsca
lex100 {personas, distracciones,... Y tienen un reflejo inmediato en }\fs24\cf0\
f0\charscalex100 {e}\fs24\cf0\f0\charscalex100 {l rendimiento}\fs24\cf0\f0\chars
calex100 { }\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {pers
onal. De ah que se opte por medir el tiempo de trabajo a "reloj parado",}\par\par
d\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {pasando por alto las int
errupciones al trabajo.}\fs26\cf0\f0\charscalex100 { }\par\pard\li1746\ri0\sl-48
0\slmult0 \*\tx8320\fs26\cf0\f0\charscalex100 {Otro elemento importante al traba
jar a escala reducida es el}\tab \fs26\cf0\f0\charscalex100\b {tiempo de}\b0 \pa
r\pard\li1026\ri0\sl-360\slmult0 \*\tx4440\fs26\cf0\f0\charscalex100\b {comprens
in y aprendizaje}\b0 \tab \fs26\cf0\f0\charscalex100 {que el programador requiere
para comprender los}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex
100 {requerimientos, el diseo, o cualquier documento previo a la codificacin.}\fs2
6\cf0\f0\charscalex100 { }\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\chars
calex100 {Aprender a manejar las herramientas y lenguajes, conocer los interface
s, la}\fs26\cf0\f0\charscalex100 { }\par\pard\li1026\ri0\sl-360\slmult0 \fs24\cf
0\f0\charscalex100 {metodologa empleada, etc... supone retrasos importantes en pr
oyectos}\fs24\cf0\f0\charscalex100 { }\par\pard\li1026\ri0\sl-360\slmult0 \fs26\
cf0\f0\charscalex100 {unip}\fs26\cf0\f0\charscalex100 {ersonales.}\fs26\cf0\f0\c
harscalex100 { }\par\pard\li1746\ri0\sl-480\slmult0 \fs26\cf0\f0\charscalex100 {
Los proyectos habituales en la industria, en la investigacin, o en entornos}\par\
pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {acadmicos, envuelven a
equipos de trabajo formados por varias personas (a veces}\par\pard\li1026\ri0\s
l-360\slmult0 \fs26\cf0\f0\charscalex100 {muchos equipos y muchas personas) dura
nte perodos largos de tiempo: meses y}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\c
f0\f0\charscalex100 {aos. De esta forma, las unidades ms adecuadas para medir el e
sfuerzo, son las}\par\pard\li1026\ri0\sl-360\slmult0 \fs24\cf0\f0\charscalex100
{personas}\fs24\cf0\f0\charscalex100 {-}\fs24\cf0\f0\charscalex100 {mes, y perso
nas}\fs24\cf0\f0\charscalex100 {-}\fs24\cf0\f0\charscalex100 {ao. En estos proyec
tos hay que asignar recursos}\fs24\cf0\f0\charscalex100 { }\par\pard\li1026\ri0\

sl-360\slmult0 \fs26\cf0\f0\charscalex100 {materiales y personales diferenciados


a tareas que se realizaban conjuntamente en}\par\pard\li1026\ri0\sl-360\slmult0
\fs26\cf0\f0\charscalex100 {un proyecto unipersonal: dis}\fs26\cf0\f0\charscale
x100 {eo, prueba, documentacin,... Esta especializacin}\par\pard\li4973\ri0\sl-213\
slmult0 \fs18\cf0\par\pard\li4973\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li4973\r
i0\sl-213\slmult0 \fs18\cf0\par\pard\li4973\ri0\sl-213\slmult0 \fs18\cf0\par\par
d\li4973\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li4973\ri0\sl-360\slmult0 \fs24\c
f0\f0\charscalex100 {2 }\fs24\cf0\f0\charscalex100 {-}\fs24\cf0\f0\charscalex100
{ }\fs24\cf0\f0\charscalex100 {18}\fs24\cf0\f0\charscalex100 { }\par\pard\sect\
sectd\sbkpage\pgwsxn11920\pghsxn16840\marglsxn666\margrsxn133\margtsxn666\margbs
xn213\pard\li1026\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li1026\ri0\sl-213\slmult
0 \fs18\cf0\par\pard\li1026\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li1026\ri0\sl213\slmult0 \fs18\cf0\par\pard\li1026\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li10
26\ri0\sl-306\slmult0 \fs26\cf0\f0\charscalex100 {obliga tambin a aislar las tare
as administrativas, y grupos especiales de trabajo se}\par\pard\li1026\ri0\sl-36
0\slmult0 \fs26\cf0\f0\charscalex100 {encargan de coordinar, planificar, monitor
izar, y gestionar el proyecto.}\fs26\cf0\f0\charscalex100 { }\par\pard\sect\sect
d\sbknone\pgwsxn11920\pghsxn16840\marglsxn666\margrsxn133\cols2\colno1\colw5413\
colsr-0\colno2\colw5706\pard\li1746\ri0\sl-480\slmult0 \*\tx2133\fs26\cf0\f0\cha
rscalex100 {La}\tab \fs26\cf0\f0\charscalex100\b {intensidad en el trabajo}\b0 \
par\column\pard\li0\ri0\sl-480\slmult0 \fs26\cf0\f0\charscalex100 {no es manteni
da por largos periodos de}\par\pard\sect\sectd\sbknone\pgwsxn11920\pghsxn16840\m
arglsxn666\margrsxn133\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100
{tiempo. Las}{ }\fs26\cf0\f0\charscalex100\b {interrupciones}\b0 \fs26\cf0\f0\c
harscalex100 { de todo tipo son tan numerosas y habituales que no}\par\pard\li10
26\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {son un factor de ruptura impor
tante. Los tiempos de aprendizaje son grandes y}\par\pard\li1026\ri0\sl-360\slm
ult0 \fs24\cf0\f0\charscalex100 {afectan a todo el equipo. En resumen, los eleme
ntos que determinaban claram}\fs24\cf0\f0\charscalex100 {ente}\par\pard\li1026\r
i0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {a un proyecto pequeo no tienen esa
importancia en uno grande.}\fs26\cf0\f0\charscalex100 { }\par\pard\li1746\ri0\sl
-480\slmult0 \fs24\cf0\f0\charscalex100 {La medida del trabajo realizado, que en
proyectos pequeos puede llevarse}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f
0\charscalex100 {a cabo ntegramente por observadores externos, precisa ahora de l
a colaboracin}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {de
los participantes. En muchas organizaciones, los componentes del equipo de}\par\
pard\li1026\ri0\sl-360\slmult0 \fs24\cf0\f0\charscalex100 {desarrollo estn obliga
dos a rellenar diariamente formularios en los que registrar}\par\pard\li1026\ri0
\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {su actividad diaria. Estos formulari
os contienen impresiones subjetivas de cada}\par\pard\li1026\ri0\sl-360\slmult0
\fs26\cf0\f0\charscalex100 {persona, y no suponen en muchos casos una refer}\fs2
6\cf0\f0\charscalex100 {encia vlida para medir el}\par\pard\li1026\ri0\sl-360\slm
ult0 \fs26\cf0\f0\charscalex100 {esfuerzo invertido.}\fs26\cf0\f0\charscalex100
{ }\par\pard\li1746\ri0\sl-480\slmult0 \fs26\cf0\f0\charscalex100 {Las valoracio
nes de esfuerzo resultan as poco exactas, y a pesar de la}\par\pard\li1026\ri0\sl
-360\slmult0 \fs26\cf0\f0\charscalex100 {enorme importancia que se les atribuye,
no pasan de constituir una referencia}\par\pard\li1026\ri0\sl-360\slmult0 \fs26
\cf0\f0\charscalex100 {aproximada a los valores reales, difciles de someter a med
ida.}\fs26\cf0\f0\charscalex100 { }\par\pard\li1026\ri0\sl-213\slmult0 \fs18\cf0
\par\pard\li1026\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li1026\ri0\sl-413\slmult0
\fs26\cf0\f0\charscalex100\b {2.1.5.}\b0 \fs26\cf0\f0\charscalex100\b {-}\b0 \f
s26\cf0\f0\charscalex100\b { Mtricas de calidad y fiabilidad.}\b0 \fs26\cf0\f0\ch
arscalex100\b { }\b0 \par\pard\li1746\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li17
46\ri0\sl-386\slmult0 \fs24\cf0\f0\charscalex100 {El estudio de la calidad y fia
bilidad tiene una importancia cada vez mayor}\par\pard\li1026\ri0\sl-360\slmult0
\fs26\cf0\f0\charscalex100 {en el mundo de la Ingeniera del Software. No slo se t
rata de obtener sistemas}\par\pard\li1026\ri0\sl-360\slmult0 \fs24\cf0\f0\charsc
alex100 {desarrollados correctamente, de acuerdo a los req}\fs24\cf0\f0\charscal
ex100 {uerimientos y a los estndares}\par\pard\li1026\ri0\sl-360\slmult0 \fs24\cf
0\f0\charscalex100 {establecidos, sino que se pretende conseguir programas fciles

de mantener y, lo}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex10


0 {que es ms importante, sistemas fiables en tareas crticas. }\fs26\cf0\f0\charsca
lex100 { }\par\pard\li1746\ri0\sl-480\slmult0 \fs26\cf0\f0\charscalex100 {A pesa
r de los avances en las tcnicas de generacin de cdigo, no se}\par\pard\li1026\ri0\s
l-360\slmult0 \fs24\cf0\f0\charscalex100 {pueden producir programas totalmente l
ibres de errores. De esta forma, entre las}\par\pard\li1026\ri0\sl-360\slmult0 \
fs26\cf0\f0\charscalex100 {distintas fases del ciclo de desarrollo se van filtra
ndo una serie de errores que}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\ch
arscalex100 {obligan a emplear mucho esfuerzo en su deteccin y correccin.}\fs26\cf
0\f0\charscalex100 { }\par\pard\li1746\ri0\sl-480\slmult0 \fs26\cf0\f0\charscale
x100 {Los errores pueden producirse en cualqu}\fs26\cf0\f0\charscalex100 {ier fa
se del ciclo de vida, pero sus}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\
charscalex100 {efectos son tanto mayores cuanto ms temprana sea su aparicin. Los e
rrores en la}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {pla
nificacin tienen ms consecuencias de tipo econmico y de gestin que}\par\pard\li1026\
ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {estrictamente tcnicas, sin embargo
los de diseo pueden producir los mayores}\par\pard\li1026\ri0\sl-360\slmult0 \fs
26\cf0\f0\charscalex100 {problemas al estar en la base del sistema software. Los
errores de codificacin,}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charsca
lex100 {con ser los ms conocidos, no son los ms importantes, a pesar de ello, son
los}\par\pard\li4973\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li4973\ri0\sl-213\slm
ult0 \fs18\cf0\par\pard\li4973\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li4973\ri0\
sl-426\slmult0 \fs24\cf0\f0\charscalex100 {2 }\fs24\cf0\f0\charscalex100 {-}\fs2
4\cf0\f0\charscalex100 { }\fs24\cf0\f0\charscalex100 {19}\fs24\cf0\f0\charscalex
100 { }\par\pard\sect\sectd\sbknone\pgwsxn11920\pghsxn16840\marglsxn666\margrsxn
133\pard\sect\sectd\sbkpage\pgwsxn11920\pghsxn16840\marglsxn666\margrsxn133\marg
tsxn666\margbsxn213\pard\li1026\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li1026\ri0
\sl-213\slmult0 \fs18\cf0\par\pard\li1026\ri0\sl-213\slmult0 \fs18\cf0\par\pard\
li1026\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li1026\ri0\sl-213\slmult0 \fs18\cf0
\par\pard\li1026\ri0\sl-306\slmult0 \fs26\cf0\f0\charscalex100 {ms tratados pues
es ms simple automatizar su deteccin. Los errores en las}\par\pard\li1026\ri0\sl-3
60\slmult0 \fs26\cf0\f0\charscalex100 {pru}\fs26\cf0\f0\charscalex100 {ebas son
muy importantes pues dan por vlido un cdigo que no lo es, y}\par\pard\li1026\ri0\s
l-360\slmult0 \fs26\cf0\f0\charscalex100 {permiten que se entregue un sistema de
fectuoso. Los errores de mantenimiento}\par\pard\li1026\ri0\sl-360\slmult0 \fs26
\cf0\f0\charscalex100 {pueden deberse a la ignorancia de fallos antiguos o a la
introduccin de otros}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex1
00 {nuevos. }\fs26\cf0\f0\charscalex100 { }\par\pard\li1746\ri0\sl-480\slmult0 \
fs26\cf0\f0\charscalex100 {Los procedimientos de deteccin de errores de fundament
an en dos}\fs26\cf0\f0\charscalex100 { }\par\pard\li1026\ri0\sl-360\slmult0 \fs2
6\cf0\f0\charscalex100 {procedimientos: las}{ }\fs26\cf0\f0\charscalex100\b {bat
eras de test}\b0 \fs26\cf0\f0\charscalex100 { sobre el sistema, y las}{ }\fs26\cf
0\f0\charscalex100\b {revisiones tcnicas}\b0 { }\fs26\cf0\f0\charscalex100 {.}\fs
26\cf0\f0\charscalex100 { }\par\pard\li1746\ri0\sl-480\slmult0 \fs26\cf0\f0\char
scalex100 {Se puede afirmar que cada vez que se ejecuta un programa, se le est}\p
ar\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {sometiendo a un te
st. Pero cuando se utiliza un programa}\fs26\cf0\f0\charscalex100 { no se est ago
tando el}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {total d
e posibles situaciones en que puede encontrarse, sino que se trabaja con un}\par
\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {conjunto de datos y
estado "normales" o habituales. La prueba del software se}\par\pard\li1026\ri0\s
l-360\slmult0 \fs26\cf0\f0\charscalex100 {encarga de someter un programa a una r
evisin de todos los estados posible por}\par\pard\li1026\ri0\sl-360\slmult0 \fs26
\cf0\f0\charscalex100 {los que puede atravesar en algn momento de su vida til. Los
tres objetivos que}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex1
00 {dirigen la prueba del software son:}\fs26\cf0\f0\charscalex100 { }\par\pard\
li1386\ri0\sl-480\slmult0 \fs20\cf0\f2\charscalex100 {\uc1\u61623X}\fs26\cf0\f0\
charscalex100 { }\fs26\cf0\f0\charscalex100 {La prueba es un proceso de ejecucin
de un programa con la intencin de}\par\pard\li1746\ri0\sl-360\slmult0 \fs26\cf0\
f0\charscalex100 {descubrir un error.}\fs26\cf0\f0\charscalex100 { }\par\pard\li

1386\ri0\sl-480\slmult0 \fs20\cf0\f2\charscalex100 {\uc1\u61623X}\fs26\cf0\f0\ch


arscalex100 { }\fs26\cf0\f0\charscalex100 {Un buen caso de prueba es aquel que
tiene una alta probabilidad de mostrar}\par\pard\li1746\ri0\sl-360\slmult0 \fs26
\cf0\f0\charscalex100 {un error no descubierto hasta entonces.}\fs26\cf0\f0\char
scalex100 { }\par\pard\li1386\ri0\sl-480\slmult0 \fs20\cf0\f2\charscalex100 {\uc
1\u61623X}\fs26\cf0\f0\charscalex100 { }\fs26\cf0\f0\charscalex100 {Una prueba
tiene xito si descubre un error no detectado hasta entonces.}\fs26\cf0\f0\charsca
lex100 { }\par\pard\li1746\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li1746\ri0\sl-2
13\slmult0 \fs18\cf0\par\pard\li1746\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li174
6\ri0\sl-320\slmult0 \fs26\cf0\f0\charscalex100 {Sin embargo, la caracterstica ms
destacable de la prueba del software es}\par\pard\li1026\ri0\sl-360\slmult0 \*\t
x1560\fs24\cf0\f0\charscalex100 {que}\tab \fs24\cf0\f0\charscalex100\b {la prueb
a no puede asegurar la ausencia de defectos: slo puede}\b0 \fs24\cf0\f0\charscale
x100\b { }\b0 \par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100\b {
demostrar que existen defectos en el software}\b0 \fs26\cf0\f0\charscalex100 {.
La afirmacin anterior da la}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\char
scalex100 {verdadera dimensin del proceso }\fs26\cf0\f0\charscalex100 {de prueba:
slo se puede demostrar que el}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\c
harscalex100 {software es errneo, y no que sea completamente correcto. Cuando un
test falla}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {(esto
es, cuando no encuentra errores) no se est en condiciones de afirmar que el}\par
\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {programa probado est
libre de defectos, sino que tambin puede ocurrir que el}\par\pard\li1026\ri0\sl-3
60\slmult0 \fs26\cf0\f0\charscalex100 {test sea incompleto o est mal construido (
en una palabra, que contenga errores).}\par\pard\li1026\ri0\sl-360\slmult0 \fs26
\cf0\f0\charscalex100 {Esto implica que las medidas referidas al nmero de errores
dependa}\fs26\cf0\f0\charscalex100 { }\par\pard\li1026\ri0\sl-360\slmult0 \fs26
\cf0\f0\charscalex100 {enormemente del proceso de prueba que se haya seguido, pu
es dos bateras de tes}\fs26\cf0\f0\charscalex100 {t}\par\pard\li1026\ri0\sl-360\s
lmult0 \fs26\cf0\f0\charscalex100 {podran detectar distinto nmero de errores en un
mismo programa.}\fs26\cf0\f0\charscalex100 { }\par\pard\li1746\ri0\sl-480\slmul
t0 \fs26\cf0\f0\charscalex100 {El proceso de prueba debe adaptarse al sistema so
ftware que vaya a ser}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscale
x100 {validado. Para simplificar un poco el trabajo del equipo de garanta de cali
dad se}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {dispone d
e cierto nmero de tcnicas que pueden emplearse dentro de una}\fs26\cf0\f0\charscal
ex100 { }\par\pard\li4973\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li4973\ri0\sl-21
3\slmult0 \fs18\cf0\par\pard\li4973\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li4973
\ri0\sl-426\slmult0 \fs24\cf0\f0\charscalex100 {2 }\fs24\cf0\f0\charscalex100 {}\fs24\cf0\f0\charscalex100 { }\fs24\cf0\f0\charscalex100 {20}\fs24\cf0\f0\chars
calex100 { }\par\pard\sect\sectd\sbkpage\pgwsxn11920\pghsxn16840\marglsxn666\mar
grsxn133\margtsxn666\margbsxn213\pard\li1026\ri0\sl-213\slmult0 \fs18\cf0\par\pa
rd\li1026\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li1026\ri0\sl-213\slmult0 \fs18\
cf0\par\pard\li1026\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li1026\ri0\sl-213\slmu
lt0 \fs18\cf0\par\pard\li1026\ri0\sl-306\slmult0 \fs26\cf0\f0\charscalex100 {est
rategia de pruebas determinada. Unos elementos auxiliares de las tareas de}\par\
pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {prueba cuya importanc
ia crece da a da son las herramientas automticas.}\fs26\cf0\f0\charscalex100 { }\pa
r\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {Habitualmente integ
radas en otras dedicadas al diseo y la codif}\fs26\cf0\f0\charscalex100 {icacin, s
e basan}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {esencial
mente en el uso de bateras de datos de entrada que comparan con listas de}\par\pa
rd\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {salidas correctas. Es d
e esperar que en el futuro, el progresivo perfeccionamiento}\par\pard\li1026\ri0
\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {de estas herramientas, haga que el p
roceso de prueba sea ms fiables, y requiera}\par\pard\li1026\ri0\sl-360\slmult0 \
fs26\cf0\f0\charscalex100 {menos dedicacin por parte de los equipos de desarrollo
.}\fs26\cf0\f0\charscalex100 { }\par\pard\li1746\ri0\sl-480\slmult0 \fs24\cf0\f0
\charscalex100 {Pero no es una buena tctica esperar al cdigo para determinar su}\f
s24\cf0\f0\charscalex100 { }\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\cha

rscalex100 {correccin. Como ya se ha dicho, los errores producidos tempranamente


obligan a}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {emplea
r muchos recursos en su reparacin. }\fs26\cf0\f0\charscalex100 {Con objeto de ver
ificar la validez de}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex
100 {un diseo se usan una serie de tcnicas conocidas como}{ }\fs26\cf0\f0\charscal
ex100\b {revisiones tcnicas}\b0 { }\fs26\cf0\f0\charscalex100 {. }\fs26\cf0\f0\ch
arscalex100 { }\par\pard\li1746\ri0\sl-480\slmult0 \fs26\cf0\f0\charscalex100 {L
as revisiones se basan en la verificacin manual (por grupos de expertos)}\par\par
d\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {de la validez de un diseo
, un programa, o cualquier otro elemento. Dado que se}\par\pard\li1026\ri0\sl-36
0\slmult0 \fs26\cf0\f0\charscalex100 {trata de un proceso humano regido exclusiv
amente por consideraciones subjetivas,}\par\pard\li1026\ri0\sl-360\slmult0 \fs26
\cf0\f0\charscalex100 {las distintas tcnicas se basan en estrategias que garantic
en la imparcialidad de las}\par\pard\li1026\ri0\sl-360\slmult0 \fs24\cf0\f0\char
scalex100 {decisiones, y que favorezcan la obtencin de resultados homogneos y}\fs2
4\cf0\f0\charscalex100 { }\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\chars
calex100 {mant}\fs26\cf0\f0\charscalex100 {enibles. }\fs26\cf0\f0\charscalex100
{ }\par\pard\li1746\ri0\sl-480\slmult0 \fs26\cf0\f0\charscalex100 {Las revisione
s se realizan siempre por parte de varias personas, y por esta}\par\pard\li1026\
ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {razn precisan de reglas muy estric
tas que eviten consideraciones personales y no}\par\pard\li1026\ri0\sl-360\slmul
t0 \fs26\cf0\f0\charscalex100 {tcnicas. Las revisiones y la prueba del software s
on procesos laboriosos que}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\char
scalex100 {producen una gran cantidad de documentacin, pero que tienen como recom
pensa,}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {la obtenc
in de resultados, si no libres completamente de errores, si al menos ms}\par\pard\
li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {fiables y mantenibles.}\fs
26\cf0\f0\charscalex100 { }\par\pard\li1746\ri0\sl-480\slmult0 \fs26\cf0\f0\char
scalex100 {En general, la mayor parte de las mtricas dedicadas al estudio de la c
alidad}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {y fiabili
dad se basan en contar los errores o fallos. Errores que no tienen que ser}\par\
pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {necesariamente incorr
ecciones del cdigo, sino cualquier elemento que aparte los}\par\pard\li1026\ri0\s
l-360\slmult0 \fs26\cf0\f0\charscalex100 {resultados finales de lo especificado
en los requerimientos. Otras dos medidas}\par\pard\li1026\ri0\sl-360\slmult0 \fs
26\cf0\f0\charscalex100 {importantes son el}{ }\fs26\cf0\f0\charscalex100\b {nmer
o de cambios realizados en el diseo}\b0 { }\fs26\cf0\f0\charscalex100 {del softwa
re, y}\par\pard\li1026\ri0\sl-360\slmult0 \*\tx1320\fs26\cf0\f0\charscalex100 {e
l}\tab \fs26\cf0\f0\charscalex100\b {nmero de cambios realizados en un programa}\
b0 \fs26\cf0\f0\charscalex100 { determinado. Los cambios}\par\pard\li1026\ri0\sl
-360\slmult0 \fs26\cf0\f0\charscalex100 {en un programa responden a tres categora
s: una o varias modificaciones en una}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\
cf0\f0\charscalex100 {instruccin simple, insercin (o borrado}\fs26\cf0\f0\charscal
ex100 {) de una o ms instrucciones entre dos ya}\par\pard\li1026\ri0\sl-360\slmul
t0 \fs26\cf0\f0\charscalex100 {existentes, y un cambio del primer tipo seguido d
e insercin de instrucciones. La}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\
charscalex100 {insercin o borrado de comentarios, o lneas en blanco no suele consi
derarse}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {cambio y
a que no afecta a los resultados finales del programa.}\fs26\cf0\f0\charscalex10
0 { }\par\pard\li4973\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li4973\ri0\sl-213\sl
mult0 \fs18\cf0\par\pard\li4973\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li4973\ri0
\sl-213\slmult0 \fs18\cf0\par\pard\li4973\ri0\sl-213\slmult0 \fs18\cf0\par\pard\
li4973\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li4973\ri0\sl-266\slmult0 \fs24\cf0
\f0\charscalex100 {2 }\fs24\cf0\f0\charscalex100 {-}\fs24\cf0\f0\charscalex100 {
}\fs24\cf0\f0\charscalex100 {21}\fs24\cf0\f0\charscalex100 { }\par\pard\sect\se
ctd\sbkpage\pgwsxn11920\pghsxn16840\marglsxn666\margrsxn133\margtsxn666\margbsxn
213\pard\li1746\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li1746\ri0\sl-213\slmult0
\fs18\cf0\par\pard\li1746\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li1746\ri0\sl-21
3\slmult0 \fs18\cf0\par\pard\li1746\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li1746
\ri0\sl-306\slmult0 \fs26\cf0\f0\charscalex100 {La mtrica ms comn referida a los fa

llos de un programa es la}{ }\fs26\cf0\f0\charscalex100\b {densidad}\b0 \par\par


d\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100\b {de fallos o errores}\b
0 \fs26\cf0\f0\charscalex100 {:}\fs26\cf0\f0\charscalex100 { }\par\pard\li3000\r
i0\sl-480\slmult0 \fs26\cf0\f0\charscalex100 {densidad de errores = nmero de erro
res / S}\fs26\cf0\f0\charscalex100 { }\par\pard\li1026\ri0\sl-213\slmult0 \fs18\
cf0\par\pard\li1026\ri0\sl-386\slmult0 \fs24\cf0\f0\charscalex100 {siendo}{ }\fs
24\cf0\f0\charscalex100\b {S}\b0 \fs24\cf0\f0\charscalex100 { el tamao del cdigo e
n nmero de lneas. Sin embargo, esta medida con}\par\pard\li1026\ri0\sl-360\slmult0
\fs26\cf0\f0\charscalex100 {ser una referencia importa}\fs26\cf0\f0\charscalex1
00 {nte, no da una idea de la magnitud de un error.}\fs26\cf0\f0\charscalex100 {
}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {Obviamente, no
tiene la misma importancia un error en un programa de edicin de}\par\pard\li1026
\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {textos que en el sistema de nave
gacin de un avin, y dentro de un mismo sistema,}\par\pard\li1026\ri0\sl-360\slmult
0 \fs26\cf0\f0\charscalex100 {subir o bajar un sueldo tendr ms repercusin que el re
dondeo de las cantidades}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charsc
alex100 {finales. Algunos sistemas de prueba dan un valor en forma de "severidad
" de un}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {error, p
ero esta valoracin es en cualquier caso muy subjetiva.}\fs26\cf0\f0\charscalex100
{ }\par\pard\li1746\ri0\sl-480\slmult0 \fs26\cf0\f0\charscalex100 {Otra caracte
rstica difcil de cuantificar de los errores es la dificultad d}\fs26\cf0\f0\charsc
alex100 {e}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {encon
trarlos. Hay lenguajes, formas de programar y tipos de errores que}\fs26\cf0\f0\
charscalex100 { }\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100
{complican la tarea de encontrar los problemas del cdigo. La depuracin y el}\par\p
ard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {mantenimiento absorben
muchos recursos que podran reducirse si los errores}\par\pard\li1026\ri0\sl-360\
slmult0 \fs26\cf0\f0\charscalex100 {fueran ms fcilmente localizables.}\fs26\cf0\f0
\charscalex100 { }\par\pard\li1746\ri0\sl-480\slmult0 \fs26\cf0\f0\charscalex100
{En cuanto a la}\fs26\cf0\f0\charscalex100 { }{ }\fs26\cf0\f0\charscalex100\b {
fiabilidad}\b0 \fs26\cf0\f0\charscalex100 {, hay que notar que aunque es un conc
epto}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {prestado de
la ingeniera hardware, no puede tratarse de igual manera en el}\par\pard\li1026\
ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {software. Un componente hardware
puede fallar de muchas maneras: por fatiga,}\par\pard\li1026\ri0\sl-360\slmult0
\fs26\cf0\f0\charscalex100 {sobrecarga, defectos de fab}\fs26\cf0\f0\charscalex1
00 {ricacin, influencias externas,... Sin embargo, los}\par\pard\li1026\ri0\sl-36
0\slmult0 \fs26\cf0\f0\charscalex100 {programas slo puede fallar si estn mal hecho
s, si el diseo o la codificacin han}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\
f0\charscalex100 {sido defectuosos. Aunque un sistema crtico que emplee programas
puede fallar}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {po
r cualquiera de las causas hardware o software descritas anteriormente, slo se}\p
ar\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {puede atribuir al
software aquellos problemas causados por los defectos en su}\par\pard\li1026\ri0
\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {elaboracin. De esta forma, la fiabili
dad es una medida integral de todo el proceso}\par\pard\li1026\ri0\sl-360\slmult
0 \fs26\cf0\f0\charscalex100 {de desarrollo, pues precisa no slo que se haya aseg
ur}\fs26\cf0\f0\charscalex100 {ado en todo momento la}\par\pard\li1026\ri0\sl-36
0\slmult0 \fs26\cf0\f0\charscalex100 {calidad del sistema, sino que adems el proc
eso de prueba debe haber realizado}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0
\f0\charscalex100 {una depuracin perfecta de los errores que pudiera contener.}\f
s26\cf0\f0\charscalex100 { }\par\pard\li1746\ri0\sl-480\slmult0 \fs26\cf0\f0\cha
rscalex100 {La fiabilidad emplea varias medidas, la primera de ellas es la}{ }\f
s26\cf0\f0\charscalex100\b {probabilidad}\b0 \par\pard\li1026\ri0\sl-360\slmult0
\*\tx7400\fs26\cf0\f0\charscalex100\b {F de que aparezca un error en un tiempo
determinado}\b0 \tab \fs26\cf0\f2\charscalex100 {\uc1\u964X}\fs26\cf0\f0\charsca
lex100 {, donde}{ }\fs26\cf0\f2\charscalex100 {\uc1\u964X}\fs26\cf0\f0\charscal
ex100 { > 0. La}\par\pard\sect\sectd\sbknone\pgwsxn11920\pghsxn16840\marglsxn666
\margrsxn133\cols2\colno1\colw3106\colsr-0\colno2\colw8013\pard\li1026\ri0\sl-36
0\slmult0 \fs26\cf0\f0\charscalex100\b {fiabilidad R}\b0 \par\pard\li1026\ri0\sl

-360\slmult0 \fs26\cf0\f0\charscalex100 {tiempo:}\fs26\cf0\f0\charscalex100 { }\


par\column\pard\li0\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {es la probabi
lidad de que no ocurra un error en ese intervalo de}\par\pard\li1386\ri0\sl-213\
slmult0 \fs18\cf0\par\pard\li1386\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li1386\r
i0\sl-413\slmult0 \fs26\cf0\f0\charscalex100 {R(}\fs26\cf0\f2\charscalex100 {\uc
1\u964X}\fs26\cf0\f0\charscalex100 {) = 1 }\fs26\cf0\f0\charscalex100 {-}\fs26\c
f0\f0\charscalex100 { F(}\fs26\cf0\f2\charscalex100 {\uc1\u964X}\fs26\cf0\f0\cha
rscalex100 {)}\fs26\cf0\f0\charscalex100 { }\par\pard\li1866\ri0\sl-213\slmult0
\fs18\cf0\par\pard\li1866\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li1866\ri0\sl-21
3\slmult0 \fs18\cf0\par\pard\li1866\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li1866
\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li1866\ri0\sl-213\slmult0 \fs18\cf0\par\p
ard\li1866\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li1866\ri0\sl-413\slmult0 \fs24
\cf0\f0\charscalex100 {2 }\fs24\cf0\f0\charscalex100 {-}\fs24\cf0\f0\charscalex1
00 { }\fs24\cf0\f0\charscalex100 {22}\fs24\cf0\f0\charscalex100 { }\par\pard\sec
t\sectd\sbknone\pgwsxn11920\pghsxn16840\marglsxn666\margrsxn133\pard\sect\sectd\
sbkpage
{\shp{\*\shpinst\shpleft5946\shptop9733\shpright6200\shpbottom10093\shpfhdr0\shp
wr3\shpwrk0\shpfblwtxt1\shplid2055\shpz0\shpbxpage\shpbypage
{\sp{\sn shapeType}{\sv 0}}
{\sp{\sn fFlipH}{\sv 0}}
{\sp{\sn fFlipV}{\sv 0}}
{\sp{\sn rotation}{\sv 0}}
{\sp{\sn geoRight}{\sv 254}}
{\sp{\sn geoBottom}{\sv 360}}
{\sp{\sn shapePath}{\sv 4}}
{\sp{\sn pVerticies}{\sv 8;2;(253,0);(0,360);}}
{\sp{\sn pSegmentInfo}{\sv 2;5;16384;45824;1;45824;32768}}
{\sp{\sn fFillOK}{\sv 1}}
{\sp{\sn fFilled}{\sv 0}}
{\sp{\sn lineWidth}{\sv 9525}}
{\sp{\sn lineColor}{\sv 0}}
{\sp{\sn lineDashing}{\sv 0}}
{\sp{\sn fLine}{\sv 1}}{\sp{\sn lineColor}{\sv 0}}
{\sp{\sn lineType}{\sv 0}}
{\sp{\sn fArrowheadsOK}{\sv 0}}
{\sp{\sn fBehindDocument}{\sv 1}}
{\sp{\sn fLayoutInCell}{\sv 1}}}}
{\shp{\*\shpinst\shpleft2600\shptop14666\shpright8973\shpbottom14666\shpfhdr0\sh
pwr3\shpwrk0\shpfblwtxt1\shplid2056\shpz1\shpbxpage\shpbypage
{\sp{\sn shapeType}{\sv 0}}
{\sp{\sn fFlipH}{\sv 0}}
{\sp{\sn fFlipV}{\sv 0}}
{\sp{\sn rotation}{\sv 0}}
{\sp{\sn geoRight}{\sv 6373}}
{\sp{\sn geoBottom}{\sv 0}}
{\sp{\sn shapePath}{\sv 4}}
{\sp{\sn pVerticies}{\sv 8;2;(0,0);(6373,0);}}
{\sp{\sn pSegmentInfo}{\sv 2;5;16384;45824;1;45824;32768}}
{\sp{\sn fFillOK}{\sv 1}}
{\sp{\sn fFilled}{\sv 0}}
{\sp{\sn lineWidth}{\sv 9525}}
{\sp{\sn lineColor}{\sv 0}}
{\sp{\sn lineDashing}{\sv 0}}
{\sp{\sn fLine}{\sv 1}}{\sp{\sn lineColor}{\sv 0}}
{\sp{\sn lineType}{\sv 0}}
{\sp{\sn fArrowheadsOK}{\sv 0}}
{\sp{\sn fBehindDocument}{\sv 1}}
{\sp{\sn fLayoutInCell}{\sv 1}}}}
{\shp{\*\shpinst\shpleft2600\shptop14546\shpright2600\shpbottom14773\shpfhdr0\sh
pwr3\shpwrk0\shpfblwtxt1\shplid2057\shpz2\shpbxpage\shpbypage

{\sp{\sn shapeType}{\sv 0}}


{\sp{\sn fFlipH}{\sv 0}}
{\sp{\sn fFlipV}{\sv 0}}
{\sp{\sn rotation}{\sv 0}}
{\sp{\sn geoRight}{\sv 0}}
{\sp{\sn geoBottom}{\sv 227}}
{\sp{\sn shapePath}{\sv 4}}
{\sp{\sn pVerticies}{\sv 8;2;(0,0);(0,226);}}
{\sp{\sn pSegmentInfo}{\sv 2;5;16384;45824;1;45824;32768}}
{\sp{\sn fFillOK}{\sv 1}}
{\sp{\sn fFilled}{\sv 0}}
{\sp{\sn lineWidth}{\sv 9525}}
{\sp{\sn lineColor}{\sv 0}}
{\sp{\sn lineDashing}{\sv 0}}
{\sp{\sn fLine}{\sv 1}}{\sp{\sn lineColor}{\sv 0}}
{\sp{\sn lineType}{\sv 0}}
{\sp{\sn fArrowheadsOK}{\sv 0}}
{\sp{\sn fBehindDocument}{\sv 1}}
{\sp{\sn fLayoutInCell}{\sv 1}}}}
{\shp{\*\shpinst\shpleft8973\shptop14546\shpright8973\shpbottom14773\shpfhdr0\sh
pwr3\shpwrk0\shpfblwtxt1\shplid2058\shpz3\shpbxpage\shpbypage
{\sp{\sn shapeType}{\sv 0}}
{\sp{\sn fFlipH}{\sv 0}}
{\sp{\sn fFlipV}{\sv 0}}
{\sp{\sn rotation}{\sv 0}}
{\sp{\sn geoRight}{\sv 0}}
{\sp{\sn geoBottom}{\sv 227}}
{\sp{\sn shapePath}{\sv 4}}
{\sp{\sn pVerticies}{\sv 8;2;(0,0);(0,226);}}
{\sp{\sn pSegmentInfo}{\sv 2;5;16384;45824;1;45824;32768}}
{\sp{\sn fFillOK}{\sv 1}}
{\sp{\sn fFilled}{\sv 0}}
{\sp{\sn lineWidth}{\sv 9525}}
{\sp{\sn lineColor}{\sv 0}}
{\sp{\sn lineDashing}{\sv 0}}
{\sp{\sn fLine}{\sv 1}}{\sp{\sn lineColor}{\sv 0}}
{\sp{\sn lineType}{\sv 0}}
{\sp{\sn fArrowheadsOK}{\sv 0}}
{\sp{\sn fBehindDocument}{\sv 1}}
{\sp{\sn fLayoutInCell}{\sv 1}}}}
{\shp{\*\shpinst\shpleft8973\shptop14666\shpright9213\shpbottom14773\shpfhdr0\sh
pwr3\shpwrk0\shpfblwtxt1\shplid2059\shpz4\shpbxpage\shpbypage
{\sp{\sn shapeType}{\sv 0}}
{\sp{\sn fFlipH}{\sv 0}}
{\sp{\sn fFlipV}{\sv 0}}
{\sp{\sn rotation}{\sv 0}}
{\sp{\sn geoRight}{\sv 240}}
{\sp{\sn geoBottom}{\sv 107}}
{\sp{\sn shapePath}{\sv 4}}
{\sp{\sn pVerticies}{\sv 8;2;(0,106);(240,0);}}
{\sp{\sn pSegmentInfo}{\sv 2;5;16384;45824;1;45824;32768}}
{\sp{\sn fFillOK}{\sv 1}}
{\sp{\sn fFilled}{\sv 0}}
{\sp{\sn lineWidth}{\sv 9525}}
{\sp{\sn lineColor}{\sv 0}}
{\sp{\sn lineDashing}{\sv 0}}
{\sp{\sn fLine}{\sv 1}}{\sp{\sn lineColor}{\sv 0}}
{\sp{\sn lineType}{\sv 0}}
{\sp{\sn fArrowheadsOK}{\sv 0}}
{\sp{\sn fBehindDocument}{\sv 1}}

{\sp{\sn fLayoutInCell}{\sv 1}}}}


{\shp{\*\shpinst\shpleft8973\shptop14546\shpright9213\shpbottom14666\shpfhdr0\sh
pwr3\shpwrk0\shpfblwtxt1\shplid2060\shpz5\shpbxpage\shpbypage
{\sp{\sn shapeType}{\sv 0}}
{\sp{\sn fFlipH}{\sv 0}}
{\sp{\sn fFlipV}{\sv 0}}
{\sp{\sn rotation}{\sv 0}}
{\sp{\sn geoRight}{\sv 240}}
{\sp{\sn geoBottom}{\sv 120}}
{\sp{\sn shapePath}{\sv 4}}
{\sp{\sn pVerticies}{\sv 8;2;(0,0);(240,120);}}
{\sp{\sn pSegmentInfo}{\sv 2;5;16384;45824;1;45824;32768}}
{\sp{\sn fFillOK}{\sv 1}}
{\sp{\sn fFilled}{\sv 0}}
{\sp{\sn lineWidth}{\sv 9525}}
{\sp{\sn lineColor}{\sv 0}}
{\sp{\sn lineDashing}{\sv 0}}
{\sp{\sn fLine}{\sv 1}}{\sp{\sn lineColor}{\sv 0}}
{\sp{\sn lineType}{\sv 0}}
{\sp{\sn fArrowheadsOK}{\sv 0}}
{\sp{\sn fBehindDocument}{\sv 1}}
{\sp{\sn fLayoutInCell}{\sv 1}}}}\pgwsxn11920\pghsxn16840\marglsxn666\margrsxn13
3\margtsxn666\margbsxn213\pard\li1026\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li10
26\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li1026\ri0\sl-213\slmult0 \fs18\cf0\par
\pard\li1026\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li1026\ri0\sl-213\slmult0 \fs
18\cf0\par\pard\li1026\ri0\sl-306\slmult0 \fs26\cf0\f0\charscalex100 {esto supon
e que se estudia la fiabilidad a lo largo de un espacio continuo de}\par\pard\li
1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {tiempo, sin embargo, es ms re
alista ajustarse al nmero de veces}{ }\fs26\cf0\f0\charscalex100\b {n}\b0 \fs26\c
f0\f0\charscalex100 { que se ejecuta}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\c
f0\f0\charscalex100 {el programa:}\fs26\cf0\f0\charscalex100 { }\par\pard\li4453
\ri0\sl-480\slmult0 \fs26\cf0\f0\charscalex100 {R(n) = 1 }\fs26\cf0\f0\charscale
x100 {-}\fs26\cf0\f0\charscalex100 { d}\fs26\cf0\f0\charscalex100 {n}\fs26\cf0\f
0\charscalex100 { /n}\fs26\cf0\f0\charscalex100 { }\par\pard\li1026\ri0\sl-213\s
lmult0 \fs18\cf0\par\pard\li1026\ri0\sl-386\slmult0 \fs26\cf0\f0\charscalex100 {
donde d}\fs26\cf0\f0\charscalex100 {n}\fs26\cf0\f0\charscalex100 { es el nmero d
e fallo hallados en}{ }\fs26\cf0\f0\charscalex100\b {n}\b0 \fs26\cf0\f0\charscal
ex100 { ejecuciones.}\fs26\cf0\f0\charscalex100 { }\par\pard\li1746\ri0\sl-480\s
lmult0 \fs26\cf0\f0\charscalex100 {Si f(}\fs26\cf0\f2\charscalex100 {\uc1\u964X}
\fs26\cf0\f0\charscalex100 {) es la}{ }\fs26\cf0\f0\charscalex100\b {funcin de de
nsidad de probabilidad}\b0 \fs26\cf0\f0\charscalex100 {:}\fs26\cf0\f0\charscalex
100 { }\par\pard\li4440\ri0\sl-480\slmult0 \fs26\cf0\f0\charscalex100 {f(}\fs26\
cf0\f2\charscalex100 {\uc1\u964X}\fs26\cf0\f0\charscalex100 {) = dF(}\fs26\cf0\f
2\charscalex100 {\uc1\u964X}\fs26\cf0\f0\charscalex100 {) / d}\fs26\cf0\f2\chars
calex100 {\uc1\u964X}\par\pard\li1026\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li10
26\ri0\sl-386\slmult0 \fs26\cf0\f0\charscalex100 {y f(}\fs26\cf0\f2\charscalex10
0 {\uc1\u964X}\fs26\cf0\f0\charscalex100 {t) es la probabilidad de que el so}\fs
26\cf0\f0\charscalex100 {ftware falle en el intervalo (}\fs26\cf0\f2\charscalex1
00 {\uc1\u964X}\fs26\cf0\f0\charscalex100 {,}{ }\fs26\cf0\f2\charscalex100 {\uc1
\u964X}\fs26\cf0\f0\charscalex100 { + d}{ }\fs26\cf0\f2\charscalex100 {\uc1\u964
X}\fs26\cf0\f0\charscalex100 {).}\fs26\cf0\f0\charscalex100 { }\par\pard\li1746\
ri0\sl-480\slmult0 \fs26\cf0\f0\charscalex100 {La}{ }\fs26\cf0\f0\charscalex100\
b {tasa de riesgo}\b0 \fs26\cf0\f0\charscalex100 { h(}\fs26\cf0\f2\charscalex100
{\uc1\u964X}\fs26\cf0\f0\charscalex100 {) es la probabilidad de que el software
falle en (}\fs26\cf0\f2\charscalex100 {\uc1\u964X}\fs26\cf0\f0\charscalex100 {,
}{ }\fs26\cf0\f2\charscalex100 {\uc1\u964X}\fs26\cf0\f0\charscalex100 { +}\par\p
ard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {d}{ }\fs26\cf0\f2\char
scalex100 {\uc1\u964X}\fs26\cf0\f0\charscalex100 {) si no ha fallado antes:}\fs2
6\cf0\f0\charscalex100 { }\par\pard\li4080\ri0\sl-480\slmult0 \fs26\cf0\f0\chars
calex100 {h(}\fs26\cf0\f2\charscalex100 {\uc1\u964X}\fs26\cf0\f0\charscalex100 {

) = f(}\fs26\cf0\f2\charscalex100 {\uc1\u964X}\fs26\cf0\f0\charscalex100 {) / (
1 }\fs26\cf0\f0\charscalex100 {-}\fs26\cf0\f0\charscalex100 { F(}\fs26\cf0\f2\ch
arscalex100 {\uc1\u964X}\fs26\cf0\f0\charscalex100 {) )}\fs26\cf0\f0\charscalex1
00 { }\par\pard\li1026\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li1026\ri0\sl-386\s
lmult0 \fs26\cf0\f0\charscalex100 {de donde podemos obtener una nueva expresin pa
ra la fiabilid}\fs26\cf0\f0\charscalex100 {ad del software:}\fs26\cf0\f0\charsca
lex100 { }\par\pard\li1986\ri0\sl-480\slmult0 \fs26\cf0\f0\charscalex100 {h(}\fs
26\cf0\f2\charscalex100 {\uc1\u964X}\fs26\cf0\f0\charscalex100 {) = f(}\fs26\cf0
\f2\charscalex100 {\uc1\u964X}\fs26\cf0\f0\charscalex100 {) / ( 1 }\fs26\cf0\f0\
charscalex100 {-}\fs26\cf0\f0\charscalex100 { F(}\fs26\cf0\f2\charscalex100 {\uc
1\u964X}\fs26\cf0\f0\charscalex100 {) )= }\fs26\cf0\f0\charscalex100 {-}\fs26\cf
0\f0\charscalex100 { d( ln (1 }\fs26\cf0\f0\charscalex100 {-}\fs26\cf0\f0\charsc
alex100 { F(}\fs26\cf0\f2\charscalex100 {\uc1\u964X}\fs26\cf0\f0\charscalex100 {
) ) ) / d}\fs26\cf0\f2\charscalex100 {\uc1\u964X}\fs26\cf0\f0\charscalex100 { =
}\fs26\cf0\f0\charscalex100 {-}\fs26\cf0\f0\charscalex100 { d ln R(}\fs26\cf0\f2
\charscalex100 {\uc1\u964X}\fs26\cf0\f0\charscalex100 {) / d}\fs26\cf0\f2\charsc
alex100 {\uc1\u964X}\par\pard\li7733\ri0\sl-266\slmult0 \fs16\cf0\f2\charscalex1
00 {\uc1\u964X}\par\pard\sect\sectd\sbknone\pgwsxn11920\pghsxn16840\marglsxn666\
margrsxn133\cols6\colno1\colw2706\colsr-0\colno2\colw813\colsr-0\colno3\colw986\
colsr-0\colno4\colw2280\colsr-0\colno5\colw840\colsr-0\colno6\colw3493\pard\li20
80\ri0\sl-453\slmult0 \fs28\cf0\f0\charscalex100 {ln}\par\column\pard\li0\ri0\sl
-440\slmult0 \fs28\cf0\f2\charscalex100 {\uc1\u964X}\par\column\pard\li26\ri0\sl
-253\slmult0 \fs22\cf0\f2\charscalex100 {\uc1\u964X}\par\pard\li0\ri0\sl-333\slm
ult0 \fs22\cf0\f0\charscalex100 {0}\par\column\pard\li0\ri0\sl-453\slmult0 \fs28
\cf0\f0\charscalex100 {,}\par\column\pard\li0\ri0\sl-440\slmult0 \fs28\cf0\f2\ch
arscalex100 {\uc1\u964X}\par\column\pard\li253\ri0\sl-173\slmult0 \fs22\cf0\f0\c
harscalex100 {( }\fs22\cf0\f0\charscalex100 {)}\par\pard\li0\ri0\sl-813\slmult0
\fs74\cf0\f1\charscalex100 {z}{\sub \fs16\cf0\f0\charscalex100 {0}}\par\pard\sec
t\sectd\sbknone\pgwsxn11920\pghsxn16840\marglsxn666\margrsxn133\pard\li1746\ri0\
sl-453\slmult0 \*\tx4893\fs26\cf0\f0\charscalex100 {Otra medida de inters es el}\
tab \fs26\cf0\f0\charscalex100\b {tiempo medio entre fallos}\b0 \fs26\cf0\f0\cha
rscalex100 { (}\fs26\cf0\f0\charscalex100\b {MTTF}\b0 \fs26\cf0\f0\charscalex100
{, Mean}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {Time To
Faillure) que se define como:}\fs26\cf0\f0\charscalex100 { }\par\pard\li5800\ri
0\sl-280\slmult0 \fs16\cf0\f0\charscalex100 {n}\par\pard\sect\sectd\sbknone\pgws
xn11920\pghsxn16840\marglsxn666\margrsxn133\cols2\colno1\colw5053\colsr-0\colno2
\colw6066\pard\li4253\ri0\sl-293\slmult0 \fs28\cf0\f0\charscalex100 {MTTF}\par\c
olumn\pard\li0\ri0\sl-480\slmult0 \fs28\cf0\f2\charscalex100 {=}{ }\fs28\cf0\f0\
charscalex100 {1 }\fs28\cf0\f0\charscalex100 { }\fs28\cf0\f0\charscalex100 {t}{
\sub \fs28\cf0\f0\charscalex100 {n}}\fs38\cf0\f2\charscalex100 {\uc1\u8721X}{\su
b \fs16\cf0\f0\charscalex100 {i}}\par\pard\sect\sectd\sbknone\pgwsxn11920\pghsxn
16840\marglsxn666\margrsxn133\pard\li5760\ri0\sl-160\slmult0 \fs16\cf0\f0\charsc
alex100 {i}\fs16\cf0\f0\charscalex100 {=}\fs16\cf0\f0\charscalex100 {1}\par\pard
\li1746\ri0\sl-400\slmult0 \fs26\cf0\f0\charscalex100 {La expresin que relaciona
el tiempo medio entre fallos y la fiabilidad }\fs26\cf0\f0\charscalex100 {de}\pa
r\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {un programa es:}\fs
26\cf0\f0\charscalex100 { }\par\pard\li4173\ri0\sl-533\slmult0 \*\tx5320\*\tx558
6\fs28\cf0\f0\charscalex100 {MTTF}{ }\fs28\cf0\f2\charscalex100 {=}\tab \fs22\cf
0\f2\charscalex100 {\uc1\u8734X}\tab \fs28\cf0\f0\charscalex100 {R }\fs28\cf0\f0
\charscalex100 {t }\fs28\cf0\f0\charscalex100 {dt}\par\pard\sect\sectd\sbknone\p
gwsxn11920\pghsxn16840\marglsxn666\margrsxn133\pard\li5280\ri0\sl-226\slmult0 \f
s22\cf0\f0\charscalex100 {0}\par\pard\li1746\ri0\sl-373\slmult0 \fs26\cf0\f0\cha
rscalex100 {La figura siguiente muestra tres figuras relacionadas con el estudio
de la}\par\pard\li1026\ri0\sl-360\slmult0 \fs24\cf0\f0\charscalex100 {fiabilida
d del software: en (a) se muestra el historial de errores en la vida de un}\par\
pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {programa; (b) muestra
F(}\fs26\cf0\f2\charscalex100 {\uc1\u964X}\fs26\cf0\f0\charscalex100 {), la pro
babilidad de que aparezca un error en un}\fs26\cf0\f0\charscalex100 { }\par\pard
\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {programa en un intervalo
de tiempo determinado; por ltimo , en (c) se muestra}\par\pard\li1026\ri0\sl-360\

slmult0 \fs26\cf0\f0\charscalex100 {f(}\fs26\cf0\f2\charscalex100 {\uc1\u964X}\f


s26\cf0\f0\charscalex100 {), la funcin de densidad de probabilidad.}\fs26\cf0\f0\
charscalex100 { }\par\pard\sect\sectd\sbknone\pgwsxn11920\pghsxn16840\marglsxn66
6\margrsxn133\cols6\colno1\colw3853\colsr-0\colno2\colw720\colsr-0\colno3\colw40
0\colsr-0\colno4\colw933\colsr-0\colno5\colw1200\colsr-0\colno6\colw4013\pard\li
2893\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li2893\ri0\sl-213\slmult0 \fs18\cf0\p
ar\pard\li2893\ri0\sl-413\slmult0 \fs24\cf0\f0\charscalex100 {t1}\par\pard\li292
0\ri0\sl-333\slmult0 \fs24\cf0\f3\charscalex100 {l}\par\column\pard\li0\ri0\sl-2
13\slmult0 \fs18\cf0\par\pard\li0\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li0\ri0\
sl-413\slmult0 \fs24\cf0\f0\charscalex100 {t2}\par\pard\li26\ri0\sl-306\slmult0
\fs24\cf0\f3\charscalex100 {l}\par\column\pard\li0\ri0\sl-213\slmult0 \fs18\cf0\
par\pard\li0\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li0\ri0\sl-413\slmult0 \fs24\
cf0\f0\charscalex100 {t3}\par\pard\li26\ri0\sl-333\slmult0 \fs24\cf0\f3\charscal
ex100 {l}\par\column\pard\li0\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li0\ri0\sl-2
13\slmult0 \fs18\cf0\par\pard\li0\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li0\ri0\
sl-213\slmult0 \fs18\cf0\par\pard\li0\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li0\
ri0\sl-213\slmult0 \fs18\cf0\par\pard\li0\ri0\sl-213\slmult0 \fs18\cf0\par\pard\
li0\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li0\ri0\sl-213\slmult0 \fs18\cf0\par\p
ard\li0\ri0\sl-386\slmult0 \fs24\cf0\f0\charscalex100 {2 }\fs24\cf0\f0\charscale
x100 {-}\fs24\cf0\f0\charscalex100 { }\fs24\cf0\f0\charscalex100 {23}\fs24\cf0\f
0\charscalex100 { }\par\column\pard\li0\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li
0\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li0\ri0\sl-413\slmult0 \fs24\cf0\f0\char
scalex100 {t4}\par\pard\li13\ri0\sl-333\slmult0 \fs22\cf0\f3\charscalex100 {l}\p
ar\column\pard\li0\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li0\ri0\sl-213\slmult0
\fs18\cf0\par\pard\li0\ri0\sl-413\slmult0 \fs24\cf0\f0\charscalex100 {t5}\par\pa
rd\li26\ri0\sl-333\slmult0 \fs24\cf0\f3\charscalex100 {l}\par\pard\sect\sectd\sb
knone\pgwsxn11920\pghsxn16840\marglsxn666\margrsxn133\pard\sect\sectd\sbkpage
{\shp{\*\shpinst\shpleft3853\shptop2306\shpright3853\shpbottom5800\shpfhdr0\shpw
r3\shpwrk0\shpfblwtxt1\shplid2061\shpz0\shpbxpage\shpbypage
{\sp{\sn shapeType}{\sv 0}}
{\sp{\sn fFlipH}{\sv 0}}
{\sp{\sn fFlipV}{\sv 0}}
{\sp{\sn rotation}{\sv 0}}
{\sp{\sn geoRight}{\sv 0}}
{\sp{\sn geoBottom}{\sv 3494}}
{\sp{\sn shapePath}{\sv 4}}
{\sp{\sn pVerticies}{\sv 8;2;(0,0);(0,3493);}}
{\sp{\sn pSegmentInfo}{\sv 2;5;16384;45824;1;45824;32768}}
{\sp{\sn fFillOK}{\sv 1}}
{\sp{\sn fFilled}{\sv 0}}
{\sp{\sn lineWidth}{\sv 9525}}
{\sp{\sn lineColor}{\sv 0}}
{\sp{\sn lineDashing}{\sv 0}}
{\sp{\sn fLine}{\sv 1}}{\sp{\sn lineColor}{\sv 0}}
{\sp{\sn lineType}{\sv 0}}
{\sp{\sn fArrowheadsOK}{\sv 0}}
{\sp{\sn fBehindDocument}{\sv 1}}
{\sp{\sn fLayoutInCell}{\sv 1}}}}
{\shp{\*\shpinst\shpleft3853\shptop5800\shpright9853\shpbottom5800\shpfhdr0\shpw
r3\shpwrk0\shpfblwtxt1\shplid2062\shpz1\shpbxpage\shpbypage
{\sp{\sn shapeType}{\sv 0}}
{\sp{\sn fFlipH}{\sv 0}}
{\sp{\sn fFlipV}{\sv 0}}
{\sp{\sn rotation}{\sv 0}}
{\sp{\sn geoRight}{\sv 6000}}
{\sp{\sn geoBottom}{\sv 0}}
{\sp{\sn shapePath}{\sv 4}}
{\sp{\sn pVerticies}{\sv 8;2;(0,0);(6000,0);}}
{\sp{\sn pSegmentInfo}{\sv 2;5;16384;45824;1;45824;32768}}
{\sp{\sn fFillOK}{\sv 1}}

{\sp{\sn fFilled}{\sv 0}}


{\sp{\sn lineWidth}{\sv 9525}}
{\sp{\sn lineColor}{\sv 0}}
{\sp{\sn lineDashing}{\sv 0}}
{\sp{\sn fLine}{\sv 1}}{\sp{\sn lineColor}{\sv 0}}
{\sp{\sn lineType}{\sv 0}}
{\sp{\sn fArrowheadsOK}{\sv 0}}
{\sp{\sn fBehindDocument}{\sv 1}}
{\sp{\sn fLayoutInCell}{\sv 1}}}}
{\shp{\*\shpinst\shpleft3853\shptop2906\shpright9613\shpbottom2906\shpfhdr0\shpw
r3\shpwrk0\shpfblwtxt1\shplid2063\shpz2\shpbxpage\shpbypage
{\sp{\sn shapeType}{\sv 0}}
{\sp{\sn fFlipH}{\sv 0}}
{\sp{\sn fFlipV}{\sv 0}}
{\sp{\sn rotation}{\sv 0}}
{\sp{\sn geoRight}{\sv 5760}}
{\sp{\sn geoBottom}{\sv 0}}
{\sp{\sn shapePath}{\sv 4}}
{\sp{\sn pVerticies}{\sv 8;2;(0,0);(5760,0);}}
{\sp{\sn pSegmentInfo}{\sv 2;5;16384;45824;1;45824;32768}}
{\sp{\sn fFillOK}{\sv 1}}
{\sp{\sn fFilled}{\sv 0}}
{\sp{\sn lineWidth}{\sv 9525}}
{\sp{\sn lineColor}{\sv 0}}
{\sp{\sn lineDashing}{\sv 6}}
{\sp{\sn fLine}{\sv 1}}{\sp{\sn lineColor}{\sv 0}}
{\sp{\sn lineType}{\sv 0}}
{\sp{\sn fArrowheadsOK}{\sv 0}}
{\sp{\sn fBehindDocument}{\sv 1}}
{\sp{\sn fLayoutInCell}{\sv 1}}}}
{\shp{\*\shpinst\shpleft3680\shptop6666\shpright3680\shpbottom10160\shpfhdr0\shp
wr3\shpwrk0\shpfblwtxt1\shplid2064\shpz3\shpbxpage\shpbypage
{\sp{\sn shapeType}{\sv 0}}
{\sp{\sn fFlipH}{\sv 0}}
{\sp{\sn fFlipV}{\sv 0}}
{\sp{\sn rotation}{\sv 0}}
{\sp{\sn geoRight}{\sv 0}}
{\sp{\sn geoBottom}{\sv 3494}}
{\sp{\sn shapePath}{\sv 4}}
{\sp{\sn pVerticies}{\sv 8;2;(0,0);(0,3493);}}
{\sp{\sn pSegmentInfo}{\sv 2;5;16384;45824;1;45824;32768}}
{\sp{\sn fFillOK}{\sv 1}}
{\sp{\sn fFilled}{\sv 0}}
{\sp{\sn lineWidth}{\sv 9525}}
{\sp{\sn lineColor}{\sv 0}}
{\sp{\sn lineDashing}{\sv 6}}
{\sp{\sn fLine}{\sv 1}}{\sp{\sn lineColor}{\sv 0}}
{\sp{\sn lineType}{\sv 0}}
{\sp{\sn fArrowheadsOK}{\sv 0}}
{\sp{\sn fBehindDocument}{\sv 1}}
{\sp{\sn fLayoutInCell}{\sv 1}}}}
{\shp{\*\shpinst\shpleft3680\shptop10160\shpright9800\shpbottom10160\shpfhdr0\sh
pwr3\shpwrk0\shpfblwtxt1\shplid2065\shpz4\shpbxpage\shpbypage
{\sp{\sn shapeType}{\sv 0}}
{\sp{\sn fFlipH}{\sv 0}}
{\sp{\sn fFlipV}{\sv 0}}
{\sp{\sn rotation}{\sv 0}}
{\sp{\sn geoRight}{\sv 6120}}
{\sp{\sn geoBottom}{\sv 0}}
{\sp{\sn shapePath}{\sv 4}}

{\sp{\sn pVerticies}{\sv 8;2;(0,0);(6120,0);}}


{\sp{\sn pSegmentInfo}{\sv 2;5;16384;45824;1;45824;32768}}
{\sp{\sn fFillOK}{\sv 1}}
{\sp{\sn fFilled}{\sv 0}}
{\sp{\sn lineWidth}{\sv 9525}}
{\sp{\sn lineColor}{\sv 0}}
{\sp{\sn lineDashing}{\sv 6}}
{\sp{\sn fLine}{\sv 1}}{\sp{\sn lineColor}{\sv 0}}
{\sp{\sn lineType}{\sv 0}}
{\sp{\sn fArrowheadsOK}{\sv 0}}
{\sp{\sn fBehindDocument}{\sv 1}}
{\sp{\sn fLayoutInCell}{\sv 1}}}}\pgwsxn11920\pghsxn16840\marglsxn666\margrsxn13
3\margtsxn666\margbsxn213\cols2\colno1\colw8946\colsr-0\colno2\colw2173\pard\li2
160\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li2160\ri0\sl-213\slmult0 \fs18\cf0\pa
r\pard\li2160\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li2160\ri0\sl-213\slmult0 \f
s18\cf0\par\pard\li2160\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li2160\ri0\sl-306\
slmult0 \fs24\cf0\f0\charscalex100\i {Fig. 2.5(a). Distribucin de errores del sof
t. Histrico de errore}\i0 \fs24\cf0\f0\charscalex100\i {s}\i0 \fs24\cf0\f0\charsc
alex100\i { }\i0 \par\pard\li2946\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li2946\r
i0\sl-213\slmult0 \fs18\cf0\par\pard\li2946\ri0\sl-213\slmult0 \fs18\cf0\par\par
d\li2946\ri0\sl-400\slmult0 \fs26\cf0\f0\charscalex100 {1}\par\pard\li1266\ri0\s
l-213\slmult0 \fs18\cf0\par\pard\li1266\ri0\sl-400\slmult0 \*\tx2893\fs24\cf0\f0
\charscalex100 {F( ) = P[t<= ]}\tab \fs26\cf0\f2\charscalex100 {\uc1\u964X}\p
ar\column\pard\li0\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li0\ri0\sl-213\slmult0
\fs18\cf0\par\pard\li0\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li0\ri0\sl-213\slmu
lt0 \fs18\cf0\par\pard\li0\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li0\ri0\sl-213\
slmult0 \fs18\cf0\par\pard\li0\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li0\ri0\sl213\slmult0 \fs18\cf0\par\pard\li0\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li0\ri0
\sl-213\slmult0 \fs18\cf0\par\pard\li0\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li0
\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li0\ri0\sl-213\slmult0 \fs18\cf0\par\pard
\li0\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li0\ri0\sl-213\slmult0 \fs18\cf0\par\
pard\li0\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li0\ri0\sl-213\slmult0 \fs18\cf0\
par\pard\li0\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li0\ri0\sl-213\slmult0 \fs18\
cf0\par\pard\li0\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li0\ri0\sl-213\slmult0 \f
s18\cf0\par\pard\li0\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li0\ri0\sl-373\slmult
0 \fs26\cf0\f2\charscalex100 {\uc1\u964X}\par\pard\sect\sectd\sbknone\pgwsxn1192
0\pghsxn16840\marglsxn666\margrsxn133\pard\li1133\ri0\sl-213\slmult0 \fs18\cf0\p
ar\pard\li1133\ri0\sl-466\slmult0 \fs24\cf0\f0\charscalex100\i {Fig. 2.5(b). Dis
tribucin de errores del soft. Funcin distribucin intervalo de errores}\i0 \fs24\cf0
\f0\charscalex100\i { }\i0 \par\pard\li1333\ri0\sl-213\slmult0 \fs18\cf0\par\par
d\li1333\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li1333\ri0\sl-213\slmult0 \fs18\c
f0\par\pard\li1333\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li1333\ri0\sl-213\slmul
t0 \fs18\cf0\par\pard\li1333\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li1333\ri0\sl
-213\slmult0 \fs18\cf0\par\pard\li1333\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li1
333\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li1333\ri0\sl-440\slmult0 \fs24\cf0\f0
\charscalex100 {f( ) = P [t< ]}{ }\fs26\cf0\f2\charscalex100 {\uc1\u964X}\par
\pard\li8893\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li8893\ri0\sl-213\slmult0 \fs
18\cf0\par\pard\li8893\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li8893\ri0\sl-213\s
lmult0 \fs18\cf0\par\pard\li8893\ri0\sl-466\slmult0 \fs26\cf0\f2\charscalex100 {
\uc1\u964X}\par\pard\li1200\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li1200\ri0\sl466\slmult0 \fs24\cf0\f0\charscalex100\i {Fig. 2.5(c). Distribucin de errores del
soft. Funcin de densidad de probabilidad de}\i0 \par\pard\li4880\ri0\sl-360\slmu
lt0 \fs24\cf0\f0\charscalex100\i {errores}\i0 \par\pard\li1026\ri0\sl-213\slmult
0 \fs18\cf0\par\pard\li1026\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li1026\ri0\sl213\slmult0 \fs18\cf0\par\pard\li1026\ri0\sl-320\slmult0 \fs26\cf0\f0\charscalex
100\b {2.1.6.}\b0 \fs26\cf0\f0\charscalex100\b {-}\b0 \fs26\cf0\f0\charscalex100
\b { Mtricas de diseo.}\b0 \fs26\cf0\f0\charscalex100\b { }\b0 \par\pard\li1746\ri
0\sl-213\slmult0 \fs18\cf0\par\pard\li1746\ri0\sl-386\slmult0 \fs26\cf0\f0\chars
calex100 {Como ya se ha visto por las distintas mtricas estudiadas, la complejida
d de}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {un programa

crece con su tamao: los programas largos son ms difciles de}\par\pard\li1026\ri0\s


l-360\slmult0 \fs26\cf0\f0\charscalex100 {escribir y comprender, contienen habit
ualmente ms errores, y su d}\fs26\cf0\f0\charscalex100 {epuracin}\par\pard\li1026\
ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {resulta ms compleja. Con objeto de
reducir esta complejidad, los diseadores de}\par\pard\li1026\ri0\sl-360\slmult0
\fs26\cf0\f0\charscalex100 {software han hecho un uso progresivo de tcnicas de mo
dularizacin y diseo}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100
{estructurado. Entre las diversas ventajas de las tcnicas de diseo se pueden}\fs2
6\cf0\f0\charscalex100 { }\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\chars
calex100 {destacar las siguientes:}\fs26\cf0\f0\charscalex100 { }\par\pard\li497
3\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li4973\ri0\sl-213\slmult0 \fs18\cf0\par\
pard\li4973\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li4973\ri0\sl-453\slmult0 \fs2
4\cf0\f0\charscalex100 {2 }\fs24\cf0\f0\charscalex100 {-}\fs24\cf0\f0\charscalex
100 { }\fs24\cf0\f0\charscalex100 {24}\fs24\cf0\f0\charscalex100 { }\par\pard\se
ct\sectd\sbknone\pgwsxn11920\pghsxn16840\marglsxn666\margrsxn133\pard\sect\sectd
\sbkpage\pgwsxn11920\pghsxn16840\marglsxn666\margrsxn133\margtsxn666\margbsxn213
\cols2\colno1\colw1746\colsr-0\colno2\colw9373\pard\li1173\ri0\sl-213\slmult0 \f
s18\cf0\par\pard\li1173\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li1173\ri0\sl-213\
slmult0 \fs18\cf0\par\pard\li1173\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li1173\r
i0\sl-213\slmult0 \fs18\cf0\par\pard\li1173\ri0\sl-306\slmult0 \fs20\cf0\f2\char
scalex100 {\uc1\u61623X}\par\pard\li1173\ri0\sl-213\slmult0 \fs18\cf0\par\pard\l
i1173\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li1173\ri0\sl-413\slmult0 \fs18\cf0\
f2\charscalex100 {\uc1\u61623X}\par\pard\li1173\ri0\sl-213\slmult0 \fs18\cf0\par
\pard\li1173\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li1173\ri0\sl-413\slmult0 \fs
18\cf0\f2\charscalex100 {\uc1\u61623X}\par\pard\li1173\ri0\sl-213\slmult0 \fs18\
cf0\par\pard\li1173\ri0\sl-266\slmult0 \fs18\cf0\f2\charscalex100 {\uc1\u61623X}
\par\pard\li1173\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li1173\ri0\sl-266\slmult0
\fs18\cf0\f2\charscalex100 {\uc1\u61623X}\par\column\pard\li0\ri0\sl-213\slmult
0 \fs18\cf0\par\pard\li0\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li0\ri0\sl-213\sl
mult0 \fs18\cf0\par\pard\li0\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li0\ri0\sl-21
3\slmult0 \fs18\cf0\par\pard\li0\ri0\sl-306\slmult0 \fs26\cf0\f0\charscalex100\b
{Comprensibilidad}\b0 \fs26\cf0\f0\charscalex100 {: programadores y usuarios pu
eden comprender}\fs26\cf0\f0\charscalex100 { }\par\pard\li0\ri0\sl-360\slmult0 \
fs26\cf0\f0\charscalex100 {fcilmente la lgica del programa.}\fs26\cf0\f0\charscale
x100 { }\par\pard\li0\ri0\sl-480\slmult0 \fs26\cf0\f0\charscalex100\b {Manejabil
idad}\b0 \fs26\cf0\f0\charscalex100 {: los gestores pueden asignar fcilmente pers
onal y}\fs26\cf0\f0\charscalex100 { }\par\pard\li0\ri0\sl-360\slmult0 \fs26\cf0\
f0\charscalex100 {recursos }\fs26\cf0\f0\charscalex100 {a los distintos mdulos re
presentados por tareas.}\fs26\cf0\f0\charscalex100 { }\par\pard\li0\ri0\sl-480\s
lmult0 \fs26\cf0\f0\charscalex100\b {Eficiencia}\b0 \fs26\cf0\f0\charscalex100 {
: el esfuerzo de implementacin puede reducirse.}\fs26\cf0\f0\charscalex100 { }\pa
r\pard\li0\ri0\sl-480\slmult0 \fs26\cf0\f0\charscalex100\b {Reduccin de errores}\
b0 \fs26\cf0\f0\charscalex100 {: los planes de prueba se simplifican notablement
e.}\fs26\cf0\f0\charscalex100 { }\par\pard\li0\ri0\sl-480\slmult0 \fs26\cf0\f0\c
harscalex100\b {Reduccin del esfuerzo de mantenimiento}\b0 \fs26\cf0\f0\charscal
ex100 {: la divisin en mdulos}\par\pard\li0\ri0\sl-360\slmult0 \fs26\cf0\f0\charsc
alex100 {favorece que las distintas funciones las lleven a cabo mdulos}\fs26\cf0\
f0\charscalex100 { }\par\pard\li0\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100
{diferenciados.}\fs26\cf0\f0\charscalex100 { }\par\pard\li0\ri0\sl-213\slmult0 \
fs18\cf0\par\pard\li0\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li0\ri0\sl-213\slmul
t0 \fs18\cf0\par\pard\li0\ri0\sl-320\slmult0 \fs26\cf0\f0\charscalex100 {Aunque
estos beneficios tambin son discutidos y para ello se alega toda}\par\pard\sect\s
ectd\sbknone\pgwsxn11920\pghsxn16840\marglsxn666\margrsxn133\pard\li1026\ri0\sl360\slmult0 \fs26\cf0\f0\charscalex100 {cla}\fs26\cf0\f0\charscalex100 {se de in
convenientes, en general se admite que el paso a la modularidad es un}\par\pard\
li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {gran salto adelante. Pero
el problema que se plantea ahora se refiere a los mdulos}\par\pard\li1026\ri0\sl360\slmult0 \fs24\cf0\f0\charscalex100 {en si: Cul es el tamao idneo, la complejidad
mxima, la extensin adecuada de}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\c
harscalex100 {un mdulo?}\fs26\cf0\f0\charscalex100 { }\par\pard\li1746\ri0\sl-480

\slmult0 \fs26\cf0\f0\charscalex100 {Algunas de las mtricas vistas hasta el momen


to tratan este problema. As}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\char
scalex100 {algunos autores estiman que el tamao de un mdulo debe oscilar entre las
50}\fs26\cf0\f0\charscalex100 {-}\fs26\cf0\f0\charscalex100 {200}\par\pard\li10
26\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {lneas de cdigo. Otros simplement
e indican que un mdulo debe completar una}\par\pard\li1026\ri0\sl-360\slmult0 \fs
26\cf0\f0\charscalex100 {funcin por s solo. La}\fs26\cf0\f0\charscalex100 { comple
jidad lmite de un mdulo se fija en algunos casos}\par\pard\li1026\ri0\sl-360\slmul
t0 \fs26\cf0\f0\charscalex100 {en un nmero de complejidad ciclomtica igual a 10.}\
fs26\cf0\f0\charscalex100 { }\par\pard\li1746\ri0\sl-480\slmult0 \fs26\cf0\f0\ch
arscalex100 {Otras discusiones se centran en la organizacin de los mdulos en el}\p
ar\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {programa: estructu
ras en rbol, o lineales. Con objeto de obtener una valoracin}\par\pard\li1026\ri0\
sl-360\slmult0 \fs26\cf0\f0\charscalex100 {de los mdulos y una disposicin que pued
a emplearse como base para}\fs26\cf0\f0\charscalex100 { }\par\pard\li1026\ri0\sl
-360\slmult0 \fs26\cf0\f0\charscalex100 {comparaciones, surgen las mtricas orient
adas al diseo.}\fs26\cf0\f0\charscalex100 { }\par\pard\li1746\ri0\sl-480\slmult0
\fs26\cf0\f0\charscalex100 {Muchas de estas mtricas son generalizaciones de otras
referidas a mbitos}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex10
0 {ms restringidos (nmeros de complejidad ciclom}\fs26\cf0\f0\charscalex100 {tica,
mtricas de la ciencia del}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charsc
alex100 {software,...)}\fs26\cf0\f0\charscalex100 { }\par\pard\li1746\ri0\sl-480
\slmult0 \fs26\cf0\f0\charscalex100 {Uno de los estudios ms completos relativos a
la cuestin de valorar los}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\chars
calex100 {mdulos software es el llevado a cabo por Troy y Zweben en el que se rel
aciona}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {una serie
de mtricas bsicas con valores de calidad representados por la}{ }\fs26\cf0\f0\cha
rscalex100\b {tasa de}\b0 \par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\chars
calex100\b {modificaciones en pruebas}\b0 { }\fs26\cf0\f0\charscalex100 {.}\fs26
\cf0\f0\charscalex100 { }\par\pard\li1746\ri0\sl-480\slmult0 \fs26\cf0\f0\charsc
alex100 {En este estudio, un gran sistema fue dividido en mdulos usando varias}\p
ar\pard\li1026\ri0\sl-360\slmult0 \fs24\cf0\f0\charscalex100 {convenciones de di
seo. Cada mdulo se codific, prob y prepar para la}\fs24\cf0\f0\charscalex100 { }\par\
pard\li4973\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li4973\ri0\sl-213\slmult0 \fs1
8\cf0\par\pard\li4973\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li4973\ri0\sl-426\sl
mult0 \fs24\cf0\f0\charscalex100 {2 }\fs24\cf0\f0\charscalex100 {-}\fs24\cf0\f0\
charscalex100 { }\fs24\cf0\f0\charscalex100 {25}\fs24\cf0\f0\charscalex100 { }\p
ar\pard\sect\sectd\sbknone\pgwsxn11920\pghsxn16840\marglsxn666\margrsxn133\pard\
sect\sectd\sbkpage\pgwsxn11920\pghsxn16840\marglsxn666\margrsxn133\margtsxn666\m
argbsxn213\pard\li1026\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li1026\ri0\sl-213\s
lmult0 \fs18\cf0\par\pard\li1026\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li1026\ri
0\sl-213\slmult0 \fs18\cf0\par\pard\li1026\ri0\sl-213\slmult0 \fs18\cf0\par\pard
\li1026\ri0\sl-306\slmult0 \fs26\cf0\f0\charscalex100 {integracin. Se registraron
los cambios realizados en ca}\fs26\cf0\f0\charscalex100 {da mdulo. Cada}\fs26\cf
0\f0\charscalex100 { }\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscale
x100 {implementacin de diseo se acompa de un grfico que representaba las}\fs26\cf0\f0
\charscalex100 { }\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100
{interconexiones entre los mdulos. En total se obtuvieron veintiuna mtricas}\par\
pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {asociadas a cada grfic
o.}\fs26\cf0\f0\charscalex100 { }\par\pard\li1746\ri0\sl-480\slmult0 \fs26\cf0\f
0\charscalex100 {Los principios que dirigen estas mtricas son:}\fs26\cf0\f0\chars
calex100 { }\par\pard\sect\sectd\sbknone\pgwsxn11920\pghsxn16840\marglsxn666\mar
grsxn133\cols2\colno1\colw1746\colsr-0\colno2\colw9373\pard\li1173\ri0\sl-213\sl
mult0 \fs18\cf0\par\pard\li1173\ri0\sl-266\slmult0 \fs20\cf0\f2\charscalex100 {\
uc1\u61623X}\par\pard\li1173\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li1173\ri0\sl
-213\slmult0 \fs18\cf0\par\pard\li1173\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li1
173\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li1173\ri0\sl-213\slmult0 \fs18\cf0\pa
r\pard\li1173\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li1173\ri0\sl-213\slmult0 \f
s18\cf0\par\pard\li1173\ri0\sl-426\slmult0 \fs18\cf0\f2\charscalex100 {\uc1\u616
23X}\par\pard\li1173\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li1173\ri0\sl-213\slm

ult0 \fs18\cf0\par\pard\li1173\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li1173\ri0\


sl-213\slmult0 \fs18\cf0\par\pard\li1173\ri0\sl-213\slmult0 \fs18\cf0\par\pard\l
i1173\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li1173\ri0\sl-213\slmult0 \fs18\cf0\
par\pard\li1173\ri0\sl-426\slmult0 \fs18\cf0\f2\charscalex100 {\uc1\u61623X}\par
\pard\li1173\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li1173\ri0\sl-213\slmult0 \fs
18\cf0\par\pard\li1173\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li1173\ri0\sl-213\s
lmult0 \fs18\cf0\par\pard\li1173\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li1173\ri
0\sl-213\slmult0 \fs18\cf0\par\pard\li1173\ri0\sl-280\slmult0 \fs18\cf0\f2\chars
calex100 {\uc1\u61623X}\par\pard\li1173\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li
1173\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li1173\ri0\sl-213\slmult0 \fs18\cf0\p
ar\pard\li1173\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li1173\ri0\sl-213\slmult0 \
fs18\cf0\par\pard\li1173\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li1173\ri0\sl-280
\slmult0 \fs18\cf0\f2\charscalex100 {\uc1\u61623X}\par\column\pard\li0\ri0\sl-48
0\slmult0 \fs26\cf0\f0\charscalex100\b {Acoplamiento}\b0 \fs26\cf0\f0\charscalex
100 {: Se mide como el nmero de interconexiones entre}\fs26\cf0\f0\charscalex100
{ }\par\pard\li0\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {mdulos. El acopla
miento crece con el nmero de llamadas, o con la}\fs26\cf0\f0\charscalex100 { }\pa
r\pard\li0\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {cantidad de datos comp
artidos. Se supone que un diseo con un}\fs26\cf0\f0\charscalex100 { }\par\pard\li
0\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {acoplamiento alto puede contene
r ms errores.}\fs26\cf0\f0\charscalex100 { Se cuantifica como el}\par\pard\li0\ri
0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {nmero de conexiones por nodo del grfi
co de diseo.}\fs26\cf0\f0\charscalex100 { }\par\pard\li0\ri0\sl-480\slmult0 \fs26
\cf0\f0\charscalex100\b {Cohesin}\b0 \fs26\cf0\f0\charscalex100 {: Valora las rel
aciones entre los elementos de un mdulo. En un}\par\pard\li0\ri0\sl-360\slmult0 \
fs26\cf0\f0\charscalex100 {diseo cohesivo, las funciones estn ubicadas en un solo
mdulo. Los}\par\pard\li0\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {diseos co
n una cohesin baja contendrn ms errores. Las medidas que}\par\pard\li0\ri0\sl-360\s
lmult0 \fs26\cf0\f0\charscalex100 {valoren la informacin compartida entre mdulos c
uantificarn la}\fs26\cf0\f0\charscalex100 { }\par\pard\li0\ri0\sl-360\slmult0 \fs
26\cf0\f0\charscalex100 {cohesin.}\fs26\cf0\f0\charscalex100 { }\par\pard\li0\ri0
\sl-480\slmult0 \fs26\cf0\f0\charscalex100\b {Complejidad}\b0 \fs26\cf0\f0\chars
calex100 {: Un diseo debe ser lo ms simple posible. La complejidad}\par\pard\li0\r
i0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {crece }\fs26\cf0\f0\charscalex100
{c}\fs26\cf0\f0\charscalex100 {on el nmero de construcciones de control, y el nmer
o de}\fs26\cf0\f0\charscalex100 { }\par\pard\li0\ri0\sl-360\slmult0 \fs26\cf0\f0
\charscalex100 {mdulos de un programa. Un diseo complejo contendr ms errores. La}\pa
r\pard\li0\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {complejidad se evidenc
ia en el nmero de elementos del grfico de diseo.}\fs26\cf0\f0\charscalex100 { }\par
\pard\li0\ri0\sl-480\slmult0 \fs26\cf0\f0\charscalex100\b {Modularidad}\b0 \fs26
\cf0\f0\charscalex100 {: El grado de modularidad afecta a la calidad del diseo. E
s}\par\pard\li0\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {preferible un exc
eso a un defecto de modularidad, pues en este ltimo caso}\par\pard\li0\ri0\sl-360
\slmult0 \fs26\cf0\f0\charscalex100 {contendr ms errores. La cuantificacin de la mo
dularidad se obtiene}\par\pard\li0\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100
{midiendo la cantidad de elementos del grfico.}\fs26\cf0\f0\charscalex100 { }\pa
r\pard\li0\ri0\sl-480\slmult0 \fs26\cf0\f0\charscalex100\b {Tamao}\b0 \fs26\cf0\f
0\charscalex100 {: Un diseo con grandes mdulos, o gran profundidad en su grfico}\pa
r\pard\li0\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {contendr ms errores. De
hecho, complejidad y tamao estn muy}\fs26\cf0\f0\charscalex100 { }\par\pard\li0\ri
0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {relacionados y las consecuencias de
un exceso de cualquiera de los dos}\par\pard\li0\ri0\sl-360\slmult0 \fs26\cf0\f
0\charscalex100 {principios tiene los mismo resultados.}\fs26\cf0\f0\charscalex1
00 { }\par\pard\li0\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li0\ri0\sl-213\slmult0
\fs18\cf0\par\pard\li0\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li0\ri0\sl-320\slm
ult0 \fs26\cf0\f0\charscalex100 {Las conclusiones finales del estudio sugieren q
ue a pesar de la correlacin}\par\pard\sect\sectd\sbknone\pgwsxn11920\pghsxn16840\
marglsxn666\margrsxn133\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex10
0 {encontrada entre los factores estudiados y los errores encontrados, sigue hab
iendo}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {una serie

de factores no detectados que determinan a su vez la calidad de un}\par\pard\li1


026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {d}\fs26\cf0\f0\charscalex100
{iseo. De todas formas es posible afirmar que las interconexiones entre}\fs26\cf0
\f0\charscalex100 { }\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex
100 {mdulos, y la complejidad de los diseos aumentan notablemente los errores, y}\
par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {disminuyen la cal
idad.}\fs26\cf0\f0\charscalex100 { }\par\pard\li4973\ri0\sl-213\slmult0 \fs18\cf
0\par\pard\li4973\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li4973\ri0\sl-213\slmult
0 \fs18\cf0\par\pard\li4973\ri0\sl-426\slmult0 \fs24\cf0\f0\charscalex100 {2 }\f
s24\cf0\f0\charscalex100 {-}\fs24\cf0\f0\charscalex100 { }\fs24\cf0\f0\charscale
x100 {26}\fs24\cf0\f0\charscalex100 { }\par\pard\sect\sectd\sbknone\pgwsxn11920\
pghsxn16840\marglsxn666\margrsxn133\pard\sect\sectd\sbkpage\pgwsxn11920\pghsxn16
840\marglsxn666\margrsxn133\margtsxn666\margbsxn213\pard\li1026\ri0\sl-213\slmul
t0 \fs18\cf0\par\pard\li1026\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li1026\ri0\sl
-213\slmult0 \fs18\cf0\par\pard\li1026\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li1
026\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li1026\ri0\sl-306\slmult0 \fs26\cf0\f0
\charscalex100\b {2.1.7.}\b0 \fs26\cf0\f0\charscalex100\b {-}\b0 \fs26\cf0\f0\ch
arscalex100\b { Otra mtricas del software.}\b0 \fs26\cf0\f0\charscalex100\b { }\b
0 \par\pard\li1746\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li1746\ri0\sl-386\slmul
t0 \fs26\cf0\f0\charscalex100 {Adems de las mencionadas, existen algunos otras mtr
icas que valoran}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100
{ciertos aspectos del software.}\fs26\cf0\f0\charscalex100 { }\par\pard\li1746\r
i0\sl-480\slmult0 \fs26\cf0\f0\charscalex100 {Las}{ }\fs26\cf0\f0\charscalex100\
b {mtricas de reusabilidad}\b0 \fs26\cf0\f0\charscalex100 { tratan de medir el gr
ado en que un elemento}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscal
ex100 {software puede ser empleado por otros programas, en otras palabras, su}\f
s26\cf0\f0\charscalex100 { }\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\cha
rscalex100 {independencia. Debido a que es difcil valorar objeti}\fs26\cf0\f0\cha
rscalex100 {vamente esta independencia,}\par\pard\li1026\ri0\sl-360\slmult0 \fs2
6\cf0\f0\charscalex100 {la referencia ms comn es la independencia del hardware exp
resada en nmero}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {
de cambios en el cdigo al adaptar un programa a una nueva plataforma. Esta}\par\p
ard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {medida puede ampliarse
al nmero de cambios realizados en el cdigo por lneas}\par\pard\li1026\ri0\sl-360\s
lmult0 \fs26\cf0\f0\charscalex100 {al adaptarlo a un nuevo sistema operativo, o
a un nuevo sistema grfico. Las}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\c
harscalex100 {mtricas de}{ }\fs26\cf0\f0\charscalex100\b {portabilidad}\b0 \fs26\
cf0\f0\charscalex100 { valoran aspectos muy similares.}\fs26\cf0\f0\charscalex10
0 { }\par\pard\li1746\ri0\sl-480\slmult0 \fs26\cf0\f0\charscalex100 {Las}{ }\fs2
6\cf0\f0\charscalex100\b {mtricas de mantenibilidad}\b0 \fs26\cf0\f0\charscalex10
0 { se enuncian como funcin de los valores}\par\pard\li1026\ri0\sl-360\slmult0 \f
s26\cf0\f0\charscalex100 {de concisin, consistencia, instrumentacin,}\fs26\cf0\f0\
charscalex100 { modularidad, autodocumentacin y}\par\pard\li1026\ri0\sl-360\slmul
t0 \fs26\cf0\f0\charscalex100 {simplicidad.}\fs26\cf0\f0\charscalex100 { }\par\p
ard\li1746\ri0\sl-480\slmult0 \fs24\cf0\f0\charscalex100 {Las mtricas de testeabi
lidad (o capacidad de probar el software) son}\fs24\cf0\f0\charscalex100 { }\par
\pard\li1026\ri0\sl-360\slmult0 \fs24\cf0\f0\charscalex100 {funcin de la auditabi
lidad (capacidad de someter el software a auditora), la}\fs24\cf0\f0\charscalex10
0 { }\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {complejidad
de software (ciclomtica, contando los GOTO y bucles, o segn los}\par\pard\li1026\
ri0\sl-360\slmult0 \*\tx2053\*\tx2586\*\tx3066\*\tx4146\*\tx4746\*\tx6106\*\tx80
93\fs26\cf0\f0\charscalex100 {valores}\tab \fs26\cf0\f0\charscalex100 {de}\tab \
fs26\cf0\f0\charscalex100 {la}\tab \fs26\cf0\f0\charscalex100 {Ciencia}\tab \fs2
6\cf0\f0\charscalex100 {del}\tab \fs26\cf0\f0\charscalex100 {Software),}\tab \fs
26\cf0\f0\charscalex100 {instrumentacin,}\tab \fs26\cf0\f0\charscalex100 {modular
idad,}\fs26\cf0\f0\charscalex100 { }\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf
0\f0\charscalex100 {autodocumentacin y simplicidad. }\fs26\cf0\f0\charscalex100 {
}\par\pard\sect\sectd\sbknone\pgwsxn11920\pghsxn16840\marglsxn666\margrsxn133\c
ols2\colno1\colw4800\colsr-0\colno2\colw6320\pard\li1746\ri0\sl-480\slmult0 \fs2
6\cf0\f0\charscalex100 {Las de}\fs26\cf0\f0\charscalex100 { }{ }\fs26\cf0\f0\cha

rscalex100\b {flexibilidad}\b0 \par\column\pard\li0\ri0\sl-480\slmult0 \fs26\cf0


\f0\charscalex100 {tienen como componentes a la complejidad, la}\fs26\cf0\f0\cha
rscalex100 { }\par\pard\sect\sectd\sbknone\pgwsxn11920\pghsxn16840\marglsxn666\m
argrsxn133\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {concisin, l
a consistencia, la expandibilidad, la generalidad, la au}\fs26\cf0\f0\charscalex
100 {todocumentacin,}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex1
00 {y la simplicidad.}\fs26\cf0\f0\charscalex100 { }\par\pard\li1746\ri0\sl-480\
slmult0 \fs26\cf0\f0\charscalex100 {La interpretacin que se da de los componente
s de cada una de estas}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscal
ex100 {mtricas es, no obstante, discutible e imprecisa, sin un mtodo definido para
}\par\pard\li1026\ri0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {obtener una val
oracin. Tambin se carece de expresiones que determinen el peso}\par\pard\li1026\ri
0\sl-360\slmult0 \fs26\cf0\f0\charscalex100 {que cada componente tiene en la mtri
ca.}\fs26\cf0\f0\charscalex100 { }\par\pard\li4973\ri0\sl-213\slmult0 \fs18\cf0\
par\pard\li4973\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li4973\ri0\sl-213\slmult0
\fs18\cf0\par\pard\li4973\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li4973\ri0\sl-21
3\slmult0 \fs18\cf0\par\pard\li4973\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li4973
\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li4973\ri0\sl-213\slmult0 \fs18\cf0\par\p
ard\li4973\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li4973\ri0\sl-213\slmult0 \fs18
\cf0\par\pard\li4973\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li4973\ri0\sl-213\slm
ult0 \fs18\cf0\par\pard\li4973\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li4973\ri0\
sl-213\slmult0 \fs18\cf0\par\pard\li4973\ri0\sl-213\slmult0 \fs18\cf0\par\pard\l
i4973\ri0\sl-213\slmult0 \fs18\cf0\par\pard\li4973\ri0\sl-213\slmult0 \fs18\cf0\
par\pard\li4973\ri0\sl-440\slmult0 \fs24\cf0\f0\charscalex100 {2 }\fs24\cf0\f0\c
harscalex100 {-}\fs24\cf0\f0\charscalex100 { }\fs24\cf0\f0\charscalex100 {27}\fs
24\cf0\f0\charscalex100 { }\par}

You might also like