52
1 EL PROCESO DE DESARROLLO DE SOFTWARE

Proceso de Desarrollo Del Software

Embed Size (px)

DESCRIPTION

Proceso de desarrollo del software

Citation preview

  • *EL PROCESO DE DESARROLLO DE SOFTWARE

    *

  • *Que queremos decir con proceso de desarrollo?

    Deseos, necesidades, Especificaciones, Software

  • *Introduccin al proceso de desarrollo.En general, cuando las personas abordan el desarrollo de cualquier proyecto evolucionan desde ideas abstractas hacia concreciones realizables.

    *

  • *

    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

    *Algunas aplicaciones informticas casi que se desarrollan as.Infinitos monos tecleandoVer la tira de Dilbert (10 monos, en el libro de aplace sus reuniones

  • *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.

    *Este no es el camino completo, falta probar, verificar, instalar, formar a los usuarios, ...

  • *El grado de precisin con que se lleve a cabo cada paso influir en el resultadoMe 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

    *Claramente, lo principal es saber a donde vamos: tener clara la meta;Disponer de una especificacin.El camino que sigamos es lo que llamaremos el proceso de desarrollo.Todos los caminos llevan a RomaImportante la direccin (brjula)Cual es el camino ms corto?

  • *Ingeniera e Ingeniera del SoftwareDonde nos encontramos?Que hace un Ingeniero?Definiciones de Ingeniera del softwareTcnicas 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 grandesControlar la complejidadCooperacin entre las personas implicadasEvolucin del softwareEficiencia en el desarrolloSoporte real a los usuarios

    *

  • *Modelo de la Ingeniera del software (Thayer 1988)

    143.bin

    *

  • *Tcnicas bsicas usadas en las ingenierasHistricamente se han utilizado tcnicas como:El modeladoDivisin del ProductoDivisin del ProcesoEn principio se deberan utilizar estas tcnicas, tambin en informtica .

  • *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.

  • *

    Divisin del Producto.Se fracciona el producto de modo que cada fragmento lo puede realizar un miembro del grupo de desarrollo.

  • *Divisin del Proceso.Implica dividir el desarrollo del artefacto por fases. Normalmente se habla de especificacin, diseo y fabricacin.

    Realizacin

  • *En el desarrollo de software nos encontramos con la siguiente situacin

    Ciclos de Vida del SOFTWARE

    Metodologas de Desarrollo del SOFTWARE

    *Clientes y Proveedores, con intereses distintosDesarrolladores que cada cual va a la suya.La forma de evitar el desastre pasa por:Tener un ciclo de vida apropiado a la situacin.Complejidad: Es un producto complejo?Incertidumbre: El cliente sabe lo que quiere?Utilizar una metodologa de desarrolloLenguaje claro,Especificacin, diseo, ...Conjunto de herramientas a utilizar.Un proceso maduro, es decir:Que conozcamos bien (utilizado otras veces)Que lo tengamos medidoQue sea completo, para producir con calidad.

  • *Ciclo de Vida del SoftwareConsiste en determinar:las fases productivas de un proyecto,los objetivos de cada fase productiva, ylos productos obtenidos en cada una de estas fases as como sus caractersticas.

    *En el momento en que se percibio el desastre del software se trato de regular las tareas que se deben realizar durante el desarrollo de software, y el ordenen que se deben realizar.Se tomaron como ejemplo otras ingenieras.

  • *Ciclos de Vida del SoftwareSe 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 DesechablesIncrementalEvolucin de prototiposReutilizacin de Software Sntesis automtica de softwareEn espiral.

    *

  • *Poner la cola al burroSe 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.

    *Lo sorprendente es que aveces funciona.??Las empresas que desean obtener software econmico y rpidamente lo utilizan, con las siguientes mejoras:Se contrata a personas que no tengan experiencia,se les dan pocos recursos, son novatos y no saben exigir,se suele utilizar la tcnica de desprecio:siempre tarde y encima no hace lo que queremos (imaginabamos que hara, aunque no lo habamos dicho)Los resultados son curiosos:Se suele subcontratar a cualquier precio con empresas externas, Seguro que ellos saben hacer las cosasCaundo funciona existe mucha incertidumbre sobre el como o por que ha funcionado. Parece claro que cuando funciona, los informticos sabian que se esperaba del producto, sabian que se debia hacer, estaban muy motivados y les gusta el trabajo que estn haciendo. Pero es difcil prever que esto ocurrir.

  • *Ciclo de vida clsico o en cascada.La Versin Ideal (Perfecta)El Modelo en VEl Helado de CucuruchoEl Modelo Real Propuesta de Yourdon

  • *ValidacinInstalacin, ExplotacinTest y pruebas previas a la OPERACINOPERACIN Y MANTENIMIENTOEstudio de ViabilidadAnlisisEspecificacinRequerimientos del SoftwareDiseoEspecificacin de diseoDiseo Preliminar y DetalladoCodificacinAplicacinCodificacin y DepuracinLa Versin IdealA alguien se le ha ocurrido la Brillante idea de Informatizar ?Investigacin Inicial, Identificacin de Necesidades, Encuesta, etc.Requerimientos del Sistema

  • *El Modelo en V

  • *

    El Helado de Cucurucho

    Identificacin de NecesidadesEspecificacin EsencialEspecificacin FsicaDiseoCodificacinIntegracinEmpaquetadoValidacinExplotacinUSUARIOSCLIENTESANALISTADISEADORES Y CODIFICADORES

  • *El Modelo Real

    Identificacin de NecesidadesEspecificacin EsencialEspecificacin FsicaDiseoCodificacinIntegracinEmpaquetadoValidacinExplotacin

  • *Propuesta de Yourdon

  • *Construccin Rpida de Prototipos DesechablesAl igual que otras ingenieras se utilizan los prototipos para que el cliente observe, confirme y mejore el productoEste 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:

    AceptadoNO AceptadoEvaluacin ClienteMejora de la EspecificacinConstruccin PrototipoObtencin EspecificacinCiclo de Vida Clsico

  • *Existen dos clases de prototiposDe 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.

  • *IncrementalRequerimientosBloque 1Bloque N

    Bloque 1Bloque N

    oPermite el desarrollo concurrente

    Requerimientos

    Diseo

    Implementacin

    Pruebas

    Requerimientos

    Diseo

    Implementacin

    Pruebas

    Requerimientos

    Diseo

    Implementacin

    Pruebas

    Diseo

    Implementacin

    Pruebas

  • *Evolucin de Prototipos

    ObservacinRequerimientos

    AbstraccinValidacin

    EspecificacinVerificacin

    PrototipoVerificacin

    ExperimentarValidacinEmpezamos por los requerimientos ms claros, menos complejos y ms necesarios. Prototipo rpido

  • *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.

  • *Sntesis automtica de softwareRequerimientos Informales

    Anlisis de RequerimientosEspecificacin Formal (Prototipo)

    Desarrollo Formal

    Ajuste (tuning)Programa FueteRacionalidad y Decisiones

    *

  • *En espiral.Determinar objetivos, alternativas, restriccionesEvaluar alternativas, identificar y resolver riesgosDesarrollar, verificarPlanificar las prximas fasesREVISINAcuerdo

  • *Metodologas de Desarrollo del SoftwareMtodos informalesMtodos SemiformalesMtodos Formales

  • *Mtodos informalesJoaqun Lucio-Villegas los clasifica como:Quick & Dirty (USA)Match stick box (Europa)Balones p'alante y maricn el ltimo

  • *Mtodos SemiformalesMtodos EstructuradosSA/SD (structured analysis & structured design)MtricaMtodos Orientados a ObjetosOMTUML

  • *Mtodos EstructuradosMtodos Orientados a la Estructura de los DatosMtodos de flujo de datos

  • *Mtodos Orientados a ObjetosLos mtodos orientados a objeto describen e implementan los sistemas de informacin desde un punto de vista ontolgico.

  • *Mtodos FormalesLos 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.

  • *Madurez del proceso en la organizacin de desarrolloHay 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 costo del proyecto.

  • *CMM (Capability Maturity Model)Proporciona una Gua sobre comocontrolar los procesos:de desarrollo del software.de mantenimiento.Hacer evolucionar hacia una cultura de:Ingeniera del software.Gestin eficiente.

  • *InicialRepetible

    Optimizacin

    Gestionado

    Definido

    Control BsicoDefinicin del ProcesoMedicin del ProcesoControl del ProcesoEvolucin de las organizaciones segn el CMM

  • *Correlacin entre estimaciones y niveles de madurez

  • *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 histricosEstablecimiento de procesos de gestin de proyecto, para hacer seguimiento de:Costo.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 deMediciones 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.

  • *ResumenHemos visto:Como trabajan los ingenieros,Definiciones de ingeniera del software,El ciclo de vida del software,Metodolgicas de desarrolloMadurez del proceso de desarrollo.

    *

    *

    *Algunas aplicaciones informticas casi que se desarrollan as.Infinitos monos tecleandoVer la tira de Dilbert (10 monos, en el libro de aplace sus reuniones*Este no es el camino completo, falta probar, verificar, instalar, formar a los usuarios, ...*Claramente, lo principal es saber a donde vamos: tener clara la meta;Disponer de una especificacin.El camino que sigamos es lo que llamaremos el proceso de desarrollo.Todos los caminos llevan a RomaImportante la direccin (brjula)Cual es el camino ms corto?*

    *

    *

    *

    *Clientes y Proveedores, con intereses distintosDesarrolladores que cada cual va a la suya.La forma de evitar el desastre pasa por:Tener un ciclo de vida apropiado a la situacin.Complejidad: Es un producto complejo?Incertidumbre: El cliente sabe lo que quiere?Utilizar una metodologa de desarrolloLenguaje claro,Especificacin, diseo, ...Conjunto de herramientas a utilizar.Un proceso maduro, es decir:Que conozcamos bien (utilizado otras veces)Que lo tengamos medidoQue sea completo, para producir con calidad.*En el momento en que se percibio el desastre del software se trato de regular las tareas que se deben realizar durante el desarrollo de software, y el ordenen que se deben realizar.Se tomaron como ejemplo otras ingenieras.

    *

    *Lo sorprendente es que aveces funciona.??Las empresas que desean obtener software econmico y rpidamente lo utilizan, con las siguientes mejoras:Se contrata a personas que no tengan experiencia,se les dan pocos recursos, son novatos y no saben exigir,se suele utilizar la tcnica de desprecio:siempre tarde y encima no hace lo que queremos (imaginabamos que hara, aunque no lo habamos dicho)Los resultados son curiosos:Se suele subcontratar a cualquier precio con empresas externas, Seguro que ellos saben hacer las cosasCaundo funciona existe mucha incertidumbre sobre el como o por que ha funcionado. Parece claro que cuando funciona, los informticos sabian que se esperaba del producto, sabian que se debia hacer, estaban muy motivados y les gusta el trabajo que estn haciendo. Pero es difcil prever que esto ocurrir.*