DataMuseum.dk

Presents historical artifacts from the history of:

Rational R1000/400 Tapes

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about Rational R1000/400 Tapes

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download
Index: ┃ T V

⟦3bfa986f3⟧ TextFile

    Length: 6667 (0x1a0b)
    Types: TextFile
    Names: »V«

Derivation

└─⟦149519bd4⟧ Bits:30000546 8mm tape, Rational 1000, !projects 93-07-13
    └─ ⟦124ff5788⟧ »DATA« 
        └─⟦this⟧ 
└─⟦a7d1ea751⟧ Bits:30000550 8mm tape, Rational 1000, !users!projects 94_04_11
    └─ ⟦129cab021⟧ »DATA« 
        └─⟦this⟧ 
└─⟦f64eaa120⟧ Bits:30000752 8mm tape, Rational 1000, !projects 93 02 16
    └─ ⟦6f12a12be⟧ »DATA« 
        └─⟦this⟧ 
└─⟦2f6cfab89⟧ Bits:30000547 8mm tape, Rational 1000, !projects 94-01-04
    └─ ⟦d65440be7⟧ »DATA« 
        └─⟦this⟧ 

TextFile

with Action;
pragma Private_Eyes_Only;
with Directory;
with Simple_Status;
package Requirements is

    subtype Count is Natural range 0 .. 127;

    type Requirement_Kind is (Not_A_Requirement,

                              Functional,

                              Performance,  
                              External_Interface,  
                              Operational,  
                              Resource,  
                              Qualification_Testing,  
                              Acceptance_Testing,  
                              Documentation,  
                              Quality,  
                              Safety,  
                              Reliability,  
                              Maintainability,  
                              Development_And_Verification,  
                              Design_And_Programming,  
                              Reuse_And_Commonality);

    subtype Non_Functional is
       Requirement_Kind range Requirement_Kind'Succ (Functional) ..
                                 Requirement_Kind'Last;

    subtype Verification is
       Requirement_Kind range Qualification_Testing .. Acceptance_Testing;

    subtype Dependability is Requirement_Kind range Quality .. Maintainability;

    subtype Implementation is
       Requirement_Kind range Development_And_Verification ..
                                 Reuse_And_Commonality;

    type Requirement_Number is new Positive;
    subtype Functional_Requirement_Number is
       Requirement_Number range Requirement_Number'First .. 9;
    subtype Non_Functional_Requirement_Number is
       Requirement_Number range Functional_Requirement_Number'Last + 1 ..
                                   Requirement_Number'Last;


    --                    ---------------------------
    --                    ( ) Individual requirements
    --                    ---------------------------


    type Requirement (Kind : Requirement_Kind := Not_A_Requirement) is private;
    subtype Functional_Requirement is Requirement (Functional);


    function Resolve (Model_Gateway_Name : in String;
                      Module_Id : in Positive;  
                      Requirement_Id : in Requirement_Number;
                      Action_Id : in Action.Id) return Requirement;

    function Comment (Asa_Gateway_Name : in String;  
                      Action_Id : in Action.Id) return String;

    function Diagnosis (Req : in Requirement) return String;
    function Gateway_Full_Name (Req : in Requirement) return String;
    function Unique_Id (Req : in Requirement) return String;
    function Text (Req : in Requirement) return String;

    type Permanent_Representation is array (Positive range 1 .. 4) of Integer;

    function Convert (Req : in Requirement) return Permanent_Representation;
    function Convert (Rep : in Permanent_Representation;
                      Action_Id : in Action.Id) return Requirement;


    --                    --------------------------
    --                    ( ) Requirements hierarchy
    --                    --------------------------


    type Requirement_Iterator (Size : Count := 0) is private;

    function Resolve (Asa_Gateway_Name : in String;
                      Kind : in Requirement_Kind;
                      Action_Id : Action.Id) return Requirement_Iterator;

    function Value (Reqs : in Requirement_Iterator) return Requirement;
    function Done (Reqs : in Requirement_Iterator) return Boolean;
    procedure Next (Reqs : in out Requirement_Iterator);

    procedure Add (Req : in Requirement; Reqs : in out Requirement_Iterator);
    procedure Remove (Req : in Requirement; Reqs : in out Requirement_Iterator);


    --                    ----------------
    --                    ( ) Dependencies
    --                    ----------------


    type Dependents (Is_Bad : Boolean) is private;

    function Get_Dependents (Req : in Requirement) return Dependents;

    procedure Set_Dependents (Req : in Requirement;  
                              Dep : in Dependents);

    procedure Add (Dep : in out Dependents;  
                   Onto : in String);

    procedure Remove (Dep : in out Dependents;  
                      Onto : in String);

    function Diagnosis (Dep : in Dependents) return String;


    --                    --------------
    --                    ( ) Exceptions
    --                    --------------


    Dependent_Error : exception;
    Requirement_Error : exception;

private

    package Dir renames Directory;
    package Dna renames Directory.Naming;

    type Status_Kind is (Module_Id_Error,  
                         Directory_Error,  
                         Directory_Naming_Error,  
                         General_Error);

    type Status (Kind : Status_Kind := General_Error) is
        record  
            case Kind is

                when Module_Id_Error =>
                    null;

                when Directory_Error =>
                    Error_Status : Dir.Error_Status;

                when Directory_Naming_Error =>
                    Name_Status : Dna.Name_Status;

                when General_Error =>
                    Condition : Simple_Status.Condition;
            end case;
        end record;

    type Requirement (Kind : Requirement_Kind := Not_A_Requirement) is
        record
            case Kind is

                when Not_A_Requirement =>
                    Error : Status;

                when Functional | Non_Functional =>
                    Action_Id : Action.Id;
                    Object : Dir.Object;
                    case Kind is

                        when Not_A_Requirement =>
                            null;

                        when Functional =>
                            Id : Functional_Requirement_Number;

                        when Non_Functional =>
                            null;
                    end case;
            end case;
        end record;

    type Requirement_List is array (Count range <>) of Requirement;

    type Requirement_Iterator (Size : Count := 0) is
        record
            Pos : Count := 1;
            Contents : Requirement_List (1 .. Size);
        end record;

    type Object_List is array (Count range <>) of Dir.Object;

    type Object_List_Access is access Object_List;
    pragma Segmented_Heap (Object_List_Access);

    type Dependents (Is_Bad : Boolean) is
        record
            case Is_Bad is

                when False =>
                    Objects : Object_List_Access;

                when True =>
                    Error : Status;
            end case;
        end record;

end Requirements;