TEMA 3. EL PROCESO DE DESARROLLO DE SOFTWARE Jose Onofre Montesa Andrs
Universidad Politcnica de Valencia Escuela Universitaria de Informtica 2000 3. El proceso de desarrollo de software 2 Que queremos decir con proceso de desarrollo? Deseos, necesidades, Especificaciones,
Software 3. El proceso de desarrollo de software 3 Introduccin al proceso de desarrollo. En general, cuando las personas abordan el desarrollo de cualquier proyecto evolucionan desde ideas abstractas hacia concreciones realizables. 3. El proceso de desarrollo de software 4 Es extrao que alguien diga: "Me puse a programar y me sali una contabilidad" Algunas aplicaciones da la impresin de que... Recordar que la probabilidad de que un mono teclee en una maquina de escribir y salga el quijote no es cero 3. El proceso de desarrollo de software 5 Normalmente el planteamiento es: Vamos a desarrollar una contabilidad, Hacer la especificacin. en Visual BASIC y Access, Realizar el diseo. y se codifica la aplicacin. 3. El proceso de desarrollo de software 6 El grado de precisin con que se lleve a cabo cada paso influir en el resultado Me podras indicar, por favor, hacia dnde tengo que ir? Eso depende de adnde quieras llegar, contesto el gato. A m no me importa demasiado adnde...- empez a explicar Alicia. En ese caso, da igual cualquier direccin - interrumpi el Gato. ...Siempre que llegue a alguna parte - termin Alicia a modo de explicacin. Basta que empieces a andar - le aseguro el Gato-, dando un paso tras otro. Alicia en el pas de las maravillas 3. El proceso de desarrollo de software 7 Ingeniera e Ingeniera del Software Donde nos encontramos? Que hace un Ingeniero? Definiciones de Ingeniera del software Tcnicas bsicas utilizadas histricamente 3. El proceso de desarrollo de software 8 Donde nos encontramos? Con Problemas, tendremos que disponer de: Tcnicas de desarrollo que minimicen la complejidad de un sistema software. Mtodos y conceptos que permitan al productor y al cliente explorar la naturaleza del sistema software lo antes posible. Tcnicas que minimicen los efectos devastadores de las modificaciones durante el desarrollo y la explotacin. 3. El proceso de desarrollo de software 9 Que hace un Ingeniero? Construir artefactos dentro de unas limitaciones de coste, utilizando el conocimiento y las teoras de la ciencia sobre la cual se basa el artefacto. 3. El proceso de desarrollo de software 10 Definicin de la ingeniera del software (NATO 68) La ingeniera del software es el establecimiento y uso de principios de ingeniera razonables con el objetivo de obtener software econmicamente, que sea de confianza y trabaje eficientemente en las maquinas reales. 3. El proceso de desarrollo de software 11 Definicin (R.E. Fairley 1985) Hemos definido la Ingeniera del Software como la disciplina tecnolgica concerniente a la produccin y mantenimiento sistemticos de productos software que son desarrollados y modificados en el tiempo y con los costes estimados... Adems, la Ingeniera del software tiene que ver con cuestiones de gestin que caen fuera del dominio de la programacin tradicional. 3. El proceso de desarrollo de software 12 Caractersticas de la ingeniera del software (Van Vliet 1993) Construccin de programas grandes Controlar la complejidad Cooperacin entre las personas implicadas Evolucin del software Eficiencia en el desarrollo Soporte real a los usuarios 3. El proceso de desarrollo de software 13 Modelo de la Ingeniera del software (Thayer 1988) Analisis Diseo Codificacin Pruebas Desarrollo de Software Planificacin Organizacin Reclutamiento Direccin Control Gestin de proyectos Fiabilidad Usabilidad Flexibilidad Mantenibilidad Reusabilidad Etc. Metricas del software Correccin de Errores Modificaciones Mantenimiento de software Ingeniera del software 3. El proceso de desarrollo de software 14 Tcnicas bsicas usadas en las ingenieras Histricamente se han utilizado tcnicas como: El modelado Divisin del Producto Divisin del Proceso En principio se deberan utilizar estas tcnicas, tambin en informtica . 3. El proceso de desarrollo de software 15 El modelado. Simplificacin del objeto en el mundo real, pero que es suficientemente realista como para dar una idea de lo que ocurrir en la realidad y usarse como base del desarrollo. 3. El proceso de desarrollo de software 16 Divisin del Producto. Se fracciona el producto de modo que cada fragmento lo puede realizar un miembro del grupo de desarrollo. 3. El proceso de desarrollo de software 17 Que ? Divisin del Proceso. Implica dividir el desarrollo del artefacto por fases. Normalmente se habla de especificacin, diseo y fabricacin. Como? Realizacin Pruebas 3. El proceso de desarrollo de software 18 En el desarrollo de software nos encontramos con la siguiente situacin Ciclos de Vida del SOFTWARE Metodologas de Desarrollo del SOFTWARE 3. El proceso de desarrollo de software 19 Ciclo de Vida del Software Consiste en determinar: las fases productivas de un proyecto, los objetivos de cada fase productiva, y los productos obtenidos en cada una de estas fases as como sus caractersticas. 3. El proceso de desarrollo de software 20 Ciclos de Vida del Software Se han propuesto muchos ciclos de vida para el desarrollo del software, pero estos son los ms representativos: Poner la cola al burro. Ciclo de vida clsico o en cascada. Construccin rpida de Prototipos Desechables Incremental Evolucin de prototipos Reutilizacin de Software Sntesis automtica de software En espiral. 3. El proceso de desarrollo de software 21 Poner la cola al burro Se coge a uno o varios informticos, Se les muestra ms o menos el problema, Se les deja solos en un cuarto a oscuras, Transcurrido un tiempo se abre la puerta. 3. El proceso de desarrollo de software 22 Ciclo de vida clsico o en cascada. La Versin Ideal (Perfecta) El Modelo en V El Helado de Cucurucho El Modelo Real Propuesta de Yourdon 3. El proceso de desarrollo de software 23 Validacin Instalacin, Explotacin Test y pruebas previas a la OPERACIN OPERACIN Y MANTENIMIENTO Estudio de Viabilidad Anlisis Especificacin Requerimientos del Software Diseo Especificacin de diseo Diseo Preliminar y Detallado Codificacin Aplicacin Codificacin y Depuracin La Versin Ideal A alguien se le ha ocurrido la Brillante idea de Informatizar ? Investigacin Inicial, Identificacin de Necesidades, Encuesta, etc. Requerimientos del Sistema 3. El proceso de desarrollo de software 24 El Modelo en V Identificacin de Necesidades Especificacin Esencial Especificacin Fsica Diseo Codificacin Integracin Empaquetado Validacin Explotacin 3. El proceso de desarrollo de software 25 El Helado de Cucurucho Identificacin de Necesidades Especificacin Esencial Especificacin Fsica Diseo Codificacin Integracin Empaquetado Validacin Explotacin USUARIOS CLIENTES ANALISTA DISEADORES Y CODIFICADORES 3. El proceso de desarrollo de software 26 El Modelo Real Identificacin de Necesidades Especificacin Esencial Especificacin Fsica Diseo Codificacin Integracin Empaquetado Validacin Explotacin 3. El proceso de desarrollo de software 27 Propuesta de Yourdon Encuesta Anlisis diseo Preliminar Estudio del HW Diseo Detallado Codificacin Prueba de Unidad Prueba de subsistema Prueba de Sistema Requerimientos del Usuario Especificacin Funcional Necesidades de Rendimiento Especificacin del Sistema Configuracin Final Especificacin de los Programas Mdulos Codificados Mdulos Probados Subsistemas Probados Sistema Probado 3. El proceso de desarrollo de software 28 Construccin Rpida de Prototipos Desechables Al igual que otras ingenieras se utilizan los prototipos para que el cliente observe, confirme y mejore el producto Este enfoque es apropiado cuando: El cliente no tiene claro lo que quiere, Al cliente le gustara ver algo similar para poder hacerse una idea de lo que obtendr 3. El proceso de desarrollo de software 29 El ciclo de vida de Prototipos Desechables es el siguiente: Aceptado NO Aceptado Evaluacin Cliente Mejora de la Especificacin Construccin Prototipo Obtencin Especificacin Ciclo de Vida Clsico 3. El proceso de desarrollo de software 30 Existen dos clases de prototipos De INTERFACE. Usualmente un modelo de papel o sobre PC en el que se muestran pantallas y listados. De COMPORTAMIENTO: En anchura. Ofrece todos los mens del sistema y simula dbilmente los procesos. En profundidad. Cubre funciones que presentan ambigedades al cliente o a los informticos. Completo pero de baja calidad y rendimiento. 3. El proceso de desarrollo de software 31 Incremental Requerimientos Requeri mientos Diseo Impleme ntacin Pruebas Bloque 1 Requeri mientos Diseo Impleme ntacin Pruebas Bloque N
Requerimientos Bloque 1 Diseo Impleme ntacin Pruebas Bloque N
Diseo Impleme ntacin Pruebas o Permite el desarrollo concurrente 3. El proceso de desarrollo de software 32 Evolucin de Prototipos Observacin Requerimientos Abstraccin Validacin Especificacin Verificacin Prototipo Verificacin Experimentar Validacin Empezamos por los requerimientos ms claros, menos complejos y ms necesarios. Prototipo rpido 3. El proceso de desarrollo de software 33 Reutilizacin de Software Tiene como objetivos: reducir el coste del software. Producir sistemas de mayor calidad. Se basa en reutilizar Diseos, programas, mdulos y datos. Es compatible con el prototipo evolutivo. 3. El proceso de desarrollo de software 34 Sntesis automtica de software Requerimientos Informales Anlisis de Requerimientos Especificacin Formal (Prototipo) Validacin Mantenimiento Optimizacin Mecnica Desarrollo Formal Ajuste (tuning) Programa Fuete Racionalidad y Decisiones 3. El proceso de desarrollo de software 35 En espiral. Determinar objetivos, alternativas, restricciones Evaluar alternativas, identificar y resolver riesgos Desarrollar, verificar Planificar las prximas fases REVISIN Acuerdo 3. El proceso de desarrollo de software 36 Metodologas de Desarrollo del Software Mtodos informales Mtodos Semiformales Mtodos Formales 3. El proceso de desarrollo de software 37 Mtodos informales Joaqun Lucio-Villegas los clasifica como: Quick & Dirty (USA) Match stick box (Europa) Balones p'alante y maricn el ltimo 3. El proceso de desarrollo de software 38 Mtodos Semiformales Mtodos Estructurados SA/SD (structured analysis & structured design) Mtrica Mtodos Orientados a Objetos OMT UML 3. El proceso de desarrollo de software 39 PROCESOS DATOS Mtodos Estructurados Mtodos Orientados a la Estructura de los Datos Mtodos de flujo de datos 3. El proceso de desarrollo de software 40 Mtodos Orientados a Objetos Los mtodos orientados a objeto describen e implementan los sistemas de informacin desde un punto de vista ontolgico. 3. El proceso de desarrollo de software 41 Mtodos Formales Los mtodos formales permiten al ingeniero de software especificar, desarrollar y verificar un sistema informtico mediante la aplicacin de una notacin matemtica rigurosa. Utilizando un lenguaje de especificacin formal, un mtodo formal proporciona los medios de especificar un sistema de forma que se aseguren, de forma sistemtica, la consistencia, la completitud y la correccin. Se suelen basar en notaciones matemticas similares a las del lgebra de conjuntos y la lgica 3. El proceso de desarrollo de software 42 Madurez del proceso en la organizacin de desarrollo La misma industria, diferentes niveles de madurez. 3. El proceso de desarrollo de software 43 Madurez del proceso en la organizacin de desarrollo Hay factores que no quedan claramente reflejados en el ciclo de vida ni en las tcnicas de desarrollo. Los factores no estudiados son: El cumplimiento de los plazos de entrega. La calidad (nmero de errores en el Software). El coste del proyecto. 3. El proceso de desarrollo de software 44 CMM (Capability Maturity Model) Proporciona una Gua sobre como controlar los procesos: de desarrollo del software. de mantenimiento. Hacer evolucionar hacia una cultura de: Ingeniera del software. Gestin eficiente. 3. El proceso de desarrollo de software 45 Inicial Repetible Optimizacin Gestionado Definido Control Bsico Definicin del Proceso Medicin del Proceso Control del Proceso Evolucin de las organizaciones segn el CMM 3. El proceso de desarrollo de software 46 Correlacin entre estimaciones y niveles de madurez 3. El proceso de desarrollo de software 47 Nivel Inicial. Segn las circunstancias utilizamos un proceso distinto. (algunos caticos) A medida, Poco formalizado, Uso de herramientas informales. Pocos procesos definidos. El xito depende del esfuerzo individual. 3. El proceso de desarrollo de software 48 Nivel de Repeticin. Se tiene procesos estables de desarrollo, con control estadstico. Uso de datos historicos Establecimiento de procesos de gestin de proyecto, para hacer seguimiento de: Coste. Planificacin. Funcionalidad. 3. El proceso de desarrollo de software 49 Nivel de Definicin. Proceso de desarrollo perfectamente definido y estandarizado. Integrado en la organizacin. Bien documentado. Todos los proyectos utilizan una versin documentada y aprobada de proceso. 3. El proceso de desarrollo de software 50 Nivel de Gestin. Mejoras de calidad sustanciales. Control cuantitativo de productos y proceso a travs de Mediciones del proceso comprensibles. Mediciones de la calidad 3. El proceso de desarrollo de software 51 Nivel de Optimizacin. A travs de mediciones del proceso utilizando ideas y tecnologas innovadoras obtenemos: Mejoras en calidad y cantidad. 3. El proceso de desarrollo de software 52 Resumen Hemos visto: Como trabajan los ingenieros, Definiciones de ingeniera del software, El ciclo de vida del software, Metodolgicas de desarrollo Madurez del proceso de desarrollo.