View
104
Download
6
Category
Preview:
Citation preview
INGENIERIA DE SOFTWAREUn enfoque practico
Roger S. Pressman
CAPITULO 2
Modelos del Proceso
PROCESO DEL SOFTWARE
Se define como una estructura para las actividades,
acciones y tareas que se requieren a fin de construir
software de alta calidad.
NOTA:
No es lo mismo proceso de software que ingeniería de
software. Un proceso define el enfoque adoptado
mientras se hace ingeniería sobre el software.
UN MODELO GENERAL DE PROCESO
Flujo del proceso
Describe la manera en que están organizadas las
actividades estructurales y las acciones y tareas que
ocurren dentro de cada una con respecto a la secuencia
y el tiempo.
Flujo de proceso lineal. Ejecuta cada una de las
actividades estructurales en secuencia.
Flujo de proceso Iterativo. Repite una o más actividades
antes de pasar a la siguiente
Flujo de proceso evolutivo. Realiza las actividades en
forma circular. A través de las cinco actividades, cada
circuito lleva a una versión más completa del software.
Flujo de proceso paralelo. Ejecuta una o más
actividades en paralelo con otras.
Evaluación y mejoras del proceso
La existencia de un proceso de software no es garantía de que elsoftware se entregue a tiempo, que satisfaga las necesidades delos consumidores, o que tenga las características técnicas queconducirán a características de calidad a largo plazo.
Además el proceso en si puede evaluarse para garantizar quecumple con ciertos criterios de proceso básicos que se hayademostrado que son esenciales para el éxito de la ingeniería desoftware.
Algunos enfoques para la evaluación y mejora de un proceso delsoftware:
- Método de evaluación del estándar CMMI para el proceso de mejoras (SCAMPI)
- Evaluación basada en CMM para la mejora del proceso interno (CBA IPI)
- SPICE
- ISO9001:2000 para software
MODELOS DEL PROCESO PRESCRIPTIVO
Fueron propuestos originalmente para poner orden en
el caos del desarrollo de software. Se les llama así
porque prescriben un conjunto de elementos del
proceso: actividades estructurales, acciones de
ingeniería de software, tareas, productos de trabajo,
aseguramiento de la calidad y mecanismos de control
del cambio para cada proyecto.
Modelo de la cascada
El modelo de cascada, a veces llamando ciclo de vida
clásico, sugiere un enfoque sistemático y secuencial
para el desarrollo de software que comienza con la
especificación de los requerimientos por parte del
cliente y avanza a través de la planeación, modelado,
construcción y desarrollo, para concluir con el apoyo
del software terminado.
Modelos de proceso incremental
El modelo incremental combina elementos de los flujos
del proceso lineal y paralelo. Aplica secuencias lineales
en forma escalonada a medida que avanza el
calendario de actividades. Cada secuencia lineal
produce “incrementos” de software susceptibles a
entregarse de manera parecida a los incrementos
producidos en un flujo de proceso evolutivo.
Se utiliza en situaciones en las que los requerimientos
iniciales de software están razonablemente bien
definidos, pero el alcance general del esfuerzo de
desarrollo imposibilita un proceso lineal. Además, tal vez
haya la necesidad imperiosa de dar rápidamente cierta
funcionalidad limitada de software a los usuarios y
aumentarla en las entregas posteriores.
- En cada incremento se entrega un producto que ya
opera
- Los primeros incrementos son versiones desnudas (básicas)
- Es útil en particular cuando no se dispone de personal
para la implementación completa del proyecto en el plazo
establecido por el negocio.
Modelos de proceso evolutivo
Los modelos evolutivos son iterativos. Se caracterizan
por la manera en que permiten desarrollar versiones
cada vez más completas del software.
Se utiliza cuando los requerimientos del negocio y del
producto cambian conforme avanza el desarrollo, lo
que hace que no sea realista realizar un trayectoria
rectilínea hacia el producto final.
Hacer prototipos. Se utiliza cuando se tienen un
conjunto de objetivos generales para el software, pero
no se han identificado los requerimientos detallados
para las funciones y características.
El modelo espiral. Propuesto por Barry Boehm, el modelo
espiral es un modelo evolutivo del proceso de software
y se acopla con la naturaleza iterativa de hacer
prototipos con los aspectos controlados y sistémicos del
modelo de cascada.
Modelos concurrentes
En ocasiones llamado “ingeniería concurrente”, es un
modelo de desarrollo de software que permite que un
equipo de software represente elementos iterativos y
concurrentes de cualquiera de los modelos de proceso
descritos anteriormente.
MODELOS DE PROCESO ESPECIALIZADO
Tienen muchas características de uno o más de los
modelos tradicionales, sin embargo, estos modelos
tienden a aplicarse cuando se elige un enfoque de
ingeniería de software especializado o definido muy
específicamente.
Desarrollo basado en componentes.
Se trata de un desarrollo basado en componentes
comerciales de software generalmente desarrollados
por vendedores que los ofrecen como productos y que
brindan una funcionalidad bien definida y permite que
se integren al software que se va a construir.
Incorpora muchas de las características del modelo
espiral. Es de naturaleza evolutiva y demanda un
enfoque iterativo para la creación de software.
Construye aplicaciones a partir de fragmentos de
software prefabricados.
El modelo de métodos formales
Agrupa actividades que llevan a la especificación
matemática del software de cómputo.
Permiten especificar, desarrollar y verificar un sistema
basado en computadora por medio del empleo de una
notación matemática rigurosa.
Aunque este modelo promete un software libre de
defectos, no es muy seguido y tiene algunos
inconvenientes:
- Se consume mucho tiempo de desarrollo y es caro
- Se requiere de mucha capacitación ya que pocos
desarrolladores tiene la formación necesaria
- Incluyen complejidad técnica para el cliente
Desarrollo de software orientado a aspectos
Conocido también como programación orientada a
aspectos (POA), es un paradigma de ingeniería de
software relativamente nuevo que proporciona un
proceso y enfoque metodológico para definir,
especificar, diseñar y construir aspectos: “mecanismos
más allá de subrutinas y herencia para localizar la
expresión de una preocupación global”.
EL PROCESO UNIFICADO
Es un intento por obtener los mejores rasgos y
características de los modelos tradicionales del proceso
de software, pero en forma que implemente muchos de
los mejores principios de desarrollo ágil de software.
Fases del proceso unificado
Fase de concepción. Agrupa actividades tanto de
comunicación con el cliente como de planeación.
Fase de elaboración. Incluye actividades de
comunicación y modelado del modelo general del
proceso
Fase de construcción. Es idéntica a la actividad de
construcción definida para el proceso general del
software.
Fase de transición. Incluye las últimas etapas de la
actividad general de construcción y la primera parte de
la actividad de despliegue general.
Fase de producción. Se vigila el uso que se le da ala
software
Fases del proceso unificado
MODELOS DEL PROCESO PEROSONAL Y DEL EQUIPO
Se trata de la creación de un modelo que cubra las
necesidades más estrechas de los individuos y las más
generales de la organización.
Proceso personal del software
Representa un enfoque disciplinado basado en la
medición, enfatiza la necesidad de detectar pronto los
errores.
Define cinco actividades estructurales:
- Planeación
- Diseño de alto nivel
- Revisión de diseño de alto nivel
- Desarrollo
- Post mortem
Proceso del equipo de software
El objetivo es construir un equipo “autodirigido” para el
proyecto, que se organice para producir software de
alta calidad.
Tiene los siguientes objetivos:
- Formar grupos autodirigidos
- Mostrar a los gerentes como dirigir y motivar a sus
equipos
- Acelerar la mayoría del proceso del software
- Brindar a las organizaciones muy maduras una
guía para la mejora
- Facilitar la enseñanza universitaria de aptitudes de
equipo con grado industrial
GRACIAS
Recommended