Introducción a la Ingeniería de Software Cualidades del software
Correctitud Correctitud (Correctness):....... (Correctness):................. ..................... ..................... ..................... ..................... ............................................. ................................... Conabilidad (Reliability):............................................................................................... Robustez Robustez (Robustness):.. (Robustness):............. ..................... ..................... ..................... ..................... ..................... ........................................... ................................. !erfor"ance (ta"bi#n $cciency):................................................................................. %"igabilidad (&riendliness):..... (&riendliness):................ ..................... ..................... ..................... ..................... ............................................ ................................. ericabilidad (eriability):........................................................................................... antenibilidad (aintainability):............ (aintainability):....................... ..................... ..................... ...................... ........................................ .............................
1 1 ' ' '
Reparabilidad (Reparability):.................................................................................................. (Reparability):..................................................................................................4 4 Evolucionabilidad (Evolvability):............................................................................................. (Evolvability):.............................................................................................4 4
Reusabilidad Reusabilidad (Reusability):..... (Reusability):............... ..................... ..................... ..................... ...................... .............................................. ................................... !ortabilidad !ortabilidad (!ortability):....... (!ortability):.................. ..................... ..................... ..................... ..................... ..................... .................................... .......................... Co"+rensibilidad Co"+rensibilidad (,nderstandability):......... (,nderstandability):.................... ..................... ..................... ............................................. .................................. Intero+erabilidad (Intero+erability):................................................................................ !roductiidad !roductiidad (!roductiity):....... (!roductiity):.................. ..................... ..................... ..................... ................................................... ......................................... /+ortunidad (0i"eliness)......... (0i"eliness)................... ..................... ..................... ..................... ..................... ............................................ .................................. isibilidad (isibility):.............. (isibility):........................ ..................... ..................... ..................... ..................... ............................................. ...................................
* *
Correctitud (Correctness): ,n +rogra"a es funcional"ente correcto si se co"+orta de acuerdo a la es+ecicación de las funciones (es+ecicación de re2ueri"ientos funcionales) 2ue debería +roeer. $sta denición de correctitud asu"e 2ue e3iste una es+ecicación de re2ueri"ientos funcionales del siste"a y 2ue es +osible deter"inar en for"a no a"bigua si las cu"+le o no. Se +resentan diersas dicultades cuando no e3iste dic4a es+ecicación5 o si e3iste +ero est6 escrita infor"al"ente utilizando5 +or e7e"+lo5 lengua7e natural +or lo 2ue es +osible 2ue contenga a"biguedades. 8a correctitud es una +ro+iedad "ate"6tica 2ue establece la e2uialencia entre el software y su es+ecicación5 +or lo 2ue cuanto "6s riguroso se 4aya sido en la es+ecicación5 "6s +recisa y siste"6tica siste"6tica +odr6 ser su ealuación. ealuación. !osterior"ente se er6 2ue la correctitud +uede ser ealuada "ediante diersos "#todos5 algu alguno nos s de enfo enfo2u 2ue e e3+e e3+eri ri"e "ent ntal al co"o co"o las las +rue +rueba bas5 s5 otr otros de enfo enfo2u 2ue e anal analít ític ico o co"o co"o ericación for"al de la correctitud. $s de notar 2ue esta denición de correctitud no to"a en consideración el 2ue la es+ecicación en sí "is"a +uede ser incorrecta +or contener inconsistencias internas5 o no corres+onder de for"a adecuada a las necesidades +ara las 2ue fue concebido el +rogra"a.
Confabilidad (Reliability): Infor"al"ente el software es conable si el usuario +uede tenerle conanza. &or"al"ente la conabilidad se dene en t#r"inos del co"+orta"iento estadístico: la +robabilidad de 2ue el software o+ere co"o es es+erado en un interalo de tie"+o es+ecicado. Contraria"ente a la correctitud 2ue es una cualidad absoluta5 la conabilidad es relatia. Cual2uier desiación de los re2ueri"ientos 4ace 2ue el siste"a sea incorrecto5 +or otro lado5 si la consecuencia de un error en el software no es seria5 el software incorrecto a9n +uede ser conable. $n el caso ideal en el 2ue la es+ecicación de re2ueri"ientos funcionales ca+tura todas las +ro+i +ro+ieda edades des deseab deseables les de la a+lica a+licació ción n y no 4ay +ro+i +ro+ieda edades des indese indeseabl ables es erróne errónea"e a"ente nte es+ecicadas5 el con7unto de todos los +rogra"as conables incluye el con7unto de +rogra"as correctos5 +ero no a la inersa. $n la +r6ctica5 co"o la es+ecicación es un "odelo de lo 2ue 2uiere el usuario 2ue +uede ser o no adecuado +ara sus necesidades y re2ueri"ientos reales5 lo "63i"o "63i"o 2ue +uede +uede 4acer 4acer el softwa software re es cu"+li cu"+lirr los re2ue re2ueri" ri"ien iento tos s es+eci es+ecica cados dos del "odelo "odelo55 sin asegu asegurar rar la adecua adecuació ción n del "is"o "is"o.. !uede !ueden n teners tenerse e a+lica a+licacio ciones nes corre correcta ctas s diseadas +ara re2ueri"ientos ;incorrectos<5 +or lo 2ue la correctitud del software +uede no ser suciente +ara garantizar al usuario 2ue el software se co"+orta co"o ;es es+erado<. Instituto de Co"+utación = &acultad &acultad de Ingeniería = ,niersidad de la Re+9blica !6gina 1 de >
Introducción a la Ingeniería de Software
8os +roductos de la ingeniería son conables5 +ero desafortunada"ente los +roductos del software son en general liberados con7unta"ente con una lista de ;bugs< conocidos. $ste es uno de los sínto"as de la in"adurez de la Ingeniería de Software co"o disci+lina ingenieril y sólo +odr6 alcanzar ese estatus cuando se logre 2ue la conabilidad en el software sea co"+arable a la conabilidad en otros +roductos co"o +or e7e"+lo los auto"óiles.
Robustez (Robustness): ,n +roga"a es robusto si se co"+orta en for"a razonable a9n en circunstancias 2ue no fueron antici+adas en la es+ecicación de re2ueri"ientos? +or e7e"+lo cuando encuentra datos de entrada incorrectos o alg9n "alfunciona"iento del 4ardware co"o rotura de disco. ,n +rogra"a 2ue genere un error no recu+erable en tie"+o de e7ecución tan +ronto co"o el usuario ingrese inadertida"ente un co"ando incorrecto no ser6 robusto5 aun2ue +odría ser correcto si en la es+ecicación de re2ueri"ientos no se establece la acción a to"ar si se ingresa un co"ando incorrecto. 8a robustez es una cualidad difícil de denir5 ya 2ue si se +udiera establecer en for"a +recisa lo 2ue se debiera 4acer +ara obtener una a+licación robusta5 se +odría es+ecicar co"+leta"ente el co"+orta"iento ;razonable<5 con lo cual sería e2uialente a la correctitud5 o a la conabilidad en el caso ideal "encionado en la denición anterior. Se +uede obserar 2ue la robustez y la correctitud est6n fuerte"ente relacionadas: si se incluye un re2ueri"iento en la es+ecicación ser6 un te"a de correctitud5 si no se incluye +odría ser un te"a de robustez. 8a línea diisoria entre a"bos es la es+ecicación del siste"a. 8a relación con la conabilidad surge del 4ec4o de 2ue no todos los co"+orta"ientos incorrectos signican +roble"as igual"ente serios5 algunos co"+orta"ientos incorrectos +ueden ser tolerados. Observación: 8a correctitud5 conabilidad y robustez ta"bi#n se a+lican al +roceso de +roducción del software5 +or e7e"+lo un +roceso es robusto si +uede ada+tarse a ca"bios no +reistos en el entorno co"o ser una nuea liberación del siste"a o+eratio o una transferencia re+entina de la "itad de los e"+leados a otra sección5 un +roceso es conable si llea consistente"ente a la +roducción de +roductos de alta calidad.
Perorance (tabi!n Efcciency): $n la Ingeniería de Software general"ente +erfor"ance e2uiale a eciencia. ,n siste"a de software es eciente si utiliza los recursos co"+utacionales en for"a econó"ica. 8a +erfor"ance de un siste"a es i"+ortante +or2ue afecta su usabilidad5 +or e7e"+lo5 si es "uy lento reduce la +roductiidad de los usuarios5 si usa de"asiado es+acio de disco +uede ser "uy caro de e7ecutar5 si utiliza de"asiada "e"oria +uede afectar al resto de las a+licaciones 2ue se est6n e7ecutando o e7ecutarse de"asiado lenta"ente "ientras el siste"a o+eratio intenta balancear el uso de la "e"oria +or +arte de las distintas a+licaciones. @etr6s de estos +roble"as est6n los lí"ites ca"biantes de la eciencia seg9n ca"bia la tecnología5 ya 2ue la isión de ;de"asiado caro< ca"bia constante"ente seg9n los aances tecnológicos5 actual"ente una co"+utadora cuesta bastante "enos 2ue 4ace unos aos y son bastante "6s +oderosas. 8a +erfor"ance de un siste"a ta"bi#n afecta su escalabilidad: un algorit"o de orden al cuadrado +uede funcionar bien con entradas +e2ueas y no funcionar +ara nada con entradas "uy grandes.
"i#abilidad ($riendliness): ,n siste"a de software es a"igable si un usuario 4u"ano lo encuentra f6cil de utilizar. $sta denición reAe7a la naturaleza sub7etia de la a"igabilidad: una a+licación utilizada +or
Introducción a la Ingeniería de Software usuarios no e3+erientes calica co"o a"igable +or arias +ro+iedades distintas a las de una a+licación utilizada +or +rogra"adores e3+ertos5 +or e7e"+lo5 los +ri"eros a+reciarían el uso de "en9es "ientras los segundos se sentirían "6s có"odos ingresando co"andos. 8a interfaz de usuario es un co"+onente i"+ortante de la a"igabilidad al usuario5 siguiendo el e7e"+lo5 un siste"a con una interfaz de entana y un "ouse es "6s a"igable +ara un usuario no e3+eriente5 "ientras 2ue un usuario "6s aanzado +odría +referir utilizar un con7unto de co"andos. 8a a"igabilidad es "6s 2ue la interfaz de usuario5 +or e7e"+lo5 un siste"a e"bebido no tiene interfaz 4u"ana5 ya 2ue sólo interact9a con 4ardware y 2uiz6s con otros siste"as. $n este caso la a"igabilidad est6 dada +or la facilidad con 2ue el siste"a +uede congurarse y ada+tarse al a"biente de 4ardware. 8as cualidades del software istas +reia"ente ta"bi#n afectan a la a"igabilidad5 +or e7e"+lo un siste"a 2ue +roduce res+uestas erróneas no es a"igable sin i"+ortar lo ;linda< 2ue sea la interfaz de usuario5 del "is"o "odo 2ue un siste"a 2ue +roduce res+uestas "6s lentas de lo 2ue re2uiere el usuario no es a"igable aun2ue estas res+uestas sean des+legadas en colores.
%erifcabilidad (%erifability): ,n siste"a de software es ericable si sus +ro+iedades +ueden ser ericadas f6cil"ente. !or e7e"+lo5 la correctitud o la +erfor"ance de un siste"a son +ro+iedades 2ue interesa ericar. $l diseo "odular5 +r6cticas de codicación disci+linadas5 y la utilización de lengua7es de +rogra"ación adecuados contribuyen a la ericabilidad de un siste"a. 8a ericabilidad es en general una cualidad interna +ero a eces ta"bi#n +uede ser e3terna5 +or e7e"+lo5 en "uc4as a+licaciones de seguridad crítica5 el cliente re2uiere la ericación de ciertas +ro+iedades.
&antenibilidad (&aintainability): $l t#r"ino "anteni"iento del software es utilizado general"ente +ara referirse a las "odicaciones 2ue se realizan a un siste"a de software luego de su liberación inicial5 siendo isto si"+le"ente co"o ;corrección de bugs<. %lgunos estudios 4an "ostrado sin e"bargo5 2ue la "ayor +arte del tie"+o utilizado en "anteni"iento es +ara agregarle al +roducto características 2ue no estaban en las es+ecicaciones originales o estaban denidas incorrecta"ente. $n realidad la +alabra ;"anteni"iento< no es a+ro+iada +ara el software ya 2ue cubre un a"+lio rango de actiidades 2ue tienen 2ue er con la "odicación de un software e3istente +ara lograr una "e7ora5 un t#r"ino 2ue se a+lica "e7or a este +roceso es ;eolución del software<. %de"6s en otros +roductos de ingeniería co"o 4ardware de co"+utadoras5 auto"óiles o "62uinas de laar5 el "anteni"iento se reere al costo de re+aración del +roducto en res+uesta al deterioro gradual de sus +artes debido a su uso5 sin e"bargo5 se seguir6 utilizando este t#r"ino ta"bi#n +ara el software. Bay eidencia de 2ue los costos de "anteni"iento e3ceden el -D del total de los costos del software. !ara analizar los factores 2ue afectan estos costos5 es usual diidir el "anteni"iento del software en tres categorías: correctio5 ada+tatio y +erfectio. $l "anteni"iento correctio tiene 2ue er con la eli"inación de errores residuales +resentes en el +roducto al ser liberado así co"o errores introducidos al software durante su "anteni"iento. $ste ti+o de "anteni"iento corres+onde a+ro3i"ada"ente al D de los costos de "anteni"iento. $l "anteni"iento ada+tatio inolucra el a7uste de la a+licación a ca"bios en el entorno5 +or e7e"+lo una nuea liberación de 4ardware o del siste"a o+eratio5 o un nueo siste"a de bases de datos. $n este caso la necesidad de ca"bios al software no +uede ser atribuida a una característica del software en sí "is"o co"o la in4abilidad de +ro+orcionar deter"inada funcionalidad re2uerida +or el usuario o errores residuales5 sino 2ue se originan debido a ca"bios en su entorno. $ste ti+o de "anteni"iento corres+onde a+ro3i"ada"ente a otro D de los costos de "anteni"iento.
Introducción a la Ingeniería de Software
$l "anteni"iento +erfectio inolucra ca"bios en el software +ara "e7orar algunas de sus cualidades5 los cuales se deben a la necesidad de "odicar las funciones ofrecidas +or la a+licación5 agregar nueas funcionalidades5 "e7orar la +erfor"ance5 facilitar su utilización5 entre otras. $stos ca"bios +ueden ser originados tanto +or el ingeniero de software +ara "e7orar el estatus del +roducto en el "ercado5 co"o +or el cliente debido a nueos re2ueri"ientos. $ste ti+o de "anteni"iento corres+onde a "6s del *D de los costos de "anteni"iento. 8a "antenibilidad del software se er6 a continuación co"o dos cualidades se+aradas: re+arabilidad y eolucionabilidad.
Re+arabilidad (Re+arability): ,n siste"a de software es re+arable si +er"ite la corrección de sus defectos con una carga li"itada de traba7o. $n otros ca"+os de la ingeniería +uede ser "6s barato ca"biar un +roducto entero o una buena +arte del "is"o 2ue re+ararlo5 +or e7e"+lo teleisores5 y una t#cnica "uy utilizada +ara lograr re+arabilidad es usar +artes est6ndares 2ue +uedan ser ca"biadas f6cil"ente. Sin e"bargo5 en el software las +artes no se deterioran5 y aun2ue el uso de +artes est6ndares +uede reducir el costo de +roducción del software5 el conce+to de +artes ree"+lazables +areciera no a+licar a la re+arabilidad del software. /tra diferencia es 2ue el costo del software est6 deter"inado5 no +or +artes tangibles sino +or actiidades 4u"anas de diseo. ,n +roducto de software consistente en "ódulos bien diseados es "6s f6cil de analizar y re+arar 2ue uno "onolítico5 sin e"bargo5 el solo au"ento del n9"ero de "ódulos no 4ace 2ue un +roducto sea "6s re+arable. ,na "odularización adecuada con denición adecuada de interfaces 2ue reduzcan la necesidad de cone3iones entre los "ódulos +ro"uee la re+arabilidad ya 2ue +er"ite 2ue los errores est#n ubicados en unos +ocos "ódulos5 facilitando la localización y eli"inación de los "is"os. 8a re+arabilidad de un +roducto afecta su conabilidad5 +or otro lado la necesidad de re+arabilidad decrece a "edida 2ue au"enta la conabilidad.
$olucionabilidad ($olability): ,n siste"a es eolucionable si ace+ta ca"bios 2ue le +er"itan satisfacer nueos re2ueri"ientos. $n otros +roductos de ingeniería las "odicaciones an +recedidas de actiidades co"o estudios de factibilidad5 diseo asociado5 a+robaciones5 ealuaciones y nal"ente la introducción de la "odicación. $n el caso del software5 en general la i"+le"entación del ca"bio se co"ienza sin realizar ning9n estudio de factibilidad5 de7ando 9nica"ente el diseo original y sin docu"entación a +osteriori5 esto es sin actualizar las es+ecicaciones +ara reAe7arlo5 lo 2ue 4ace 2ue ca"bios futuros sean cada ez "6s difíciles de a+licar. !or otro lado5 los +roductos de software e3itosos tienen larga duración5 su +ri"era liberación es el co"ienzo de un tie"+o e3tenso de ida y cada liberación sucesia es el +ró3i"o +aso en la eolución del siste"a. Si el software es diseado cuidadosa"ente y cada "odicación es realizada con cuidado +uede eolucionar en buena for"a. 8a "ayoría de los siste"as de software co"ienzan siendo eolucionables +ero luego de aos de eolución alcanzan un estado en el cual cual2uier "odicación i"+ortante trae a+are7ado el riesgo de ;daar< características e3istentes. $n general la a+licación de ca"bios sucesios tiende a reducir la "odularidad del siste"a original5 2ue era lo 2ue lo 4acía eolucionable. 8a eolucionabilidad es una cualidad tanto del +roducto co"o del +roceso5 a+licado al segundo #ste debe ser ca+az de ada+tarse a nueas t#cnicas de gestión y organización5 ca"bios en la educación en ingeniería5 etc. $s una de las cualidades "6s i"+ortantes del software5 e
Introducción a la Ingeniería de Software inolucra otros conce+tos co"o fa"ilias de +rogra"as cuyo +ro+ósito es fo"entar la eolucionabilidad.
Reusabilidad (Reusability): 8a reusabilidad es si"ilar a la eolucionabilidad: en la segunda se "odica un +roducto +ara construir una nuea ersión del "is"o +roducto5 en la +ri"era se utiliza un +roducto5 +osible"ente con "odicaciones "enores5 +ara construir otro +roducto. ,n e7e"+lo de un +roducto reusable es el s4ell de ,EIF 2ue ade"6s de ace+tar co"andos de usuario y e7ecutarlos5 +uede ser iniciado "ediante un arc4io 2ue contenga una lista de co"andos del s4ell5 lo 2ue +er"ite escribir +rogra"as (scri+ts) en el lengua7e de co"andos del s4ell5 +or lo 2ue +uede erse el +rogra"a co"o un nueo +roducto 2ue utiliza el s4ell co"o co"+onente. !uede +arecer "6s a+ro+iado a+licar este t#r"ino a co"+onentes del software 2ue a +roductos co"+letos5 +ero es cierta"ente +osible construir +roductos 2ue sean reusables. %un2ue es una 4erra"ienta i"+ortante +ara reducir los costos de +roducción del software5 los e7e"+los de reusabilidad son raros. $s dicil lograr reusabilidad a +osteriori5 +or el contrario se debe conte"+lar al "o"ento de desarrollar los co"+onentes del software? una t#cnica +ara lograr reusabilidad es la utilización de diseo orientado a ob7etos. /tro niel de reusabilidad est6 dado en los re2ueri"ientos: al analizar una nuea a+licación se +ueden identicar +artes 2ue son si"ilares a otras utilizadas en una a+licación +reia. 0a"bi#n en el niel del código5 se +ueden reutilizar co"+onentes desarrollados en una a+licación anterior. 8a reusabilidad +uede afectar tanto al +roducto co"o al +roceso5 +or e7e"+lo la reusabilidad de +ersonas en el sentido de reutilizar sus conoci"ientos es+ecícos en el do"inio de una a+licación5 entorno de desarrollo5 etc5 aun2ue ta"bi#n tiene sus +roble"as debido a 2ue este conoci"iento se a con las +ersonas y nunca se uele un alor +er"anente inde+endiente de #stas. $s ta"bi#n una cualidad del +roceso: arias "etodologías de software +ueden erse co"o intentos de reutilizar el "is"o +roceso +ara la construcción de +roductos distintos5 y los "odelos de ciclo de ida ta"bi#n son intentos de reutilizar +rocesos de alto niel. $n el enfo2ue ;re+lay< de "anteni"iento de software5 se reutiliza el +roceso seguido al 4acer un ca"bio: se co"ienza "odicando los re2ueri"ientos y se contin9a con los "is"os +asos utilizados en el desarrollo del +roducto original. 8a reusabilidad es un factor clae 2ue caracteriza la "adurez de un 6rea industrial: se +ueden er altos nieles de reusabilidad en 6reas "aduras co"o la industria auto"otriz donde se construye un auto ensa"blando arios co"+onentes 2ue est6n alta"ente estandarizados y son utilizados en "uc4os "odelos 2ue +roduce la "is"a industria5 ade"6s el +roceso de "anufactura es en general reutilizado. $l ba7o grado de reusabilidad 2ue +resenta el software es otra clara indicación de 2ue se debe eolucionar +ara alcanzar el estatus de disci+lina ingenieril bien establecida.
Portabilidad (Portability): $l software es +ortable si +uede ser e7ecutado en distintos a"bientes5 reri#ndose este 9lti"o tanto a +latafor"as de 4ardware co"o a a"bientes de software co"o +uede ser deter"inado siste"a o+eratio. Si bien se 4a transfor"ado en un te"a i"+ortante debido a la +roliferación de +rocesadores y siste"as o+eratios distintos5 +uede ser i"+ortante incluso en una "is"a fa"ilia de +rocesadores debido a las ariaciones de ca+acidad de "e"oria e instrucciones adicionales5 +or lo 2ue una for"a de lograr +ortabilidad es asu"ir una conguración "íni"a y utilizar un subcon7unto de las facilidades +roistas 2ue se garantiza estar6n dis+onibles en todos los "odelos de la ar2uitectura5 co"o instrucciones de "62uina y facilidades del siste"a o+eratio. 0a"bi#n es necesario utilizar t#cnicas 2ue +er"itan al software deter"inar las ca+acidades del 4ardware y ada+tarse a #stas.
Introducción a la Ingeniería de Software $n general la +ortabilidad se reere a la 4abilidad de un siste"a de ser e7ecutado en +latafor"as de 4ardware distintas5 y a "edida 2ue la razón de dinero gastado en software ersus 4ardware crece5 la +ortabilidad gana i"+ortancia. %lgunos siste"as de software son de +or sí es+ecícos +ara una "62uina: un siste"a o+eratio es escrito +ara controlar una co"+utadora es+ecica5 y un co"+ilador +roduce código +ara una "62uina es+ecíca5 +ero incluso en estos casos es +osible alcanzar alg9n niel de +ortabilidad5 +or e7e"+lo ,EIF fue +ortado a arios siste"as de 4ardware distintos y aun2ue re2uirió "eses de traba7o el esfuerzo fue "uc4o "enor 2ue escribirlo nuea"ente desde cero. !ara "uc4as a+licaciones es i"+ortante ser +ortable entre siste"as o+eratios5 o de otra for"a5 los siste"as o+eratios +roeen +ortabilidad entre +latafor"as de 4ardware.
Coprensibilidad ('nderstandability): %lgunos siste"as de software son "6s f6ciles de co"+render 2ue otros5 algunas tareas son in4erente"ente "6s co"+le7as 2ue otras. !or e7e"+lo5 un siste"a 2ue realiza +redicción del cli"a5 sin i"+ortar lo bien 2ue est# escrito5 ser6 "6s difícil de co"+render 2ue uno 2ue i"+ri"e una lista de correo. @adas dos tareas con dicultad si"ilar5 se +ueden seguir ciertas guías +ara +roducir diseos y escribir +rogra"as "6s co"+rensibles. 8a co"+rensibilidad es una cualidad interna del +roducto y ayuda a lograr "uc4as de las otras cualidades co"o eolucionabilidad y ericabilidad. @esde un +unto de ista e3terno5 un usuario considera 2ue un siste"a es co"+rensible si su co"+orta"iento es +redecible5 en este caso la co"+rensibilidad es un co"+onente de la a"igabilidad al usuario.
nteroperabilidad (nteroperability): 8a intero+erabilidad se reere a la 4abilidad de un siste"a de coe3istir y coo+erar con otros siste"as5 +or e7e"+lo5 la 4abilidad de un +rocesador de te3to de incluir gr6cas +roducidas +or un +a2uete de gr6cos. %un2ue rara en los +roductos de software5 la intero+erabilidad abunda en otros +roductos de la ingeniería5 +or e7e"+lo5 est#reos de distinta "arca +ueden conectarse 7untos y ta"bi#n a teleisiones y ideograbadores5 de 4ec4o e2ui+os +roducidos 4ace d#cadas se ada+tan a nueas tecnologías co"o discos co"+actos5 "ientras 2ue casi todos los siste"as o+eratios tuieron 2ue ser "odicados = en algunos casos signicatia"ente = antes de 2ue +udieran traba7ar con los nueos discos ó+ticos. ,na ez "6s5 el a"biente ,EIF con sus interfaces est6ndares ofrece un e7e"+lo de intero+erabilidad li"itada en un 9nico a"biente: +ro"uee 2ue las a+licaciones tengan una interfaz si"+le y est6ndar5 lo 2ue +er"ite 2ue la salida de una a+licación sea utilizada co"o entrada de otra. !or otro lado5 esta interfaz es +ri"itia y orientada a caracteres5 no es f6cil +ara una a+licación utilizar datos estructurados co"o una i"agen +roducida +or otra a+licación. ,EIF ta"+oco +uede el "is"o o+erar con7unta"ente con otro siste"a o+eratio ,n conce+to relacionado con la intero+erabilidad es el de sistea abierto5 2ue es una colección e3tensible de a+licaciones escritas en for"a inde+endiente 2ue coo+eran +ara funcionar co"o un siste"a integrado y +er"iten la adición de nueas funcionalidades +or +arte de organizaciones inde+endientes5 luego de ser liberado. $sto se logra5 +or e7e"+lo5 liberando el siste"a con7unta"ente con una es+ecicación de sus interfaces ;abiertas<5 2ue +odr6n ser utilizadas +or distintos desarrolladores +ara co"unicación entre distintas a+licaciones o siste"as. 8os siste"as abiertos +er"iten 2ue distintas a+licaciones escritas +or distintas organizaciones intero+eren.
Productividad (Productivity): 8a +roductiidad es una cualidad del +roceso de +roducción de software5 "ide la eciencia del +roceso y co"o se io antes5 es la cualidad de +erfor"ance a+licada al +roceso. ,n +roceso eciente resulta en una entrega "6s r6+ida del +roducto.
Introducción a la Ingeniería de Software 8os ingenieros +roducen software indiidual"ente a cierta tasa5 la cual +uede ariar considerable"ente entre indiiduos con 4abilidad distinta. Cuando los indiiduos confor"an un e2ui+o5 la +roductiidad de #ste es alguna función de las +roductiidades indiiduales5 y en general esta +roductiidad co"binada es "enor 2ue la su"a de las +artes. Con res+ecto a la +roductiidad se +ueden ado+tar distintas soluciones de co"+ro"iso al "o"ento de elegir un +roceso5 +or e7e"+lo5 si se re2uiere es+ecialización de los indiiduos se lograr6 +roductiidad en la +roducción de cierto +roducto +ero no de otros5 si se 2uieren desarrollar co"+onentes reusables se reducir6 la +roductiidad del gru+o a cargo del desarrollo debido a 2ue #stos son "6s difíciles de desarrollar5 +ero se lograr6 una "ayor +roductiidad a niel de la organización inolucrada5 en el desarrollo de arios +roductos. edir la +roductiidad es una tarea difícil5 se necesita una "#trica 2ue +er"ita co"+arar distintos +rocesos en t#r"inos de su +roductiidad. %lgunas "#tricas co"o 8/C (lines of code) +roducidas tienen arias desenta7as 2ue ser6n istas +osterior"ente. Co"o en otras disci+linas de la ingeniería la eciencia del +roceso se e fuerte"ente afectada +or la auto"atización: las 4erra"ientas de ingeniería de software y a"bientes "odernos5 traen asociado un au"ento en la +roductiidad.
Oportunidad (ieliness) 8a o+ortunidad es una cualidad del +roceso 2ue se reere a la 4abilidad de entregar un +roducto a tie"+o. Bistórica"ente los +rocesos de +roducción de software no 4an tenido esta cualidad lo 2ue lleó a la lla"ada ;crisis del software< 2ue a su ez tra7o a+are7ada la necesidad y el naci"iento de la ingeniería de software. Incluso actual"ente "uc4os +rocesos fracasan en lograr sus resultados a tie"+o. 8a o+ortunidad en sí "is"a no es una cualidad 9til5 aun2ue llegar tarde +uede llear a +erder o+ortunidades en el "ercado5 entregar un +roducto a tie"+o 2ue carece de otras cualidades co"o conabilidad o +erfor"ance5 no tiene sentido. $ntregar un +roducto a tie"+o re2uiere una agenda +laneada cuidadosa"ente5 con un traba7o de esti"ación acertado y +untos de reisión es+ecicados clara"ente y ericables. 0odas las de"6s disci+linas de la ingeniería utilizan t#cnicas est6ndares de gestión de +royectos5 incluso 4ay arias 4erra"ientas infor"6ticas +ara 4acerlo. $stas t#cnicas est6ndares de gestión de +royectos son difíciles de a+licar en la ingeniería de software debido a la dicultad en "edir la cantidad de traba7o re2uerido +ara +roducir una +ieza de software dada5 la dicultad en "edir la +roductiidad de los ingenieros y el uso de +untos de reisión i"+recisos y no ericables. /tra razón de la dicultad en lograr la entrega en tie"+o en un +roceso de software es el ca"bio continuo en los re2ueri"ientos del usuario. ,na t#cnica +ara alcanzar la entrega en tie"+o de un +roducto es la liberación incre"ental del "is"o5 esto es subcon7untos del +roducto co"+leto cuyo uso ayuda a redenir los re2ueri"ientos incre"ental"ente. 8a a+licación de esta t#cnica de+ende de la 4abilidad +ara +artir las funciones re2ueridas del siste"a5 en subcon7untos 2ue se +uedan entregar en for"a incre"ental5 utilizando un +roceso de desarrollo incre"ental5 ya 2ue un +roceso no incre"ental no +er"ite este ti+o de +roducción a9n si se +ueden identicar los subcon7untos +ara la construcción incre"ental.
%isibilidad (%isibility): ,n +roceso de desarrollo de software es isible si todos sus +asos y su estado actual son clara"ente docu"entados. /tros t#r"inos utilizados son trans+arencia y a+ertura. 8a idea es 2ue los +asos y el estado del +royecto est6n dis+onibles y f6cil"ente accesibles +ara ser e3a"inados e3terna"ente. $n "uc4os +royectos de software la "ayoría de los ingenieros e incluso los gerentes no conocen el estado e3acto del +royecto5 algunos est6n diseando5 otros codicando5 otros
Introducción a la Ingeniería de Software testeando y todos al "is"o tie"+o. $sto no est6 "al en si "is"o5 +ero si un ingeniero co"ienza a redisear una gran +arte del código 7usto antes de 2ue el software sea liberado +ara una +rueba de integración5 los riesgos de generar +roble"as y retrasos son altos. 8a isibilidad +er"ite a los ingenieros +esar el i"+acto de sus acciones y +or lo tanto5 los guía al to"ar decisiones5 +er"ite 2ue los integrantes del e2ui+o traba7en todos en la "is"a dirección. $n el e7e"+lo anterior se +uede obserar 2ue en lugar de esto5 "ientras el gru+o de testeo 4a traba7ado en testear una ersión y es+era 2ue la siguiente tenga corrección de errores y "íni"as diferencias con #sta5 un ingeniero decide redisear gran +arte del código +ara corregir un defecto "enor. $sto +roducir65 ade"6s de lo "encionado +reia"ente5 tensiones entre los gru+os inolucrados ya 2ue +or un lado se intenta estabilizar el software y +or el otro se est6 desestabilizando5 +or su+uesto sin intención. $sta cualidad del software es tanto interna co"o e3terna5 ya 2ue en el transcurso de un +royecto "uc4as eces se re2uieren infor"es del estado del "is"o5 co"o +resentaciones for"ales o infor"ales5 general"ente +or +arte de los gerentes de la organización +ara futuras +lanicaciones o +or +arte del "is"o cliente. Si el +roceso de desarrollo tiene +oca isibilidad5 los re+ortes de estado no ser6n acertados o insu"ir6 "uc4o esfuerzo realizarlos cada ez. ,na dicultad en la gestión de +royectos grandes es la gestión del conoci"iento5 "uc4as eces infor"ación crítica sobre los re2ueri"ientos y diseo tiene for"a de ;folGlore<: es conocida solo +or +ersonas 2ue 4an estado en el +royecto desde el inicio o +or un largo tie"+o. $n esos casos es bastante difícil recu+erarse de la +#rdida de un ingeniero o agregar nueos5 de 4ec4o5 esto 9lti"o en general reduce la +roductiidad de todo el +royecto debido al tie"+o 2ue de"anda la trans"isión de conoci"ientos al nueo integrante. !ara lograr isibilidad es i"+ortante no solo docu"entar los +asos sino ta"bi#n "antener en for"a adecuada el estado de los +roductos inter"edios co"o la es+ecicación de re2ueri"ientos y de diseo5 o sea tener ta"bi#n isibilidad del +roducto. % +artir de: &unda"entals of Software $ngineering = Carlo H4ezzi5 e4di azayeri5 @ino andrioli. !renticeJBall5 Inc. 1KK15 edición en ingl#s. ISLEJJ1'J>M'J5 Ca+ítulo 1 = Software: its nature and 2ualities.