INGENIERÍADE SOFTWARE JoseAntonioCeballosLeva
2 º Gra do e ni nge ni ería Informática [UNED]
2
2
Índice Tema1.Introducciónalaingenieríadesoftware.............................................................................................................................11 Conceptodeingenieríadesistemas......................................................................................12 Conceptodesistema................................................................................................................................12 Sistemasbasadosenuncomputador...............................................................................................12 Componenteshardware,softwareyhumanos.............................................................................12 Componenteshardware,softwareyhumanos .............................................................................12 Conceptodeingenieríadesoftware......................................................................................12 Perspectivahistórica...............................................................................................................................12 Mitosdelsoftware....................................................................................................................................12 Formalizacióndelprocesodedesarrollo............................................................................13 Modeloencascada....................................................................................................................................13 ModeloenV.................................................................................................................................................13 Usodeprototipos.........................................................................................................................14 Definición......................................................................................................................................................14 ......................................................................................................................................................14 Prototiposrápidos....................................................................................................................................14 Prototiposevolutivos..............................................................................................................................14 Herramientasparalarealizacióndeprototipos..........................................................................14 Modeloenespiral........................................................................................................................15 Definición......................................................................................................................................................15 ......................................................................................................................................................15 Componentes..............................................................................................................................................15 Mantenimientooexplotacióndelsoftware........................................................................15 Evolucióndelasaplicaciones..............................................................................................................15 Gestióndeloscambios...........................................................................................................................15 Reingeniería................................................................................................................................................15 Garantíadecalidaddesoftware.............................................................................................16 Factoresdecalidad...................................................................................................................................16 Plandegarantíadelacalidad..............................................................................................................16 Revisiones....................................................................................................................................................16 Gestióndeconfiguración.......................................................................................................................17 Normasyestándares...............................................................................................................................17 Tema2.Especificacióndelsoftware.......................................................................................................................................................18 Modeladodesistemas................................................................................................................19 Conceptodemodelo................................................................................................................................19 Técnicasdemodelado.............................................................................................................................19 Análisisderequisitosd Análisis derequisitosdelsoftware elsoftware ................................... ................. ................................... ................................... .................................... .................. 20 Objetivosdelanálisis...............................................................................................................................20 Tareasdelanálisis....................................................................................................................................20 Notacionesparalaespecificación..........................................................................................21 Lenguajenatural........................................................................................................................................21 Diagramasdeflujodedatos.................................................................................................................21 Diagramasdetransicióndeestados.................................................................................................22 Descripcionesfuncionalesopseudocódigo...................................................................................22 Descripcióndedatos...............................................................................................................................22 Diagramasdemodelosdedatos.........................................................................................................23 Tema3.FundamentosdelDiseñodeSoftware...................................................................................................................................29 Tema3.FundamentosdelDiseñodeSoftware ...................................................................................................................................29 Introducción..................................................................................................................................30 Definicióndediseño................................................................................................................................30 Actividadesfundamentalesdeldiseño............................................................................................30 Conceptosdebase.......................................................................................................................30 Abstracción..................................................................................................................................................30 Modularidad................................................................................................................................................31 Refinamiento...............................................................................................................................................31 Estructurasdedatos................................................................................................................................31 Ocultación.....................................................................................................................................................31 3
Genericidad..................................................................................................................................................31 Herencia........................................................................................................................................................31 Polimorfismo...............................................................................................................................................32 Concurrencia...............................................................................................................................................32 Notacionesparaeldiseño.........................................................................................................32 Notacionesestructurales.......................................................................................................................32 Notacionesestáticas................................................................................................................................34 Notacionesdinámicas.............................................................................................................................35 Notacioneshíbridas.................................................................................................................................35 Tema4.TécnicasGeneralesdeDiseñodeSoftware.........................................................................................................................38 Descomposiciónmodular.........................................................................................................39 Definición......................................................................................................................................................39 ......................................................................................................................................................39 Independenciafuncional.......................................................................................................................39 Comprensibilidad......................................................................................................................................40 Adaptabilidad.............................................................................................................................................40 Técnicasdediseñofuncionaldescendiente.......................................................................41 Desarrolloporrefinamientoprogresivo.........................................................................................41 ProgramaciónestructuradadeJackson..........................................................................................41 Diseñoestructurado................................................................................................................................41 Técnicasdediseñobasadasenabstracciones...................................................................41 Descomposiciónmodularbasadaenabstracciones..................................................................41 MétododeAbbot.......................................................................................................................................42 Técnicasdediseñoorientadasaobjetos.............................................................................42 Diseñoorientadoaobjetos...................................................................................................................42 Técnicasdediseñodedatos.....................................................................................................43 Definición......................................................................................................................................................43 ......................................................................................................................................................43 Diseñodebasesdedatosrelacionales.................................................................................43 Diseñodebasesdedatosdeobjetos.....................................................................................43 Tema5.CodificaciónyPruebas.................................................................................................................................................................49 DesarrolloHistórico...................................................................................................................50 Primerageneración..................................................................................................................................50 Segundageneración.................................................................................................................................50 Tercerageneración..................................................................................................................................50 Cuartageneración.....................................................................................................................................51 Prestacionesdeloslenguajes..................................................................................................51 Estructurasdecontrol............................................................................................................................51 Estructurasdedatos................................................................................................................................52 Comprobacióndetipos...........................................................................................................................52 Abstraccionesyobjetos..........................................................................................................................53 Modularidad................................................................................................................................................53 Criteriosdeseleccióndellenguaje........................................................................................53 Aspectosmetodológic Aspectos metodológicos os................ .................................. .................................... ................................... ................................... .................................... ..................... ...54 54 Normasyestilodecodificación..........................................................................................................54 Manejodeerrores.....................................................................................................................................54 Aspectosdeeficiencia.............................................................................................................................55 Transportabilidaddelsoftware..........................................................................................................55 Técnicasdepruebadeunidades............................................................................................55 Objetivosdelaspruebasdesoftware...............................................................................................55 Objetivosdelaspruebasdesoftware ...............................................................................................55 Pruebasdecajanegra.............................................................................................................................56 Pruebasdecajatransparente..............................................................................................................57 Estimacióndeloserroresnodetectados........................................................................................57 Estrategiasdeintegración........................................................................................................58 IntegraciónBIGBANG.............................................................................................................................58 Integracióndescendente........................................................................................................................58 Integraciónascendente..........................................................................................................................58 Pruebasdelsistema....................................................................................................................58 Objetivodelaspruebas..........................................................................................................................58 4
PruebasAlfayBeta...................................................................................................................................58
5
6
BLOQUEI.INTRODUCCIÓNA INGENIERIADESOFTWAREY DOCUMENTOSDEREQUISITOS
7
8
Índice Tema1.Introducciónalaingenieríadesoftware.............................................................................................................................11 Conceptodeingenieríadesistemas......................................................................................12 Conceptodesistema................................................................................................................................12 Sistemasbasadosenuncomputador...............................................................................................12 Componenteshardware,softwareyhumanos.............................................................................12 Conceptodeingenieríadesoftware......................................................................................12 Perspectivahistórica...............................................................................................................................12 Mitosdelsoftware....................................................................................................................................12 Formalizacióndelprocesodedesarrollo............................................................................13 Modeloencascada....................................................................................................................................13 ModeloenV.................................................................................................................................................13 Usodeprototipos.........................................................................................................................14 Definición......................................................................................................................................................14 Prototiposrápidos....................................................................................................................................14 Prototiposevolutivos..............................................................................................................................14 Herramientasparalarealizacióndeprototipos..........................................................................14 Modeloenespiral........................................................................................................................15 Definición......................................................................................................................................................15 Componentes..............................................................................................................................................15 Mantenimientooexplotacióndelsoftware........................................................................15 Evolucióndelasaplicaciones..............................................................................................................15 Gestióndeloscambios...........................................................................................................................15 Reingeniería................................................................................................................................................15 Garantíadecalidaddesoftware.............................................................................................16 Factoresdecalidad...................................................................................................................................16 Plandegarantíadelacalidad..............................................................................................................16 Revisiones....................................................................................................................................................16 Gestióndeconfiguración.......................................................................................................................17 Normasyestándares...............................................................................................................................17 Tema2.Especificacióndelsoftware.......................................................................................................................................................18 Modeladodesistemas................................................................................................................19 Conceptodemodelo................................................................................................................................19 Técnicasdemodelado.............................................................................................................................19 Análisisderequisitosdelsoftware........................................................................................ 20 Objetivosdelanálisis...............................................................................................................................20 Tareasdelanálisis....................................................................................................................................20 Notacionesparalaespecificación..........................................................................................21 Lenguajenatural........................................................................................................................................21 Diagramasdeflujodedatos.................................................................................................................21 Diagramasdetransicióndeestados.................................................................................................22 Descripcionesfuncionalesopseudocódigo...................................................................................22 Descripcióndedatos...............................................................................................................................22 Diagramasdemodelosdedatos.........................................................................................................23
9
10
Tema1.Introducciónalaingenieríadesoftware
1. Conceptodeingenieríadesistemas 2. Conceptodeingenieríadesoftware 3. Formalizacióndelprocesodedesarrollo 4. Usodeprototipos 5. Modeloenespiral 6. Mantenimientooexplotacióndelsoftware 7. Garantíadecalidaddesoftware
11
Conceptodeingenieríadesistemas Conceptodesistema
Unsistemasedefinecomounconjuntodecosasqueordenadamenterelacionadasentresícontribuyen aunadeterminadafinalidad.Requiriendolageneracióndesistemascomplejosdeuntrabajocolectivo,que requieredeunalabordeorganización,lacualseestudiaenlaingenieríadesistemas,lacualsecentraenlos aspectosdeorganizacióncomoenloreferentealdesarrollo. Sistemasbasadosenuncomputador
Sonsistemasformadosporunoovarioscomputadores,loscualessededicanatareasdecontrolconun propósitofinal.Anivelinformáticospodemosdistinguirloselementosmateriales,comohardwaredelos programasquegobiernanelfuncionamientoyalosquedenominamossoftware. Componenteshardware,softwareyhumanos
Lastareasdetratamientodelainformacióndesarrolladasporlossistemasinformáticossedividenen: almacenamiento,elaboraciónypresentacióndedatos.Siendolosencargadosdelarealizacióndeestas funcioneslassiguientesfuentes:componentesfísicosohardware,componentesprogramadososoftwarey usuariosdelsistema. Laconcepciónfinaldelsistemainformáticosepodríadefinircomolaseleccióndehardware,software debenseradquiridosydesarrolladosydelaasignaciónorepartodelasactividadesdetratamientode informaciónentrecadaunadelasposiblesfuentesdetratamiento.
Conceptodeingenieríadesoftware Perspectivahistórica
Mientrasqueenlasdécadasinicialeseldesarrollodesoftwareseejercíadeunamaneraartesanaly pocodisciplinada,elaumentodelacapacidaddelhardwareaumentalasnecesidaddeprogramasmás complejos,queprovocanlanecesidaddeltrabajoenequipo,laseparacióndelastareas,laespecializaciónyel empleodeherramientasqueagilizaranlasactividadesrepetitivasytriviales. Estodapasoalaaparicióndelasmetodologíasdedesarrolloespecíficasconlafinalidaddepromoverla especializaciónysiendoespecialmenteaplicadasalossistemasdeinformación.Estassedesarrollandurante losaños70,empezandoaserempleadasenlos80,conlaaparicióndelasherramientasCASE,lascuales apoyabanlasactividadesanterioresalaprogramaciónocodificación,siendoenlosaños90cuandoseampliael campodeaplicacióndelasherramientasdeingenieríadesoftware,reconociendolanecesidaddeemplear herramientasquecubrantodoelcicloproductivodesoftware. Mitosdelsoftware
Algunosdelosmitosmasextendidosserían:elhardwareesmásimportantequeelsoftware,elsoftware esfácildedesarrollar,elsoftwaresoloconsisteenprogramasejecutables,elsoftwareessolounatareade programaciónyesnormalqueelsoftwarecontengaerrores.
12
Formalizacióndelprocesodedesarrollo Modeloencascada
Eselmodelomasprimitivodeciclodevida,peroimprescindibledebidoaqueyaintegratodaslas clasesdeactividadesdistintasqueintervieneneneldesarrolloyexplotación.Existendiferentesvariantesde estemodeloquesediferencianporelreconocimientoonocomofasesseparadasdediferentesactividades. Siendolasprincipalesfases: - Análisis:Consisteenanalizarlasnecesidadesdelosfuturosusuariosdelsoftware,paradeterminarlas funcionesadesarrollarporelsusodichosistema. - Diseño:Consisteendescomponeryanalizarelsistemaensubsistemasquepermitanserdesarrollados porseparado,siendoelresultadodeldiseñolacoleccióndeespecificacionesdecadaelemento componente. - Codificación:Duranteestafaseseprogramacadaelementoporseparado,haciéndosealgunaspruebas quepuedangarantizarelcorrectofuncionamientodelsistema. - Integración:Esteprocesoconsisteenlacombinacióndetodosloselementosquecomponenelsistema, permitiendolacomprobacióndelsistemacompleto,siendonecesariohacerpruebasexhaustivasque garanticenelcorrectofuncionamientodelconjunto. - Mantenimiento:Estafaseenglobatodoslosnecesarioscambiosadicionalestraslapublicaciónde aplicaciónconelfindecorregirerroresexistentesomejorarelsistemaconfuncionesadicionales. Estesistemabuscalarelativaindependenciadecadaunodelosprocesos,loquepermiteunmejor repartodelasactividades.Paraconseguirestaindependenciaesmuyimportantequecadafasegenereasu salidaunainformaciónprecisaysuficienteparaquelosequiposdependientesdeestapuedanejercersu función,siendolosdocumentosproducidoslossiguientes: - Documentoderequisitos(SRD):Esproductodelanálisisyconsisteenunaespecificaciónprecisay completadeloquedebehacerelsistema,prescindiendodedetallestécnicos. - Documentodediseñodesoftware(SDD):Esproductodeldiseñoyconsisteenunadescripcióndela estructuraglobaldelsistemayladistribucióndetareas. - Códigofuente:Esproductodelafasedecodificación,conteniendolosprogramasfuentedebidamente comentados,loquepermiteobtenerunaclaridadyfácilintercambioentrecomponentes. - Elsistemadesoftware:Esproductofasedeintegraciónconsistenteenelejecutableysiendo necesariasintegrarselaspruebasrealizadasalsoftwarecompleto. - Documentosdecambios:Esproductodelafasedemantenimientoeincluyelosdatosdelas modificacionesrealizadasdurantelareparacióndecadaproblemaencontradoodescripcióndelas solucionesaplicadasalasnuevasfunciones. ModeloenV
Estemodelosebasaenunasecuenciadefasessimilaralmodeloencascadaperoconlaparticularidad dedarunamayorimportanciaalajerarquización,conloquecuandoavanzaeldesarrollodelaaplicación determinadasfasessevatrabajandoconmayoromenordetalle.Detalformaqueenlasfasesinicialeselnivel detalleesmenor,elcualvaaumentandosegúnavanzaelproyecto,yaqueelproyectosevadescomponiendo hastallegaralassentenciasenellenguajequecorrespondatrasloquevuelveadisminuireldetalleenposdela integracióndelsistema,hastaquedisponemosdeunsistemacompleto.Aligualqueenelmodeloencascada, existendiferentesversionesdeeste,caracterizadasporreconoceronodeterminadasdivisionesdelas actividades. Enlasactividadessituadasenunniveldeterminadosetrabajasobreunaunidaddedetallesuperior, queseorganizaenvariasunidadesdelniveldedetalleinferior.Porejemplo,durantelacodificaciónsetrabaja conmódulosqueseorganizanmediantesentenciasdeunlenguaje,mientrasquedurantelasfasesdediseñoe integraciónsetrabajaconunsistemadesoftwareoseconstruyeconvariosmódulos.Deloqueseentiendeque elresultadodeunafasenosólosirvecomoentradaalasiguiente,sinoqueenfasesposterioresdebeutilizarse comodocumentodereferenciaparacorroborarelcorrectoprogresodelaaplicación.
13
Usodeprototipos Definición
Unprototipoesunsistemaauxiliarquepermiteprobarexperimentalmenteciertassolucionesalas necesidadesdelusuariooalosrequisitosdelsistema,siendoelcostodeestesensiblementeinferioraldel sistemafinal,puesloserrorescometidosnosondemasiadoscostosos,yaquesuincidenciaseencuentra limitadaporelcostototaldeldesarrollodelprototipo,siendoinferiorgraciasaquepartedeestees aprovechableparaelrestodeldesarrollo.Algunasopcionesparareducirloscostesdeesteson: - Limitarlasfunciones,desarrollandosolounaspocas. - Limitarsucapacidad,permitiendoquesoloseprocesenunospocosdatos. - Limitarsueficiencia,permitiendoqueoperedeformalenta. - Evitarlimitacionesdediseñousandounsoportehardwaremáspotente. - Reducirlaparteadesarrollar,usandounapoyosoftwaremáspotente. Prototiposrápidos
Estosprototipostienencomofinalidadadquirirexperiencia,sinpretenderaprovecharloscomo producto,aquellosconlafuncionalidadmáslimitadaselosdenominamaquetas.Sufunciónesimportante durantelasfasesdeanálisisydiseñopermitiendoexperimentarlasdistintasposibilidadesygarantizarquelas decisionesquesetomansonlascorrectas,peroteniendoencuentaquelacodificacióndelsistemafinalsehará partiendodecero.Lamásimportantecualidaddeestosesquesedesarrollanrápidamente,conelobjetivode intentaralargarlomínimolasfasesdeanálisisydiseño. Prototiposevolutivos
Otraformadeutilizarlosprototiposconsisteenaprovecharalmáximosucódigo,demaneraqueeste seaunarealizaciónparcialdelsistemafinaldeseado.Esteprototiposeconstruyetrasunasfasesparcialesde análisisydiseño,paraacontinuaciónirloconvirtiendoenelproductofinal.Demaneraquesevan construyendosucesivasversionesdelprototipoinicialcadavezmascomplejas. Estaformadedesarrollofuncionaríacomounbuclereiterativodelmodeloencascada,demaneraque cadanuevaversióndelprototiposebasaenlorealizadoenlaversiónanterioraeste. Herramientasparalarealizacióndeprototipos
Puestoqueunprototipoesunaversióndelsistemaadesarrollaremplearemosunasherramientas semejantesalasutilizadasendesarrollodesoftware,mientrasqueparaelsoftwaredeusarytirarse emplearánherramientasdiferentesdelasqueseemplearánenelproductofinal,conelfindesuproducciónsea másbaratay/orápida,porotroladoparaelprototipoevolutivolasherramientasseránlasmismasqueparael final. Entrelasherramientasutilizadasestánlasde4ªgeneración,lascualesseempleanparasistemasde informaciónconunabasededatosdeusogeneralyutilizanlenguajesespecializadosenlainterfazdeusuario, basadosenmenúsyformulariosdeentradaysalida,siendoutilizadasenmuchoscasosenelsistemafinal.En casodenoserempleadasporrazonesdeeficienciaocompatibilidad,siemprepuedenserempleadasenla construccióndeunprototipoprevio. Loslenguajesde4ªgeneraciónsonuncasodelenguajesdealtonivelconunestilodeclarativoenlugar deoperacional,conloquepermitendescribirelresultadoquesedeseaobtener,envezdedescribirlas operacionesparaalcanzarlo,siendoalgunosejemplosSmalltalkyProlog.Análogosaestostenemoslos lenguajesdeespecificación,loscualestienencomoobjetivoformalizarlaespecificacióndelosrequisitosdel software,entrelosqueseencuentranVDMyZ.Elempleodeestosnospermitiráobtenerdirectamenteun prototipoejecutable. 14
Modeloenespiral Definición
Elmodeloenespiralconsisteenunrefinamientodelmodeloevolutivo,introduciendocomodistintivola actividaddeanálisisderiesgocomoelementofundamentalparalaevolucióndeldesarrollo,loqueprovocaque laiteracióndelmodeloproduzcaunaespiralalañadircomodimensiónradialunaindicacióndelesfuerzototal realizadoencadamomento,queserásiempreunvalorcreciente.Lasdiferentesactividadesserepresentan sobreunosejescartesianosconunaactividadencadacuadrante. Componentes
Lasactividadesdeplanificaciónsirvenparaestablecerelcontextodeldesarrolloydecidirqueparte delmismoseabordaráeneseciclodeespiral. Elanálisisdelriesgo consisteenevaluardiferentesalternativasparalarealizacióndelapartede desarrolloseleccionadaporserlamasventajosaalavezquesetomanprecaucionesparaevitarlos inconvenientesprevistos. Lasactividadesdeingenieríasonlasenglobadasenotroscicloscomoanálisis,diseño,codificación,… demaneraqueelresultadoencadacicloseaunaversiónmáscompleta. Lasactividadesdeevaluaciónanalizanlosresultadosdelafasedeingeniería,conlacolaboracióndel cliente,demaneraqueelresultadoobtenidoseusacomoentradaparalaplanificacióndelsiguienteciclo.
Mantenimientooexplotacióndelsoftware Evolucióndelasaplicaciones
Mantenimientocorrectivo:Consisteenladetecciónyeliminacióndeerroresquenohansido detectadosduranteeldesarrollodelaaplicaciónysiaposteriori. Mantenimientoadaptativo:Seaplicaaaplicacionescuyomediodeexplotaciónevolucionaalolargo deltiempo(SO)demaneraqueexigequeestaseadaptealasnuevascaracterísticas. Mantenimientoperfectivo:Sepromueveentrelasaplicacionessujetasacompetencia,loqueimplica queestasdebenirproduciendoversionesmejoradasdelproductoquemantengamantenersucompetitividad, realizándosetambiénsobreaplicacionesenlasquelasnecesidadesdelusuarioevolucionan. Gestióndeloscambios
Cambiogeneral:Sielcambioafectaalamayoríadeloscomponentesdelproducto,dichocambiose puedeplantearcomounnuevodesarrollo,aplicandounnuevociclodevidadesdeelprincipio. Cambioespecífico:Encasodequeelcambioafecteaunapartelocalizadadelproducto,loquepermite organizarlocomounamodificacióndealgunoselementos.Uncambioenelcódigodebedarlugarauncambio enloselementosdedocumentaciónafectados. Larealizacióndeloscambiossepuedecontrolarmediantedosclasesdedocumentos,porunladoel informedeproblema,elcualdescribeladificultaddelproductoquerequierealgunamodificacióndel productoyporotroladoel informedecambio,quedescribelasolucióndadaaunproblemayelcambio realizadoenelsoftware. Reingeniería
Encasodemantenerproductosquenohansidodesarrolladosconingenieríadesoftware,conloque solosecuentaconelcódigofuente,seaplicaingenieríainversa,consistenteentomarcódigofuente,para construiratravésdeesteladocumentación,enespecialladediseño,conlaestructuramodulardelaaplicación ylasdependenciasentremódulosyfunciones.Engeneralseintentaproducirunsistemabienorganizadoy documentadoapartirdelsistemainicialdeficiente. 15
Garantíadecalidaddesoftware Factoresdecalidad
ElesquemageneraldevaloracionesdelacalidaddelsoftwaresedenominaMcCall78yestábasadoen valoracionesa3nivelesdiferentes,unnivelsuperiordenominadofactores,loscualesincluyenlavaloración propiamente,unnivelintermediodenominadocriterios,sonvaloracionesrespectoaunoscriteriosdecalidady unnivelinferiorométricas,consistenteenmedicionespuntualesdedeterminadosatributosocaracterísticas. Losprincipalesfactoresdecalidadson: - Corrección:Gradoenqueunproductodesoftwarecumpleespecificacionesorequisitosfijados. - Fiabilidad: - Eficiencia: - Seguridad: - Facilidaddeuso: - Mantenibilidad: - Flexibilidad: - Facilidaddeprueba: - Transportabilidad: - Reusabilidad: - Interoperatividad: Plandegarantíadelacalidad
Paraalcanzarunabuenacalidadenelproductoesnecesarialaorganizacióndelproyectodedesarrollo, lacualdebematerializarseenunproductoformaldenominadoPlandegarantíadecalidaddesoftware,elcual debecontemplar: - Organizacióndelosequiposdepersonasyladirecciónyseguimientodeldesarrollo. - Modelodeciclodevidaaseguir,condetalledesusfasesyactividades. - Documentaciónrequerida,especificandoelcontenidodecadadocumentoyunguióndelmismo. - Revisionesyauditoríasquesellevaránacaboduranteeldesarrolloparagarantizarlacalidaddel proyecto. - Organizacióndelaspruebasqueserealizaránsobreelsoftwareadiferentesniveles. - Organizacióndelaetapademantenimiento,especificandocomohandegestionarseloscambios. Revisiones
Lasrevisionesconsistenenlainspeccióndelresultadodeunaactividadconcretaparadeterminarsi estaesaceptableoporelcontrariocontienedefectosquedebensersolucionados.Estasdebenser normalizadassiguiendolassiguientesrecomendaciones: - Lasrevisionesdebenserrealizadasporungrupo,puestoqueestofacilitaeldescubrimientodefallos. - Elgrupodebeserreducidoparaevitardiscusionesyfacilitarlacomunicación.Recomendable3-5. - Larevisiónnodeberealizarseporlosautoresdelproducto,sinoporpersonasquegaranticen imparcialidad. - Sedeberevisarelproducto,masnoelprocesodeproducciónoalpropioproductor.Pueselproducto perduramientraselprocesopierdaimportanciaenelusodelproducto. - Silarevisióndebedecidirlaaceptaciónonodelproductoesrecomendableestablecerunalistaformal decomprobacionesarealizar. - Debelevantarseactadelareuniónderevisión,conteniendolospuntosimportantesdediscusiónylas decisionestomadas.
16
Gestióndeconfiguración
Laconfiguracióndesoftwarehacereferenciaalamaneraenquediversoselementossecombinanpara construirunproductobienorganizado,tantodesdeelpuntodevistadeexplotación,comodesudesarrolloo mantenimiento.Siendoalgunosdeloscomponentesdelaconfiguraciónloscualesintervieneneneldesarrollo: - Documentosdeldesarrollo:Especificaciones,diseño,… - Códigofuentedelosmódulos. - Programas,datosyresultadosdepruebas. - Manualesdeusuario. - Documentosdemantenimiento:Informesdeproblemasycambios. - Prototiposintermedios. - Normasparticularesdelproyecto. Elproblemadelagestióndelaconfiguraciónresideenqueloselementosevolucionanalolargodel desarrolloylaexplotacióndelsoftware,loqueimplicalanecesidadderealizarconfiguracionesparticulares, compuestasdediferenteselementos,conloquenecesitamosunaseriedetécnicasquenospermitanmantener laconfiguraciónoconfiguracionesdesoftwarecontroladas,lascualesson: - Controldeversiones:Esteregistrocontienealmacenadosdeformaorganizadalassucesivasversiones decadaelementodelaconfiguración,demaneraquealtrabajarsobreunaconfiguraciónconcretadel productosepuedaaccedercómodamentealasversionesapropiadasdeloselementos. - Controldecambios:Garantizaquelasdiferentesconfiguracionesdelsoftwaresecomponende elementoscompatiblesentresí,paraloqueseusaelconceptodelíneadebase.Cadalíneabasese construyeapartirdeotramediantelainclusióndeciertoscambios,quepuedenserlaadicióno supresióndeelementos,olasustitucióndealgunosporversionesnuevasdelosmismos. Normasyestándares
Algunasdelasnormashansidorecogidaspororganizacionesinternacionalesyestablecidascomo estándaresaseguireneldesarrollodedeterminadasaplicaciones.Entreestasnormativasencontramos: - IEEE: - DoD: - ESA: - ISO: - METRICA-2:
17
Tema2.Especificacióndelsoftware
1. Modeladodesistemas 2. Análisisderequisitosdelsoftware 3. Notacionesparalaespecificación 4. Documentodeespecificaciónderequisitos
18
Modeladodesistemas Conceptodemodelo
Unmodeloconceptualconsisteentodoquenospermiteabstraernosdelproblemaexacto permitiéndonoscomprenderconmayorprecisiónquédebehacerelsistemaynocomodebehacerlo.Elmodelo delsistemapermiteestablecerlaspropiedadesyrestriccionesdelsistema,loqueimplicaunavisióndealto nivel.Losprincipalesobjetivosacumplirporlosmodelosson: - Facilitarlacomprensióndelproblemaaresolver. - Establecerunmarcoparalacomparación,quepermitasimplificarysistemizarlalabortantodel análisisinicialcomodeaquellosposteriores. - Fijarlasbasesparaeldesarrollo deldiseñofinal. - Facilitarlaverificacióndela cumplimentacióndelosobjetivosiniciales. Técnicasdemodelado
Puestoquelaobtencióndeunmodeloquecumplaconlasfuncionesantesmencionadasnoesfácil,se empleanunadelassiguientestécnicas: Descomposición.Modelojerarquizado Laprimeratécnicaaemplearsobreunproblemacomplejo,esladivisióndeesteenotrosmássencillos, demaneraquesegúnladivisiónqueseempleepodemosdescribir: - Descomposiciónhorizontal:Consisteenladescomposicióndelproblemasegúnlafuncionalidad,siendo enelcasodelprogramaparaunaempresa:Sistemadenóminas,sistemadecontabilidad,… - Descomposiciónvertical:Consisteenladescomposicióndelproblemabuscandodetallarsuestructura, enelcasoanterior:Entradadedatos,cálculodeingresos,pagodeimpuestos,… Esposibledescomponercadaunodelosproblemasobtenidosenotrosmássimples,siendoimportante establecerlasinterfacesentrelaspartesosubsistemasparaloqueseaplicaelmétododerefinamientos sucesivosalmodeladodelsistema. Aproximacionessucesivas Puestoqueesprobablequeelsistemaquesequieremodelarprovengadeunatareaqueserealizade maneramanualomenosautomatizada,sepuedecrearunmodelodepartidabasadoenlaformadetrabajo anteriordemanerapreliminar,siendodepuradocontinuamentemedianteaproximacionessucesivashasta alcanzarunmodelofinal.Paraloqueesimportantecontarconalguienqueconozcabienelsistemaanterior, siendocapazdeincorporarmejorasydiscutirventajaseinconvenientesdecadaunodelosmodelosmedios. Empleodediversasnotaciones Puestoquelacomplejidaddeunproyectopuedelimitarlaposibilidaddeexpresarlomedianteunúnico tipodenotaciónsehaceprecisoelempleodevariosmodosdenotación.Unmétododenotaciónseríael lenguajenaturalquepermiteexpresarelmodelomedianteexplicaciones,loquepuededificultarlaapreciación delconjunto,ademásdeproducirseimprecisiones,repeticioneseinclusoincorrecciones.Loidealesemplearla notaciónonotacionesquemejorcubranlosobjetivosdelmodelo.Existenherramientasdemodeladoparala ayudaalanálisisydiseñodenominadasherramientasCASE. Considerardistintospuntosdevista Puestoqueelmodeloseencuentrainfluenciadoporelpuntodevistaadoptado,sehacenecesarioelegir elpuntodevistaquepermitaobtenerelmodelomásadecuadoparaelcomportamientodelsistema,teniendo queelegirentre:Puntodevistadelusuario,delmantenedordelsistema,funcional,…Pudiendoenocasiones sernecesarioemplearmasdeunpuntodevista. Realizarunanálisisdeldominio Eldominioeselcampodeaplicacióndondeseclasificaelsistemaadesarrollar,siendoimportantepara sucalificacióntenerencuentalossiguientesaspectos:Normativaqueafectaalsistema,sistemassemejantes, estudiosrecientesenelcampodelaaplicaciónylabibliografíabásicayespecializada.Permitiendolacreación deunmodelomásuniversal,queobtendrálassiguientesventajas:Facilitarlacomunicaciónentreanalistay usuarios,creacióndeelementosrealmentesignificativosdelsistema,permitiendoquelasoluciónno especifiqueenexcesoyposibilitacióndelareutilizaciónposteriordelsoftwaredesarrollado. pág.41EXT. 19
Análisisderequisitosdelsoftware Objetivosdelanálisis
Elobjetivofinaldelanálisisenobtenerlasespecificacionesquesedeseandelsistemaadesarrollar,para loquesenecesitaunmodeloquepermiterecogertodaslasnecesidadyexigenciasqueproponeelcliente, ademásdecumplirtodaslasrestriccionesqueconsidereelanalista.Lasespecificacionesobtenidasdependerán delmodeloobtenido,paraloquesedebendescartaraquellasexigenciasporpartedelclientequesean imposiblesderealizar.Paraloqueseempleaunmodeloquedebecumplirlasiguientespropiedades: - Completoysinomisiones:esunapropiedaddifícildeconseguirdebidoaladificultadparaconocer todoslosdetallesdelsistemaquesepretendeespecificar. - Concisoysintrivialidades:Evitarladocumentaciónexcesivaextensa,evitandorepeticiones. - Sinambigüedades:Enelmodeloresultantenadadebequedarambiguo,puespodríaproducirerrores yproblemasdeconsecuenciasdifícilesdeprever. - Sindetallessobreeldiseñoolaimplementación:Esimportantetenerencuentaquelafinalidaddel análisisesdeterminarQUEsevaahacerynoCOMO,porloquesedebeplantearbieneproblemasin intentarresolverlo. - Fácilmentecomprensibleporelcliente:Paraloquesedebemantenerelniveldeprogramaciónalto, utilizandounlenguajeasequiblequefacilitelacolaboraciónconelcliente,siendopositivoelempleode representacionesgráficas. - Separandorequisitosfuncionalesynofuncionales:Esimportantesepararlosrequisitos,pueslos funcionalesseránaquellosqueinteresanrealmentealcliente,siendolosnofuncionalesdeunacarácter mástécnicoycarecendeinterésparaelcliente. - Dividiendoyjerarquizandoelmodelo:Puestoquelaformamássencillodesimplificarunproblema consisteensucorrectadivisiónenalgunosmássencillos,estatareatieneunagranimportancia. - Fijandoloscriteriosdevalidacióndelsistema:Esimportantequeelmodelodelsistemaquede expresamenteindicadosloscriteriosdevalidaciónqueseránaquellosquecumplanelaspecto contractual,asegurandoquenuestrosoftwarecumplalasexpectativaspropuestas. Tareasdelanálisis
Paraeldesarrollocorrectodelanálisisderequisitossedebenseguirlossiguientespasos: 1) Estudiodelsistemaensucontexto:Esimportanteconocerelmedioenelquesevaadesenvolverel sistema,paraloquesedebetenerencuentaelanálisisdeldominio,quenosoloincidesobrela terminologíaaemplear,sinoquepermitelavisióndelsistemamasglobalizada,facilitandola reutilizacióndealgunaspartes. 2) Identificacióndelasnecesidades:Puestoqueinicialmentelaactituddelclienteessolicitartodas aquellasfuncionalidadesquepiensapodríanserútiles,aparecelalabordelanalistaelcualdecidelas necesidadesquesepuedencubrir,conlosmediodequesedisponen.Loqueimplicaqueparala realizacióndeestafaseesnecesariaunafluidaconversaciónentreclienteyanalista.Porloquetodas aquellasnecesidadesquefinalmentedeberánestarconsensuadasportodosaquellosqueparticipanen elanálisis,paraloqueelanalistaintentaráconvencerdeserlamejoropciónconlosmediosdisponibles 3) Análisisdelasalternativasyestudiodeviabilidad:Puestoqueexisteninfinidaddesolucionespara unmismoproblema,estareadelanalistabuscaraquellasoluciónquecubralasnecesidadesreales, manteniendounaviabilidadtécnicayeconómica. 4) Establecimientodelmodelodelsistema:Puestoqueelmodelosevaperfilandosegúnavanzael estudiodelasnecesidadesylassolucionesadoptadas,sehacenecesarioelempleodetodoslosmedios disponiblescomoprocesadoresdetexto,herramientasCASE,herramientasgráficasytodoaquelloque permitafacilitarlacomunicaciónentreanalista,clienteydiseñador. 5) Elaboracióndeldocumentodeespecificaciónderequisitos:Elresultadofinaldelanálisisesel documentodeespecificaciónderequisitos,siendounadelaspartesmasimportanteselmodelodel sistema,puestoquesedebeirperfilandosuelaboracióneneldocumentodesarrollado.Estedocumento seráelqueempleeeldiseñadorcomopuntodepartidadesutrabajo,puestoqueenestedocumentose especificanlascondicionesdevalidacióndelsistemaunavezconcluido.
20
6) Revisióncontinuadadelanálisis:Lalabordelanálisisnofinalizaconlaredaccióndeldocumentode especificaciones,siendonecesarialarevisiónymodificaciónacausadeproblemasacaecidosdurante lasfasesdediseñoeimplementaciónoporuncambiodeloscriteriosdelcliente.
Notacionesparalaespecificación Lenguajenatural
Seempleaprincipalmentecuandolacomplejidaddelossistemasespequeñayconsisteenlautilización dellenguajequecomúnmenteutilizamosparacomunicarnos,loquelohaceinviablesuutilizaciónensistemas conunacomplejidadmediaoalta,quedandorelegadoparaaclararalgúnaspectoquenosepuedahacer medianteelrestodenotaciones. Encasodequereremplearestetipodenotaciónesmuyimportanteorganizaryestructurarlos requisitosrecogidosenlaespecificación,siendolamejoramaneraparalograrlo,concebircadaunodelos requisitoscomounacláusuladeuncontratoentreanalistaycliente,demaneraqueseagrupanlosrequisitos segúnsucarácter:Funciones,calidad,seguridad,fiabilidad,…;estableciendodentrodecadagrupolascláusulas devariosnivelesysubniveles,porejemploenelgrupodefunciones:Modosdefuncionamiento,formatosde entrada,formatosdesalida,…Loquepermitiráeliminarimprecisiones,ambigüedadesyrepeticiones. Porotroladoellenguajenaturalestructuradoesunanotaciónmasformal,lacualestablececiertas reglasparalaconstruccióndelasfrasesenlasqueseespecificaunaaccióndesecuencia,condiciónoiteración, tratandodeemplearlamismaconstrucciónentodaslasfrases. Diagramasdeflujodedatos
Estanotaciónseasociaalametodologíadeanálisisdeladécadadelos70,demaneraqueestimaqueun sistemadesoftwarepuedequedardefinidoporelconjuntodelosdatosdeentrada,sustransformaciones,sus datosysussolucionesdealmacenamiento.Loquepermitesufácilaplicaciónaaquellossistemasenlosquese producensucesivasfasesdetransformaciónsobrelosdatosdeentrada. ElDFDseempleademanerajerarquizadaporniveles,denominandoalprimeroymásgeneralDFDde nivel0oDFDdecontexto,elcualcontienelosdatosinicialesperoinsuficientes,porloquesehacenecesario paraexplotarlo,dedondesaldráunDFDporcadaprocesoqueexistieradetallandomejorcadaunadelas funcionesdeeste.AsícadavezquesecreaunnuevoniveldeDFDserealizanumerandodeformacorrelativa losdistintosprocesos,demaneraqueencasodeexplotarelprocesox,surgenlosDFDx.1,x.2ydemás.
Hayquetenerencuentaquetodoslosflujosdeentradaysalidadebencoincidirantesydespuésdela explosiónorefinamiento,siendolaprincipalventajadeestanotaciónsusimplicidad.PorloquelosDFDsirven paraestablecerunmodeloconceptualdelsistemaquefacilitalaestructuracióndesuespecificación,aunque 21
provocaqueelmodelodesarrolladoconestanotaciónseafundamentalmenteestático,teniendoelproblemade nopoderreflejarladinámicaosecuenciaenlaejecucióndelosprocesos,siendolaúnicapremisacarácter dinámicoquesepuedeestablecereslautilizacióndeunmodeloabstractodecómputodeltipodeflujode datos. Diagramasdetransicióndeestados
Cadaquesemodificaunavariable,seevalúaunacondiciónoeltérminodeunaexpresión,seproduce uncambiodeestado.Estosestadosylassucesivastransicionesentreellosdefinenladinámicade funcionamientodelsistemaqueseproducemientrasseestáejecutando.Porloqueeldiagramadetransición deestadoseslanotaciónespecíficaparadescribirelcomportamientodinámicodelsistemaapartirdelos estadoselegidoscomomásimportantes,porloquecomplementaperfectamenteconlosDFDpuestoquecubre lafacciónmásdinámicadelprograma,quenosepuederepresentarmedianteDFD.lanotacióneslasiguiente:
Descripcionesfuncionalesopseudocódigo
Elpseudocódigoesunanotaciónbasadaenunlenguajedeprogramaciónestructuradodelquese excluyentodoslosaspectosquesonpropiosdecadalenguaje,comopuedansertipos,variableso subprogramas,pudiéndoseincluirdescripcionesenlenguajenaturalamododecomentarios,encasode necesitaralgunaaclaración.Cuandoseutilizaseintentadetallarcualeslanaturalezadelprogramaaresolver, sinintentardetallarcomoresolverlo,porloquenosedebenincluirningunaformaconcretadeorganizaciónde lainformación,nitampocopropuestasconcretasparalaresolucióndelosproblemas.Siendolobásico: Selección:SIENTONCES Selecciónporcasos:CASOSI-ESHACER SI-ESHACEROTROS Iteraciónconpre-condición:MIENTRASHACERFIN-MIENTRAS Iteraciónconpost-condición:HACERHASTAFIN-HASTA Iteracióndevueltasconocidas:PARACADAHACER • •
• • •
Descripcióndedatos
Tratadedetallarlaestructurainternadelosdatosquesevanaemplearsindescenderadetallesde diseñoocodificación,utilizándoseunametodologíadeanálisisestructuradodenominadadiccionariodedatos. Puestoqueexistendiversosformatosposiblesdediccionariodedatos,todosdebenmantenerencomúnel siguienteesquema: Nombreonombres:Denominaciónconlaseutilizaráestedatoduranteelrestodelaespecificación. Utilidad:Indicarálosprocesos,descripcionesfuncionales,almacenesdedatos,…Dondeseutilizael datoenconcreto. Estructura: • •
•
22
Diagramasdemodelosdedatos
Esunasistemaquemanejaunaseriededatosrelacionadosentresí,empleandoloqueseconocecomo modeloentidad-relación,quepermitedefinirtodoslosdatosquemanejarálaaplicaciónylarelaciónqueexiste entreellos.Aunqueelsujetoestarásujetoamodificacionesalolargodelasfasesdecodificaciónydiseño,es muyimportantepuesesunpuntodepartidaindispensable.Lanotaciónbásicasería:
Unelementofundamentaleslacardinalidaddelarelaciónqueimplicaentrequevaloresdemínimoy máximoovaloresdepertenenciasemuevelarelación.Lacardinalidadsedibujasiempreunidaalasegunda entidaddelarelaciónconunsímboloparaelvalormínimoyotroparaelmáximo.
*Referenciaabasesdedatos.Tema6.2
23
24
BLOQUE2.DISEÑODESISTEMAS DESOFTWARE
25
26
Índice Tema3.FundamentosdelDiseñodeSoftware...................................................................................................................................29 Introducción..................................................................................................................................30 Definicióndediseño................................................................................................................................30 Actividadesfundamentalesdeldiseño............................................................................................30 Conceptosdebase.......................................................................................................................30 Abstracción..................................................................................................................................................30 Modularidad................................................................................................................................................31 Refinamiento...............................................................................................................................................31 Estructurasdedatos................................................................................................................................31 Ocultación.....................................................................................................................................................31 Genericidad..................................................................................................................................................31 Herencia........................................................................................................................................................31 Polimorfismo...............................................................................................................................................32 Concurrencia...............................................................................................................................................32 Notacionesparaeldiseño.........................................................................................................32 Notacionesestructurales.......................................................................................................................32 Notacionesestáticas................................................................................................................................34 Notacionesdinámicas.............................................................................................................................35 Notacioneshíbridas.................................................................................................................................35 Tema4.TécnicasGeneralesdeDiseñodeSoftware.........................................................................................................................38 Descomposiciónmodular.........................................................................................................39 Definición......................................................................................................................................................39 Independenciafuncional.......................................................................................................................39 Comprensibilidad......................................................................................................................................40 Adaptabilidad.............................................................................................................................................40 Técnicasdediseñofuncionaldescendiente.......................................................................41 Desarrolloporrefinamientoprogresivo.........................................................................................41 ProgramaciónestructuradadeJackson..........................................................................................41 Diseñoestructurado................................................................................................................................41 Técnicasdediseñobasadasenabstracciones...................................................................41 Descomposiciónmodularbasadaenabstracciones..................................................................41 MétododeAbbot.......................................................................................................................................42 Técnicasdediseñoorientadasaobjetos.............................................................................42 Diseñoorientadoaobjetos...................................................................................................................42 Técnicasdediseñodedatos.....................................................................................................43 Definición......................................................................................................................................................43 Diseñodebasesdedatosrelacionales.................................................................................43 Diseñodebasesdedatosdeobjetos.....................................................................................43
27
28
Tema3.FundamentosdelDiseñodeSoftware
1. Introducción 2. Conceptosdebase 3. Notacionesparaeldiseño
29
Introducción Definicióndediseño
Esladescripcióndelsistemaadesarrollar,tratandodedefinirynormalizarlaestructuradelsistema conelsuficientedetallecomoparapermitirsurealizaciónfísica,siendoelpuntodepartidaeldocumentode especificacionesderequisitos. Esmuyimportantelaexperienciaprevia,porloquesiemprequeseaposibleseintentaráreutilizarla máximacantidadposibledemódulosoelementosyadesarrollados,inclusive,auntratándosedeunsistema completamenteoriginalsepodráutilizarelenfoquedadoaalgúnproyectoanteriordesimilarescaracterísticas, loquesedenomina“knowtoknow”,siendoensucesivasiteracionescuandoseperfileelenfoquemásadecuado paraelnuevodiseño.Hayquetenerencuentaquelafasedediseñoeslamásimportante,yaqueeslaque marcaelpasodeQUEsequiereaCOMOsehace. Actividadesfundamentalesdeldiseño
1. Diseñoarquitectónico:Detallarlosaspectosestructuralesydeorganizacióndelsistemaysuposible divisiónensubsistemasomódulos,loquepermitiráestablecerlasrelacionesentrelossubsistemas creadosydefinirlasinterfacesentreellos. 2. Diseñodetallado:Duranteestaactividadseabordalaorganizacióndelosmódulos,tratandode estudiarcualeslaestructuramásadecuadaparacadaunodeellos.Comoresultadodeeste,aparecen nuevosmódulosquesedebenincorporaraldiseñoglobal,seagrupanmódulosquedebanestarloose eliminanotrosporestarvacíosdecontenido,existiendorelaciónentreestediseñoyelanterior. 3. Diseñoprocedimental:Abordalaorganizacióndeoperacionesoserviciosqueofrecerácadaunode losmódulos,siendonecesariodetallarenpseudocódigooPDLlosaspectosmásimportantesdecada algoritmoencadamódulo. 4. Diseñodedatos:Abordalaorganizacióndelabasededatosdelproblema,lacualsepuededesarrollar enparaleloconeldiseñodetalladoyprocedimental,siendoelpuntodepartidaeldiccionariodedatosy losdiagramasdeE-Rdelaespecificacióndelsistema,siendoimportantequeelcódigoobtenidosea reutilizableyfácilmentemantenible. 5. Diseñodelainterfazdeusuario:Abordalaorganizacióndelainterfazdeusuarioycuyaimportancia estal,quehanaparecidoherramientasespecificasquefacilitanmuchoeldiseño.
Conceptosdebase Abstracción
Cuandosediseñaunnuevosoftwareesimportanteidentificarloselementosrealmentesignificativosde losqueconstaelsistemayabstraerlautilidadespecíficadecadaunomasalládelsistemaalqueperteneceny paraelqueseestándiseñando,loquepermitecumplirconlosprincipalesobjetivos:Conseguirelementos fácilmentereutilizablesyfácilmentemantenibles. Eneldiseñodeloselementossoftwaresepuedenutilizarfundamentalmente3formasdeabstracción: - Abstraccionesfuncionales:Sirvenparacrearexpresionesparametrizadasoaccionesmedianteel empleodefuncionesoprocedimientos,siendonecesariofijarlosparámetrosoargumentosquesele vanapasar,elresultadoadevolver,loquesepretenderesolverycomo. - Tiposabstractos:Sirvenparacrearlosnuevostiposdedatosquesenecesitanparaabordareldiseño delsistema.Juntoalnuevotipodedatosedebendiseñarlosmétodosuoperacionesquesepueden realizarconél. - Maquinasabstractas:Permiteestablecerunniveldeabstracciónsuperioralosanteriores, definiéndosedeunamaneraformalelcomportamientodeunamaquina.
30
Modularidad
Elempleodelamodularidadpromuevenumerosasventajascentradasencuatroámbitos: - Divisióndeltrabajo :Loquepermiteencargareldesarrollodecadamóduloapersonasdiferentes, permitiendoqueeltrabajoseasimultáneo,aunqueesimportantelasinterfacesentretodosellosque completamentedefinidasycorrectamentediseñadas. - Claridad:Debidoaqueesmássencillocomprenderensutotalidadcadaunodelosmódulosquenoel sistemaalcompleto. - Reducción de costos:Puesresultamásbaratodesarrollar,depurar,documentar,probarymantener cadaunodelosmódulosqueelsistemaalcompleto. - Reutilización:Puestoquecadamódulotieneunafuncionalidadcompleta,estesepuedeemplearen otrosproyectoscuyafuncionalidadsealamisma. Esmuyimportanterecalcarqueelempleodelamodularidadnodebeestarligadoalafasede codificación,nimuchomenosallenguajedeprogramaciónempleado. Refinamiento
Elconceptoderefinamientoresultaimprescindible,puestoquesepartedeunaideanomuyconcreta quesevarefinandoensucesivasaproximacioneshastaperfilarelmásmínimodetalle,siendoelobjetivoglobal deunsistemadesoftwareexpresadoensuespecificaciónrefinarloensucesivospasoshastaquetodoquede expresadoenellenguajedeprogramacióndelcomputador. Elusodirectodelrefinamientosucesivosepuedeaplicarcuandoelprogramaesrelativamentesencillo, yaqueencasocontrarioseríamejoraplicarlasideasdeabstracciónomodularidadparafragmentarla operaciónglobalenotrasmássencillasyasequibles. Estructurasdedatos
Laorganizacióndelainformaciónesunatareafundamental,puestoqueelusoerróneodeltipode contenedorpuedecomplicardesobremaneralasaccionesdebúsquedaomodificacióndelosdatos almacenados,segúneltipodedatosaalmacenarylosmétodosaaplicarsobreestossedebeelegirentrelos fundamentalessoportesdedatos:Registros,conjuntos,Formaciones,Listas,pilas,colas,árboles,grafos,tablas yficheros.Lograndoatravésdelacombinacióndelasestructurasbásicasantesmencionadasaquella estructurafinalquenospermiteresolverelproblema. Ocultación
Consisteenocultaralusuariooacualquierdesarrolladorquenotengaqueverdirectamenteconel móduloconcretotodoloquepuedasersusceptibledecambiooirrelevanteparasuuso.Loquepermite obtenerunaseriedeventajas: - Depuración:Resultamássencillolocalizarloserrores,yaquesepuedendesarrollarprogramaso estrategiasdepruebaqueverificanydepuranencadamódulosegúnloquehacenynocomolohacen. - Mantenimiento:Permitequeelmantenimientoenunmódulonoafectealosdemás. Loquepermitiráutilizarunmódulosinconocersuestructurainterna. Genericidad
Consisteenlaagrupacióndeaquelloselementosdelsistemaqueutilizanestructurassemejantesoque necesitandeuntratamientosemejante,paraloquediseñamosunelementogenéricoconlascaracterísticas comunesatodosloselementosagrupados,dondesepuedediseñarcadaunocomouncasoparticulardel elementogenérico. Herencia
Permiteestablecerunaclasificaciónojerarquíaentreelementosdelsistemapartiendodeunelemento “padre”queposeeunaestructurayoperacionesbásicas,queheredanlos“hijos”yalquecadaunoleagrega 31
nuevascapacidades,lasmejoraosimplementelasadaptaasuuso.Estoshijospuedenalaverserheredados porotrosdemaneraquepodemoscrearuncódigoquesefácilmentereutilizable. Polimorfismo
Elpolimorfismoconsisteesunconceptoqueaplicadoalainformáticaimplicalograrqueunelemento adquieravariasformassimultáneamente.Loquepermitemuchasposibilidades,entreellas: - Elconceptodegenericidadesunamaneradelograrqueunelementogenéricopuedaadquirirdistintas formascuandoseparticularizasuutilización. - Elpolimorfismodeanulación,dondelasestructurasyoperacionesdelelemento“padre”seadaptanal elemento“hijo,peroalgunasdeestassevenanuladaspornuevasversionesenelelemento“hijo”. - Elpolimorfismodiferido,queplantealanecesidaddelaoperaciónenelelemento“padre”perosu concreciónsedejadiferidaparacadaunodeloselementos“hijos”concretesuformaespecífica,loque algunoslenguajessedenominaclaseabstracta. - Elpolimorfismodesobrecargaqueconsisteenquelosoperadoresqueseutilizanpararelacionarlas diferentesentidadescumplandiferentesfuncionesoprocedimientossegúneltipodeentidadesquese encuentrenrelacionando. Deloqueseentiendequeelpolimorfismoestáligadoalasmetodologíasorientadasaobjetos. Concurrencia
Consisteenaprovecharlacapacidaddeprocesodelcomputadorejecutandotareasdeforma concurrente,yaquepermiteejecutaralgoritmosquenosepodríanhacerdeformasecuencial,loquehace importantedesarrollarunsistemaderestriccionesdetiempo,paraloquehayquetenerencuenta: - Tareasconcurrentes:Conocerlastareasquesepuedendesarrollarsimultáneamentepararespetarlas restricciones. - Sincronizacióndetareas:Determinarclaramentelospuntosdesincronizaciónentrelasdistintas tareasqueoperandeformasimultáneamediantemonitoresosemáforos. - Comunicaciónentretareas:Permitedistinguirsilacooperaciónsebasaendatoscompartidosporlas distintastareasoelintercambiodemensajes,yaqueencasodeempleardatoscompartidossehace necesarioelempleodemétodosdesincronizaciónyregionescríticas,loquegarantizarálaexclusión mutuadelasclasesqueintervienenenlacomunicación. - Interbloqueo:Esunproblemaproducidocuandounaseriedetareassequedaesperandoporla finalizacióndeotras,duranteuntiempoindefinido.
Notacionesparaeldiseño Notacionesestructurales
Sirvenparacubrirunprimerniveldeldiseñoarquitectónico,tratandoconellasdedesglosary estructurarelsistemaensuspartesfundamentales.Unanotaciónhabitualparadesglosarelsistemaesel empleodediagramasdebloques,dondeseindicanlasconexionesentrelosdiferentesbloques,permitiendoen algunoscasosrepresentarunaciertaclasificaciónojerarquización.Otranotacióneselempleodecajas adosadas,dondelaconexiónentredosbloquesseponedemanifiestocuandoentredoscajasexisteuna fronteracomún.
32
EstosdiagramasfueronpropuestosporYourdonyMyersparadescribirlaestructuradelossistemasde softwarecomounajerarquíadesubprogramasomódulosengeneral.Elsignificadodelossímbolosutilizados: - Rectángulo:Representaunmóduloosubprogramacuyonombreseindicaensuinterior. - Línea:Unedosrectánguloseindicaqueelmódulosuperiorllamaoutilizaalmóduloinferior.Avecesla líneaacabaenunaflechajuntoalmóduloinferioralqueapunta. - Rombo:Sesitúasobreunalíneaeindicaqueesallamadaoutilizaciónesopcional.Sepuedeomitiren casodequeenlaposteriordescripcióndelmódulosuperiorseindicaqueelinferiorsepuedeutilizar opcionalmente. - Arco:Sesitúasobreunalíneaeindicaqueesallamadaoutilizaciónseefectúademanerarepetitiva. - Círculo con flecha:Sesitúaenparaleloaunalíneayrepresentaenelenvíodelosdatoscuyonombre acompañaalsímbolo,desdeunmóduloalotro.Elsentidodeenvíolomarcalaflecha,peroparaindicar silosdatossondecontrolseempleauncirculorelleno.Unainformacióndecontrolsirveparaverificar SI/NO,obienunestado:Correcto/Seguirrepitiendo/Error/Desconectado…
Elresultadoesundiagramaenformadeárbolmostrandolajerarquizacióndelosmódulos,aunquees normalquevariosmódulossuperioresempleenunmismomóduloinferior.ELdiagramadeestructurano estableceningunasecuenciaconcretadelautilizacióndelosmódulos,puesreflejaunaorganizaciónestáticade losmismos.
LosdiagramasHIPO(Hierarchy-Input-Process-Output)esunanotaciónorientadaafacilitary simplificareldiseñoydesarrollodesistemassoftware,destinadosfundamentalmentealagestión.lamayoría deestossistemassepuedendiseñarcomounaestructurajerarquizadadesubprogramasomódulos,ademásde quecadamódulotieneunformatoquesepuedeadaptaraunpatróncaracterizadoporlosdatosdeentrada,el tipodeprocesoylosresultadosdesalida.
EldiagramadeHIPOdecontenidosseutilizaparaestablecerlajerarquíaentrelosmódulosdelsistema, loqueessemejanteaunadiagramadeestructurassimplificado,dondenosemuestranlosdatosquese intercambianlosmódulos.CadamódulotienenunnombreyunareferenciaalcorrespondientediagramaHIPO. EldiagramadeHIPOdedetalleconstadetreszonasbiendiferenciadas:Entradas(I),Proceso(P),Salida (O),representandolaszonasdeentradaysalidaalosdatosqueentranysalendelmódulo,mientrasquela zonacentralsedetallaelpseudocódigodelprocesoconreferenciaaotrosdiagramasdedetalledenivelinferior 33
enlajerarquía.LalistadelosdiagramasreferenciadosselistanacontinuacióndelapartículaPARA,enlaparte superioryacontinuacióndelapartículaDE,dondeseindicaeldiagramadedetallesuperior.
EstanotaciónformapartedelametodologíadeJacksonparadiseñarsistemasdesoftwareapartirde lasestructurasdesusdatosdeentradaysalida.Elprocesodediseñoesbastantesistemáticoysellevaacabo en3pasos:
1- Especificacióndelasestructurasdedatosdeentradaysalida. 2- Obtencióndeunaestructuradelprogramacapazdetransformarlasestructurasdedatosdeentradaen lasdesalida.Loqueimplicaunaconversióndelasestructurasdedatosenlascorrespondientes estructurasdeprogramaquelasmanejan,siendolasequivalenciastípicas: TUPLA-SECUENCIA:Coleccióndeelementosdetiposdiferentes,combinadosenunordenfijo. UNIÓN-SELECCIÓN:Seleccióndeunelementoentrevariosposibles,detiposdiferentes. FORMACIÓN-ITERACIÓN:Coleccióndeelementosdelmismotipo. 3- Expansióndelaestructuradelprogramaparalograreldiseñodetalladodelsistema.Pararealizareste pasonormalmenteseutilizapseudocódigo. • • •
Unejemplodesuusosería:
Siloselementosdeldiagramarepresentandatos,laestructuraequivalentedediccionariodedatos sería:A=B+C+D;C=(E|F);E={G};F=H+I. Notacionesestáticas
Estasnotacionessirvenparadescribircaracterísticasestáticasdelsistema,sintenerencuentasu posibleevoluciónalolargodelfuncionamientodelsistema.Comoresultadodeldiseñosetendráuna organizacióndelainformaciónconunniveldedetallemuchomayor.Lasnotacionesquesepuedenemplear paradescribirelresultadodeestetrabajosonlasmismasqueseempelanpararealizarlaespecificación: - Diccionario de datos:Detallalaestructurainternadelosdatosquemanejaelsistema,porloquese partedeldiccionariodedatosincluidoeneldocumentoSRDymediantelosrefinamientosnecesariosy seampliaráycompletaráhastaconseguirunniveldedetallesuficientequepermitapasaralafasede codificación. - Diagramas de entidad-relación:Permitedefinirelmodelodedatos,lasrelacionesentrelosdatosyen generallaorganizacióndelainformación.Paralafasedediseñosetomarácomopuntodepartidael diagramapropuestoeeldocumentoSRD,quesecompletaráyampliaráconlasnuevasentidadesy relacionesentrelasmismas,queaparezcaenlafasedediseñodelsistema.
34
Notacionesdinámicas
Estasnotacionespermitendescribirelcomportamientodelsistemadurantesufuncionamiento.Puesto quelaespecificaciónesprecisamenteunadescripcióndesufuncionamientoexterno,aldiseñarladinámicase detallasucomportamientoexternoyseañadeladescripcióndeuncomportamientointernocapazde garantizarquesecumplenlosrequisitosestablecidos,asílasnotacionesqueseempleanparaeldiseñoserán lasmismasutilizadasparalaespecificación: - Diagramadeflujodedatos:Lascaracterísticasdeestanotaciónsehacendurantelaespecificaciónde software,peroadiferenciasdeestassonmuchomasexhaustivas,yaquelosdiagramasdeflujodedatos debendescribircomosehaceninternamentelascosasynosoloelque. - Diagramadetransicióndeestados:Aligualquelaanteriorestádescritadurantelafasede especificación,perodurantelafasedediseñopuedenaparecernuevosdiagramasdeestadoquereflejen lastransicionesentrelosestadosinternos.Apesardeellosespreferiblenomodificaroampliarlos diagramasqueaparecenelSRDencargadosdereflejarelfuncionamientoexternodelsistema. - Lenguajededescripcióndeprogramas (PDL):Estanotaciónseempleatantopararealizarla especificaciónfuncionaldelsistema,comoparaelaborareldiseñodelmismo,marcandoladiferencia entreambaselniveldedetalleempleado.Tantoalespecificarcomoaldiseñarseutilizanlasmismas estructurasbásicas,peroparadescenderelniveldedetallerequiereenlafasedediseñodelempleode ciertasestructurasenunlenguajedealtonivelcomoAda-PDL. Notacioneshíbridas
Tratandecubrirsimultáneamenteaspectosestructurales,estáticosydinámicos,utilizando metodologíasdediseñobasadasenabstraccionesydiseñoorientadoaobjetos.
Permitendescribirlaestructuradeunsoftwarecomouncompuestodedatosabstractos,dondeen origensecontemplabandostiposdeabstracciones:Lasfuncionesylostiposabstractosdedatos,aloquesele hanañadidolosdatosencapsulados.Existeunaciertaanalogíaentrelametodologíadeorientaciónaobjetosy losdiagramasdeabstraccionesquesemuestraacontinuación:
Enlaabstracciónsedistinguetrespartesoelementos: - Nombre:Identificadordelaabstracción. - Contenido:Elementoestáticodelaabstracciónyenelquesedefinelaorganizacióndelosdatosque constituyenlaabstracción. - Operaciones:Elementodinámicodelaabstracciónyenélseagrupantodaslasoperacionesdefinidas paramanejarelcontenidodelaabstracción. Inicialmentelaúnicaformadeabstraccióndisponibleenloslenguajes,yportantoconlaque únicamentesepodíaabordareldiseño,eraladefinicióndesubprogramas:Funciones(expresiones parametrizadas)oprocedimientos(accionesparametrizadas).Unsubprogramaconstituyeuna operaciónabstractaquedenominaremos abstracciónfuncional,yaqueestanotienelapartede contenido.Enundiseñobienorganizadosepuedeagruparenunamismaentidadlaestructuradeltipo dedatosconlascorrespondientesoperacionesnecesariasparasumanejo,denominándoseaestaforma deabstraccióntipoabstractodedatos,yaquedisponedeunapartedecontenidoyunade operaciones.Cuandosolosenecesitaunavariabledeundeterminadotipoabstractosudeclaraciónse puedeencapsulardentrodelamismaabstracción,demaneraquetodaslasoperacionesserefierana esavariablesinnecesidaddeindicarlodemaneraexplícita.Estaformadeencapsuladosedenomina datoencapsulado,tienecontenidoyoperaciones,peronopermitedeclararmavariablesdelmismotipo. 35
Losmódulossonabstraccionesensusdistintasformasposiblesylarelaciónentreestasesjerárquicae implicaquelaabstracciónsuperiorutilizaalainferior.EnelejemplolaabstracciónfuncionalAutilizaeldato encapsuladoenDyeltipoabstractoB,mientraseldatoencapsuladoDesutilizadoporBylaabstracción funcionalC,alavezquelaabstracciónfuncionalCesutilizadaporB. Mientrasquelasabstraccionessepuedenconsiderarunapropuestadelosexpertosenprogramación, losobjetossonunapropuestadelosexpertoseninteligenciaartificial,yaquelaestructuradeonobjetoses exactamenteigualaladeunaabstraccióncondosdiferenciasfundamentales: - Noexistenadaequivalentealosdatosencapsuladosnialasabstraccionesfuncionales,sirealizamos objetosensuformaestricta. - Soloentreobjetosseconsideraunaherencia. Abstracciones Objetos Tipo abstracto de datos Clase de objeto Abstracción funcional No hay equivalencia Dato encapsulado No hay equivalencia Dato encapsulado (Variable o constante) Objeto (Ejemplar de la clase) Contenido Atributos Operaciones Métodos Llamada a una operación Mensaje al objeto Debidoalaspropiedadesparticularesdelosobjetossepuedenestablecerentreellosdostiposde relaciones: 1. Clasificación,EspecializaciónoHerencia:Estarelaciónentreobjetospermitediseñarunsistema aplicandoelconceptodeherencia.Nocontempladaentrelasabstracciones,pudiendodenominarla herenciacomoespecializaciónoclasificación.Enlaimagenlostriángulosindicanquelosobjetos inferioresheredandelsuperioratributosyoperaciones.
2. Composición:Larelacióndecomposiciónpermitedescribirunobjetomedianteloselementosquelo forman.Tambiénesvalidoentreabstracciones.Enlafiguraelromboindicaqueelobjetosuperiorse encuentracompuestoporlosinferiores.Enlarelacióndecomposiciónsolohayqueindicarla cardinalidadenunsentido,yaquecadaobjeto“hijo”solopuedeformarpartedeunobjeto“padre”.
36
37
Tema4.TécnicasGeneralesdeDiseñodeSoftware
1. Descomposiciónmodular 2. Técnicasdediseñofuncionaldescendiente 3. Técnicasdediseñobasadasenabstracciones 4. Técnicasdediseñoorientadasaobjetos 5. Técnicasdediseñodedatos 6. Diseñodebasesdedatosrelacionales 7. Diseñodebasesdedatosdeobjetos
38
Descomposiciónmodular Definición
Todaslastécnicasdediseñodescribenlanecesidaddeladescomposiciónmodulardelsistemacomo actividadfundamentaldeldiseño,siendonecesariocubrirtresaspectos:Identificacióndemódulos,descripción demódulosydescripcióndelasrelacionesentreellos.Ladiferenciafundamentalentrelasdiferentestécnicas dediseñohacereferenciaalosmétodosqueseempleanparallevaracabocadaunadelasactividades. Partiendodequeunmóduloesunfragmentodesoftwarerelativamenteindependientedelosdemás,se puedenelaborardiferentestiposdemódulosentreellos: - Código fuente:Contieneneltextofuenteescritoenellenguajedeprogramaciónelegido,siendoel móduloconsideradocomotalconmayorfrecuenciayenelquesehacereferenciadesdelasdiferentes técnicasdediseño. - Tabladedatos:Seutilizaparatabularciertosdatosdeinicialización,experimentalesosimplemente difícilesdeobtener. - Configuración:Puestoqueunsistemasepuedeconcebirparatrabajarenentornosdiversossegúnlas necesidadesdecadacliente,interesaagruparenunmismomódulotodaaquellainformaciónque permiteconfigurarelentornodetrabajo. - Otros:Unmódulosirveparaagruparciertoselementosdelsistemarelacionadosentresíyquese puedentratardeformaseparadadelresto. Elformatoconcretodecadamódulodependedelatécnica,metodologíaoherramienta,porloqueun mismosistemasepuededescomponerenmódulosdemuchasformasdistintas,siendoelobjetivo fundamentaldeldiseñoconseguirunsistemamantenibleysoloencasosexcepcionalessesacrificaráeste objetivoparalograrunamayorvelocidaddeprocesoomenortamañodecódigo. Independenciafuncional
Puestoquelosmódulosdebenrealizartareasindependientesesimportapreservarlaindependencia funcional,peropuestoquelarelaciónconlosotrosmódulosdelsistemaesindispensable,esimportante intentarquelasrelacionesconelrestodemódulosseanmínimas,paraloquesedebentenerencuantados criterios:Acoplamientoycohesión. Elgradodeacoplamientoentremódulosesunamedidadeinterrelaciónqueexisteentreellos, afectandoaltipodeconexiónylacomplejidaddelainterfase.Dependiendodelniveldeacoplamientoentrelos módulossedefinentresniveles,alosqueseasociacadatipodeacoplamiento,loscualesson: - Acoplamientoporcontenido(Fuerte):Seproducecuandodesdeunmódulosepuedencambiarlos datoslocalesoinclusoelcódigodeotromódulo,porloquenoexisteunaseparaciónreal.Estetipode acoplamientosolosepuedelograrconunlenguajedebajonivelyresultaprácticamenteimposiblede entenderydepurar. - Acoplamientocomún(Fuerte):Enesteacoplamientoseempleaunazonacomúndedatosalaque tienenaccesovariosotodoslosmódulos,loqueimplicaqueenlaprácticacadamódulopuedo estructurarymanejarlazonacomúncontotallibertad,loqueimplicaqueelempleodeeste acoplamientoexigequetodoslosmódulosesténdeacuerdoenlaestructuradelazonacomún.Estetipo deacoplamientoseproduceconelusodeCOMMONoFORTRANyrespondealusodeunamemoriaque esescasa,siendoladepuraciónymantenimientomuydifícil. - Acoplamientoexterno(Fuerte):Ocurrecuandolazonacomúnesundispositivoexternoalqueestán ligadoslosmódulos,porloquelaestructuradelazonacomúnlaimponeelformatodelosdatosque manejaeldispositivo.Aunqueesteesinevitableesrecomendableligaradispositivosexternoslamenor cantidaddemódulos. - Acoplamientodecontrol(Moderado):Escuandoseempleaunaseñalodatodecontrolgeneradaen unmóduloparacontrolarlalíneadeejecuciónquesedebeseguirenelmóduloquelorecibe. - Acoplamientoporetiqueta(Débil):Losmódulosseintercambiannosolodatossinoademásla estructuracompletadelaqueformanparte. - Acoplamientodedatos(Débil):Enestecaso,elcualeselmásventajoso,losmódulossolose intercambiandatosentreellos,demaneraqueelacoplamientoeselmínimoposible. 39
ó
Lacohesióneselcriterioquedefineenquemedidaloscomponentesdeunmóduloestánrelacionadoso sonafinesalobjetivofijadoparadichomódulo.Porotroladosedebetenerencuentanocrearunnúmero excesivodemódulosparanoaumentarexageradamentelacomplejidaddelsistema,loquepuedeobligaraque determinadoselementossueltosseincorporenaundeterminadomódulosintenermuchaafinidadconél,lo queprovocaráunadisminuciónenlacohesión.Clasificadosporelgradodecohesiónexisten: - Cohesiónconcidencial(Baja):Eslapeorposiblesyseproducecuandocualquierrelaciónentrelos componentesdelmóduloesunacoincidencia,porloquenoguardanrelaciónentreellos. - Cohesiónlógica(Baja):Seproducecuandoseagrupanunaseriedeelementosquerealizanfunciones similaresdesdelepuntodevistadelusuario. - Cohesióntemporal(Baja):Seproducecuandoseagrupanelementosqueseejecutanenunmismo momento,comoocurreconinicializaciónofinalizacióndelsistemaenquesedeben“parar”oarrancar” determinadosdispositivos. - Cohesióndecomunicación(Media):Seproducecuandotodosloselementosdelmódulooperanconel mismoconjuntodedatosdeentradaoproducenelmismoconjuntodedatosdesalida. - Cohesiónsecuencial(Media):Seproducecuandoloselementosdelmódulotrabajandeforma secuencial,demaneraquelasalidaunelementoeslaentradadelsiguiente. - Cohesiónfuncional(Baja):Selogracuandocadaelementoestáencargadodelarealizacióndeuna funciónconcretayespecífica.Conlastécnicasdediseñofuncionaldescendienteeselnivelmáximode cohesiónquesepuedelograrenunmódulo,porloqueestastécnicasbuscanestetipodecohesión. - Cohesiónabstraccional(Alta):Estaselogracuandosediseñounmódulocomotipoabstractodedatos conlatécnicabasadaenabstraccionesocomounaclasedeobjetoconlatécnicaorientadaaobjetos.En amboscasosseasociaunciertocontenidouorganizacióndedatosconlascorrespondientes operacionesqueposibilitansumanejo. Comprensibilidad
Puestoqueloscambioscontinúandurantelafasedemantenimientohastaquesesustituyeporun sistemanuevo,ypuestoqueloscambiosrealizadossonemprendidosporpersonasdiferentesalasque participaroneneldiseñoylaimplementación,esimportantequelacomprensióndelosmódulosdeforma aisladanoseamascomplejaquesurealización.porloqueapartedelacoplamientoylacohesiónes importantecuidarlossiguientesfactores: - Identificación:Eleccióncorrectadelanomenclaturadelmóduloydesuscomponentes,quedebe reflejardemanerasencillaelobjetivodelaentidad. - Documentación:Esimportanteladocumentacióndecadamódulo,especialmentedeaquellosaspectos dediseñooimplementaciónqueporsunaturalezanopuedenquedarreflejadosdeotramanera. - Simplicidad:Lassolucionessencillassonlasmejores,puesunalgoritmocomplicadoesdifícilde entender,depurarymodificarencasodesernecesario,pudiendoavecessacrificarselasimplicidaden casodecontarcontiempoomemoriaescasos. Adaptabilidad
Dadoqueladescomposiciónmodularestámuyfijadaporelobjetivoconcretodeldiseño,loque dificultalaadaptabilidaddeldiseñoaotrasnecesidades,conloqueunavezcubiertaslaindependencia funcionalylacomprensibilidad,sehacenecesariocuidarotrosfactoresquefacilitensuadaptabilidad: - Previsión:Puestoqueescomplicadopreverlaevolucióndeundeterminadosistema,losmódulosque seprevénpuedancambiarsesedebenagruparconunacoplamientodébilrespectoalosdemás,puesto queunamodificacióndeladescomposiciónmodularresultacomplicadaycostosa. - Accesibilidad:Esimportantequeresultesencilloelaccesoalosdocumentosdeespecificación,diseño eimplementación,loquerequiereunaorganizaciónminuciosa,queenmuchoscasossolosepuede llevaracabomedianteunaherramientaCASE. - Consistencia:Cuandosemodificanlosprogramasfuentesedebenmodificartodoslosdocumentos implicados,loquesepuedehacerautomáticamentegraciasalempleodeherramientasparaelcontrol deversionesyconfiguración.puestoqueenentornosorientadosaobjetosnoexistenestas herramientassehacenecesarioemplearunadisciplinaférreadentrodelabiblioteca. 40
Técnicasdediseñofuncionaldescendiente Desarrolloporrefinamientoprogresivo
Estatécnicacorrespondealaaplicacióndelaprogramaciónestructuradamedianteelusode estructurasdecontrolclarasysencillas,conunúnicoinicialyunúnicopuntofinaldeejecución,enparticular sonlasecuencia,laselecciónylaiteración.Laconstruccióndeprogramasbasadaenelconceptode refinamientoconsisteenplantearelprogramacomounaoperaciónglobaleirladescomponiendoenfunciónde otrasoperacionesmássencillas.Cadapasoconsistiráenrefinarodetallarlaoperaciónconsideradaenese momento,quedándonosenestaetapaenlosprimerosnivelesderefinamiento. ProgramaciónestructuradadeJackson
Estatécnicasiguelasideasdelaprogramaciónestructuradaencuantoalasestructuras(secuencia, seleccióneiteración)yelmétododerefinamientosucesivos,modificandolasrecomendacionesparair construyendolaestructuradelprogramaquedebesersimilaralasestructurasdelosdatosdeentradaysalida, porloqueesespecialmenterecomendadaparalasaplicacionesdeprocesamientodedatos.Latécnicasebasa enlossiguientespasos: 1. Analizarelentornodelproblemaydescribirlasestructurasdedatosaprocesar. 2. Construirlaestructuradelprogramabasadaenlasestructurasdedatos. 3. Definirlastareas arealizarentérminosdelasoperacioneselementalesdisponiblesysituarlasenlos módulosapropiadosdelaestructuradelprograma Diseñoestructurado
Estátécnicadediseñoeselcomplementodelanálisisestructurado,yaqueambastécnicaspartendelos diagramasdeflujodedatos(DFD),llegandomedianteestatécnicaalosdiagramasdeestructura.Ladificultad radicaenquenobastaconasignarmódulosaprocesosogruposdeprocesosrelacionadosentresí,sinoquese debeestablecerunajerarquíaoestructuradecontrolentrelosdiferentesmódulos,quenoestáimplícitaenel modelofuncionaldescritomediantelosDFD.Paraloqueseempleaunmódulodecoordinaciónparaconstruir lajerarquía,enelquesehacendosanálisisdelflujodedatosglobal: - Análisisdeflujodetransformación:Consisteenidentificarelflujodeinformaciónglobaldesdelos elementosdeentradadelsistema,aloselementosdesalida,separándoselosprocesosentresregiones, flujodeentrada,detransformaciónydesalida.Seasignanmódulosparalasoperacionesdeldiagramay seañadenmódulosdecoordinaciónquerealizanelcontroldeacuerdoconladistribucióndelflujode transformación. - Análisisdeflujodetransacción :Esaplicablecuandoelflujodedatossepuededescomponerenvarias líneasseparadas,cadaunadelascualescorrespondeaunafunciónglobalotransaccióndistinta,de maneraquesolounadeestaslíneasseactivaparacadaentradadedatosdetipodiferente.Elanálisis consisteenidentificarelcentrodetransaccióndelquesalenlaslíneasdeflujoylasregiones correspondientesacadaunadeesaslíneasotransacciones.
Técnicasdediseñobasadasenabstracciones Descomposiciónmodularbasadaenabstracciones
Estatécnicaconsideradacomotécnicadeprogramaciónconsisteenampliarellenguajeexistentecon nuevasoperacionesytiposdedatosdefinidosporelusuario,deformaquesesimplifiquelaescrituradelos nivelessuperioresdelprograma,mientrasqueaplicadaaldiseño,consisteendedicarmódulosseparadosala realizacióndecadatipoabstractodedatosycadafunciónimportante.Estatécnicadediseñopuedeemplearse tantodeformaascendentecomodescendente. - Formadescendente:seconsideraunaampliacióndelatécnicaderefinamientoprogresivo,enque realizarunrefinamientoseplanteacomoalternativa,ademásdesudescomposición,elquelaoperación arefinarsedefinaseparadamentecomoabstracciónfuncionalocomountipoabstractodedatos. - Formaascendente:Setratadeirampliandolasprimitivasexistentesenellenguajedeprogramacióny laslibreríasasociadasconnuevasoperacionesytiposdemayornivel,másadecuadosparaelcampode aplicaciónqueestamosdiseñand.Enmuchoscasossepuedenaplicarsimultáneamenteambasmaneras. 41
MétododeAbbot
Enestemétodosesugiereunaformametódicadeconseguirunadescomposiciónmodularbasadaen abstraccionesapartirdelasdescripcionesoespecificacionesdelsistemahechasenlenguajenatural,porloque estatécnicapuedeaplicarsetambién,yconmayorprecisión,alasdescripcionesmásformalesqueemplean notacionesprecisasenvezdelenguajenatural.Paraloquesesiguenlossiguientespasos: - Identificareneltextodedescripciónlostiposdedatoscomosustantivosgenéricos,losatributoscomo sustantivosengeneralylasaccionescomoverbosocomonombresdeacciones.Pudiendoalgunos adjetivossugerirvaloresdeatributos. - Hacerdoslistasunaconlosnombresyotraconlosverbos - Reorganizarlasdoslistasextrayendolosposiblesdatosyasociándolessusatributosyacciones, ademásdeeliminarsinónimosyañadirloselementosimplícitosenladescripción. - Paraobtenereldiseñoasignamosunmóduloacadaabstraccióndedatosogrupodeabstracciones relacionadasentresí,indicandoparacadatipoabstractodedatoscualessonsusatributosy operaciones. Elmódulopuedecorresponderaundatoencapsuladosisolosemanejaundatodeesetipoenle programa.Estemétodosepuedeusartantoenabstraccionescomoendiseñoorientadoaobjetos.
Técnicasdediseñoorientadasaobjetos Diseñoorientadoaobjetos
Eldiseñoorientadoaobjetosessimilaraldiseñobasadoenabstracciones,soloqueañadiendola herenciayelpolimorfismo.Cadamódulocontendráladescripcióndeunaclaseobjetosodevariasrelacionadas entresí.Ademásdeldiagramamodular.nosapoyamosendiagramasampliadosdelmodelodedatos,comolos diagramasdeestructura.Latécnicageneraldediseñosiguelossiguientespasos: 1. Estudiarycomprenderelproblema:Aunquedeberealizarsedurantelafasedeanálisisderequisitos, puedesernecesariorepetirloenparteporquelaespecificaciónnoseasuficientementeprecisao simplementeporqueeldiseñovaaserrealizadoporpersonasajenaalasquehicieronlaespecificación. 2. Desarrollarunaposiblesolución:Aunqueesposiblequesehayahechodurantelafasedeanálisis,es probablequesetengaquehacerenlafasedediseño,paraloqueconvendráconsiderarvarias alternativasyelegirlaqueseconsideremásapropiada.Lasolucióndebeexpresarseconsuficientes detallescomoparaqueensudescripciónaparezcanmencionadosloselementosqueformaránpartedel diseño. 3. Formalizarlaestrategiaentérminosdeclasesyobjetosysusrelaciones.Loquesehaceatravésdelas siguientesetapas: Identificarlasclasesyobjetos: Identificarlasoperaciones: Aplicarherencia: Describirlasoperaciones: Establecerlaestructuramodular: • • • • •
42
Técnicasdediseñodedatos Definición
Puestoquelamayoríadelasaplicacionesrequierenalmacenardatosdemanerapermanente,sesuele hacerapoyandoesaaplicaciónenunabasededatossubyacente.Laorganizacióndelabasededatospuede realizarsedesdevariospuntosdevista,siendolaformaclásicaunaclasificacióntresniveles:externo, conceptualeinterno.Encadanivelseestablecenesquemasdeorganizacióndelosdatosdesdeunpuntode vistaconcreto,correspondiendolosnivelesa: - Elnivelexterno:correspondealavisióndeusuario.Laorganizacióndelosdatosserealizasiguiendo esquemassignificativosenelcampodelaaplicación. - Elnivelconceptual:Estableceunaorganizaciónlógicadelosdatos,conindependenciadelsentido físicoquetenganenelcampodeaplicación.Laorganizaciónseresumeenundiagramademodelode datos. - Elnivelfísico:Organizalosdatossegúnesquemasadmisiblesenelsistemadegestióndebasesde datosy/olenguajedeprogramaciónelegidoparaeldesarrollo.Siseutilizaunabasededatosrelacional losesquemasfísicosseránesquemasdetablas. Elpasodelnivelexternoalconceptualsehacedurantelaetapadediseñoderequisitosyelpasode nivelconceptualainterno,sehacedurantelafasedediseño.
Diseñodebasesdedatosrelacionales Diseñodebasesdedatosdeobjetos
43
44
BLOQUEIII.CODIFICACIÓNY PRUEBAS
45
46
Índice Tema5.CodificaciónyPruebas.................................................................................................................................................................49 DesarrolloHistórico...................................................................................................................50 Primerageneración..................................................................................................................................50 Segundageneración.................................................................................................................................50 Tercerageneración..................................................................................................................................50 Cuartageneración.....................................................................................................................................51 Prestacionesdeloslenguajes..................................................................................................51 Estructurasdecontrol............................................................................................................................51 Estructurasdedatos................................................................................................................................52 Comprobacióndetipos...........................................................................................................................52 Abstraccionesyobjetos..........................................................................................................................53 Modularidad................................................................................................................................................53 Criteriosdeseleccióndellenguaje........................................................................................53 Aspectosmetodológicos............................................................................................................54 Normasyestilodecodificación..........................................................................................................54 Manejodeerrores.....................................................................................................................................54 Aspectosdeeficiencia.............................................................................................................................55 Transportabilidaddelsoftware..........................................................................................................55 Técnicasdepruebadeunidades............................................................................................55 Objetivosdelaspruebasdesoftware...............................................................................................55 Pruebasdecajanegra.............................................................................................................................56 Pruebasdecajatransparente..............................................................................................................57 Estimacióndeloserroresnodetectados........................................................................................57 Estrategiasdeintegración........................................................................................................58 IntegraciónBIGBANG.............................................................................................................................58 Integracióndescendente........................................................................................................................58 Integraciónascendente..........................................................................................................................58 Pruebasdelsistema....................................................................................................................58 Objetivodelaspruebas..........................................................................................................................58 PruebasAlfayBeta...................................................................................................................................58
47
48
Tema5.CodificaciónyPruebas
1. DesarrolloHistórico 2. Prestacionesdeloslenguajes 3. Criteriosdeseleccióndellenguaje 4. Aspectosmetodológicos 5. Técnicasdepruebadeunidades 6. Estrategiasdeintegración 7. Pruebasdelsistema
49
DesarrolloHistórico Primerageneración
Sonloslenguajesensambladores,loscualesconsistenenasociaracadainstruccióndelcomputadorun nemotécnicoquerecuerdecualessufunción,porloquesuniveldeabstracciónesmuybajo.Laprogramación conestetipodelenguajesresultacomplejaporqueloserroressondifícilesdedetectarysubsanar,alavezque exigeunconocimientoprofundodecadacomputadorconcreto.Debidoaestosoloseempleaparala programacióndepequeñosfragmentosquedespuésseincorporanenformademacrososubrutinas,dentrode unprogramaenlenguajedealtonivel. Segundageneración
Seincorporanlosprimeroselementosrealmenteabstractos,comolainclusióndelostiposdedatos, permitiéndoseenparteignorarlaorganizacióninternadelamemoriaparapasaratrabajarconvariables simbólicas,ademásseincorporanlasprimerasestructurasdecontrolparaladefinicióndebuclesoselectores genéricos.Algunosdelosmásrepresentativos: - FORTRAN:Tieneunorigencientífico,empleándoseensistemasdegestióndebasesdedatosysistemas entiemporeal,porejemplo.Sugrandeficienciaeselcontroldirectodememoria. - COBOL:Seempleaparaeldesarrollodelossistemasdeprocesamientodelainformación. - ALGOL:Eselprimerlenguajequedaimportanciaalatipificacióndelosdatos,careciendodeuna importantedifusión. - BASIC:Fuedesarrolladoparalaenseñanzadelaprogramacióngraciasasusencillezyfacilidadde aprendizaje. Tercerageneración
Aparecenasociadosalasbasesprácticasyteóricasdelaprogramaciónestructurada,dondeseprima porprimeravezlaproductividad,loqueprovocalageneracióndelenguajesfuertementetipados,quefaciliten laestructuracióndecódigoydatos,conredundanciaentreladeclaraciónyelusodecadatipodedato,loque facilitalaverificaciónencompilacióndelasposiblesinconsistenciasdeunprograma.Algunosdeloslenguajes masimportantesson: - PASCAL:Fuedesarrolladoparalaenseñanzadeprogramaciónestructurada,perosusencillez permitieronsuusoenaplicacionescientífico-técnicas,perositipificacióndedatosesbastanterígiday lacompilacióndeformaseparadaesdeficiente. - MODULA-2:Seincorporanlaestructurademóduloyquedaseparadalaespecificacióndelmódulode surealización,loquefacilitalaaplicacióninmediatadelosconceptosfundamentalesdediseño,además incorporaciertosmecanismosbásicosdeconcurrencia. - C:DiseñadoenunprincipioparalacodificacióndelsistemaoperativoUNIX,seempleadoparael desarrollodetodotipodeaplicaciones,graciasaqueposeecaracterísticasquelohacenmuyflexibley capazdeoptimizarcódigotantocomosiseemplearalenguajeensamblador. - ADA:DescendientedePASCALmaspotenteycomplejo,yaquepermiteladefinicióndeelementos genéricosydisponedemecanismosparalaprogramaciónconcurrentedetareasylasincronizacióny cooperaciónentreellas. Apareciendodeformaparalelaotroslenguajesorientadosaotrosparadigmascomo: - SMALLTALK :Estelenguajeeselprecursordeloslenguajesorientadosaobjetos. - C++:EsunlenguajequeincorporaallenguajeClosmecanismosbásicosdelaprogramaciónorientadaa objetos,mediantelaocultación,lasclases,laherenciayelpolimorfismo.Loquepermiteaprovecharla ampliadifusióndellenguajeCparalaintroduccióndelnuevoparadigma. - EIFFEL:Eselprimerlenguajequeintroduceladefinicióndeclasesgenéricas,herenciamúltipley polimorfismo. - PROLOG:Eselmásimportanterepresentantedeloslenguajeslógicosyseutilizafundamentalmenteen laconstruccióndelenguajesexpertos.
50
Cuartageneración
Ofrecenalprogramadorunmayorniveldeabstracción,siendocompletamenteindependientesdel computadorquelosejecuta.Estoslenguajesnosondepropósitogeneralyenrealidadsepuedenconsiderar herramientasespecíficasparalaresolucióndedeterminadosproblemasenloscamposmásdiversos,aunque noesaconsejablelarealizacióndeaplicacionescomplejasdebidoaloineficientedelcódigoquegeneran, aunquesonóptimasparalarealizacióndeprototipos.Sepuedenagruparsegúnsuutilizaciónen: - Bases de datos:permitenaccederymanipularlainformacióndelabasededatosmedianteun conjuntodeórdenesdepeticiónrelativamentesencillas,loquepermitedotaralabasededatosdeuna granversatilidadypermitenqueseaelpropiousuarioquiendiseñesuspropioslistados,informes,etc. - Generadores de programas:Permitenconstruirciertoselementosabstractosfundamentalesencierto campodelaaplicaciónsindescenderalosdetallesconcretosquesenecesitanenloslenguajesde tercerageneración,aunqueelprogramageneradosepuedemodificaroadaptarcuandolageneración automáticanoresultecompletamentesatisfactoria,loqueproduceunahorroconsiderabledetiempo. - Cálculo:Conestossepuededesarrollarcasicualquierproblemadentrodeuncampo,loqueincluye: Hojasdecálculo,herramientasdecálculomatemático,herramientasdesimulaciónydiseñodecontrol. - Otros:Estospuedenenglobartodotipodeherramientasquepermitanunaprogramacióndecierta complejidad,paraloqueutilizanunlenguaje.Algunosejemplossonlasherramientasparala especificaciónyverificacióndeprogramas,loslenguajesdesimulaciónolosdeprototipos.
Prestacionesdeloslenguajes Estructurasdecontrol ó
Laprogramaciónestructuradaimplicaelusodelassiguientesfórmulas: - Secuencia:Indicalaejecucióndelassentenciasdemaneracontinua. - Selección:Laselecciónsepuedehacerdevariasformas,siendolamássencillalacumplimentaciónde unaafirmación,pudiendoindicarunaseriedesentenciasalcasoafirmativoonegativoif-thenoelsethen,ounaselecciónporcasosdenominadacase-of. - Iteración:Consisteenlarepeticióndeunasentenciasiendosucondicionanteunaafirmaciónrepeatuntil,uncontadorfor-to-do,ounbucledetipoindefinidoloop-exit.
Elmanejodeexcepcionesconsisteenladefinicióndentrodelprogramadelamaneraenlaquesedebe reaccionarencasodeocurrirunaseriedeposibleserroresosucesosinesperados,quedefinimoscomo excepciones.Loserroresseclasificansegúnsuprocedenciapor: - Erroreshumanos: - FallosHardware: - ErroresSoftware: Loserroresdehardwaresontareadelsistemaoperativo,demaneraqueesteelquedebemanejareste tipodeerrores,evitandoquepuedanllegaraafectaralrestodelosusuariosdelcomputadoroalpropio sistemaoperativo,peropuestoquelamedidacorrectoradelsistemaoperativoencasodefallodesoftwarees siempreabortarlaejecucióndelprograma,encasodequeelprogramadebafuncionardemaneracontinuay sininterrupcionesnoesadmisible. Espreferibleescribirlaparteprincipaldelcódigoatendiendosoloalassituacionesnormales,loque exigealgúnmecanismoapropiadoparadesviarautomáticamentelaejecuciónhaciaunfragmentodecódigo apropiadoencasodeocurriralgunasituaciónanormal,loquesedenominamanejodeerrores.
51
Todosloslenguajesconcurrentespermitenladeclaracióndedistintastareasydefinirlaformaenque seejecutalaconcurrencia,paraloqueexistendiferentesformas: - Corrutinas:Lastareassoncorrutinasquesonsemejantesasubprogramas,yentreellassepasanel controldeejecución.SeutilizanenModula-2. - Fork-Join:Unatareapuedearrancarlaejecuciónconcurrentedeotrasmedianteunaordenfork,la cualsefinalizaconunjoininvocadoporlamismatareaqueejecutóelfork,yconelqueambastareasse fundenenunaúnica.SeutilizaenUNIXyenellenguajePL/1. - Cobegin-Coend: Todas las tareas que se deben ejecutar concurrentemente se declaran dentro de cobegin T1|T2|Tn coend. iniciándose todas al llegar al Cobegin y se finaliza la concurrencia cuando todaslastareashanacabado.SeutilizaenAlgol68. - Procesos: Cada tarea se declara como un proceso. Todos los procesos declarados se ejecutan concurrentemente desde el comienzo del programa, y no es posible iniciaruno nuevo. Se utiliza en Pascalconcurrente.EnAdasisepuedelanzarunprocesoencualquiermomento. Paralograrlasincronizaciónycooperaciónentrelastareasdisponemosde: - Variables compartidas: Ejecutándose en el mismo computador (multiprogramación), o en distintos Computadores pero utilizando una memoria compartida (multiproceso), son: Semáforos, Regiones criticascondicionales,Monitores. - Pasodemensajes:EjecutándoseenComputadoresquenotienenningunamemoriacomún)procesos distribuidos, que están en unared lo que posibilita el paso de mensajes. Communicating Sequential Processes (CSP), Llamadas a procedimientos remotos, Rendezvous de Ada. Estructurasdedatos
-
-
-
Datos simples:Entrelosdatosdetiposimpleseencuentranlosenteros,quesonvalorespositivoso negativossindecimales,losdatosreales,queagreganalosanterioreslosnúmeroscondecimales.Por otroladoestánlosdatosdetipocarácterylosdetiporistradecaracteresostringquevaríanensu formaymanipulaciónsegúnellenguaje,ademásestánlosdatosdetipoenumeración,quenoexistenen todosloslenguajesyquepermitendefinirungrupodeelementosasociadosaunavariableyfinalmente losdatosbooleanosespecialmenteorientadosaestetipodeálgebrayloscualespuedentomarsolodos valorestrueofalse. Datos compuestos:Estetipodedatossedefinencomounacombinacióndeotrosdatossimpleso complejosperoyadefinidos,prácticamentetodosloslenguajestienenmétodosparadefinirymanejar estetipodedatos,utilizandoparaladefinicióndeestoslaestructuraderegistro(record).Encasodeno disponerenellenguajedeesetipodeestructuraespecíficaseránecesarioelusodeunarrayo formaciónparaagruparvariosdatosenunaestructura. Constantes:Enloslenguajesmodernossepuedendeclararconstantesconnombredeformasimbólica parafacilitarlaidentificaciónyelusodeestas.
Comprobacióndetipos
-
-
-
Nivel0(Sintipos):Lenguajesenlosquenosepuedendeclararnuevostiposdedatosytodoslosdatos queseutilizandebenpertenecerasustipospredefinidos.ELcompiladornorealizaninguna comprobacióndetipos.Esresponsabilidadexclusivadelprogramadordistinguirquerepresentacada dato. Nivel1(Tipadoautomático):Eselcompiladorelencargadodedecidircualeseltipomásadecuado paracadadatoqueseutiliza,loqueimplicalaconversióndelosoperandoscuandoestosson incompatiblesentresíocuandolossonconeloperadorutilizadoenlaexpresión. Nivel2(Tipadodébil):Serealizalaconversiónautomáticaentreaquellosdatosqueguardanciertas similitudes,demaneraqueenaquellasexpresionesconoperandosdedistintostipos,laconversiónse hacehaciaeltipodemayorrangooprecisión. Nivel3(Tipadosemirrígido):Todoslosdatossedebendeclararconsuscorrespondientestipos,siendo imposibleoperarentredatosincompatibles.Enlosprocedimientosyfuncionesserealizauna comprobacióndelacantidadytipodedatosparacoincidirconladeclaración,paraloqueexisten algunasvíasdeescape,quepermitenevitartodoloanterior. Nivel4(Tipadofuerte):Noexisteningúncambioposible,demaneraquecualquierconversióndebe hacerlaelprogramadordeformaexplícita.Lascomprobacionesserealizanencompilación,carga,etc. 52
Abstraccionesyobjetos
-
Abstracciones funcionales: Puesto que estas han sido empleadas como una parte fundamental del diseño cada lenguaje dispone de una construcción para su definición variando como subprogramas, subrutinas,procedimientos,funciones,…Entodosesnecesariodefinirelnombreylainterfazdela abstracción,setienequecodificarlaoperaciónquerealizaydefinirunmecanismoparasuutilización. Normalmenteentodosloslenguajesestaocultalacodificacióndelaoperación,paraquienhace uso de la misma. Pascal, Modula-2, Ada tienen visibilidad por bloques, esto es, pueden consultar o modificardatosdebloquesexternos.EnFortranhaytotalopacidaddedentrohaciafueraeviceversa.
-
Tipos abstractos de datos:Sedebenagrupartantoelcontenidooatributosylasoperacionesdefinidas paraelmanejodelcontenido,ademásdeunmecanismodeocultaciónqueimpidaelaccesoporunavía diferentealasoperacionespermitidas.
-
Objetos:Puestoquelasdiferenciasentreobjetosyabstraccionessonmayoresalahoradela programación,losconceptosdepolimorfismoyherenciaaparecenligadosalosobjetosloquehace necesarioqueloslenguajesdispongandemecanismosquelesdisponganunasconstrucciones específicas.Modula-2nodisponedemecanismosdeherencianipolimorfismo,asíescomplicadousarlo endiseñoorientadoaobjetos.Adasolodisponedepolimorfismodesobrecarga,peronodeanulación nidiferido,conloquetambiénescomplicado.Losquesisonaptosson:Smalltalk,ObjectPascal,Eiffel, Objetive-C,C++.
Modularidad
Elconceptodemodularidadestáligadoaladivisióndeltrabajoyaldesarrolloenequipodeunproyecto desoftware,siemprelaprimeracualidadqueseexigelacompilaciónseparada,quepermitepreparary compilardemaneraaisladaelcódigodecadamódulo.Podemosdecirquelacompilaciónessegurasientiempo decompilaciónesposiblecomprobarqueelusodeunelementoesconsistenteconsudefinición. EstocambiasegúnellenguajedemaneraqueFortranyPascaldisponendecompilaciónnosegura, Modula-2yAdatienencompilaciónsegura,medianteDEFINITIONMODULEeIMPLEMENTATIONMODULEy packageypackagebody.EnCANSIlacompilaciónnoserádeltodosegurapueshayposibilidaddeerrorsino coincidelainterfazdelmoduloconlacopiausadaenelprograma
Criteriosdeseleccióndellenguaje -
-
-
Imposicióndelcliente:Enalgunoscasoseselclienteelquefijaellenguajequesedebeutilizar. Tipodeaplicación:Debidoalasprestacionesdecualquierlenguajedeúltimageneraciónsepueden realizaraplicacionesparalosmasdiversoscampos,estandojustificadoelusodelenguajesde ensambladorenaplicacionesdetiemporealmuycríticooparahardwareespecial. Disponibilidadyentorno:Sedebecomprobarlacompatibilidaddeloslenguajesconlos computadoreselegidos,siendoimportanteunestudiodeloscompiladoresencuantoalamemoriay tiempodeejecucióndelcódigo.Finalmenteresaltarqueeldesarrolloserámássencillocuantomás potentesseanlasherramientasempleadas,siendoconsiderableslafacilidaddemanejoyloamigablede laherramienta. Experienciaprevia:Siemprequeseaposibleesimportanteaprovecharlaexperienciaprevia,puesla formacióndelpersonalesmuyimportante. Reusabilidad:Esimportanteporlaposibilidaddeutilizarsoftwareyarealizadocomodejardisponible paraotrosproyectospartesdelsoftwaredesarrollado.Convienedisponerdeherramientasdentrodel lenguajeparaorganizacióndelaslibreríasenlasquesefacilitalabúsquedayalmacenamientodelos módulosreutilizables. Transportabilidad:Estaligadaaqueexistaunestándardellenguajequesepuedaadoptarentodoslos compiladores. Usodevarioslenguajes:Noesaconsejable,perohayvecesenqueesmassencillodecodificaren diferenteslenguajes. 53
Aspectosmetodológicos Normasyestilodecodificación
Esfundamentalfijarlasnormasquedebenrespetartodoslosprogramadores,conelobjetivodelograr unresultadohomogéneo,paraloqueesimportantefijarunestiloconcretoenelquesedebeconcretaruna seriedepuntos: - Formatoycontenidodelascabecerasdecadamódulo:Identificadordelmódulo,descripcióndel módulo,autoryfechas,revisionesyfechas,… - Formatoycontenidodecadatipodecomentario:Sección,orden,almargen,… - Utilizacióndeencolumnado:Tabulado(nºdeespacios),máximoindentado,formatoselección, formatoiteración,… - Eleccióndelosnombres:Convenioparausodemayúsculasyminúsculas,nombredeficheros, identificadoresdeelementosdelprograma,… Sedebenincluirtodaslasrestriccionesorecomendacionesquepuedancontribuiralamejoradela claridaddelcódigooalasimplificacióndelposteriormantenimiento. Manejodeerrores
-
Dentro delosconceptosbásicos encontramos: Defecto:Puedepermanecerocultoduranteuntiempoindeterminado,encasodequeloselementos defectuososnointervenganenlaejecucióndelprograma. Fallo:Eselhechodequeunelementodelprogramaofuncionecorrectamenteoproduzcaresultados erróneos,encasodeparticiparenlaejecucióndelprogramaproduciráunfallo. Error:Sedefinecomounestadoinadmisibledeunprogramaalquesellegacomoconsecuenciadeun fallo.Normalmenteconsisteenlasalidaoalmacenamientoderesultadosincorrectos.
Durantelacodificacióndeunprogramasepuedenadoptardistintasactitudesrespectoaloserrores: - Noconsiderarloserrores:Eslomáscómododesdeelpuntodevistadelacodificación,paraloque exigequetodoslosdatosintroducidosseancorrectosyqueelprogramadornotengadefectos,loqueno esrealista. - Prevencióndeloserrores:Consisteenladeteccióndelosfallosantesdequeproduzcanunerror, paraloquecadaprogramaysubprogramadebecodificarsedemaneraquedesconfíedemanera sistemáticadelosdatosqueseleintroducendevolviendosiempre,elresultadocorrectoencasodeuna datosválidosounaindicaciónprecisadefalloencasodequeestosnoseanválidos.Laventajaprincipal radicaenevitarlapropagacióndeerrores,facilitandoeldiagnósticodeposiblesdefectos. - Recuperacióndeloserrores:Encasodenopoderdetectartodoslosposiblesfallos,esinevitableque seproduzcanerrores,loscualessepuedentratarconelobjetivoderestaurarelprogramaenunestado correctoyevitarqueelerrorsepropague,paraloqueseempleandosactividades: Deteccióndelerror:Concretarquetipodesituacionessonlasqueseconsideranerróneas,paralas queserealizancomprobacionesensituacionesestratégicasdelprograma. Recuperacióndelerror:Adoptardecisionessobrecomocorregirelestadodelprogramapara llevarloaunasituaciónconsistente,loquepuedeafectaradiferentespartesdelprograma,inclusive aquellasalejadasdeaquellaenlaqueseprodujoelerror. •
•
Paralarecuperacióndeerroresexistendosesquemasgenerales: - Recuperaciónhaciadelante:Tratadeidentificareltipodeerror,demaneraquepuedatomarlas accionesadecuadasquepermitancorregirelestadodelprogramaycontinuardemaneracorrectala ejecución,loquesepuedellevaracabomedianteelmecanismodecontroldeexcepciones. - Recuperaciónhaciaatrás:Consisteenlacorreccióndelestadodelprogramamediantelarestauración aunestadocorrectoanterioralaaparicióndelerror,conindependenciadesutipo,paraloquese necesitaguardarperiódicamenteelúltimoestadodelprograma,porloqueseusahabitualmenteen programasbasadosentransacciones. Porloquelosprogramasquerealizanprevenciónyrecuperacióndeerroressedenominantolerantesafallos.
54
Aspectosdeeficiencia
Laeficienciasepuedeestudiardesdevariospuntosdevista: - Eficienciaenmemoria:Elbajocostodelamemoriahacequecuandoseprecisaciertoahorroresulte suficienteconelusodeuncompiladorquedispongadeposibilidadesdecomprensióndememoria.En casodequeelvolumendeinformaciónamanejarseademasiadograndeparalamemoriadisponible,se deberealizardurantelafasedediseñoestudiosenlosqueseenumerenlasdistintasalternativas, optandoporelalgoritmoqueoptimicemáslautilizacióndememoria. - Eficienciaentiempo:Tienemayorimportanciaenlacodificacióndesistemasdetiemporealcon plazosmuycríticos,siendoavecesnecesariodisminuirlaeficienciadememoriaparamejorarla eficienciadetiempo.Laprimeravíaparaconseguirunahorroimportanteeslarealizacióndurantela fasedediseñounestudiodetalladoyexhaustivodelasposiblesalternativasalproblema,permitiendo adoptarunalgoritmomásrápido. Lasprincipalesformasdeobtenerunahorrodetiempoconsiderableson:Tabularloscálculoscomplejos, expansiónenlínea,desplegadodebucles,simplificacióndeexpresionesaritméticasylógicas,sacarfueradelos buclesaquelloquenoseanecesariorepetir,usarestructurasdedatosdeaccesorápido,evitaroperacionescon comaflotanteyevitarconversionesinnecesariasentretiposdedatos. Transportabilidaddelsoftware
LosfactoresesencialesdelaTransportabilidadson: - Usodeestándares:Unproductodesarrolladoexclusivamentesobreloselementosestándares teóricamentetransportablesinningúncambio,almenosentreplataformasquecuentanconelsoporte paradichoestándar,loqueimplicaquelafaltadeestosdificultalatransportabilidad,porloquesehace importanteevitaraquelloselementosquenoesténconsolidadosyquepuedanestarsujetosafuturos cambiosorevisiones. - Aislamientodepeculiaridades:Esimportantedestinarunmóduloacadaunadeellas,porloqueel transporteseejecutarárecodificandoyadaptandoestosmódulosalnuevocomputador. Lasprincipalespeculiaridadessesuelenencontrarligadasadoselementos: Arquitecturadelcomputador:Determinalalongituddepalabra,deloquesederivala representacióninternadelosvaloresenterosyreales. Sistemaoperativo :Puestoqueeshabitualelusodefuncionesmásparticularesycomplejasquelas predefinidasenloslenguajes,sedebenconcretaryespecificarcadaunadeellas.Lasnuevas operacionesseagrupanenmódulossegúnsuoperación,paraloquesedefineunainterfazúnicay precisaentodalaaplicación.Elrestodelaaplicaciónutilizaráestosmódulosdeforma independientedelsistemaoperativo,pudiendoutilizarseenlaimplementacióndeestoslas operacionesdisponiblesenellenguajeyelsistemaoperativo.Porloqueparatransportarla aplicaciónaotrosistemaoperativosoloseránecesariorealizarunanuevaimplementacióndeestos módulos. •
•
Técnicasdepruebadeunidades Objetivosdelaspruebasdesoftware
Elprincipalobjetivodelaspruebasesqueelprogramafuncioneincorrectamente,descubriéndosesus defectos,loqueexigeanalizarunjuegodecasosdepruebaquepermitansometeralprogramaalmáximo númeroposibledesituacionesdiferentes.Paraloquesedebetenerencuenta: - Unabuenapruebaesaquellaqueencuentraerroresynolosencubre. - Paraconocerunerroresnecesarioconocercualseríaelresultadocorrecto. - Esbuenoquenoparticipenenlapruebaelcodificadoroeldiseñador. - Siemprehayerroresyencasodenoaparecersehacenecesariodiseñarpruebasmejores. - Alcorregirunerrorsepuedenproducirotrosnuevos. - Esimposibledemostrarlaausenciadedefectosmediantepruebas.
55
Puestoqueconlaspruebassoloseconsigueprobaralgunadelasposibilidadessehacenecesarioqueconel menoresfuerzoposiblesepuedandetectarelmáximonúmerodedefectos,sobretodoaquellosquepuedan provocarerroresgraves.Parapodergarantizarunosresultadosviablessehacenecesariogarantizarqueel procesodepruebasehacedelamaneramásautomatizadaposible,loqueimplicaunentornodepruebaque asegureunascondicionespredefinidasyestablesparalassucesivaspasadas,despuésdeloserrorescorregidos encadatanda. Laspruebasdeunidadesserealizanenunentornodeejecucióncontrolado,diferentedelentornofinalde explotación,demaneraqueseproporcioneuninformeconlosresultadosdelaspruebasyunregistrodetodos loserroresdetectadoscondiscrepanciarespectodelvaloresperado. Pruebasdecajanegra
Laestrategiadecajanegraignoralaestructurainternadelprogramaysebasaúnicamenteenla comprobacióndelaespecificacióndeentrada-salida,siendolaúnicaestrategiaquepuedellevaracabo cualquierpersonaajenaaldesarrollo.Existenciertosmétodosbasadosfundamentalmenteenlaexperiencia, loscualessepuedenutilizardemaneraconjuntaycomplementaria,siendoalgunosdelosmásextendidos: - Particiónenclasesdeequivalencia:Consisteendividirelespaciodeejecucióndelprogramaen variossubespacios,agrupandoencadaunodeellosaaquellosnúmerosquesería: Determinarlasclasesequivalentesapropiadas. Establecerpruebasparaclasedeequivalencia,proponiendocasosodatosdepruebaválidoso inválidosparacadaunadelasclasesdefinidasanteriormente. • •
Puestoqueeligiendobienlasclasessereducemuchoelnúmerodecasosquesenecesitanpara descubrirunefecto,sepuedenemplearlassiguientesdirectrices: Rangodevalores:0
Puestoqueuncasodepruebaválidoparaunaclasedepruebapuedeserinválidoparaotra,tal comouncasodepruebapuedeserválidoparavariasclases,esimportanteelrefinamientodelas pruebas,paraloquehayqueseguirlossiguientespasos: 1. Definirlasclasesequivalentes. 2. Definirunapruebaquecubratantoscasosválidoscomoseaposibledecualquierclase. 3. Marcarlasclasescubiertasyrepetirelpasoanteriorhastacubrirtodosloscasosválidosdetodas lasclases. 4. Definirunapruebaespecíficaparacadacasoválido. -
Análisisdevaloreslímite:Haceunespecialhincapiéenlaszonasdelespaciodeejecuciónqueestán próximasalborde,loserroresenloslimitespuedensergravesalsolicitarrecursosquenosehabían preparado.Lasdirectricesparaelaborarestapruebason: Entradas:Probarconlosvaloreslímiteyjustofueradeloslímites. Salidas:Probarconlosmismosvaloreslímiteyjustofueradeloslímites. Memoria:Probarcontamañosnulos,límiteysuperiorallímitedetodaslasestructurasde información. Recursos:Probarconningúnrecurso,límitederecursosysuperiorallímite. Otros:Pensarenotrassituacioneslímiteyelaborarlaspruebas. • • •
• •
-
Comparacióndeversiones:Sehacendiferentesversionesdelmismoprogramahechaspordiferentes programadoresysesometenalmismojuegodepruebas,secomparanyevalúanlosresultados,cuando produzcanlosmismosresultadospodemoselegircualquierversión.Estonoesinfaliblepuesunerror enlaespecificaciónloarrastraríantodaslasversiones.
-
Empleodelaintuición:Sedebededicarciertotiempoaprepararpruebasqueplanteensituaciones especialesyquepuedanprovocaralgúnerror.Porloquelaspersonasajenasaldesarrollodelmódulo suelenaportarunpuntodevistamuchomásdistanteyfrescodelosqueparticipanenél. 56
Pruebasdecajatransparente
Enestecasoseconoceysetieneencuentalaestructurainternadelmódulo,demaneraqueseintenta queelprogramatransitetodoslosposiblecaminosdeejecución,poniendoenjuegotodosloselementosdel código.Porestoesimportantequelaspruebasdecajanegraytransparenteseancomplementariasynunca excluyentes,puestoqueunapruebaúnicamentedecajanegradejaríamuchoscaminosinexplorados.Los principalesmétodosqueseempleanson: - Cubrimientológico:Sedeterminaunconjuntodecaminosbásicosquerecorrantodaslasposibleslíneas deflujodeldiagramaquevendrádeterminadoporelnúmerodepredicadossimples,siguiendola siguientefórmula:Nºmáximodecaminos=Nºpredicados+1.Paraloquetenemosdiferentesnivelesde encubrimiento: Nivel1:Setratandeelaborarcasosdepruebasparaseejecutenalmenosunaveztodosloscaminos básicos.Cadaunodeellosporseparado. Nivel2:Setratandeelaborarcasosdepruebaparaqueseejecutentodaslascombinacionesde caminosbásicosporparejas. Nivel3:Setratandeelaborarcasosdepruebaparaqueseejecutenunnúmerosignificativodelas combinacionesposiblesdecaminos. Puestoquecubrirtodaslascombinacionesseríaninabordable,comomínimolaspruebasdeben garantizarelnivel1.Finalmentehayquetenerencuentaquenuncasepodrádetectarlafaltadeun fragmentodecódigo. •
•
•
-
Pruebasdebucles:Paraloquesedebentenerencuentalassiguientesposibilidades. Bucleconnúmeronoacotadoderepeticiones:Paraloqueseejecutaelmismobucle0,12,una cantidadmoderadadevecesyporúltimounavezelevadadeveces. Bucleconnúmeromáximo(M)derepeticiones:Paraloqueseejecutaelbucle0,1,2,unnúmero moderadodeveces,seejecutaM-1veces,MvecesexactasyfinalmenteM+1veces. Buclesanidados:Dondeelnúmerodepruebascrecegeométricamenteconelniveldeanidamiento, utilizandoconlaintencióndereduciresteincrementolasiguientetécnica. 1. Ejecutartodoslosbuclesexternosensunúmeromínimodevecesparaprobarelbuclemás internoconelalgoritmodebuclequecorresponda. 2. Paraelsiguienteniveldeanidamiento,ejecutarlosbuclesexternosensunúmeromínimode vecesylosinternosunnúmerotípicodeveces,paraprobarelbucledelnivelconelalgoritmo debuclequecorresponda. 3. Repetirelpaso2hastacompletartodoslosniveles. •
•
•
-
Buclesconcatenados:Sisonindependientesseprobaranporseparadoconloscriteriosanteriores.
Estimacióndeloserroresnodetectados
Resultaimposibledemostrarqueunmódulonotienedefectos,porqueconvieneobteneralguna estimaciónestadísticadelaserratasquepuedenpermanecertodavíasinserdetectadas. Seusalasiguiente estrategia: 1. Anotarelnúmerodeerroresqueseproduceninicialmenteconeljuegodecasosdeprueba: ! (Ej.: ! =56) 2. Corregirelmódulohastaquenotenganingúnerrorconelmismojuegodecasosdeprueba. 3. Introduciraleatoriamenteenelmódulounnúmerorazonabledeerroresenlospuntosmásdiversos: ! (Ej.: ! =100. 4. Someterelmóduloconlosnuevoserroresaljuegodecasosdepruebayhacerdenuevoelrecuentodel númerodeerroresquesedetectan: ! (Ej.:! =95) 5. Paraeljuegodecasosdepruebaconsiderado,suponiendoquesemantienelamismaproporción estadística,elporcentajedeerroressindetectarseráelmismoparaloserroresinícialesqueparalos erroresdeliberados. ! =(! -! )*( ! /! )=(100-95)*(56/95)≈3errores
57