TEMA 3.
EL PROCESO DE
DESARROLLO DE
SOFTWARE
3. El proceso de desarrollo de software 1
¿Que queremos decir con
proceso de desarrollo?
Deseos, Software
necesidades,
Especificaciones,
…
3. El proceso de desarrollo de software 2
Introducción 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 3
Es extraño que alguien
diga:
– "Me puse a programar y me salió una
contabilidad"
– Algunas aplicaciones da la impresión 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 4
Normalmente el
planteamiento es:
• Vamos a desarrollar una
contabilidad,
• Hacer la especificación.
• en Visual BASIC y Access,
• Realizar el diseño.
• y se codifica la aplicación.
3. El proceso de desarrollo de software 5
El grado de precisión con que
se lleve a cabo cada paso
influirá en el resultado
• ¿Me podrías indicar, por favor, hacia
dónde tengo que ir?
• Eso depende de adónde quieras
llegar, contesto el gato.
• A mí no me importa demasiado
adónde...- empezó a explicar Alicia.
• En ese caso, da igual cualquier
dirección - interrumpió el Gato.
• ...Siempre que llegue a alguna parte -
terminó Alicia a modo de explicación.
• Basta que empieces a andar - le
aseguro el Gato-, dando un paso tras
otro.
– Alicia en el país de las maravillas
3. El proceso de desarrollo de software 6
Ingeniería e Ingeniería del
Software
• ¿Donde nos encontramos?
• ¿Que hace un Ingeniero?
• Definiciones de Ingeniería del
software
• Técnicas básicas utilizadas
históricamente
3. El proceso de desarrollo de software 7
¿Donde nos encontramos?
• Con Problemas, tendremos que disponer de:
– Técnicas de desarrollo que minimicen la
complejidad de un sistema software.
– Métodos y conceptos que permitan al productor
y al cliente explorar la naturaleza del
sistema software lo antes posible.
– Técnicas que minimicen los efectos
devastadores de las modificaciones durante el
desarrollo y la explotación.
3. El proceso de desarrollo de software 8
¿Que hace un Ingeniero?
• Construir artefactos dentro de unas
limitaciones de coste, utilizando el
conocimiento y las teorías de la
ciencia sobre la cual se basa el
artefacto.
3. El proceso de desarrollo de software 9
Definición de la ingeniería
del software (NATO ‘68)
• La ingeniería del software es el
establecimiento y uso de principios
de ingeniería razonables con el
objetivo de obtener software
económicamente, que sea de
confianza y trabaje eficientemente
en las maquinas reales.
3. El proceso de desarrollo de software 10
Definición
(R.E. Fairley 1985)
• Hemos definido la Ingeniería del Software
como la disciplina tecnológica concerniente a
la producción y mantenimiento sistemáticos de
productos software que son desarrollados y
modificados en el tiempo y con los costes
estimados...
• Además, la Ingeniería del software tiene que
ver con cuestiones de gestión que caen fuera
del dominio de la programación tradicional.11
3. El proceso de desarrollo de software
Características de la ingeniería
del software (Van Vliet 1993)
• Construcción de programas grandes
• Controlar la complejidad
• Cooperación entre las personas
implicadas
• Evolución del software
• Eficiencia en el desarrollo
• Soporte real a los usuarios
3. El proceso de desarrollo de software 12
Modelo de la Ingeniería
del software (Thayer
1988)
In ge n ie ría
d e l so ftw a re
D e sa rro llo G e stió n de M e tricas M a nte nim ie n to
d e S oftw a re p ro ye ctos d e l so ftw a re d e so ftw a re
A n a lisis P la nificación F ia bilid ad C o rre cción de E rrores
D ise ño O rg an ización U sa bilid ad M o d ifica cio n es
C o d ifica ción R e clu ta m ie n to F le xib ilid ad
P rue bas D irección M a nte nib ilid ad
C o ntrol R e usa b ilid ad
E tc.
3. El proceso de desarrollo de software 13
Técnicas básicas usadas
en las ingenierías
• Históricamente se han utilizado
técnicas como:
– El modelado
– División del Producto
– División del Proceso
• En principio se deberían utilizar
estas técnicas, también en
informática .
3. El proceso de desarrollo de software 14
El modelado.
• Simplificación 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 15
División 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 16
División del Proceso.
• Implica dividir el desarrollo del artefacto
por fases. Normalmente se habla de
especificación, diseño y fabricación.
¿Que ¿Como Realización Prueba
? ? 3. El proceso de desarrollo de software s 17
En el desarrollo de software nos
encontramos con la siguiente
situación
Ciclos de Metodologías
Vida del de Desarrollo
SOFTWARE del SOFTWARE
3. 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
características.
3. 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 más representativos:
– Poner la cola al burro.
– Ciclo de vida clásico o en cascada.
– Construcción rápida de Prototipos Desechables
– Incremental
– Evolución de prototipos
– Reutilización de Software
– Síntesis automática de software
– En espiral.
3. El proceso de desarrollo de software 20
Poner la cola al burro
• Se coge a uno o varios
informáticos,
• Se les muestra más 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 21
Ciclo de vida clásico o en
cascada.
• La Versión Ideal (Perfecta)
• El Modelo en V
• Diseño centrado en el Usuario
• El Helado de Cucurucho
• El Modelo Real
• Propuesta de Yourdon
3. El proceso de desarrollo de software 22
La Versión Ideal
A alguien se le ha ocurrido la Brillante idea de Informatiza
Requerimient ¿?
os del Sistema Investigación Inicial, Identificación de
Necesidades, Encuesta, etc.
Estudio de Viabilidad
Requerimient
os del Análisis
Especificación
Software
Diseño
Diseño
Preliminar y Especificación de diseño
Detallado
Codificación y
Codificación
Depuración Aplicación
Test y pruebas previas a
la OPERACIÓN Validación
Instalación, Explotación
OPERACIÓN Y MANTENIMIENTO
3. El proceso de desarrollo de software 23
Inconveniencias
– Rígido, difícil de rectificar
– Documentación inicial se vuelve obsoleta
Desarrollo evolutivo
– Ciclo de vida en espiral
– Uso de prototipos (de diversa fidelidad)
– Extreme Programming
– RAD (Rappid Application Development)
Cambia el proceso pero no las
actividades
3. El proceso de desarrollo de software 24
El Modelo en V
Identificación
de Necesidades Explotación
Especificación
Esencial Validación
Especificación
Física Empaquetado
Diseño Integración
Codificación
3. El proceso de desarrollo de software 25
Diseño Centrado en el
Ususario
3. El proceso de desarrollo de software 26
Análisis
• Entrada
– Conocimiento del dominio de la aplicación,
actividades de los usuarios, mercado, etc.
• Actividades
– Identificar las necesidades del usuario
– Análisis de viabilidad
– Determinar los requerimientos de la aplicación
• Salida
– Documento de requerimientos del software
Diseño
• Entrada
– Documento de requerimientos del software
• Actividades
– Establecer estrategia de solución
– Análisis de alternativas. Formalizar la solución
– Descomponer y organizar la aplicación
– Fijar descripciones de cada módulo
• Salida
– Documento de diseño del software
– UML (Universal Modeling Language)
Codificación
• Entrada
– Documento de diseño del software
• Actividades
– Creación del código fuente
– Pruebas de unidades
• Salida
– Código de módulos, probado
Integración. Validación
(FEEDBACK)
• Entrada
– Código de módulos, probado
– Documento de requerimientos del software
(validación)
• Actividades
– Pruebas de integración
– Pruebas de validación
• Salida
– Aplicación completa, lista para usar
Mantenimiento
• Entrada
– Software listo para usar
• Actividades
– Instalación
– Uso en paralelo
– Implementación
– Nuevos requerimientos, correcciones y
modificaciones
– Soporte de usuarios
• Salida
– Aplicación respondiendo a las necesidades actuales
El Helado de Cucurucho
USUARIOS
Identificación
de Necesidades Explotación
Especificación CLIENTES
Esencial Validación
Especificación ANALISTA
Física Empaquetado
Diseño Integración
DISEÑADORES Codificación
Y
CODIFICADORE
S 3. El proceso de desarrollo de software 32
El Modelo Real
Identificación
de Necesidades Explotación
Especificación
Esencial Validación
Especificación
Física Empaquetado
Diseño Integración
Codificación
3. El proceso de desarrollo de software 33
Propuesta de Yourdon
Requerimientos del Usuario
Sistema
Probado
Encuesta
Prueba de
Sistema
Subsistemas
Análisis Probados
Especificación
Funcional
Prueba de
Necesidades de subsistema
diseño Rendimiento Estudio
Preliminar del HW
Módulos
Configuración Probados
Especificación
del Sistema Diseño Final Prueba de
Detallado Unidad
Especificación Módulos
de los Codificados
Codificación
Programas
3. El proceso de desarrollo de software 34
Construcción Rápida de
Prototipos Desechables
• Al igual que otras ingenierías 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 gustaría ver algo similar para
poder hacerse una idea de lo que
obtendrá
3. El proceso de desarrollo de software 35
El ciclo de vida de
Prototipos Desechables es
el siguiente:
Acepta
Obtención Construcci do Ciclo
Evaluació
Especificaci ón de
n Cliente
ón Prototipo Vida
Clásico
Mejora de la
Especificaci NO
ón Aceptado
3. El proceso de desarrollo de software 36
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 menús del sistema
y simula débilmente los procesos.
– En profundidad. Cubre funciones que presentan
ambigüedades al cliente o a los informáticos.
– Completo pero de baja calidad y rendimiento.
3. El proceso de desarrollo de software 37
Incremental
Requeri Diseño Impleme Pruebas
Bloque 1 mientos ntación
Requeri Diseño Impleme Pruebas
Bloque N mientos ntación
o
Requerimientos Requerimientos Permite el
Diseño Impleme Pruebas
desarrollo
Bloque 1 ntación concurrente
Diseño Impleme Pruebas
Bloque N ntación
3. El proceso de desarrollo de software 38
Evolución de Prototipos
Observación
Requerimiento
s
Abstracción
Validación
Especificación
Verificación
Empezamos por los
requerimientos más claros, Prototipo
menos complejos y más Verificación
necesarios.
Experimentar
Prototipo rápido Validación
3. El proceso de desarrollo de software 39
Reutilización de Software
• Tiene como objetivos:
– reducir el coste del software.
– Producir sistemas de mayor calidad.
• Se basa en reutilizar Diseños,
programas, módulos y datos.
• Es compatible con el prototipo
evolutivo.
3. El proceso de desarrollo de software 40
Síntesis automática de
software
Requerimientos
Informales Análisis de Especificación Formal
Requerimientos (Prototipo)
Validación
Mantenimiento Optimización
Mecánica
Racionalidad y
Decisiones
Ajuste
(tuning)
Desarrollo Programa
Formal Fuete
3. El proceso de desarrollo de software 41
En espiral.
Determinar objetivos, Evaluar alternativas,
alternativas, restricciones identificar y resolver
riesgos
Acuerdo
REVISIÓN
Planificar las próximas Desarrollar, verificar
fases
3. El proceso de desarrollo de software 42
Metodologías de
Desarrollo del Software
• Métodos informales
• Métodos Semiformales
• Métodos Formales
3. El proceso de desarrollo de software 43
Métodos informales
• Joaquín Lucio-Villegas los clasifica
como:
– Quick & Dirty (USA)
– Match stick box (Europa)
– Balones p'alante y maricón el último
3. El proceso de desarrollo de software 44
Métodos Semiformales
• Métodos Estructurados
– SA/SD (structured analysis &
structured design)
– Métrica
• Métodos Orientados a Objetos
– OMT
– UML
3. El proceso de desarrollo de software 45
Métodos Estructurados
• Métodos Orientados a la Estructura
de los Datos
• Métodos de flujo de datos
PROCESOS DATOS
3. El proceso de desarrollo de software 46
Métodos Orientados a
Objetos
• Los métodos orientados a objeto
describen e implementan los sistemas
de información desde un punto de vista
ontológico.
3. El proceso de desarrollo de software 47
Métodos Formales
• Los métodos formales permiten al ingeniero de
software especificar, desarrollar y verificar un
sistema informático mediante la aplicación de una
notación matemática rigurosa.
• Utilizando un lenguaje de especificación formal, un
método formal proporciona los medios de
especificar un sistema de forma que se aseguren,
de forma sistemática, la consistencia, la
completitud y la corrección.
• Se suelen basar en notaciones matemáticas
similares a las del álgebra de conjuntos y la lógica
3. El proceso de desarrollo de software 48
Madurez del proceso en la
organización de desarrollo
• La misma industria, diferentes
niveles de madurez.
3. El proceso de desarrollo de software 49
Madurez del proceso en la
organización de desarrollo
• Hay factores que no quedan
claramente reflejados en el ciclo de
vida ni en las técnicas de desarrollo.
• Los factores no estudiados son:
– El cumplimiento de los plazos de
entrega.
– La calidad (número de errores en el
Software).
– El coste del proyecto.
3. El proceso de desarrollo de software 50
CMM (Capability Maturity
Model)
• Proporciona una Guía sobre como
– controlar los procesos:
• de desarrollo del software.
• de mantenimiento.
– Hacer evolucionar hacia una cultura
de:
• Ingeniería del software.
• Gestión eficiente.
3. El proceso de desarrollo de software 51
Evolución de las
organizaciones según el
CMM
Control
del
Proceso Optimización
Medición
del
Proceso Gestionado
Definición
del
Proceso Definido
Control
Básico
Repetible
Inicial
3. El proceso de desarrollo de software 52
Correlación entre estimaciones y
niveles de madurez
3. El proceso de desarrollo de software 53
Nivel Inicial.
• Según las circunstancias utilizamos un
proceso distinto. (algunos caóticos)
• A medida,
• Poco formalizado,
• Uso de herramientas informales.
• Pocos procesos definidos.
• El éxito depende del esfuerzo individual.
3. El proceso de desarrollo de software 54
Nivel de Repetición.
• Se tiene procesos estables de
desarrollo, con control estadístico.
• Uso de datos historicos
• Establecimiento de procesos de gestión
de proyecto, para hacer seguimiento de:
– Coste.
– Planificación.
– Funcionalidad.
3. El proceso de desarrollo de software 55
Nivel de Definición.
• Proceso de desarrollo
perfectamente definido y
estandarizado.
• Integrado en la organización.
• Bien documentado.
• Todos los proyectos utilizan una
versión documentada y aprobada
de proceso.
3. El proceso de desarrollo de software 56
Nivel de Gestión.
• Mejoras de calidad sustanciales.
• Control cuantitativo de productos y
proceso a través de
– Mediciones del proceso
comprensibles.
– Mediciones de la calidad
3. El proceso de desarrollo de software 57
Nivel de Optimización.
• A través de mediciones del
proceso utilizando ideas y
tecnologías innovadoras
obtenemos:
– Mejoras en calidad y cantidad.
3. El proceso de desarrollo de software 58
Resumen
• Hemos visto:
– Como trabajan los ingenieros,
– Definiciones de ingeniería del
software,
– El ciclo de vida del software,
– Metodológicas de desarrollo
– Madurez del proceso de desarrollo.
3. El proceso de desarrollo de software 59