Task: Define Domain Scope
Task sourced from Synthesis
Purpose

This task establishes the domain scope of the Software Product Line (SPL).  It provides a basis for determining, informally, whether a system is properly within that scope.

Relationships
Main Description

 This task aims to define the SPL domain scope by specifying the following items:

·         Domain Synopsis: An informal statement that characterize the systems that make up the domain.


 

·         Domain Glossary: Definitions of significant terminology used by experts in discussing needs and solutions in the domain.

·         Domain Assumptions: A description of what is common, variable, and excluded among systems in the domain. It describe what is common to all systems in the domain and in what significant ways those systems vary and can be distinguished. These assumptions determine, informally, whether a system is within the scope of the domain. There are three types of assumptions:

   1)Commonality Assumptions: A set of assumptions about the characteristics that are common to all systems in the domain (commonalities)

2)  Variability Assumptions .A set of assumptions about the characteristics that distinguish systems in the domain (variabilities).

3)  Exclusionary Assumptions: A set of assumptions about the characteristics of systems that are outside the scope of the domain (exclusions).

Every assumption is composed of a description and justification.  See the output work product description for additional information about the result expected in this task.

 

 

Steps
Outlining Domain Synopsis
Create an  one-sentence description of the family of systems that constitutes the domain of the SPL.
Refining Domain Synopsis

Create a description of the SPL domain, characterizing key technical objectives of included systems.

You may consider the following heuristics when performing this step:

  •     Extend the one-sentence domain description to two pages, at most, of intuitive and not overly-restrictive text. Try to focus on the essential nature, scope, and variety of systems in the domain.
  •     Characterize the type of problem that systems in the domain solve, and the external environment (.i.e, users, systems, devices) with which systems interact.
  •   Describe the observable behavior that systems exhibit in solving the problem.
  •      You might also establish significant constraints concerning how the systems operate in terms of performance, reliability, or distribution concerns
  •   Describe the primary functions performed by every system in the domain and any important functions performed by only some systems. Maintain a black-box perspective when describing functional aspects of the system.
Establishing Standard Terminology

Create definitions of all significant terms used by domain experts in discussing the requirements or engineering of systems in the domain.

You may consider the following heuristics when performing this step:

  •       Make definitions as precise as possible.
  •      Create a structure that shows term specializations and relationships among similar concepts, as well as term composition. For instance, you can use a UML class diagram for represent this structure. This action will reveal missing terms that represent generalizations or specializations of known terms.
  •       Maintain term definitions in alphabetical order for ease of reference. Provide cross-references to related terms.
  •        Use definitions from standard glossaries where possible. Make note of such sources in each definition for future traceability.
  •      Make sure that all terminology used in the Domain Synopsis is defined in the Glossary.
Outlining Commonalities and Variabilities Assumptions

For each term in the Domain Glossary, determine whether the term indicates a commonality or a variability among systems in the domain. Create an assumption accordingly.

Compare the characteristics of existing systems to facilitate the identification of common features and variations.

Distinguish between system-generation and real-time variation when  developing  assumptions about variable  aspects of the domain. Treat a run-time variation that is characteristic of all  systems In the domain as a commonality.

Refining Commonalities Assumptions

Detail commonality assumptions for each characteristic specified in the Domain Synopsis that is shared by all systems in the domain.

Elaborate commonality assumptions to uncover specific variabilities assumptions associated with them. This will more precisely characterize a subset of the product family.


Refining Variability Assumptions

Detail and extend variability assumption for each characteristic specified in the Domain Synopsis that is not shared by all systems in the domain.

It is not sufficient to note only that some characteristic varies. You must establish how much flexibility the application engineer needs to characterize different systems adequately. Therefore, make variability assumptions precise by indicating the type of decision the application engineer must make to resolve the variability.

You may consider the following heuristics when performing this step:

  •   Consider characteristics anticipated for future systems to identify additional variability assumptions.
  •  Uncertainties that arise from analysis of customer requirements are often a good source of needed variability. These uncertainties are questions that customers, in the end, must resolve, but must be asked or be given additional information to be able to do so.
  •    Look at the maintenance history of existing systems for an indication of how systems in the domain change over their life cycles. The histories of these systems indicate likely variabilities that characterize the evolution of individual systems.
  •     Use information on technological advancements that could impact the development of future systems in the domain to identify potential variations.
  •     Elaborate variability assumptions to find more specific commonality and subsequent variability assumptions that further distinguish members of the subfamily.
Creating Exclusionary Assumption List

Describe  exclusionary assumptions to clarify a domain's boundary.

Do not enumerate every type of system or function that is outside the domain. Rather, exclude explicitly those functions or characteristics that a domain expert might incorrectly assume to be part of a system when reading the Domain Synopsis. Thus, you can answer the question of whether a particular system belongs within the domain more directly by checking the exclusions. Exclusions often result from a viability analysis of the domain.

Revising synopsis. glossary and assumptions
Revise all informations concerning the domain scope definition in order to ensure consistence.
Key Considerations
 This task does not answer detailed questions of scope, but clearly includes and excludes broad classes of systems. Assumptions of commonality and exclusion identify the common features of systems in the domain, thereby establishing a family.

Assumptions of variability identify how systems in the family are distinguished from one another. Justification provides a basis for judging technical and economic feasibility and market potential of the domain to evaluate whether there is sufficient confidence in the viability of developing the business area as a domain.

More Information
Supporting Materials