| 
    In this step the requirements are described and their variabilities are represented.
    There are mandatory and variant requirements. A mandatory requirement is common for all products in the SPL. A variant
    requirement is not common for all products in the SPL, it there is in some products. The variability also can be found
    in requirement part, i.e. a text fragment can be a variant.  For each requirement are defined the following
    attributes:
 
    
        Id. Unique identifier, which can be standardized according to
        requirement type. Thus, whether requirement is functional, its identifier can be FRX. Whether requirement is
        non-functional, its identifier can be NFRX. In both cases, X is a unique number for
        identification.Type. It can be Functional or Non-Functional.
    
        Name. The name that better represent the requirement.
    
        Variability Type. Mandatory or Variant.
    
        Binding time. It is defined when variability type is variant. It decides when variant is bound to
        the member of the SPL. The variants will be bound at certain phase of the product life cycle, such as scoping time
        (when select the requirements of the product), run time, compile time, installation time and load time. The scoping
        time is the default value, so whether it section is not defined, the default value is assumed.
    
        Priority. The priorities are relative to core asset implementation order. They can be High, Medium
        or Low.
    
        Rationale. It defines reasons for requirement existence.
    
        Description. Description about requirement that can have variant text fragment that represent
        variation point.
    
        Implication. It presents dependency relationship between requirement and another requirement
        object (requirement or requirement part). It occurs when a requirement requires another object.
    
        Exclusion. It means that a requirement cannot exist in presence of another object.  
     
    Wherever possible, quality attributes should be quantified in a way which can be objectively measured and assure the
    precision of the results. The following metrics are presented as examples on [Sommerville2005]:
 
    
        Usability: i) Time taken to learn 75% of user facilities and ii) Average number of errors made by users in a given
        time period.
    
        Performance: i) Number of transactions to be processed per second and ii) Response time to user input.
    
        Reliability: i) Mean time to failure and ii) Rate of occurrence of failure.
    
        Availability: i) Probability of failure on demand.
     
    The requirement variability type can be defined from feature model whether requirement
    is mapped to feature and this feature represents directly the requirement or it encompasses the requirement. When a
    feature encompasses requirements, their variabilities types are the same. In this case, whether feature variability
    type is Mandatory then requirement variability type is Mandatory. Whether feature variability type is Optional,
    Alternative or OR, then the requirement variability type is Variant. The requirement
    variability type can be defined from feature model whether requirement is mapped to feature and this feature represents
    directly the requirement or it encompasses the requirement. When a feature encompasses requirements, their
    variabilities types are the same. In this case, whether feature variability type is Mandatory then requirement
    variability type is Mandatory. Whether feature variability type is Optional, Alternative or OR, then the requirement
    variability type is Variant.
 
    When requirement is not mapped to feature then its variability type must be identified
    in elicitation. In this case, it must identify whether all products require or
    does not require the requirement. The SPL requirements priorities must be defined by decision-maker (e.g. customer,
    executive and SPL owner). However, it is necessary that SPL development team support this work for assure consistent
    priorities, analyzing dependencies among requirements and their reuse potential. Potential end-users and domain expert
    also can have influence in the priorities decisions. Therefore, stakeholders with different goals and needs can define
    conflicting priorities, so it is necessary negotiate conflict among priorities.
 
     These priorities affect directly the core assets implementation order and the products releases plan. Thus, they
    should be carefully analyzed according to following types:
 
    
        High. This requirement is absolutely needed. The SPL will not enable the derivation of a useful product
        without this requirement.
    
        Medium. This requirement is important to the stakeholder and will provide a key driver to convince
        stakeholders of usefulness of the derived products. Including this requirement into the final system will provide
        verifiable benefits to the stakeholder.
    
        Low. This requirement clearly provides additional value to the stakeholder, but it can be omitted without
        affecting the main uses of the derived products.
     
    The priorities can be influenced by several factors, such as:
 
    
        Business strategies. The decision-makers can define requirement priority according to its cost, time to market,
        value and competitively. These factors can characterize also the priorities among products. For example, the
        release of the first product can be based in the high amount of core assets, high business value, and time to
        market not so big.
    
        Variability type. For optimizing the SPL reuse potential, it is best that mandatory requirements are implemented
        before variant requirements. However, in some situations can have variant requirement with major priority than
        mandatory requirement. For example, whether a variant requirement presents a market differential for a product that
        need be launch quicker. Or, whether a mandatory requirement does not present differential for the products, its
        priority is low.
    
        Design constraints.  Relationship of dependency among requirements can affect their priorities.
     
    Variability found in requirement text fragment is represented by Variation Point (VP).
    A requirement can have 0 to
    n VPs. For each VP should be identified the following attributes:
 
    
        Id. All VPs have unique identifier to assure traceability between objects. The identifier can
        be standardized as Y.VPX, where Y is the identifier of the requirement that VP is part, and X represents a
        sequential number of the VPs in the requirement (e.g. FR1.VP1).  
    
        Description. Characterization about VP. It can inform the basis to make choice between the
        variants. It is optional.
    
        Cardinality. Cardinality indicates how many variants can be applied to the variation point and are
        given by pairs [min, max]. This attribute is required when there are two or more variants. Some examples of
        cardinality are:
     
    
        [1, 1]: Exactly one variant should be selected for a variation point. The variants are mutually exclusive.[1, n] At least one variant should be selected for a variation point. The variants are not mutually
        exclusive.
 [0, 1] One variant may or may not be selected for a variation point.
 [0, n] Zero or more variants may be selected for a variation point.
 
    
        
            Variant. A variation point can have 1 to n variants. These variants are options of the variation point. Each
            variant also have a unique identifier that must be standardized as Y.X.VZ, where Y and X are respectively the
            identifiers of the requirement and VP that the variant is part, and Z represents a sequential number of the
            variant in the VP (e.g. FR1.VP1.V1).
        
        
            Binding time. It decides when variants are bound to the member of the SPL. The scoping time is the default
            value, so whether it section is not defined, the default value is assumed.
        
        
            Implication. It presents dependency relationship between variations. It occurs when a variation (variation
            point or variant) requires another variation. More than one implication should be separated by commas
        
        
            Exclusion. It means that a variation cannot exist in presence of another. More than one exclusion should be
            separated by commas.
 
    Dependencies can occur between different objects, such as requirement-requirement (e.g. NFR1 in Requirements Example),  requirement-VP, VP-VP (e.g. FR1 in Requirements Example), VP-variant (e.g. FR2 in Requirements Example), variant-variant and requirement-variant. However, a mandatory object cannot depend of a variant
    object. 
 
    Links must be established to explicitly interrelationships among information in the
    different work product that are direct linked with requirements (see Traceability Guideline). 
 
 
 
    After requirements description is necessary to verify the
    specification to assure consistency, accuracy and completeness. During the verification process, if necessary, a
    set of requirements may be added, deleted, or refined. Changes in feature model also can occur.
 
 
 |