A work product slot is an abstract work product that represents a placeholder for concrete work products. Concrete work products can fulfill one or more work product slots. Fulfillment is modeled in Rational Method Composer as a relationship from the concrete work product to the work product slot. Fulfillment is realized by Rational Method Composer when computing a method configuration for browsing or publishing. Then all slots are filled with the concrete work products that are available in that method configuration.
The method contents and processes that are developed and managed in method plug-ins often need to be designed independently from each other. For example, assume that method plug-ins are used to represent development practices in your method library, then one important usage scenario of such practices is assembling a method configuration and process by only selecting the individual practices that are right for you and your team. You do not want to be forced to select practices that you are not interested in, because the practices that you want to implement and perform in your team are structurally dependent on these other practices. With the notion of practice, we want to imply that you always have the choice to do them or not.
A more concrete example for such a dependency is that the tasks of the method plug-in "A" require input work products from the second method plug-in "B". When modeling this relationship, you create a dependency between the two method plug-ins, which means that plug-in "A" cannot be used without method plug-in "B". However, method plug-in "B" is still usable without method plug-in "A". If now method plug-in "B" uses the work products of method plug-in "A" for one of its tasks, you will be creating a cyclic dependency amongst these, which will link the method plug-in inseparable with each other. However, Rational Method Composer actually does not allow you to create such a cyclic dependency and prompts you with an error.
Therefore, to make method plug-ins more independently reusable, it is important to minimize dependencies amongst them. To achieve this for the tasks mentioned above, you could model and write tasks independent of the specific input products if such inputs are typically delivered depending of the practices applied. For example, it is quite possible to write a task for creating an object-oriented analysis model for a set of requirements independent of the concrete format the requirements have been captured in and the practice that was used to elicit them. The requirements could be use cases, scenarios, user stories, stakeholder requests, an IEEE-830 compliant specification or any other form. Hence, you could model an input relationship to an abstract work product such as Specification and describe for the analysis task how one would look for specific properties in the input specification such as the description of a user interaction or the description of a static structure to denote which parts of the specification are relevant to consider for which parts of the analysis.
On the other hand, when a specific practice is selected for capturing and representing a specification such as Use-Case Based Development, and is combined with the object-oriented analysis practice, you actually want to see the concrete work products available through the selection of that use case practice substituting the abstract specification placeholder when reviewing the analysis task. In addition, you will expect that use-case specific guidance to be available for the use case based analysis as well, refining the generic instruction of the task.
Rational Method Composer provides a mechanism to model exactly what has been described above with a concept referred to a Work Product Slot Fulfillment.
To make a work product slot, you can create a normal work product and select the Is Work Product Slot check box in the Slots Information section of the work product editor. You can link a concrete work product to one or more slots by adding slots in the Slots Information section of the work product editor. See Creating a work product for details.
When you browse or publish a work product slot page, you can review all fulfilling work products of that slot in the published method configuration. When browsing or publishing a concrete work product, you can review the slots that work product fills. In pages in which work product slots are referenced, such as the input work product list of a task, you will find an indented list under the slot of all of its fulfilling work products.