metodologías centradas en documentos (MeCeDo) 4.1 Introducción
4.2 Carencias del estándar
4.2.2 Carencias a nivel del endeavour
4.2.2.1 Relación imprecisa entre productores y productos
En el estándar, la relación entre productor y producto está establecida como se muestra en la Figura 4-4. Esto presenta una serie de inconvenientes para nuestro planteamiento. El problema radica en las cardinalidades de las relaciones anteriormente descritas. Encontramos que un productor puede realizar varias tareas y que cada tarea puede ser realizada por varios productores. Esta multiplicidad aparece debido a las cardinalidades de las relaciones entre productor y WorkPerformance, y tarea y WorkPerformance. Un productor puede participar en varios WorkPerformance
y cada uno de éstos estar asociados a una tarea. Esto nos da la cardinalidad final indicada anteriormente: un productor puede realizar varias tareas.
En el sentido contrario, tenemos que una tarea puede ser el resultado de varios WorkPerfomance y cada uno de ellos estar asociado a un sólo productor. Como en el caso anterior encontramos que la cardinalidad final entre tarea y productor es la que indica que cada tarea puede ser realizada por varios productores. Esta cardinalidad muchos a muchos entre productor y tarea no representa un problema por sí mismo, sino combinado con la cardinalidad entre tarea y WorkProduct.
Estudiamos ahora la cardinalidad entre tarea y WorkProduct. Encontramos que una tarea puede dar como resultado varios productos (WorkProduct) y cada producto ser el resultado de varias tareas. Esta multiplicidad aparece debido a las cardinalidades de las relaciones entre tarea y acción (Action), y producto y acción. Una tarea puede dar lugar a varias acciones y cada una de éstas estará asociada a un único producto. Esto
4-16 Capítulo 4
nos da la cardinalidad final indicada anteriormente: una tarea puede dar como resultado varios productos. En el otro sentido, encontramos que un producto es el resultado de varias acciones y cada una de ellas se debe a la ejecución de una única tarea. Como resultado tenemos que un producto es el resultado de varias tareas. Combinando las cardinalidades de muchos a muchos entre productores y tareas, y entre tareas y productos, encontramos que no se puede establecer de forma directa una relación entre productores y productos. Esto es esencial para nuestro propósito. En la metodología centrada en documentos necesitamos establecer de forma unívoca qué productor realiza cada producto o productos ejecutando qué tareas en particular. A continuación vamos a ilustrar el problema con un ejemplo: Juan y María (productores) están asociados (a través de un WorPerfomance) a una inspección de código (tarea). La realización de esa tarea da lugar a dos acciones (acción): la generación de un informe de errores y la petición de los correspondientes cambios. La
tarea de generación del informe de errores tiene como resultado el informe en sí y la tarea de petición de cambios tiene como resultado un documento de petición de cambios, ambos son los productos (WorkProducts) resultantes. Como se puede apreciar, no es posible establecer cuál de los dos productores (Juan o María) ha realizado cada uno de los productos. Sólo podemos asegurar que ambos han participado en la elaboración de dichos documentos, lo cual no tiene por qué ser cierto. La Figura 4-5 muestra la forma más directa en la que se puede relacionar productores con documentos, teniendo en cuenta que la relación con la clase Document es heredada de la superclase WorkProduct.
Capítulo 4. 4-17
Clases implicadas:
1. Producer (Productor). Un productor es una agente que tiene la responsabilidad
de ejecutar unidades de trabajo. Los productores son, normalmente, personas o grupos de personas, pero también pueden ser herramientas.
Producer es una subclase abstracta de EndeavourElement, que se especializa en Person, Tool, Team y Role.
Ejemplo:
A lo largo de cierto proyecto de desarrollo software, Juan produce código fuente y alguna especificación XML. Una herramienta de generación de código lee estas especificaciones y genera código adicional a partir de las mismas. Tanto Juan como la herramienta son Productores.
Atributos
Nombre Tipo Significado
Name String El nombre del productor. Es un atributo abstracto que puede ser implementado de diferentes formas por parte de distintas subclases de Producer.
Relaciones
Nombre Rol Clase relacionada Significado
IsClassifiedBy N/A ProducerKind Un productor en el dominio del endeavour siempre estará definido como un tipo de productor en el dominio de la metodología.
Nombre Rol Clase relacionada Significado
Plays N/A Role Un productor puede jugar diferentes roles. IsInvolvedInPerformance Agente WorkPerformance Un productor
puede estar implicado en la realización de diferentes
4-18 Capítulo 4 Relaciones
Nombre Rol Clase relacionada Significado
N/A Miembro Team Un productor puede ser miembro de un equipo.
IsAssistedBy N/A Tool Un productor puede estar asistido por un conjunto de herramientas.
2. WorkPerformance (Realización del Trabajo). Una WorkPerformance es una
asociación de asignación y responsabilidad entre un productor y una unidad de trabajo en particular. WorkPerformance es una subclase abstracta de la clase EndeavourElement. Se trata de una clase relacionada con el productor y el proceso.
Ejemplo:
A lo largo de cierto proyecto, el equipo de documentación del sistema es asignado a la tarea de creación del manual de usuario para el sistema que se está desarrollando. Tal asignación es un WorkPerformance.
Atributos
Nombre Tipo Significado
Justification String La justificación por la cual el productor es asignado a la unidad de trabajo.
Relaciones
Nombre Rol Clase relacionada Significado
InvolvesWorkUnit N/A ProducerKind Un WorkPerformance involucra una unidad de trabajo.
Plays N/A WorkUnit Un WorkPerformance involucra a un productor.
InvolvesProducer N/A WorkUnit Un productor puede estar implicado en la realización de diferentes trabajos.
Capítulo 4. 4-19 3. Task (Tarea). Una Tarea es una unidad de trabajo de grano fino que se centra en qué debe hacerse para conseguir un propósito dado. Task es una subclase abstracta de la clase WorkUnit.
Es una clase relacionada con el proceso.
Atributos: No tiene atributos propios.
Ejemplo:
A lo largo de cierto proyecto, María identifica las clases candidatas del sistema, para luego establecer las relaciones entre las mismas. Actualiza la lista de clases y define algunos de los atributos y operaciones de las clases. Cada una de estas partes individuales de trabajo son Tareas.
Relaciones
Nombre Rol Clase relacionada Significado
IsClassifiedBy N/A TaskKind Una tarea en el dominio del endeavour siempre corresponde con un tipo de tarea en el dominio de la metodología.
N/A Componente WorkUnit Una Tarea ocurre siempre dentro de una determinada unidad de trabajo.
N/A Causa Action Una Tarea puede causar una acción.
4. Action (Acción). Una Action es un evento de utilización realizado por una tarea
sobre un producto. Las acciones representan el hecho de que una tarea específica utiliza un producto en particular.
Action es una subclase abstracta de la clase EndeavourElement.
Se trata de una clase relacionada con el productor y el proceso.
Atributos: No tiene atributos propios.
4-20 Capítulo 4
En un proyecto de desarrollo software, el desarrollador Juan realiza una tarea (Task) de programación que implica la realización de modificaciones en el fichero de código fuente "Factura.cs" (WorkProduct). El evento de dicha tarea modificando dicho producto es una Acción.
Relaciones
Nombre Rol Clase relacionada Significado
IsClassifiedBy N/A ActionKind Una Action en el dominio del endeavour siempre es de un tipo de acción definida en el dominio de la metodología.
ActsUpon Agente WorkProduct Un Action actúa siempre sobre un Producto en particular. N/A Efecto Task Una acción es siempre
efecto de una tarea en particular.
5. Document (Documento). Un Documento es una descripción duradera de un
fragmento de la realidad. Los documentos representan con frecuencia modelos, pero pueden representar otras cosas.
Document es una subclase abstracta de WorkProduct. Se trata de una clase relacionada con el producto.
Atributos
Nombre Tipo Significado
Title String El título del documento.
Version String El identificador de versión del documento. Ya que los documentos son duraderos por definición, se muy recomendable el control de versiones.
Relaciones
Nombre Rol Clase relacionada Significado
IsClassifiedBy N/A DocumentKind Un Documento en el dominio del endeavour
corresponde siempre a algún tipo de
Capítulo 4. 4-21 documento en el dominio de la metodología. N/A Documento Padre Document Un Documento puede ser padre de subdocumentos. N/A Subdocumento Document Un Documento
puede ser subdocumento de varios documentos padre.
Depicts N/A WorkProduct Un Documento puede describir una serie de productos.
Ejemplo:
Para organizar una inspección de código, María imprime el código a inspeccionar más una copia de la lista de inspección. Durante la inspección, María toma nota de los defectos encontrados en el código y reúne los resultados en un informe de inspección. El código a inspeccionar, la lista de inspección y el informe de inspección son documentos.