Task: Refactor the Candidate Service Model
Refactor the candidate service model to remove redundancy and to improve comprehension, consistency, and flexibility.
Disciplines: Service
Purpose

Create a candidate service model that is free of redundancies, easier to understand, and easier to maintain.

Relationships
RolesPrimary Performer: Additional Performers:
InputsMandatory:
    Optional:
    • None
    Outputs
      Process Usage
      Main Description

      Applying multiple candidate service identification techniques most likely will result in identifying some candidate services that overlap each other, functionally and structurally.  This task is performed so that redundant concepts are eliminated and the remaining candidates are structured and related so as to maximize comprehension and future maintenance. 

      The main tool that is used to perform the refactoring is commonality and variability analysis.  This is introduced in Concept: Variability Analysis.  Guideline: Variability Analysis provides additional discussion on this technique.  Example: Variability Analysis presents an example and also illustrates some common taxonomic hierarchies that are used to describe variability.

      Steps
      Identify redundancies and opportunities for refactoring

      Examine the names, documented purposes, notional functions, and relationships of the elements of the Service Model to identify likely duplicates. 

      Use variability and commonality analysis techniques to identify commonalities and refactor those out of the current abstractions.

      Refactor based on service granularity considerations

      In addition to refactoring based upon considerations of commonality and variability, the candidate services (Capabilities) also need to be refactored based upon granularity considerations.  For example:

      • Ensure that Capabilities are of the correct granularity with respect to the goals that they are addressing.  If it appears that the operations interface for a Capability is much larger than what is needed to address an assigned goal, perhaps the Capability needs to be split.
      • Consider over-arching non-functional requirements, documented in System-Wide Requirements, such as overall system performance and responsiveness.  Having too many very-fine-grained services, with fine-grained operations, can lead to unacceptable performance. 
      Restructure the Service Model

      Restructure the contents of the Service Model in consideration of the refactorings performed in the previous steps.  Perhaps use one of the forms described in Example: Variability Analysis.  

      More Information