The Requirement class
Overview
class Requirement extends RequirementElement;
A Requirement describes a requirement. A requirement belongs to a RequirementContainer.
The requirement textual content is stored in the Text attribute inherited from the RequirementElement class.
A typed Requirement own property values stored in a PropertyValueSet. A Requirement is typed if its RequirementContainer is typed, and has its container type.
As you can see from the diagram below, goals and business rules are simply Requirements stereotyped respectively «goal» or «business_rule».

Detailed class diagram for Requirement
Requirement properties
The class has the following associations:
· Properties:PropertyValueSet: Store all the requirement Property values in PropertyValues
Requirement consistency rules
· A Requirement belongs to a RequirementContainer, and the Name must follow unicity rules.
· The Requirement must have a PropertyValueSet if the owner RequirementContainer is typed (has a Type).
· The Requirement must NOT have a PropertyValueSet if the owner RequirementContainer is not typed.
· The PropertyValueSet type must be the same as the RequirementContainer type.
Requirement methods
PropertyValue getPropertyValue(in string key)
Returns the PropertyValue which values the key named Property (see PropertyValue metaclass).
boolean setPropertyValue(in string key, in string value)
This changes a property value. The corresponding PropertyValue must already exist in the owned PropertyValueSet. In this case the method returns true, otherwise it returns false.
updatePropertyValues()
This updates, creates or destroys the PropertyValueSet in order to be consistent with the owner RequirementContainer type. All missing PropertyValue are created and valued to the container’s default values.
This method should be called after having added or moved the Requirement to a RequirementContainer.