Está en la página 1de 52

EL PROCESO DE DESARROLLO DE SOFTWARE

El proceso de desarrollo de software

Qu queremos decir con proceso de desarrollo?

Deseos, necesidades, Especificaciones,


El proceso de desarrollo de software

Software

Introduccin al proceso de desarrollo.


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

El proceso de desarrollo de software

Es extrao que alguien diga:


"Me puse a programar y me sali una contabilidad" Algunas aplicaciones dan 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

El proceso de desarrollo de software

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.

El proceso de desarrollo de software

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
El proceso de desarrollo de software 6

Ingeniera e Ingeniera del Software


Dnde nos encontramos? Qu hace un Ingeniero? Definiciones de Ingeniera del software Tcnicas bsicas utilizadas histricamente

El proceso de desarrollo de software

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.
El proceso de desarrollo de software 8

Qu 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.

El proceso de desarrollo de software

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 mquinas reales.
El proceso de desarrollo de software 10

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.
El proceso de desarrollo de software 11

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
El proceso de desarrollo de software 12

Modelo de la Ingeniera del software (Thayer 1988)


Anlisis Desarrollo de Software Diseo Codificacin Pruebas Planificacin Organizacin Gestin de Proyectos Reclutamiento Direccin
Control

Ingeniera de Software

Fiabilidad Usabilidad

Mtricas de Software

Flexibilidad Mantenibilidad Reusabilidad Correccin de Errores Modificaciones

Mantenimiento de Software

El proceso de desarrollo de software

13

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 .


El proceso de desarrollo de software 14

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.

El proceso de desarrollo de software

15

Divisin del Producto.


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

El proceso de desarrollo de software

16

Divisin del Proceso.


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

Qu?

Cmo?

Realizacin

Pruebas
17

El proceso de desarrollo de software

En el desarrollo de software nos encontramos con la siguiente situacin


Ciclos de Vida del SOFTWARE Metodologas de Desarrollo del SOFTWARE

El proceso de desarrollo de software

18

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.

El proceso de desarrollo de software

19

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.
El proceso de desarrollo de software 20

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.
El proceso de desarrollo de software 21

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

El proceso de desarrollo de software

22

La Versin Ideal
Requerimientos del Sistema Requerimientos del Software Diseo Preliminar y Detallado
A alguien se le ha ocurrido la Brillante idea de Informatizar ? Investigacin Inicial, Identificacin de Necesidades, Encuesta, etc.
Estudio de Viabilidad Anlisis Especificacin Diseo

Especificacin de diseo
Aplicacin

Codificacin y Depuracin
Test y pruebas previas a la OPERACIN

Codificacin

Validacin Instalacin, Explotacin


23

OPERACIN Y MANTENIMIENTO

El proceso de desarrollo de software

El Modelo en V
Identificacin de Necesidades Especificacin Esencial Especificacin Fsica Explotacin

Validacin

Empaquetado

Diseo

Integracin

Codificacin
El proceso de desarrollo de software 24

El Helado de Cucurucho
Identificacin de Necesidades
Especificacin Esencial Especificacin Fsica USUARIOS Explotacin CLIENTES Validacin

ANALISTA Empaquetado Integracin

Diseo DISEADORES Y CODIFICADORES

Codificacin
25

El proceso de desarrollo de software

El Modelo Real
Identificacin de Necesidades
Especificacin Esencial Explotacin

Validacin

Especificacin Fsica

Empaquetado

Diseo

Integracin

Codificacin
El proceso de desarrollo de software 26

Propuesta de Yourdon
Requerimientos del Usuario Encuesta Subsistemas Probados Prueba de subsistema Mdulos Probados Prueba de Unidad Mdulos Codificados Sistema Probado Prueba de Sistema Anlisis

Especificacin Funcional Necesidades de Diseo Rendimiento Preliminar

Estudio del HW

Configuracin Especificacin Final Diseo del Sistema Detallado Especificacin de los Programas

Codificacin

El proceso de desarrollo de software

27

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 proceso de desarrollo de software 28

El ciclo de vida de Prototipos Desechables es el siguiente:


Aceptado Evaluacin Cliente Ciclo de Vida Clsico

Obtencin Especificacin

Construccin Prototipo Mejora de la Especificacin

NO Aceptado

El proceso de desarrollo de software

29

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.
El proceso de desarrollo de software 30

Incremental
Bloque 1
Requeri mientos Diseo Impleme Pruebas ntacin

Bloque N

Requeri mientos

Diseo

Impleme Pruebas ntacin

o
Requerimientos
Requerimientos

Diseo

Bloque 1

Impleme Pruebas ntacin

Permite el desarrollo concurrente

Diseo

Bloque N
El proceso de desarrollo de software

Impleme ntacin

Pruebas

31

Evolucin de Prototipos
Observacin Requerimientos Abstraccin Validacin Especificacin Verificacin Empezamos por los requerimientos ms claros, menos complejos y ms necesarios. Prototipo rpido
El proceso de desarrollo de software

Prototipo Verificacin Experimentar Validacin


32

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.
El proceso de desarrollo de software 33

Sntesis automtica de software


Requerimientos Informales
Anlisis de Requerimientos Validacin Mantenimiento Optimizacin Mecnica Especificacin Formal (Prototipo)

Racionalidad y Decisiones Ajuste (tuning) Desarrollo Formal


El proceso de desarrollo de software

Programa Fuente
34

En espiral.
Determinar objetivos, alternativas, restricciones Evaluar alternativas, identificar y resolver riesgos

Acuerdo REVISIN

Planificar las prximas fases

Desarrollar, verificar
35

El proceso de desarrollo de software

Metodologas de Desarrollo del Software


Mtodos informales Mtodos Semiformales Mtodos Formales

El proceso de desarrollo de software

36

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

El proceso de desarrollo de software

37

Mtodos Semiformales
Mtodos Estructurados
SA/SD (structured analysis & structured design) Mtrica

Mtodos Orientados a Objetos


OMT UML
El proceso de desarrollo de software 38

Mtodos Estructurados
Mtodos Orientados a la Estructura de los Datos Mtodos de flujo de datos

PROCESOS

DATOS
39

El proceso de desarrollo de software

Mtodos Orientados a Objetos


Los mtodos orientados a objeto describen e implementan los sistemas de informacin desde un punto de vista ontolgico.

El proceso de desarrollo de software

40

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
El proceso de desarrollo de software 41

Madurez del proceso en la organizacin de desarrollo


La misma industria, diferentes niveles de madurez.

El proceso de desarrollo de software

42

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.
El proceso de desarrollo de software 43

CMM (Capability Maturity Model)


Proporciona una Gua sobre cmo
Controlar los procesos:
De desarrollo del software. De mantenimiento.

Hacer evolucionar hacia una cultura de:


Ingeniera del software. Gestin eficiente.

El proceso de desarrollo de software

44

Evolucin de las organizaciones segn el CMM


Control del Proceso
Medicin del Proceso Definicin del Proceso Control Bsico

Optimizacin

Gestionado

Definido

Repetible
El proceso de desarrollo de software 45

Inicial

Correlacin entre estimaciones y niveles de madurez

El proceso de desarrollo de software

46

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.
El proceso de desarrollo de software 47

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.
El proceso de desarrollo de software 48

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.
El proceso de desarrollo de software 49

Nivel de Gestin.
Mejoras de calidad sustanciales. Control cuantitativo de productos y proceso a travs de
Mediciones del proceso comprensibles. Mediciones de la calidad

El proceso de desarrollo de software

50

Nivel de Optimizacin.
A travs de mediciones del proceso utilizando ideas y tecnologas innovadoras obtenemos:
Mejoras en calidad y cantidad.

El proceso de desarrollo de software

51

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.

El proceso de desarrollo de software

52