You are on page 1of 10

Ingenierayarteenlacalidaddelsoftware Prof.Dr.

JorgeDomnguezChvez InstitutoUniversitariodeTecnologadeLaVictoria DepartamentodePostgrado Elprocesodedesarrollo desoftware decalidad sesustenta en mtodos y tcnicas (ingeniera), pero sus etapas dependen del desarrollador(arte).Losusuariosdesoftwareafrontanelproblema delacalidaddelsoftware,lacualesmotivodepreocupacinpara especialistas, ingenieros, desarrolladores de software y empresas comercializadorasdelmismo.Surgendospreguntas:

Cmoobtenerunsoftwareconcalidad? Cmoevaluarlacalidaddelsoftware?

Ambas tienen amplias respuestas, estrechamente relacionadas con el concepto de la calidad del software, que es el resultado de la primeraylafuentedelasegunda. CMOOBTENERUNSOFTWAREDECALIDAD? El desarrollo de software con calidad implica metodologas o procedimientos estndares para el anlisis, diseo, programacin y pruebasdelsoftware,quenormenlafilosofadetrabajoyobtengan mayor confiabilidad, mantenibilidad y facilidad de uso, aumentando aslaproductividadtantoparaeldesarrollocomoparaelcontrolde lacalidaddelsoftware. Existen mltiples metodologas para el desarrollo de software, culutilizar?culseadaptamsanuestroentorno?paradaruna idea de qu metodologa utilizar se mencionan tres de ellas: OO basadoenUML,RUPyXP. EldesarrolloOObasadoenUMLestsustentadopor:

Anlisisderequerimientos

Etapadelosrequerimientosyexpectativasdelusuarioylaforma enlacualsepresentalasolucinqueestbuscando. Actividadestcnicas IdentificarCasosdeUsodelsistema Documentos

Dardetallealoscasosdeusodescritos Definirunainterfazinicialdelsistema(siesaplicable) Desarrollarelmodelo Validarlosmodelos

CasosdeUsoiniciales BorradoresdeInterfaz Modelo

Mejoray/odiseodelsistema

Etapa que define una divisin en aplicaciones del sistema (en pequeos mdulos manejables) y la forma de comunicacin con los sistemasexistentesconlosquedebeinteractuar. ActividadesTcnicas Identificarlaarquitecturadelsistema Documentos DiagramasdeEjecucin,versininicial

Diseodetallado

Etapa del anlisis de las caractersticas especficas del ambiente de implementacin en donde se completan las distintas aplicaciones del sistema con los modelos de control, interfaz y/o comunicaciones,segnseaelcaso. Actividadestcnicas Agregardetallesdeimplementacinalmodelo Desarrollarelmodelodeinterfaz Documentos Diagramasdeclasesypaquetes,con eldetalledelaimplementacin Diagramasdeinteraccinconel detalledelasoperacionesms importantesdelsistema

Desarrollarlosmodelosdecontrol,persistencia Diagramasdeestadosy/oactividades ycomunicaciones paralasclasesconcurrenteso complejas

Implementacinypruebas Enestaetapasedesarrollaelcdigodeunamaneracertificada.

Actividadestcnicas Definirestndaresdeprogramacin Codificacinypruebasunitarias Pruebasdemdulosydesistema

Documentos Cdigofuente Soportedepruebasunitarias Documentacindelcdigo

LaMetodologaRUPoProcesoUnificadoRationaldivideen4fases eldesarrollodelsoftware:

Inicio,dondesedeterminalavisindelproyecto. Elaboracin,enlacualsedeterminalaarquitecturaptima. Construccin,faseenlaqueseobtienelacapacidadoperacional inicial. Transmisin,lacualconsisteenobtenerlaversininicialdel proyecto.

Cada una de estas etapas es desarrollada mediante el ciclo de iteraciones, el cual consiste en reproducir el ciclo de vida en cascadaamenorescala.LosObjetivosdeunaiteracinseestablecen enfuncindelaevaluacindelasiteracionesprecedentes. Elciclodevidaquesedesarrollaporcadaiteracinesllevado bajodosdisciplinas: DisciplinadeDesarrollo

IngenieradeNegocios:Entendiendolasnecesidadesdelnegocio. Requerimientos: Trasladando las necesidades del negocio a un sistemaautomatizado. AnlisisyDiseo:Trasladandolosrequerimientosdentrodela arquitecturadesoftware. Implementacin:Creandosoftwarequeseajustealaarquitectura yquetengaelcomportamientodeseado. Pruebas: Asegurndose que el comportamiento requerido es el correctoyquetodolossolicitadoestpresente. DisciplinadeSoporte

Configuracinyadministracindelcambio:Guardandotodaslas versionesdelproyecto. Administrandoelproyecto:Administrandohorariosyrecursos. Ambiente:Administrandoelambientededesarrollo.

Distribucin:Ejecutarlonecesarioparalasalidadelproyecto

Figura1:FaseseIteracionesdelaMetodologaRUP

Esrecomendablequecadaunadeestasiteracionesseaclasificada yseordenesegnsuprioridad, convirtindose luegoenunaentrega parcial al usuario. Est actividad tiene como beneficio la retroalimentacinquesetendraencadaentregaoencadaiteracin. LoselementosdelRUPson:

Actividades, procesos que se llegan a determinar en cada iteracin. Trabajadores,personasoentesinvolucradosencadaproceso. Artefactos,elementodemodelo.

En esta metodologa, cada ciclo de iteracin, exige el uso de artefactos, y por este motivo es considerada una de las ms importantesparalacertificacineneldesarrollodelsoftware. MetodologadeProgramacinExtremaXP Esta es una metodologa exitosa en proyectos de corto plazo, corto equipo y cuyo plazo de entrega era ayer. Consiste en una programacin rpida o extrema, cuya particularidad es tener como parte del equipo, al usuario final, pues es uno de los requisitos parallegaralxitodelproyecto.

Figura2:MetodologaExtremePrograming

LametodologaXPsebasaen:

PruebasUnitarias:realizadasalosprincipalesprocesos,detal manera que, adelantando el futuro, se anticipen las fallas a ocurrir.(Actitudproactivaparadetectarlosposibleserrores.) Refabricacin: se basa en la reutilizacin de cdigo, para lo cual se crean patrones o modelos estndares, flexibles al cambio. Programacin en pares: dos desarrolladores participan en un proyectoenunamismaestacindetrabajo.Cadaunollevaacabo laaccinqueelotronoest haciendoenesemomento.Escomo elchoferyelcopiloto:unoconduce,elotroconsultaelmapa. QuproponeXP?

Empieza en pequeos mdulos y aade funcionalidad con retroalimentacincontinua. Elmanejo delcambioseconvierte enunapartesustantiva del procesodedesarrollo. Elcostodelcambionodependedelafaseoetapa. Nointroducefuncionalidadesantesqueseannecesarias. Elusuarioseconvierteenmiembrodelequipo.

DerechosdelUsuario

Decidirqueseimplementa. Saberelestadorealyelprogresodelproyecto. Aadir,cambiaroquitarrequerimientosencualquiermomento. Obtenerlomximodecadasemanadetrabajo. Obtenerunsistemafuncionandocada3o4meses. DerechosdelDesarrollador

Decidircomoseimplementanlosprocesos. Crearelsistemaconlamejorcalidadposible. Pedir al usuario, en cualquier momento, aclaraciones de los requerimientos. Estimarelesfuerzoparaimplementarelsistema. Cambiarlosrequerimientosenbaseanuevosdescubrimientos. Lofundamentalenestametodologaes:

Lacomunicacin,entrelosusuariosylosdesarrolladores. Lasimplicidad,aldesarrollarycodificarmdulosdelsistema. La retroalimentacin, concreta y frecuente del equipo de desarrolloylosusuariosfinales.

La gestin para el desarrollo de software planifica, organiza, dirige y controla el cumplimiento de los objetivos as como las etapasdeldesarrollodelprograma;ademsestsustentadaporcuatro principiosbsicos:eltecnolgico,eladministrativo,elergonmico yeldesatisfaccindelusuariofinal. El principio tecnolgico define la metodologa y tcnica de programacinautilizarenelprocesodedesarrollodelsoftware. El principio administrativo contempla las funciones de planificacin y control del desarrollo del software, as como la organizacindelambienteocentrodeingenieradesoftware. Elprincipioergonmicodefinelainterfazentreelusuarioyel

ambienteautomatizado. Elprincipiodesatisfaccinsesustentaenqueelsoftwarehaga exactamenteloquerequiereelusuariofinalosusperspectivasyla existencia de requisitos para satisfacerlas. De hecho, el usuario tiene diferentes tipos de expectativas: requerimientos funcionales, requerimientosnofuncionales(comoeldesempeoylaintegracin)y requerimientoscontractuales(queelproductoseinstaleatiempoy trabaje). Una buena gestin para el desarrollo de software contribuye en gran medida a lograr la calidad del software, pero no la asegura. Paraelaseguramientoesnecesariosucontroloevaluacin.Envezde medir la calidad de un software como producto, se podra medir la calidaddelprocesodedesarrollodetal software:sielprocesode desarrolloesdecalidad,perse,elsoftwareresultantedebeserde calidad. Esto no se cumple por completo, ya que no se sabe qu procesossonbuenosparadesarrollarsoftwaredebuenacalidad,yno sesabequ partedelprocesocambiarparadesarrollar software con menorcomplejidad,oconmayorportabilidad. Unapartedelagestindedesarrollodesoftwareesestimularel usodeestndaresyaplicarconrigurosidadcientficaytecnolgica (comounproductodeingeniera)lametodologaempleadaencadauna delasetapasejecutadas. QUESLACALIDADDELSOFTWARE? La calidad del software es el conjunto de atributos que la caracterizan y determinan su utilidad y existencia. Estos podran ser: fiabilidad, eficiencia, desempeo, flexibilidad, robustez, correccin, mantenibilidad, portabilidad, usabilidad, seguridad e integridad, comprensin, adaptabilidad, modularidad, complejidad, reutilizacin,ergonoma,entreotros.Esposiblemedircadaunode ellosovarios,yporconsiguientecaracterizaromedirlacalidad del software en funcin del atributo o de los atributos medidos y decirqueesunsoftwaredebuenacalidadsegnlomedido. Lacalidaddelsoftwarevaraentresistemasy/oprogramas.El procesodemediresdifcil,hayquedecidirqu atributosmedir? se miden atributos subjetivos y/o alternos? se miden todos? El medirconprecisinunatributo,afectaalresto.Unsoftwareparael control de naves espaciales debe ser a nivel de "cero fallas"; un software hecho para ejecutarse una sola vez no requiere el mismo niveldecalidad;mientrasqueunsoftwareparaserexplotadodurante unlargoperodo(10aosoms),necesitaserconfiable,mantenible y flexible para disminuir los costos de mantenimiento y perfeccionamientoduranteeltiempodeexplotacin.

El medir la calidad del software despus de elaborado el producto, puede resultar muy costoso si se detectan problemas derivadosdeimperfeccioneseneldiseo.Tambinhayqueteneren cuentalacalidaddelproductodurantesuexplotacin,mantenimiento yflexibilidadparaello. CMOCONTROLARLACALIDADDELSOFTWARE? Paracontrolarlacalidaddelsoftwareesnecesariodefinirlos parmetros, indicadores o criterios de medicin, yaque, "no puede controlarseloquenosepuedemedir". Una metodologa para la evaluacin de la calidad del software define indicadores de calidad estructurados en cuatro niveles jerrquicos: factor, criterio, mtrica y elemento de evaluacin, dondecadanivelinferiorcontienelosindicadoresqueconformanel nivelprecedente. Unavezseleccionadoslosindicadoresdecalidad,seestableceel procesodecontrol,querequierelossiguientespasos:

Definirelsoftwarequevaasercontrolado:clasificacinpor tipo,entornodeaplicacin,complejidad,etc.,deacuerdocon losestndaresestablecidosparaeldesarrollodelsoftware. Seleccionarunamedidaqueseaaplicadacomoobjetodecontrol. Paracadaclasedesoftwareesnecesariodefinirlosindicadores ysusmagnitudes. Crearodeterminarlosmtodosdevaloracindelosindicadores: mtodosmanualescomocuestionariosoencuestasestndarespara lamedicindecriteriospericialesyherramientasautomatizadas paramedirloscriteriosdeclculo. Definirlasregulacionesorganizativaspararealizarelcontrol: quines participan en el control de la calidad, cundo se realiza,qudocumentosdebenserrevisadosyelaborados,etc.

Otras metodologas identifican la calidad del software con su nivel de complejidad y definen dos categoras de mtricas: de complejidaddelcdigoycomplejidaddelsistemaodesuestructura.

Mientras ms lneas de cdigo tenga un programa, mayor es la posibilidaddeerror.

Todas las metodologas coinciden en que el software tiene determinados ndicesmediblesquesonfundamentalesparalacalidad, elcontrolyelperfeccionamientodelaproductividad.

Conclusiones Para asegurarla calidaddelsoftwaredesarrolladoenelIUTLV, el Departamento de Postgrado, a travs de la Especializacin en Sistemascuentaconlneasdeinvestigacinenfocadasenproyectosde desarrollo de metodologas del Aseguramiento de la Calidad del Software(ACS),vlidaparacualquierorganizacinquesedediquea la investigacin, produccin y comercializacin de software. Estas lneas, incluyen el desarrollo de un Sistema de Indicadores de la CalidaddelSoftware(SICS),elcualcuentaconunametodologapara el desarrollo de sistemas (ISI) y con herramientas manuales y automatizadas de apoyo para la aplicacin de las tcnicas y procedimientos del ACS, de forma tal que se conforme un Sistema IntegralparaelAseguramientodelaCalidaddelSoftware. Lograr el xito en el desarrollo de software es hacerlo con calidad y demostrar su buena calidad. Esto slo es posible con la implantacindeunametodologaparaelAseguramientodelaCalidad del Software directamente relacionada con la gestin de desarrollo establecidaparasuelaboracinyqueest encorrespondenciaconla definicininternacionalISOdecalidad,sugeridaparalaspequeasy medianasempresasdesoftware.stas,alimplantarmetodologasdela calidad basados en las normas ISO pueden ahorrar tiempo, dinero y esfuerzo,asegurandolosrequisitosbsicosdelaorganizacinypor otro lado, optar por la certificacin le confiere un prestigio importanteantesususuarios. Bibliografa Basili, V.R. y Rombach, H.D., "The TAME Project: Towards ImprovementOriented Software Environments", IEEE Transaction on SoftwareEngineering,14(6),758731988. Boehm, B.W., Kaspar, J.R. y otros "Characteristics of Software Quality",TRWSeriesofSoftwareTechnology,1978. Boehm, B.W., Clark, B., Horowitz, E. et al., "Cost Models for future life cycle processes: COCOMO 2.0", Annals of Software Engineering1(1),pp124,1995. DeMarco, T., "Controlling Software Projects", Yourdon Press, 1982. Dolado,J.J.yFernndez,L.(coordinadores)."Medicinparala GestinenlaIngenieradelSoftware".Rama,2000. Domnguez,Jorge.IngenieradeSistemasdeInformacin,IEASS, Editores,Venezuela,1996.

Farbey, B., "Software Quality metrics: considerations about requirements and requirements specification", Information and SoftwareTechnology,32(1),pp6064,1990. Fernndez,LuisyAlarcn,Miren.Necesidadesdemedicinenla gestin y aseguramiento de calidad del software. http://www.sc.ehu.es/jiwdocoj/remis/docs/aseguracal.htm Gilb, T. "Principles of Software Engineering Management", AddisonWesley,1988. ISO/IEC "Information Technology Information Resources Dictionary System (IRDS) Framework", ISO/IEC intl. Standard edition,1990. ISO/IEC 9126, "Software Product Evaluation o Quality CharacteristicsandGuidelinesfortheirUse",1991. Lorenz, M. and Kidd, J., "Object_oriented Software Metrics", PrenticeHall1994. McCall, J.A., Richards, P.K. and Walters, G.F. "Factors in Software Quality", RADC TR77369, US Rome Air Development Center ReportsNTISAD/A049014,015,055,1977. Paulk, M., Curtis, B., Chrissis, M., and Weber, C. "Capability MaturityModelforSoftware:Version1.1".TechnicalReportSEI93 TR24, Software Engineering Institute, Carnegie Mellon University, Pittsburgh,Pennsylvania,USA,1993. Pressman, Roger S. (1998) Ingeniera de software. Un enfoque prctico.CuartaEdicin,McGrawHillInteramericanadeEspaaS.A. Rout,T.P."SoftwareProcessImprovementandPractice",1(1),pp 5766,1995. Samson,W.B.,Nevill,D.G.YDugard,P.I.,"Predictivesoftware Metrics based on a Formal Specification", Software Engineering Journal,5(1),1990. SPICE, "SPICE Document Suite, Software Process Improvement and Capabilitydetermination",,1999. Tinnirello,PaulC.,How'sYourIT:TeeteringOrLeadingEdgePC WeekMay11,v15n19p77,1998