Customizing a Method Content Element
Any method content element can be customized. The different ways you can customize
an element include:
-
adding guidance to existing method content elements
-
adding new roles, tasks and work products
-
adding text and/or relationships to an existing method content element
-
replacing an existing method content element
-
renaming an existing method content element
-
changing method content relationships (e.g., changing the role that is responsible for a work
product, changing the primary performing role for a task, changing the input and/or output work products of a
task)
-
deleting existing method content elements
It is assumed that the method content element being customized cannot be modified directly. Thus, all changes must be
stored in a separate plug-in from the method content elements being customized. The customizations are then defined
using method content variability. To see the resulting changes, you need to browse or publish a configuration that
includes the element being customized and the customizations. For more information, see the topic Using Method Content
Variability in Guideline: Defining Method Elements. If you can modify the elements directly,
you can follow the topic described in Guideline: Defining Method Elements.
If you customize a method content element that participates in a process, then you will need to customize that
process to use the customized method content. For more information, see the topic Customizing a Process in Guideline: Defining and Customizing Processes.
If you add a new element that is categorized, then you may need to add the new elements to the appropriate
standard categories. For more information, see the topic Categorizing Method Elements using Standard Categories
in Guideline: Defining Method Elements.
The following sections provide specific information on how to customize method content elements.
Add guidance to an existing method content element
Perform the following steps to add guidance to existing method content elements:
-
If one does not already exist, define the plug-in to contain the customization
-
In the new plug-in, define the guidance element.
-
Determine what method elements the guidance should be associated with/referenced from and where those elements
exist.
-
In the new plug-in, define an element that contributes to the original and add the association to the guidance in
the contributor.
Add a new role
Perform the following steps to add new method role:
-
If one does not already exist, create a plug-in to contain the new role.
-
In the new plug-in, create the new role and specify what work products the role should own.
-
If you want to add the role as a performer of an existing task, in the new plug-in, create a task that
contributes to the task you want to change. In the contributor, add an association to the new role.
Add a new task
Perform the following steps to add new method task:
-
If one does not already exist, create a plug-in to contain the new task.
-
In the new plug-in, create the new task, being sure to specify what role performs the task and what work
products are input and output.
Add a new work product
Perform the following steps to add new method work product:
-
If one does not already exist, create a plug-in to contain the new work product.
-
In the new plug-in, create the new work product.
-
If you want to add the work product as an input or an output of an existing task, in the new
plug-in, create a task that contributes to the task you want to change. In the contributor, add an association to
the work product.
Add new text and/or relationships to an existing method content element
Anything (text and/or associations can be added to any method content element using contribution, a type of method
content variability.
Perform the following steps to add text and/or associations to an existing method content element:
-
If one does not already exist, create a plug-in to contain the method content element additions.
-
In the new plug-in, create an element of the same type as the element you want to add to an make that element
contribute to the element you want to add to. For example, if I wanted to add an input work product to a task, I
would create a task contributor.
-
In the contributor, add whatever it is you want to add to the original element. For example, if I wanted to add an
input work product to a task, create an input work product to the task contributor.
Replace an existing method content element
Any method content element can be replaced using replaces, a type of method content variability.
Perform the following steps to replace an existing method content element (e.g., a role, task, work product or guidance):
-
If one does not already exist, create a plug-in to contain the method content element that will be replacing the
original.
-
In the new plug-in, create the element you want to replace the existing element with (they must be of the same
type). For example, if I wanted to replace a task with a new task, I would create a new task.
-
Specify that the new task is to replace the original task (replaces variability).
-
Add the replacers outgoing relationships and textual descriptions. For example, if you wanted to replace task,
specify the task's primary performing role and input and output work products.
Rename an existing method content element
Any method content element can be renamed using extends-replaces, a type of method content variability.
Perform the following steps to rename an existing method content element (e.g., a role, task, work product or guidance):
-
If one does not already exist, create a plug-in to contain the method content element with the new name.
-
In the new plug-in, create a method content element of the same type as the one you want to rename and give it the
name you want to use as the new name. For example, if I wanted to rename a task to MyTask, I would create a new
task and name it MyTask.
-
Specify that the new task is to extends-replace the original task (extends-replaces variability).
Change the role that is responsible for a work product
A role may be responsible for one or more work products. A work product may have
only one responsible role. The role "owns" the role-responsible for-work product association.
Perform the following steps to change the responsible role for an existing work product:
-
If one does not already exist, create a plug-in to contain the customizations.
-
In the new plug-in, add a new role and make it a contributor to the role that you want to assign the work product
to.
-
In the role contributor, add an association to the work product.
-
If there are now two roles that are responsible for the work product, the original responsibility must be removed.
-
Define a role that extends and replaces the original responsible role. In the extends-replaces element, add all of
the role-responsible for-work product associations that existed in the original role, except for the one your just
replaced.
Change the primary performing role for a task
A task may only have one primary performing role. The task "owns" the task-primarily perform by-role association.
Perform the following steps to change the primary performing role for an existing task:
-
If one does not already exist, create a plug-in to contain the customizations.
-
In the new plug-in, define a task that extends and replaces the original task.
-
In the new task, specify the role as the primary performer. There is no need to make any more changes since every
task can only have one primary performing role.
Change the input and/or output work products of a task
A task may only have any number of input and output work products. The task "owns" the task-work product associations.
Perform the following steps to change the input and/or output work products of an existing task:
-
If one does not already exist, create a plug-in to contain the customizations.
-
In the new plug-in, define a task that extends and replaces the original task.
-
In the new task, specify the desired input and output work products for the task, including those from the original
that you want to carry forward, plus the associations to your new work products.
Delete existing method content elements
Perform the following steps to remove an existing method element:
-
If one does not already exist, define a new plug-in to contain the customizations.
-
In the new plug-in, create a custom category; name it something like "do not publish". Assign the elements you want
removed to that category.
-
Define a new method configuration that includes everything you want to publish. Specify
not to publish the new custom category. For more information, see topic Defining Method Configurations
in Guideline: Creating Plug-ins, Practices and Configurations. When you publish
that configuration, those elements will not appear.
Customizing a Method Content Element in the UMF
When customizing method content elements that are already existing within the Unified Method Framework (UMF), the
following needs to be considered:
-
In general, the practice framework plug-in types need to be considered. These types affect what elements can
be placed in what plug-in. For example, customizations of method elements are defined in Extend
plug-ins. For more information on these plug-in types, see [Concept: Practice Library Plug-In Types].
-
When customizing roles and role assignments, keep in mind that the UMF implements a delayed assignment approach for
roles. However, practices may include default role assignments (e.g., specifying what roles perform the practice tasks and what roles are responsible for the practice work products) in separate Assign plug-ins. To change these assignments,
make a copy of the Assign plug-in for the practice, and change the desired roles and/or role assignments, as
needed. Then use the new assignment plug-in place of the original assignment plug-in when the alternative roles are
needed.
-
When customizing standard category assignments, keep in mind that the UMF implements a delayed assignment approach
for some standard categories. However, practices may include default standard category assignments (e.g.,
mapping the practice tasks to disciplines, mapping the practice work products to domains, etc) in separate Assign plug-ins. To change these assignments,
make a copy of the Assign plug-ins, and change the desired standard categories and/or category assignments, as
needed. Then use the new assignment plug-in place of the original assignment plug-in when the alternative standard
category assignments are needed.
Delayed Assignment in the UMF
In the Unified Method Framework (UMF), the following are "delayed assigned":
-
Role assignments: Assignment of performing roles to tasks and assignment of role responsibility for work products
-
Work product kind assignments: Assignment of work products to work product kinds
-
Discipline assignments: Assignment of tasks to disciplines
-
Domain assignments: Assignment of work products to domains
The delayed assignment of roles, domains, work product kinds and disciplines is implemented is through the use of
Assign plug-ins. An Assign plug-in is defined for every Base plug-in that contains work products or tasks.
Assign plug-ins contain:
-
Role assignments:
-
A role for every role to be assigned responsibility for a work product. Each role is defined as a
contributor to an existing role and adds the necessary "role responsible for work product"
associations.
-
A task for every task to be assigned a performing or a supporting role. Each task is defined as a
contributor to an existing task and adds the necessary "task is is performed by role" associations.
-
Standard category assignments:
-
-
A discipline for every discipline that is to have tasks mapped to it. Each discipline is defined
as a contributor to an existing discipline and adds the necessary "discipline includes task"
associations.
-
A domain for every domain that is to have work products mapped to it. Each domain is defined as a
contributor to an existing domain and adds the necessary "domain includes work product" associations.
-
Practice-specific role, role set and standard category definitions. Practice-specific definitions for delayed
elements are defined in the Assign plug-in to make them easy to change.
|