+
Proceso del Software
Una definición sencilla de proceso es “serie de acciones que
conducen a un final”.
Siempre que para alcanzar algún fin deseado necesitemos
ejecutar una serie de acciones, y estas acciones tengan cierto
orden, dependencias, roles responsables, resultados, tiempos
de ejecución y herramientas de apoyo, estaremos hablando de
procesos, que pueden ser predefinidos y personalizados.
+
Proceso del Software
Un proceso del software es un conjunto de actividades que
conducen a la creación de un producto de software
La meta es desarrollar o mejorar procesos.
El conjunto de personas, estructuras de organización, reglas,
políticas, actividades y sus procedimientos, componentes de
software, metodologías, y herramientas utilizadas o creadas
específicamente para definir, desarrollar, ofrecer un servicio,
innovar y extender un producto de software son parte de estos
procesos
+
Proceso del Software
Un proceso de software efectivo habilita a la organización a
incrementar su productividad al desarrollar software:
1. Permite estandarizar esfuerzos, promover reuso, repetición
y consistencia entre proyectos.
2. Provee la oportunidad de introducir mejores prácticas de la
industria.
3. Permite entender que las herramientas deben ser utilizadas
para soportar un proceso.
4. Establece la base para una mayor consistencia y mejoras
futuras.
+
Proceso del Software
Algunas actividades fundamentales son comunes para todos
los procesos del software:
I. Especificación de software. Se debe definir la funcionalidad
de software y las restricciones de operación
II. Diseño e implementación del software. Se debe validar el
software que cumpla su especificación.
III. Validación del software. Se debe validar el software para
asegurar que hace lo que el cliente desea
IV. Evolución del software. El software debe evolucionar para
cubrir las necesidades cambiantes del cliente.
+
Modelos del Proceso de Software
Un modelo de software es un marco de referencia que
contiene los procesos, las actividades y las tareas involucradas
en el desarrollo, la explotación y el mantenimiento de un
producto de software, abarcando la vida del sistema desde la
definición de los requisitos hasta la finalización de su uso
(norma ISO 12207-1) [ISO/IEC, 1995]
Es decir: un modelo de software es una representación
abstracta de un proceso del software.
+
Modelo en Cascada
Conocido también como modelo lineal o
“clasico”
Se denomina modelo en cascada porque
su característica principal es que no se
comienza con un paso hasta que no se
ha terminado el anterior.
(Bennington 1956, Modificado por
Royce en 1970, Pressman lo presenta
como ciclo de vida clásico).
+
Modelo en Cascada
El modelo en Cascada establece que el software debe ser
construido, rigurosamente, a través de una transformación
sucesiva de documentos, siguiendo una estrategia lineal de
desarrollo. Primero saber qué se quiere y después, cuando se
conozca todo lo que se quiere, empezar a construirlo.
El modelo de cascada también conocido como modelo lineal
secuencial sugiere un enfoque sistemático, secuencial para el
desarrollo del software que comienza en un nivel de sistemas y
progresa con el análisis, diseño, codificación, pruebas y
mantenimiento.
+
Etapas del Modelo en Cascada
1. Análisis y definición de requerimientos. Los servicios,
restricciones y metas del sistema se definen a partir de las
consultas con los usuarios. Se definen en detalle y sirven
como una especificación del sistema.
2. Diseño del sistema de software. El proceso de diseño de
sistema divide los requerimientos en sistemas en hardware
y software. Establece la arquitectura completa del sistema.
+
Etapas del Modelo en Cascada
3. Implementación y prueba de unidades. En esta etapa el diseño
del software se lleva a cabo como un conjunto o unidades de
programa. La prueba de unidades implica verificar que cada
una cumpla su especificación.
4. Integración y prueba del sistema. Los programas o las unidades
individuales de programas se integran y prueban como sistema
completo para asegurar que se cumplan los requerimientos del
software.
5. Funcionamiento y mantenimiento. El sistema se instala y se
pone en funcionamiento. El mantenimiento implica corregir
errores no cubiertos en las etapas anteriores del ciclo de vida,
mejorar la implementación de las unidades del sistema.
+
Desarrollo evolutivo
Se basa en la idea de desarrollar una
implementación inicial, exponiéndola a
los comentarios de los usuarios y
refinándola a través de las diferentes
versiones hasta que se desarrolla un
sistema adecuado.
+
Tipos de modelos evolutivos
1. Desarrollo exploratorio: El objetivo del proceso es trabajar
con el cliente para explorar sus requerimientos y entregar un
sistema final. El desarrollo empieza con las partes del
sistema que se comprenden mejor. El sistema evoluciona
agregando nuevos atributos propuestos por el cliente.
2. Prototipos desechables: El objetivo del proceso de desarrollo
evolutivo es comprender los requerimientos del cliente y
entonces desarrollar una definición mejorada de los
requerimientos del sistema. El prototipo se centra en
experimentar con los requerimientos del cliente que no se
comprenden del todo.
+
Prototipos desechables
El prototipo es una versión rudimentaria del sistema que
posteriormente es desechada
Se desarrolla código para explorar factores críticos para el éxito
del sistema
La implementación usa lenguajes y/o métodos de desarrollo más
rápidos que los definitivos
Se usa como herramienta auxiliar de la especificación de
requisitos y el diseño
+
Características del desarrollo
evolutivo
a. Enfoque de desarrollo que se utiliza cuando no se conoce con
seguridad lo que se quiere construir
b. Se comienza diseñando e implementando las partes más
destacadas del sistema
c. La evaluación del prototipo proporciona la realimentación
necesaria para aumentar y refinar el prototipo
d. El prototipo evoluciona y se transforma en el sistema final
+
Desarrollo evolutivo
Este suele ser más efectivo que el enfoque de cascada, ya que
satisface las necesidades inmediatas de los clientes. Las
ventajas que proporciona el enfoque evolutivo es que la
especificación de puede desarrollar en forma creciente.
Cuenta con 2 problemas:
① El proceso no es visible. Si los sistemas se desarrollan
rápidamente, no es rentable producir documentos que
reflejen cada versión del sistema.
② A menudo los sistemas tienen una estructura deficiente. Los
cambios continuos tienden a corromper la estructura del
software.
+
Ingeniería de Software
Basada en
Componentes
Se enmarca en un contexto más amplio:
ingeniería del software basada en
componentes
Enfoque de desarrollo que trata de
maximizar la reutilización de software
existente [Sommerville, 2002]
Modelo Orientado a la Reutilización
+
Ingeniería del Software basada en
componentes
Se divide en 2:
Ingeniería del dominio
El objetivo de la ingeniería del dominio es identificar, construir,
catalogar y diseminar un conjunto de componentes de software
que tienen aplicación en el software actual y futuro dentro de un
dominio de aplicación particular
Desarrollo basado en componentes
+
Desarrollo basado en componentes
Un componente es una unidad ejecutable e independiente
Los componentes publican su interfaz y todas las interacciones
son a través de ella
La ingeniería del software basada en componentes tiene la
ventaja obvia de reducir la cantidad de software a desarrollarse
y así reduce los costos y los riesgos. Por lo general permite
una entrega más rápida del software.
+
Etapas del Modelo basado en
componentes
1. Especificación de requerimientos. Similar al modelo de
cascada.
2. Análisis de componentes. A partir de la especificación se
buscan los componentes para implementar esta
especificación.
3. Modificación de requerimientos. Los requerimientos se
analizan utilizando información acerca de los componentes
que se han descubierto. Entonces estos componentes se
modifican para reflejar los componentes disponibles.
+
Etapas del Modelo basado en
componentes
4. Diseño del sistema con reutilización. En esta fase se diseña
o se reutiliza un marco de trabajo para el sistema. Los
diseñadores tienen en cuenta los componentes que se
reutilizan y organizan el marco de trabajo para que los
satisfaga.
5. Desarrollo e integración. Para crear el sistema, el software
que no se puede adquirir externamente se desarrolla, y los
componentes y los sistemas adquiridos se integran.
6. Validación del sistema. Similar al modelo de cascada
+
Iteración de
Procesos
La esencia de los procesos iterativos es
que la especificación se desarrolla junto
con el software.
Permite prepararse para los cambios.
Cuando se disponen nuevas
tecnologías, cambian los diseños y la
implementación.
+
Modelo en Espiral
Fue propuesto inicialmente por B. Boehm [Boehm, 1986,
1988]
Es un modelo de proceso de software evolutivo, que
proporciona el potencial para el desarrollo rápido de versiones
incrementales del software
+
Características del Modelo en
espiral
Puede considerarse como un metamodelo de proceso
Principalmente, reúne características del modelo clásico y de
prototipos
Aparece el análisis de riesgo
Se divide en un numero de actividades estructurales, también
denominadas regiones de tareas. En el modelo original de
Boehm aparecen cuatro regiones de tareas
Planificación, Análisis de riesgos, Ingeniería, Evaluación del
cliente
El avance se realiza desde el centro de la espiral hacia el exterior
+
Modelo incremental
El modelo incremental aplica secuencias lineales de forma
escalonada mientras avanza el tiempo.
Corrige la necesidad de una secuencia no lineal de pasos de
desarrollo. Cada secuencia lineal produce un incremento del
software
El modelo incremental entrega el software en partes pequeñas,
pero utilizables, llamadas “incrementos”. En general, cada
incremento se construye sobre aquel que ya ha sido
entregado.
+
Modelo incremental
Cuando se utiliza un modelo incremental, el primer incremento
a menudo es un producto esencial.
El cliente utiliza el producto central.
Como un resultado de utilización y/o de evaluación, se
desarrolla un plan para el incremento siguiente. El plan afronta
la modificación del producto central a fin de cumplir mejor las
necesidades del cliente y la entrega de funciones, y
características adicionales. Este proceso se repite siguiendo la
entrega de cada incremento. Hasta que se elabore el producto
completo.
+
Modelo incremental
El modelo de proceso incremental, como la construcción de
prototipos y otros enfoques evolutivos, es iterativo por
naturaleza. Pero a diferencia de la construcción de prototipos,
el modelo incremental se centra en la entrega de un producto
operacional con cada incremento
Este modelo constituyo un avance sobre el modelo en cascada
pero también presenta problemas. Aunque permite el cambio
continuo de requisitos, aun existe el problema de determinar si
los requisitos propuestos son validos. Los errores en los
requisitos se presentan tarde y su corrección resulta tan
costosa como en el modelo en cascada.