Este documento presenta una visión general del proceso de desarrollo de software. Explica que el proceso de software consiste en una serie de actividades estructuradas como la especificación, el diseño, la implementación y las pruebas para crear un producto de alta calidad a tiempo. También describe que los ingenieros de software y sus gerentes adaptan el proceso a sus necesidades siguiendo pasos predecibles. Finalmente, resalta que un enfoque ágil es importante para ofrecer estabilidad al proceso creativo de desarrollo de software.
1. Sesión II: Visión General
El proceso del software
Ing. Luis Alfredo Fernández Vizcarra
lfernandez@speedy.com.pe
lfernandez@coesi.com.pe
2. Vistazo rápido: Software
¿Qué es?
• Una serie de pasos predecibles que ayude
a crear un resultado de alta calidad y a
tiempo.
• Es un conjunto estructurado de
actividades para: Especificar, diseñar,
implementar y probar software.
¿Quién lo hace?
• Los ingenieros de software y sus jefes
adaptan el proceso a sus necesidades y
después lo siguen.
• La gente que ha solicitado el software
deben definir, construir y probar el
proceso.
¿Por qué es importante?
• Ofrece estabilidad, control y organización
a una actividad que puede volverse
caótica si no se controla.
• Un enfoque de ingeniería del software
moderno debe ser “ágil”.
¿Cuáles son los pasos?
• El proceso que se adopte depende del
software que se está construyendo.
¿Cuál es el producto
obtenido?
• Programas, documentos y datos que se
producen como consecuencia de las
actividades y tareas definidas por el
proceso.
¿Cómo puedo estar seguro
de que lo he hecho
correctamente?
• La calidad, el tiempo requerido, la
viabilidad a largo plazo del producto que
se construye son los mejores indicadores
de la eficacia del proceso que se utiliza.
3. Un enfoque de calidad
Proceso
La Ingeniería de Software es el establecimiento y uso de principios robustos
de la ingeniería a fin de obtener económicamente software que sea fiable y
que funcione eficientemente sobre máquinas reales. (Fritz Bauer)
Ingeniería del Software: Una Tecnología Estratificada
Métodos
Herramientas
La ingeniería del software es
una tecnología estratificada
Es la base que soporta la ingeniería
del software
Proporcionan el soporte
automatizado o semi automatizado
para el proceso y los métodos.
Proporcionan los “cómo” técnicos para
construir software (comunicación, análisis de
requisitos, modelado del diseño, la
construcción del programa, la realización de
pruebas y el soporte)
Es el elemento que mantiene juntos los
estratos de la tecnología y que permite el
desarrollo racional y a tiempo del
software de computadora.
4. Marco de Trabajo para el Proceso
MARCO DE TRABAJO DEL PROCESO
Actividades sombrilla
Actividad del marco de trabajo # 1
acción de la ingeniería de software #1.1
Conjunto
de tareas
Tareas del trabajo - productos del trabajo - puntos de aseguramiento
de la calidad - fundamentos del proyecto
acción de la ingeniería de software # 1.k
Conjunto
de tareas
Tareas del trabajo - productos del trabajo - puntos de aseguramiento
de la calidad - fundamentos del proyecto
Actividad del marco de trabajo # n
acción de la ingeniería de software #n.1
Conjunto
de tareas
Tareas del trabajo - productos del trabajo - puntos de aseguramiento
de la calidad - fundamentos del proyecto
acción de la ingeniería de software # n.m
Conjunto
de tareas
Tareas del trabajo - productos del trabajo - puntos de aseguramiento
de la calidad - fundamentos del proyecto
5. Actividades del marco del trabajo
COMUNICACIÓN
Colaboración y comunicación
con los clientes. Investigación de
requisitos y otras actividades
relacionadas.
PLANEACIÓN
Tareas técnicas, riesgos
probables, los recursos que
serán requeridos, los productos
y un programa de trabajo.
MODELADO
Determinar un modelo o
esquema compartido entre
desarrollador y cliente, para
tener una orientación de lo que
se va a crear.
CONSTRUCCIÓN
Generación de código + pruebas
del software
DESPLIEGUE
Es la entrega al cliente para su
prueba con el fin de obtener
información que permita
mejorar el producto.
6. Actividades Sombrillas
Ocurren a lo largo del
proceso de software y se
enfocan de modo
principal en la gestión, el
rastreo y el control del
proyecto.
Gestión del
riesgo
Seguimiento y
control del
proyecto de
software
Aseguramiento
de la calidad del
software
Revisiones
técnicas
formales Medición
Gestión de la
configuración
del software
Gestión de la
reutilización
Preparación y
producción del
producto de
trabajo
7. Integración del modelo de capacidad de
madurez (IMCM)
Modelo para la mejora o evaluación de los procesos de desarrollo y mantenimiento de
sistemas y productos de software. Creado por el SEI en el 2000 y publicado en el 2002 con
el objetivo de realizar mejoras respecto al CMM.
La IMCM representa un modelo completo de proceso en dos formas diferentes:
Como modelo continuo: 05 niveles de capacidad
NIVEL 0
Incompleto
NIVEL 1
Realizado
NIVEL 2
Administrado
NIVEL 3
Definido
NIVEL 4
Administrado en
forma
cuantitativa
NIVEL 5
Mejorado
El área del
proceso aún
no se realiza
o no alcanza
todas las
metas y
objetivos.
Las metas
específicas
han sido
satisfechas.
Todas las tareas
de trabajo y
productos están
monitoreados, c
ontrolados y
revisados; y son
evaluados de
acuerdo a la
descripción del
proceso.
Criterios del
nivel 2
cumplidos. El
proceso está
adaptado al
conjunto de
procesos
estándar de la
organización.
Criterios del nivel
3 cumplidos. El
área del proceso
se controla y
mejora mediante
mediciones y
evaluación
cuantitativa.
Criterios del
nivel 4
satisfechos. El
área del
proceso se
adapta y
mejora
mediante el
uso de medios
cuantitativos
para conocer
las
necesidades
cambiantes del
cliente.
8. Integración del modelo de capacidad de
madurez (IMCM)
Como modelo discreto: 05 niveles de madurez
Ejecutado
Gestionado
Definido
Gestionado de
manera cuantitativa
Optimizado
5
4
3
2
1
Gestión básica del
proyecto
Estandarización del
proceso
Ejecución del proceso
organizacional
Mejora continua del proceso
9. Patrones del Proceso
TIPODEPATRONES
Patrones de Tarea: Definen una acción de la
ingeniería de software o una tarea de trabajo
importante.
Patrones de Escenario: Definen una actividad
del marco de trabajo para el proceso.
Patrones de fase: Definen la secuencia de
actividades del marco de trabajo que ocurre
junto con el proceso.
Un patrón de proceso ofrece una plantilla: un método consistente para describir
una característica importante del proceso de software. Se definen en cualquier
grado de abstracción (un proceso completo o una actividad del marco de trabajo
importante o una tarea dentro de una actividad del marco de trabajo).
10. Plantilla para describir un patrón de proceso
Usos conocidos/Ejemplos: Se indican los ejemplos específicos en los cuales el
patrón es aplicable.
Patrones relacionados: lista de todos los patrones de proceso directamente
relacionados con éste.
Contexto resultante: Se describen las condiciones que habrá una vez que el
patrón haya sido implementado con éxito. Definen una acción de la ingeniería
de software o una tarea de trabajo importante.
Solución: Se describe la implementación del patrón
Contexto inicial: Se describen las condiciones en las cuales se aplica el patrón.
Tipo: De tarea, de escenario o de fase
Propósito: Objetivo del patrón
Nombre del patrón: Describe su función dentro del software
11. Plantilla para describir un patrón de proceso
EJEMPLO:
Nombre del patrón
Propósito
Tipo
Contexto inicial
Problema
Solución
Contexto resultante
Patrones relacionados
Usos conocidos/ejemplos
12. En la evaluación se pretende comprender el estado actual del proceso de
software y se intenta mejorarlo.
Evaluación del Proceso
Proceso del
software
Mejoramiento
del proceso de
software
Evaluación del
proceso de software
Determinación
de la capacidad
Identifica
modificaciones a
Es examinado
por
Identifica capacidades
y riesgos de
Conduce a Conduce a
Motiva
13. Enfoques para la evaluación del proceso de
software
Método de
evaluación de la
IMCM para el
mejoramiento del
proceso
(MEIEMP):
iniciación,
diagnóstico,
establecimiento,
acción y
aprendizaje.
Apreciación
basada en el
CMM para el
mejoramiento
del proceso
interno (ABC
MPI).
SPICE (ISO/IEC
15504)
ISO 9001:2000 para
software:
Serie de normas
internacionales
establecidas para
sistemas de calidad, las
mismas pueden
aplicarse
prácticamente en
cualquier compañía, y
cuyo objetivo final es
satisfacer al
consumidor.
CICLOS: Planear – hacer
– revisar - actuar
14. Modelos de Proceso Personales y en Equipo
1.PROCESO DE SOFTWARE PERSONAL (PSP): Destaca la necesidad de registrar y
analizar los tipos de errores que se cometen para desarrollar estrategias
encaminadas a eliminarlos.
REQUIERE ACTIVIDADES DEL MARCO DE TRABAJO
Planificar el trabajo
Esforzarse por cumplir la
planificación
Esforzarse por obtener productos
de la mejor calidad
a) Planeación: Seleccionar requisitos,
establecer el tamaño del proyecto y
estimar recursos.
b) Diseño de alto nivel: elaborar las
especificaciones externas para el diseño
de cada componente.
c) Revisión del diseño de alto nivel: los
métodos formales de verificación se
aplican a errores descubiertos en el
diseño.
d) Desarrollo: el diseño al nivel del
componente se refina y revisa.
e) Análisis de resultados: Se determina la
efectividad del proceso mediante las
mediciones y medidas recolectadas.
15. Modelos de Proceso Personales y en Equipo
2. PROCESO DE SOFTWARE EN EQUIPO: La meta del PSE es construir un
equipo de proyecto “autodirigido” que se organice para producir un
software de alta calidad.
Actividades
Lanzamiento: con una secuencia de tareas
como base sólida para iniciar el proyecto.
Diseño de alto nivel
Implementación
Integración y prueba
Análisis de resultados
16. Tecnología del Proceso
HERRAMIENTAS DE TECNOLOGÍA DEL PROCESO:
Permiten que una organización de software construya un modelo
automatizado del marco de trabajo común del proceso, tareas y actividades
sombrilla.
Puede aprovecharse para coordinar el uso de las herramientas de ingeniería de
software asistida por computadora
Herramientas de
tecnología de proceso
Ayudan
Analizar procesos
actuales
Organizar sus
tareas
Administrar su
calidad técnica
Controlar y
monitorear su
progreso
17. Producto y Proceso
Si el proceso es débil, sin duda el producto final sufrirá las consecuencias.
Una confianza excesiva en el proceso es peligrosa.
Las personas obtienen tanta satisfacción del proceso creativo que del
producto final.
Un profesional creativo del software debería también obtener tanta
satisfacción de la programación como del producto final.
La dualidad del producto y proceso es un elemento importante para
mantener ocupada a la gente creativa hasta que se finalice la transición de
la programación a la ingeniería del software.
18. Bruegge, B., Dutoit, A.H., Ingeniería del Software Orientado a Objetos, cap. 1
Jacobson, I., Booch, G., Rumbaugh, J., El Proceso Unificado de Desarrollo de
Software, cap. 1
Pressman, R.S., Ingeniería del Software. Un enfoque práctico, cap. 1 y 2
Sommerville, I., Ingeniería de Software, cap. 1, 2 y 3
Referencias