ESTRUCTURA ESTÁTICA DEL PROCESO, ROLES, ACTIVIDADES, ARTEFACTOS Y FLUJOS DE TRABAJO
Un proceso de
desarrollo de software define quién hace qué, cómo y cuándo. RUP define cuatro
elementos los roles, que responden a la pregunta ¿Quién?, las actividades que
responden a la pregunta ¿Cómo?, los productos, que responden a la pregunta
¿Qué? y los flujos de trabajo de las disciplinas que responde a la pregunta
¿Cuándo? (ver Figura 13 y 14) [RSC98].
Figura 13:
Relación entre roles, actividades, artefactos
Figura 14:
Detalle de un workflow mediante roles, actividades y artefactos
Roles
Un rol define el
comportamiento y responsabilidades de un individuo, o de un grupo de individuos
trabajando juntos como un equipo. Una persona puede desempeñar diversos roles,
así como un mismo rol puede ser representado por varias personas.
Las
responsabilidades de un rol son tanto el llevar a cabo un conjunto de
actividades como el ser el dueño de un conjunto de artefactos [MMA].
RUP define grupos
de roles, agrupados por participación en actividades relacionadas. Estos grupos
son [RSC02]:
Analistas:
· Analista de procesos de negocio.
· Diseñador del negocio.
· Analista de sistema.
· Especificador de requisitos.
Desarrolladores:
· Arquitecto de software.
· Diseñador
· Diseñador de interfaz de usuario
· Diseñador de cápsulas.
· Diseñador de base de datos.
· Implementador.
· Integrador.
Gestores:
· Jefe de proyecto
· Jefe de control de cambios.
· Jefe de configuración.
· Jefe de pruebas
· Jefe de despliegue
· Ingeniero de procesos
· Revisor de gestión del proyecto
· Gestor de pruebas.
Apoyo:
· Documentador técnico
· Administrador de sistema
· Especialista en herramientas
· Desarrollador de cursos
· Artista gráfico
Especialista en
pruebas:
· Especialista en Pruebas (tester)
· Analista de pruebas
· Diseñador de pruebas
Otros roles:
· Stakeholders.
· Revisor
· Coordinación de revisiones
· Revisor técnico
· Cualquier rol
Actividades
Una actividad en
concreto es una unidad de trabajo que una persona que desempeñe un rol puede
ser solicitado a
que realice. Las actividades tienen un objetivo concreto, normalmente expresado
en términos de crear o actualizar algún producto.
Artefactos
Un producto o
artefacto es un trozo de información que es producido, modificado o usado
durante el proceso de desarrollo de software. Los productos son los resultados
tangibles del proyecto, las cosas que va creando y usando hasta obtener el
producto final [MMA].
Un artefacto puede
ser cualquiera de los siguientes [RSC02]:
· Un documento, como el documento de la arquitectura del
software.
· Un modelo, como el modelo de Casos de Uso o el modelo
de diseño.
· Un elemento del modelo, un elemento que pertenece a un
modelo como una clase, un Caso de Uso o un subsistema.
Flujos de
trabajo
Con la
enumeración de roles, actividades y artefactos no se define un proceso,
necesitamos contar con una secuencia de actividades realizadas por los
diferentes roles, así como la relación entre los mismos. Un flujo de trabajo es
una relación de actividades que nos producen unos resultados observables.
A continuación se dará una explicación de cada flujo de trabajo.
Modelado del negocio
Con este flujo de
trabajo pretendemos llegar a un mejor entendimiento de la organización donde se
va a implantar el producto.
Los objetivos del
modelado de negocio son [RSC02]:
· Entender la estructura y la dinámica de la
organización para la cual el sistema va ser desarrollado (organización
objetivo).
· Entender el problema actual en la organización
objetivo e identificar potenciales mejoras.
· Asegurar que clientes, usuarios finales y
desarrolladores tengan un entendimiento común de la organización objetivo.
· Derivar los requisitos del sistema necesarios para
apoyar a la organización objetivo.
Para lograr estos
objetivos, el modelo de negocio describe como desarrollar una visión de la
nueva organización, basado en esta visión se definen procesos, roles y
responsabilidades de la organización por medio de un modelo de Casos de Uso del
negocio y un Modelo de Objetos del Negocio. Complementario a estos modelos, se
desarrollan otras especificaciones tales como un Glosario.
Requisitos
Este es uno de los
flujos de trabajo más importantes, porque en él se establece qué tiene que
hacer exactamente el sistema que construyamos. En esta línea los requisitos son
el contrato que se debe cumplir, de modo que los usuarios finales tienen que
comprender y aceptar los requisitos que especifiquemos.
Los objetivos
del flujo de datos Requisitos es [RSC02]:
· Establecer y mantener un acuerdo entre clientes y
otros stakeholders sobre lo que el sistema podría hacer.
· Proveer a los desarrolladores un mejor entendimiento
de los requisitos del sistema.
· Definir el ámbito del sistema.
· Proveer una base para la planeación de los contenidos
técnicos de las iteraciones.
· Proveer una base para estimar costos y tiempo de
desarrollo del sistema.
· Definir una interfaz de usuarios para el sistema,
enfocada a las necesidades y metas del usuario.
Los requisitos se
dividen en dos grupos. Los requisitos funcionales representan la funcionalidad
del sistema. Se modelan mediante diagramas de Casos de Uso. Los requisitos no
funcionales representan aquellos atributos que debe exhibir el sistema, pero
que no son una funcionalidad específica. Por ejemplo requisitos de facilidad de
uso, fiabilidad, eficiencia, portabilidad, etc.
Para capturar los
requisitos es preciso entrevistar a todos los interesados en el proyecto, no
sólo a los usuarios finales, y anotar todas sus peticiones. A partir de ellas
hay que descubrir lo que necesitan y expresarlo en forma de requisitos.
En este flujo de
trabajo, y como parte de los requisitos de facilidad de uso, se diseña la
interfaz gráfica de usuario. Para ello habitualmente se construyen prototipos
de la interfaz gráfica de usuario que se contrastan con el usuario final.
Análisis y Diseño
El objetivo de
este flujo de trabajo es traducir los requisitos a una especificación que
describe cómo implementar el sistema.
Los objetivos
del análisis y diseño son [RSC02]:
· Transformar los requisitos al diseño del futuro
sistema.
· Desarrollar una arquitectura para el sistema.
· Adaptar el diseño para que sea consistente con el
entorno de implementación, diseñando para el rendimiento.
El análisis
consiste en obtener una visión del sistema que se preocupa de ver qué hace, de
modo que sólo se interesa por los requisitos funcionales. Por otro lado el
diseño es un refinamiento del análisis que tiene en cuenta los requisitos no
funcionales, en definitiva cómo cumple el sistema sus objetivos.
Al principio de la
fase de elaboración hay que definir una arquitectura candidata: crear un
esquema inicial de la arquitectura del sistema, identificar clases de análisis
y actualizar las realizaciones de los Casos de Uso con las interacciones de las
clases de análisis. Durante la fase de elaboración se va refinando esta
arquitectura hasta llegar a su forma definitiva. En cada iteración hay que
analizar el comportamiento para diseñar componentes. Además si el sistema usará
una base de datos, habrá que diseñarla también, obteniendo un modelo de datos.
El resultado final
más importante de este flujo de trabajo será el modelo de diseño. Consiste en
colaboraciones de clases, que pueden ser agregadas en paquetes y subsistemas.
Otro producto
importante de este flujo es la documentación de la arquitectura de software,
que captura varias vistas arquitectónicas del sistema.
Implementación
En este flujo de
trabajo se implementan las clases y objetos en ficheros fuente, binarios,
ejecutables y demás. Además se deben hacer las pruebas de unidad: cada
implementador es responsable de probar las unidades que produzca. El resultado
final de este flujo de trabajo es un sistema ejecutable.
En cada iteración
habrá que hacer lo siguiente:
· Planificar qué subsistemas deben ser implementados y
en que orden deben ser integrados, formando el Plan de Integración.
· Cada implementador decide en que orden implementa los
elementos del subsistema.
· Si encuentra errores de diseño, los notifica.
· Se prueban los subsistemas individualmente.
· Se integra el sistema siguiendo el plan.
La estructura de
todos los elementos implementados forma el modelo de implementación. La
integración debe ser incremental, es decir, en cada momento sólo se añade un
elemento. De este modo es más fácil localizar fallos y los componentes se
prueban más a fondo. En fases tempranas del proceso se pueden implementar
prototipos para reducir el riesgo. Su utilidad puede ir desde ver si el sistema
es viable desde el principio, probar tecnologías o diseñar la interfaz de
usuario. Los prototipos pueden ser exploratorios (desechables) o evolutivos.
Estos últimos llegan a transformarse en el sistema final.
Pruebas
Este flujo de
trabajo es el encargado de evaluar la calidad del producto que estamos
desarrollando, pero no para aceptar o rechazar el producto al final del proceso
de desarrollo, sino que debe ir integrado en todo el ciclo de vida.
Esta disciplina
brinda soporte a las otras disciplinas. Sus objetivos son [RSC02]:
· Encontrar y documentar defectos en la calidad del
software.
· Generalmente asesora sobre la calidad del software
percibida.
· Provee la validación de los supuestos realizados en el
diseño y especificación de requisitos por medio de demostraciones concretas.
· Verificar las funciones del producto de software según
lo diseñado.
· Verificar que los requisitos tengan su apropiada
implementación.
Las actividades de
este flujo comienzan pronto en el proyecto con el plan de prueba (el cual
contiene información sobre los objetivos generales y específicos de las prueba
en el proyecto, así como las estrategias y recursos con que se dotará a esta
tarea), o incluso antes con alguna evaluación durante la fase de inicio, y
continuará durante todo el proyecto.
El desarrollo del
flujo de trabajo consistirá en planificar que es lo que hay que probar, diseñar
cómo se va a hacer, implementar lo necesario para llevarlos a cabo, ejecutarlos
en los niveles necesarios y obtener los resultados, de forma que la información
obtenida nos sirva para ir refinando el producto a desarrollar.
Despliegue
El objetivo de
este flujo de trabajo es producir con éxito distribuciones del producto y
distribuirlo a los usuarios. Las actividades implicadas incluyen:
· Probar el producto en su entorno de ejecución final.
· Empaquetar el software para su distribución.
· Distribuir el software.
· Instalar el software.
· Proveer asistencia y ayuda a los usuarios.
· Formar a los usuarios y al cuerpo de ventas.
· Migrar el software existente o convertir bases de
datos.
Este flujo de
trabajo se desarrolla con mayor intensidad en la fase de transición, ya que el
propósito del flujo es asegurar una aceptación y adaptación sin complicaciones
del software por parte de los usuarios. Su ejecución inicia en fases
anteriores, para preparar el camino, sobre todo con actividades de
planificación, en la elaboración del manual de usuario y tutoriales.
Gestión del proyecto
La Gestión del
proyecto es el arte de lograr un balance al gestionar objetivos, riesgos y
restricciones para desarrollar un producto que sea acorde a los requisitos de
los clientes y los usuarios.
Los objetivos de
este flujo de trabajo son:
· Proveer un marco de trabajo para la gestión de
proyectos de software intensivos.
· Proveer guías prácticas realizar planeación, contratar
personal, ejecutar y monitorear el proyecto.
· Proveer un marco de trabajo para gestionar riesgos.
La planeación de
un proyecto posee dos niveles de abstracción: un plan para las fases y un plan
para cada iteración.
Configuración y control de cambios
La finalidad de
este flujo de trabajo es mantener la integridad de todos los artefactos que se
crean en el proceso, así como de mantener información del proceso evolutivo que
han seguido.
Entorno
La finalidad de
este flujo de trabajo es dar soporte al proyecto con las adecuadas
herramientas, procesos y métodos. Brinda una especificación de las herramientas
que se van a necesitar en cada momento, así como definir la instancia concreta
del proceso que se va a seguir.
En concreto las
responsabilidades de este flujo de trabajo incluyen:
· Selección y adquisición de herramientas
· Establecer y configurar las herramientas para que se
ajusten a la organización.
· Configuración del proceso.
· Mejora del proceso.
· Servicios técnicos.
El principal
artefacto que se usa en este flujo de trabajo es el caso de desarrollo que especifica para el proyecto actual en concreto, como se aplicará el
proceso, que productos se van a utilizar y como van a ser utilizados. Además se
tendrán que definir las guías para los distintos aspectos del proceso,
como pueden ser el modelado del negocio y los Casos de Uso, para la interfaz de
usuario, el diseño, la programación, el manual de usuario.
No hay comentarios:
Publicar un comentario