Está en la página 1de 52

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
abordan el desarrollo
proyecto evolucionan
abstractas
hacia
realizables.

las personas
de cualquier
desde ideas
concreciones

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

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 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
6

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

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

Modelo de la Ingeniera del


software (Thayer 1988)
I n g e n ie r a
d e l s o ftw a re
D e s a r r o llo
d e S o ftw a re
A
D
C
P

n a lis is
is e o
o d if ic a c i n
ru e b a s

G e s t i n d e
p ro y e c to s
P
O
R
D
C

la n ific a c i n
r g a n iz a c i n
e c lu t a m ie n to
ir e c c i n
o n tro l

M e tr ic a s
d e l s o ftw a re

M a n t e n im ie n to
d e s o ftw a re

F ia b ilid a d
U s a b ilid a d
F le x ib ilid a d
M a n te n ib ilid a d
R e u s a b ilid a d
E tc .

C o r r e c c i n d e E r r o r e s
M o d if ic a c io n e s

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

15

Divisin del Producto.


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

16

Divisin del Proceso.


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

Que
?

Como?

Realizacin

Pruebas
17

En el desarrollo de software nos


encontramos con la siguiente situacin
Ciclos de
Vida del
SOFTWARE

Metodologas de
Desarrollo del
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.

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

22

La Versin Ideal
Requerimientos
del Sistema
Requerimientos
del Software

A alguien se le ha ocurrido la Brillante idea de Informatizar


?
Investigacin Inicial, Identificacin de
Necesidades, Encuesta, etc.
Estudio de Viabilidad
Anlisis
Especificacin

Diseo Preliminar y
Detallado
Codificacin y
Depuracin

Diseo

Especificacin de diseo

Codificacin

Test y pruebas previas a la


OPERACIN

Aplicacin

Validacin
Instalacin, Explotacin

OPERACIN Y MANTENIMIENTO

23

El Modelo en V
Identificacin
de Necesidades

Explotacin

Especificacin
Esencial

Validacin

Especificacin
Fsica

Diseo

Empaquetado

Integracin

Codificacin
24

El Helado de Cucurucho
USUARIOS

Identificacin
de Necesidades

Explotacin

Especificacin
Esencial

CLIENTES

Especificacin
Fsica

ANALISTA Empaquetado

Diseo
DISEADORES Y
CODIFICADORES

Validacin

Integracin

Codificacin
25

El Modelo Real
Identificacin
de Necesidades

Explotacin

Especificacin
Esencial

Validacin

Especificacin
Fsica

Diseo

Empaquetado

Integracin

Codificacin
26

Propuesta de Yourdon
Requerimientos del Usuario

Sistema
Probado

Encuesta

Prueba de
Sistema
Subsistemas
Probados

Anlisis

Especificacin
Funcional
Necesidades de
diseo
Rendimiento
Preliminar

Estudio
del HW

Configuracin
Especificacin
Final
Diseo
del Sistema
Detallado
Especificacin
de los
Programas

Prueba de
subsistema

Codificacin

Prueba de
Unidad

Mdulos
Probados

Mdulos
Codificados
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
28

El ciclo de vida de Prototipos


Desechables es el siguiente:

Obtencin
Especificacin

Construccin
Prototipo

Aceptado
Evaluacin
Cliente

Mejora de la
Especificacin

NO Aceptado

Ciclo de
Vida
Clsico

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

Incremental
Bloque 1

Requeri
mientos

Diseo

Impleme Pruebas
ntacin

Requeri
mientos

Bloque N

Diseo

o
Requerimientos
Bloque 1

Bloque N

Permite el
desarrollo
concurrente

Requerimientos

Diseo

Impleme Pruebas
ntacin

Impleme Pruebas
ntacin

Diseo

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

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

Sntesis automtica de
software
Requerimientos
Informales

Anlisis de
Requerimientos

Especificacin Formal
(Prototipo)

Validacin
Mantenimiento

Optimizacin
Mecnica

Racionalidad y
Decisiones
Ajuste
(tuning)
Desarrollo
Formal

Programa
Fuete
34

En espiral.
Determinar objetivos,
alternativas, restricciones

Evaluar alternativas,
identificar y resolver
riesgos

Acuerdo
REVISIN

Planificar las prximas


fases

Desarrollar, verificar
35

Metodologas de Desarrollo
del Software
Mtodos informales
Mtodos Semiformales
Mtodos Formales

36

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

37

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

Mtodos Orientados a Objetos


OMT
UML
38

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

PROCESOS

DATOS
39

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

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
41

Madurez del proceso en la


organizacin de desarrollo
La misma industria, diferentes niveles
de madurez.

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 costo del proyecto.
43

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.

44

Evolucin de las
organizaciones segn el CMM
Control
del
Proceso
Medicin
del
Proceso
Definicin
del
Proceso
Control
Bsico

Optimizacin

Gestionado

Definido

Repetible

Inicial
45

Correlacin entre estimaciones y


niveles de madurez

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

Nivel de Repeticin.
Se tiene procesos estables de desarrollo,
con control estadstico.
Uso de datos histricos
Establecimiento de procesos de gestin de
proyecto, para hacer seguimiento de:
Costo.
Planificacin.
Funcionalidad.
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.
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

50

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

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.

52