Derive requirement
Derived requirements are created using the derive relationship via the derivation connection. The derive relationship links more detailed requirements to their original, higher-level requirements. A derivation connection asserts that one or more derived requirements are derived from a single original requirement. The single end for the original requirement should subset the original requirement, while the rest of the ends should subset derived requirements. Once the original requirement is satisfied, the derived ones must also be satisfied.

The image displays an unnamed binary derivation where the requirement heating & cooling is the original and heating is the derived one. The original and derived ends are connected with the connection path.

The image displays an unnamed n-ary derivation where the requirement heating & cooling is the original and heating is the derived one. The original and derived ends are connected with the connection path.
Derivation is deleted if original or derived requirement count in the derivation is reduced zero.
Deriving requirements
Deriving requirements via the Textual Editor
To derive requirements via the Textual Editor
- In the Textual Editor, place the cursor where you want to create the derivation and import the RequirementDerivation library.
- Declare the #derivation conncetion keyword, specify the derivation name (optional), specialization (optional).
- In the derivation body:
- Specify the end #original keyword reference subsetting the original requirement.
- Specify the end #derive keyword reference subsetting the derived requirement. Repeat for multiple derived requirements.
- Click the Synchronize button.
// --------- requirements and requirement derivations in separate packages
package Requirements { // requirements package
requirement 'heating & cooling';
requirement heating;
requirement cooling;
}
package Derivations { // derivations package
private import RequirementDerivation::*; // RequirementDerivation library import
private import Requirements::*; // requirements package import
#derivation connection : 'Derived System Requirements' { // unnamed specialized (feature typing) binary derivation connection
end #original ::> 'heating & cooling'; // original requirement end
end #derive ::> 'heating'; // derived requirement end
}
}
// --------- requirements and requirement derivations in the same package
package Requirements { // requirements package
private import RequirementDerivation::*; // RequirementDerivation library import
requirement 'heating & cooling';
requirement heating;
requirement cooling;
#derivation connection 'heating & cooling derivations' { // named n-ary derivation connection
end #original ::> 'heating & cooling'; // original requirement end
end #derive ::> 'heating'; // derived requirement end
end #derive ::> 'cooling'; // derived requirement end
}
}
Deriving requirements via the view palette
To derive requirements via the view palette
- In the view palette, under the Connectors group, click one of the following:
- The derivation button to create a derivation connection.
- In the view pane, click on the requirement you want to specify as the original one, then the one you want to specify as derived.
- The n-ary derivation button to create an n-ary derivation connection.
- Click in the view pane where you want the n-ary derivation dot symbol to be created.
- Select the n-ary dot symbol and in its smart manipulator, click the original end command.
- Draw the end from the n-ary connection symbol to the requirement symbol you want to specify as the original one.
- Select the n-ary dot symbol and in its smart manipulator, click the derived end command.
- Draw the end from the n-ary connection symbol to the requirement symbol you want to specify as the derived one. Repeat for all elements you want to connect.
- The derivation button to create a derivation connection.
If the needed button is not displayed, click the down-facing arrow next to the derivation, n-ary derivation, or the derivation def button and select the needed button in the dropdown menu.
Creating additional n-ary derivations via the view
To create additional n-ary derivations via the view
- Select the n-ary dot symbol and in its smart manipulator, do one of the following:
- Click the original end command. Click on the requirement symbol you want to specify as the original requirement.
- Click the derived end command. Click on the requirement symbol you want to specify as the derived requirement. Repeat for all the needed elements.
Converting binary and n-ary derivations
Converting binary derivation to n-ary via the view
To convert binary derivation to n-ary via the view
- In the view pane, right-click the binary derivation you want to convert to an n-ary.
- In the shortcut menu, click Refactor, then Convert to N-ary Dot. The binary derivation is converted and the n-ary dot symbol is displayed.
Converting n-ary derivation to binary via the view
To convert n-ary derivation to binary via the view
- In the view pane, right-click the n-ary dot symbol of the derivation you want to convert to a binary.
- In the shortcut menu, click Refactor, then Convert to Path. The n-ary derivation dot symbol is converted and the binary path is displayed.
The Convert to Path command is only available if the derivation has one client and supplier.
Creating derivation connection definition elements
Creating derivation definitions via the Textual Editor
To create derivation definitions via the Textual Editor
- In the Textual Editor, place the cursor where you want to create the element and declare the #derivation connection def keyword.
- Name the element, then specify the derivation definition features in the element body:
- Specify the end #original keyword, followed by the end name (optional) and specialization of the original requirement.
- Specify the end #derive keyword, followed by the end name (optional) and specialization of the derived requirement.
Click the Synchronize button.
#derivation connection def 'Derived system requirements' {
end #original originalReq : vehicleRequirements;
end #derive derivedReq : engineRequirements;
}
Auto-creating derivation definition elements via the Extract Definition command
To auto-create derivation definition elements via the Extract Definition command
- See the Extract Definition and Usage page.
Creating derivation definitions via the view palette
To create derivation definitions via the view palette
- In the view palette, under the Connectors group, click the derivation def button to create a derivation definition element.
If the needed button is not displayed, click the down-facing arrow next to the derivation or n-ary derivation button and select the needed button in the dropdown menu.
- Click in the view pane where you want to create the derivation definition symbol. Specify the derivation definition ends (via the Textual Editor or the Specification panel).