DataMuseum.dk

Presents historical artifacts from the history of:

Rational R1000/400

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

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download

⟦a5162abf8⟧ Ada Source

    Length: 8192 (0x2000)
    Types: Ada Source
    Notes: 03_class, FILE, R1k_Segment, e3_tag, package Requirements, pragma Segmented_Heap Object_List_Access, seg_01077a

Derivation

└─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000
    └─ ⟦5a81ac88f⟧ »Space Info Vol 1« 
        └─⟦this⟧ 

E3 Source Code



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;

E3 Meta Data

    nblk1=7
    nid=0
    hdr6=e
        [0x00] rec0=1e rec1=00 rec2=01 rec3=006
        [0x01] rec0=19 rec1=00 rec2=02 rec3=012
        [0x02] rec0=15 rec1=00 rec2=03 rec3=030
        [0x03] rec0=1b rec1=00 rec2=04 rec3=036
        [0x04] rec0=22 rec1=00 rec2=05 rec3=05c
        [0x05] rec0=22 rec1=00 rec2=06 rec3=010
        [0x06] rec0=22 rec1=00 rec2=07 rec3=000
    tail 0x2150c078282307721ab01 0x42a00088462060003