Introduccin al proceso de desarrollo. En general, cuando las personas abordan el desarrollo de cualquier proyecto evolucionan desde ideas abstractas hacia concreciones realizables Normalmente el planteamiento es: Vamos a desarrollar una contabilidad, Hacer la especificacin. en Java y My-SQL, Realizar el diseo. y se codifica la aplicacin 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 Ingeniera e Ingeniera del Software: Donde nos encontramos? Que hace un Ingeniero? Definiciones de Ingeniera del software Tcnicas bsicas utilizadas histricamente 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. 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. 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. 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. 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 Modelo de la Ingeniera del software (Thayer 1988)
Tcnicas bsicas usadas en las ingenieras 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
Histricamente se han utilizado tcnicas como:*El modelado*Divisin del Producto*Divisin del Proceso En principio se deberan utilizar estas tcnicas, tambin en informtica . 1. 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. 2. Divisin del Producto: Se fracciona el producto de modo que cada fragmento lo puede realizar un miembro del grupo de desarrollo. 3. Divisin del Proceso: Implica dividir el desarrollo del artefacto por fases. Normalmente se habla de especificacin, diseo y fabricacin. En el desarrollo de software nos encontramos con la siguiente situacin Ciclos de Vida del SOFTWARE Metodologas de Desarrollo del SOFTWARE Madurez del Proceso del SOFTWARE
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. 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. 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.
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 La Versin Ideal
El Modelo en V:
El Helado de Cucurucho:
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 El ciclo de vida de Prototipos Desechables es el siguiente:
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.
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.
Metodologas de Desarrollo del Software: Mtodos informales, Mtodos Semiformales, Mtodos Formales Mtodos informales: Joaqun Lucio-Villegas los clasifica como: Quick & Dirty (USA) Match stick box (Europa) Balones p'alante y maricn el ltimo Mtodos Semiformales. Mtodos Estructurados SA/SD (structured analysis & structured design) Mtrica Mtodos Orientados a Objetos OMT UML Mtodos Estructurados:
Mtodos Orientados a la Estructura de los Datos Mtodos de flujo de datos *PROCESOS * DATOS Mtodos Orientados a Objetos: Los mtodos orientados a objeto describen e implementan los sistemas de informacin desde un punto de vista ontolgico. 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
Madurez del proceso en la organizacin de desarrollo: La misma industria, diferentes niveles de madurez. 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. 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
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. 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 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. Nivel de Gestin. Mejoras de calidad sustanciales. Control cuantitativo de productos y proceso a travs de Mediciones del proceso comprensibles. Mediciones de la calidad Nivel de Optimizacin:A travs de mediciones del proceso utilizando ideas y tecnologas innovadoras obtenemos: Mejoras en calidad y cantidad. 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.