Introduction to
Software Engineering
Software Process
Models
Universidad Autónoma de Zacatecas
Introducción a la Ingeniería de Software
MSC Alejandro Isaís Torres
[email protected]
Outline
Introducción
Modelos de Proceso de desarrollo de
Software
Cómo enfrentar el cambio
Outline
Introducción
Modelos de Proceso de Software
Cómo enfrentar el cambio
Introducción
Un modelo de proceso de software es
una serie de actividades relacionadas
que conduce a la elaboración de un
producto de software.
“Si el proceso está bien, los resultados cuidarán
de sí mismos”
– Takashi Osada
Introducción
Existen muchos modelos de procesos de
software diferentes, pero todos deben
incluir cuatro actividades principales que
son:
Especificación del software
Diseño e implementación del software
Validación del software
Evolución del software
Introducción
Los modelos de procesos de software se
clasifican como:
Dirigidos por un plan (Plan-Driven)
Procesos Ágiles
Introducción
Procesos dirigidos por un plan (Plan-
Driven)
Son aquellos donde todas las actividades
del proceso se planean por anticipado y
el avance se mide contra dicho plan.
Introducción
Procesos Ágiles
La planeación es incremental y es más
fácil modificar el proceso para reflejar los
requerimientos cambiantes del cliente.
Outline
Introducción
Modelos de Proceso de Software
Cómo enfrentar el cambio
Modelos de Proceso de Software
Modelo en cascada (Waterfall)
Desarrollo Incremental
Ingeniería de Software orientada a la
reutilización
Modelos de Proceso de Software
Modelo en Cascada
Éste toma las actividades fundamentales del
proceso de especificación, desarrollo, validación
y evolución y, luego, los representa como fases
separadas del proceso, tal como especificación
de requerimientos, diseño de software,
implementación, pruebas, etcétera.
El modelo en cascada
El modelo en cascada
Cada fase produce documentación autorizada.
La siguiente fase no comienza sin terminar la fase previa.
El proceso es visible para los administradores.
Tiene que establecerse compromisos en etapas tempranas del
proceso, por lo tanto dificulta responder a requerimientos
cambiantes del cliente.
Debe de usarse cuando los requerimientos se entiendan bien
y sea improbable el cambio radical durante el desarrollo del
sistema.
Modelos de Proceso de Software
Desarrollo incremental
Este enfoque vincula las actividades de
especificación, desarrollo y validación. El sistema
se desarrolla como una serie de versiones
(incrementos), y cada versión añade
funcionalidad a la versión anterior.
Desarrollo Incremental
El desarrollo incremental se basa en la idea de
diseñar una implementación inicial, exponer ésta
al comentario del usuario, y luego desarrollarla
en sus diversas versiones hasta producir un
sistema adecuado.
Desarrollo Incremental
Desarrollo Incremental
Las actividades de especificación, desarrollo y
validación están entrelazadas en vez de separadas,
con rápida retroalimentación a través de las
actividades.
Refleja la forma en que se resuelven problemas.
Resulta más barato y fácil realizar cambios en el
software conforme éste se diseña.
Cada incremento o versión del sistema incorpora algunas de
las funciones que necesita el cliente.
Los primeros incrementos del sistema incluyen la función más
importante o la más urgente.
Modelos de Proceso de Software
Ingeniería de software orientada a la reutilización
Este enfoque se basa en la existencia de un
número significativo de componentes
reutilizables. El proceso de desarrollo del sistema
se enfoca en la integración de estos
componentes en un sistema, en vez de
desarrollarlo desde cero.
Ingeniería de software
orientada a la reutilización
Los enfoques orientados a la reutilización se
apoyan en una gran base de componentes de
software reutilizable y en la integración de
marcos para la composición de dichos
componentes. En ocasiones, tales componentes
son sistemas por derecho propio (sistemas
comerciales, off-the-shelf) que pueden mejorar
la funcionalidad específica, como el procesador
de textos o la hoja de cálculo.
Ingeniería de software
orientada a la reutilización
Ingeniería de software
orientada a la reutilización
En la figura se muestra un modelo del proceso general para desarrollo
basado en reutilización. Aunque la etapa inicial de especificación de
requerimientos y la etapa de validación se comparan con otros procesos
de software en un proceso orientado a la reutilización, las etapas
intermedias son diferentes. Dichas etapas son:
1. Análisis de componentes
2. Modificación de requerimientos
3. Diseño de sistema con reutilización
4. Desarrollo e integración
Ingeniería de software
orientada a la reutilización
Análisis de Componentes -> De acuerdo a los requerimientos se
buscan componentes que puedan satisfacer dicha
especificación, muchas veces solo proporcionan una parte de la
funcionalidad requerida.
Modificación de los requerimientos -> Durante esta etapa se
analizan los requerimientos usando información de los
componentes descubiertos. Luego se modifican para reflejar los
componentes disponibles.
Ingeniería de software
orientada a la reutilización
Diseño de sistema con reutilización -> Durante esta fase se diseña
el marco conceptual del sistema o se reutiliza un marco
conceptual existente. Se toman en cuenta los componentes que
se reutilizan. Es posible que deba diseñarse algo de software
nuevo.
Desarrollo e integración -> Se diseña el software que no puede
procurarse de manera externa, y se integran los componentes y
los sistemas comerciales para crear el nuevo sistema.
Ingeniería de software
orientada a la reutilización
La ingeniería de software orientada a la reutilización tiene la
clara ventaja de reducir la cantidad de software a desarrollar
y, por lo tanto, la de disminuir costos y riesgos también
conduce a entregas más rápidas del software.
Se pierde algo de control sobre la evolución del sistema,
conforme las nuevas versiones de los componentes
reutilizables no estén bajo el control de la organización que los
usa.