IngenieríadeSoftware AgustínJ.González ElO329:DiseñoyProgramaciónOrientadosa Objeto Tomadode:http://www.dsic.upv.es/~uml http://inst.eecs.berkeley.edu/~cs169/ entreotrasfuentes.
Definición (1993)Laaplicaciónmecanismossistemáticos,disciplinados,y cuantificablesparaeldesarrollo,operaciónymantenciónde software;estoeslaaplicacióndelaingenieríaalsoftware. Establecimientoyusodeprincipiosconcaracteresdeingeniería apropiadosparaobtener,eficientemente,softwareconfiable,que opereeficazyeficientementeenmáquinasreales Laaplicacióndelartedeldesarrollosoftwarejuntoconlasciencias matemáticasycomputadoresparadiseñar,construir,ymantener programascomputacionaleseficientesyeconómicosquelogran susobjetivos.
EstadodelarteenIng.DeSoftware Esunacienciarigurosaconfuertesfundamentos matemáticos? Esunacampotécnicobiendesarrolladoconmuchode disciplinadeingeniería? Oestárealmenteenunestadoprimitivo... Alomásunaseriede mejoresprácticas,desarrolladoresde softwareconstruyensoftwareysiéstosfuncionanentonces nosotrosestudiamoscomoelloslohicieron. Siéstosfuncionanporunlargotiempoentoncesestudiamossus procesosdesoftwareaúnmáscuidadosamente.
Construccióndeunacasapara fido Puedehacerlounasolapersona Requiere: Modeladomínimo Procesosimple Herramientassimples
Construccióndeunacasa Construidaeficientementeyenuntiempo razonableporunequipo Requiere: Modelado Procesobiendefinido Herramientasmássofisticadas
Construccióndeunrascacielos
ClavesenDesarrollodeSI Notación(UML) Calidad:Ej:CMM Herramientas (Ej:RationalRose) Proceso (Metodologías Ej:ITIL,ExtremeProgramming, RUP:RationalUnified Process)
Abstracción ModeladoVisual(MV) Elmodeladocapturalas partesesencialesdelsistema Orden Item envío ProcesodeNegocios SistemaComputacional
Notación(Visual) Beneficios Manejarlacomplejidad InterfazdeUsuario (VisualBasic, Java,..) LógicadelNegocio (C++,Java,..) MúltiplesSistemas ServidordeBDs (C++&SQL,..) Modelarelsistemaindependientemente dellenguajedeimplementación Componentes Reutilizados PromoverlaReutilización
PorquélaOrientaciónaObjetos? Proximidaddelosconceptosdemodeladorespectodelas entidadesdelmundoreal Modeladointegradodepropiedadesestáticasydinámicas delámbitodelproblema Mejoralacapturayvalidaciónderequisitos Acercael espaciodelproblema yel espaciodelasolución Facilitaconstrucción,mantenimientoyreutilización Podríamosdarmuchasrazonesperohayproblemas..
ProblemasenOO...LosconceptosbásicosdelaOOseconocendesdehacedos décadas,perosuaceptacióntodavíanoestátanextendidacomolos beneficiosqueestatecnologíapuedesugerir
ProblemasenOO Unobjetocontienedatosyoperacionesqueoperansobrelosdatos, pero... Podemosdistinguirdostiposdeobjetosdegenerados: Unobjetosindatos(queseríalomismoqueunabibliotecadefunciones) Unobjetosin operaciones,consólooperacionesdeltipocrear,recuperar, actualizaryborrar(quesecorresponderíaconlasestructurasdedatos tradicionales) Unsistemaconstruidoconobjetosdegeneradosnoesunsistema verdaderamenteorientadoaobjetos
ProcesodeDesarrollo desw
Elprocesodedesarrollo Completo Sedaenuncontextoydependiendoeltextooinvestigador destacamásomenosetapas. Elmáscompletoquehevistoincluye: Sueño Investigación Desarrollo Lanzamiento Soporte Tiempo Aldesarrolloesaloquenormalmenteseladamásénfasis enlaliteratura.
QuéesunProcesodeDesarrollodeSW? Sueño Investigación Desarrollo Lanzamiento Soporte Tiempo DefineQuiéndebehacerQué,CuándoyCómodebehacerlo Sistemanuevo Requisitosnuevos omodificados ProcesodeDesarrollo omodificado desoftware Noexisteunprocesodesoftwareuniversal.Lascaracterísticasde cadaproyecto(equipodedesarrollo,recursos,etc.)exigenqueel procesoseaconfigurable
ÁreascubiertasporlaIng.deSolftware LaIngenieríadelSoftwareestudiatodoslosaspectosinvolucradosenel desarrollodesoftware,entreloscualesseencuentran: EtapasdeunProyectodesoftware Paradigmas/enfoquesparaenfrentareldesarrollodelproyectode software(cascada,interativoincremental) TiempoyCostos Aspectostecnológicos GestióndeProyectos
EtapasdeunproyectodeSoftware Etapas/Hitosescencialesrqueridosenunproyectodedesarrollodesoftware: OportunidaddeNegocio(Hito) LevantamientoIncialdeRequerimientos(Dominiodelproblema) Entendimientoinicialdelaproblemáticaaresolver ReunionesconCliente Especificacióninicialderequerimientos ConfeccióndePropuesta Estimacióndeesfuerzosyplanificacióndelproyecto.Usodetécnicas (COCOMO)yestadisticasdeproyectossimilaresalquesedessarrollará, entrevistasapersonasconexperienciaenproyectossimilaresalquese desarrollará Definicióndelalcancedelproyecto Costos AnálisisOO(Dominiodelproblema) CasosdeUso análisisdinámico ModelosConceptuales análisisestático Diseñopreliminardeinterfaces(web,GUI,comandos,voz)
EtapasdeunproyectodeSoftware(cont) Arquitectura(DominiodelaSolución) Especificacióndelatecnologíaautilizar(J2EE,.NET) EspecificacióndePatronesdeDiseño Diseño(DominiodelaSolución) DiseñodeInterfaces(web,gui,comandos,voz) Realizacióndediagramasdesecuencia Realizacióndediagramasdeclases Construcción/Codificación Entendimientorealdeldiseño(solución)aprogramar Programacióneficienteyoptimadelcódigofuente Comentarenformaentendibleyrazonableelcódigofuente Construccióndeprogramade TEST Pruebaunitariadeldesarrolladormedianteunprogramade TEST PruebasUnitarias Realizacióndeplandepruebas PruebasIntegradas Realizacióndeplandepruebas
EtapasdeunproyectodeSoftware(cont) CapacitaciónaUsuarios ConfeccióndeManualesdeUsuario Reunionesconusuariofinal PuestaenProducción Confeccióndeplandepuestaenproducción MarchaBlanca Garantía ResolucióndeIncidencias
PlanificaryEvaluarProyectos... Podrécumplirconlosplazos? Estarédentrodelopresupuestado? El cliente quedarásatisfecho? Las Metodologías pueden ser la ayuda que necesitamos, si podemos usarlas correctamente!!
Procesos,Metodologías
QuéesunaMetodología... Lasmetodologíasimponenunproceso disciplinadosobreeldesarrollode softwareconelfindehacerlomás predecibleyeficiente.
Laságilesmásconocidas... XP(ProgramaciónExtrema) LafamiliaCristaldeCockburn CódigoAbierto ASD(DesarrollodeSoftwareAdaptable) SCRUM FFD(DesarrolloManejadoporRasgos) DSDM(Métododedesarrollodesistemadinámico) RUP(RationalUnifiedProcess) Yo no conozco todas, pero vale la pena conocer al menos una. Aquellas en rojo son la más populares.
MetodologíasenáreaTI Másdetallesaquí.
ApostandoporRUP...
Desarrollodesoftware:Característicasde RUP... Guiado y Manejado por Casos de Uso Centrado en la Arquitectura Iterativo e Incremental Desarrollo Basado en Componentes Utilización de UML Proceso Integrado
Principalesmetodologíaseneltiempo Definiciónde Requerimientos Construcción/Pruebas Análisis&Diseño Modelo Tradicional de Cascada Implementacióny TestUnitarios Integracióny testdelsistema Operacióny mantención Tiempo t Modelo Iterativo Incremental Iteración 1 Iteración 2 R R A&D R A&D C A&D C P C P Tiempo Iteración 3 P t
RUPDefineFasesdeDesarrollo... Áreasdetrabajo (Workflow) Concepción Análisis&Diseño Construcción Pruebas Distribución EsfuerzoNecesarioporActividad Requerimientos Construcción Transición R R R R A&D A&D A&D A&D C C C C P P P P D D D D IteraciónPreliminar Elaboración Iteración 1 Iteración 2...... Iteración n Iteración n+1 Tiempo
ImportanciadelosHitosenRUP... Compromisoderecursos parafaseelaboración Concepción Elaboración Aceptación delcliente Construcción Transición Tiempo Hito Objetivos, visión Hito Arquitectura Hito Capacidad Operacional Liberación Producto
MejoresPrácticasdeRUP... DesarrolleIterativamente Administrelos Requerimientos UseArquitectura decomponentes Modele Visualmente ControlelosCambios VerifiqueCalidad
UnEjemplo:CompararconV Model (Motorola)
RationalUnifiedProcess(RUP) RationalUnifiedProcess 1998 Rational ObjectoryProcess 1996 1997 UML ObjectoryProcess 1987 1995 EnfoqueEricsson Pruebasfuncionales Pruebasdedesempeño Gestiónderequisitos Gestióndecambiosy configuración IngenieríadeNegocio Ingenieríadedatos Diseñodeinterfaces
OtravisiónsimilarconmásActividades
OtravisiónsimilarconmásActividades Disciplinas o áreas de trabajo Modelado del Negocio Requisitos Análisis y Diseño Primarios Implementación Pruebas Despliegue, distribución Gestión de configuración y cambios Gestión del proyecto Entorno De Apoyo
...ElementosenRUP Artefactos EselResultadoparcialofinalqueesproducidoyusadoduranteel proyecto.sonlasentradasysalidasdelasactividades Unartefactopuedeserundocumento,unmodeloounelementode modelo ConjuntosdeArtefactos BusinessModelingSet RequirementsSet DeploymentSet ProjectManagementSet Analysis&DesignSet Configuration&ChangeManagementSet ImplementationSet EnvironmentSet TestSet
CaracterísticasEsencialesdeRUP ProcesoDirigidoporlosCasosdeUso ProcesoIterativoeIncremental ProcesoCentradoenlaArquitectura
ProcesodirigidoporlosCasosdeUso Capturar,definiry validarloscasosdeuso Requisitos Análisis&Diseño Implementación CasosdeUso integranel trabajo Verificarquese satisfacenloscasosde uso Pruebas Realizarlos casosdeuso
...ProcesodirigidoporlosCasosdeUso «trace» CasodeUso «trace» RealizacióndeAnálisis RealizacióndeDiseño «trace» «trace» Pruebas Unitarias PruebasFuncionales X CasodePrueba [TheUnifiedSoftwareDevelopmentProcess.I.Jacobson,G.BoochandJ.Rumbaugh.Addison Wesley,1999]
...ProcesodirigidoporlosCasosdeUso
ProcesoIterativoeIncremental Elciclodevidaiterativosebasaenlaevoluciónde prototiposejecutablesquesemuestranalosusuariosy clientes Enelciclodevidaiterativoencadaiteraciónsereproduce elciclodevidaencascadaamenorescala Losobjetivosdeunaiteraciónseestablecenenfunciónde laevaluacióndelasiteracionesprecedentes
...ProcesoIterativoeIncremental Lasactividadesseencadenanenunamini cascadaconun alcancelimitadoporlosobjetivosdelaiteración Análisis Diseño Codific. Pruebase Integración nveces
...ProcesoIterativoeIncremental Cadaiteracióncomprende: Planificarlaiteración(estudioderiesgos) AnálisisdelosCasosdeUsoyescenarios Diseñodeopcionesarquitectónicas Codificaciónypruebas.Laintegracióndelnuevocódigoconel hechoeniteracionesanterioressehacegradualmentedurante laconstrucción Evaluacióndelaentregadeejecutable(evaluacióndelprototipo enfuncióndelaspruebasydeloscriteriosdefinidos) Preparacióndelaentrega(documentacióneinstalacióndel prototipo)
ProcesoIterativoeIncremental Enfoque Cascada Enfoque Iterativoe Incremental
...ProcesoIterativoeIncremental GradodeFinalizacióndeArtefactos
ProcesoCentradoenlaArquitectura Laarquitecturadeunsistemaeslaorganizaciónoestructurade suspartesmásrelevantes Unarquitecturaejecutableesunaimplementaciónparcialdel sistema,construidaparademostraralgunasfuncionesy propiedades RUPestablecerefinamientossucesivosdeunaarquitectura ejecutable,construidacomounprototipoevolutivo Inception Elaboration Construction Architecture Transition
FasesdelCiclodeVida Elciclodevidaconsisteenunaseriedeciclos,cadaunode loscualesproduceunanuevaversióndelproducto Cadacicloestácompuestoporfasesycadaunadeestas fasesestácompuestaporunnúmerodeiteraciones Lasfasesson: IniciooEstudiodeoportunidad Elaboración Construcción Transición
...FasesdelCiclodeVida IniciooEstudiodeoportunidad(inception) Defineelámbitoyobjetivosdelproyecto Sedefinelafuncionalidadycapacidadesdelproducto Elaboración Tantolafuncionalidadcomoeldominiodelproblema seestudianenprofundidad Sedefineunaarquitecturabásica Seplanificaelproyectoconsiderandorecursos disponibles
...FasesdelCiclodeVida Construcción Elproductosedesarrollaatravésdeiteracionesdondecada iteracióninvolucratareasdeanálisis,diseñoeimplementación Lasfasesdeestudioyanálisissólodieronunaarquitectura básicaqueesaquírefinadademaneraincrementalconformese construye(sepermitencambiosenlaestructura) Granpartedeltrabajoesprogramaciónypruebas Sedocumentatantoelsistemaconstruidocomoelmanejodel mismo Estafaseproporcionaunproductoconstruidojuntoconla documentación
...FasesdelCiclodeVida Transición Seliberaelproductoyseentregaalusuarioparaunusoreal Seincluyentareasdemarketing,empaquetadoatractivo, instalación,configuración,entrenamiento,soporte, mantenimiento,etc. Losmanualesdeusuariosecompletanyrefinanconla informaciónanterior Estastareasserealizantambiéneniteraciones
EsfuerzorespectodelasWorkflows Ince ption E la bora tion C onstruction Tra nsition 15% Requisitos Unaiteraciónenla fasedeelaboración Análisis 10% Diseño 15% 30% Implementación 15% Pruebas P r e lim in a ry I te r a tio n ( s ) ite r. #1 ite r. #2 ite r. #n ite r. #n+1 ite r. #n+2 ite r. #m ite r. #m +1
...EsfuerzorespectodelasFases Ince ption E la bora tion C onstruction Tra nsition Requisitos Unaiteraciónenla fasedeelaboración Análisis Diseño Implementación Pruebas P r e lim in a ry I te r a tio n ( s ) Esfuerzo:5% Duración:10% 20% 30% ite r. #1 ite r. #2 ite r. #n ite r. #n+1 65%10% 50%10% ite r. #n+2 ite r. #m ite r. #m +1
Dosleccionesimportantes Eltiempoesindependientedelcontexto.Ahorraruna semanalacomienzodeunproyectoestanbuenocomo ahorrarlaalfinal.unasemanaesunasemana. Esmuchomásfácilahorrartiempoaliniciodelproyecto (cuandolosentregablessonmenosclaros). Conclusión:Prontohayquetenerclaroelproyectodel ramo.
Idearelacionada:PatronesdeDiseño Esunasoluciónaunproblemageneraldediseño. Tienelaformadeunconjuntodeclasesqueinter actúan. Lasclasesrequierenpersonalizaciónalcasoespecífico(partesen blanco)
Ejemplo:PatrónObservador Vista Controlador Modelo Modelo,vista,controlador