Research Article

Formal Specification Based Automatic Test Generation for Embedded Network Systems

Pseudocode 2

An example SENS specification for an air-cleaning system
<AC.cls>
( ) Class AC
( ) Data
( ) Type_opMode  {Off, Auto, Turbo, Pollen, Calm, Normal};
( ) Type_humidMode{Off, Auto, Cont, High};
( ) Type_airVolume{W0, W1, W2, W3, W4, W5, W6};
( ) Type_airPurity{KTY1, KTY2, KTY3, KTY4, KTY5};
( ) Type_Brightness {Normal, Dark, Off};
( ) Type_switch{On};
( ) Var
( )Mode_A: Type_opMode; //Mode of operation
( )Mode_B: Type_humidMode; //Mode of humidity
( )AV:Type_airVolume; //Actual air volume
( )AP:Type_airPurity; //Air purity
( )BM:Type_Brightness; //Brightness for monitor LED
( )BO:Type_Brightness; //Brightness for other LED
( )Channel
( )    C:Type_switch; //Indicating pushing a button
( )
<Mode_Change.func>
( )Bundled AC;
( )Extern
( )Data
( )  Type_opMode, Type_humidMode,
( )  Type_airVolume, Type_airPurity,
( )  Type_Brightness, Type_switch;
( )  Var
( )Mode_A, Mode_B, AV, AP, BM, BO;
( )  Channel
( )   C;
( )
( )  Function Mode_Change
( )  Var
( )   BU:Type_Brightness; //User-defined brightness
( )  Require
( )   Mode_A==Auto > (AV==W1    AV==W2    AV==W3    AV==W4  ∣∣  AV==W5);
( )   Mode_A==Auto && Mode_B==Off && AP==KTY1 > AV==W1;
( )   Mode_A==Calm > AV==W1;
( )    
( )   Mode_A!=Off && BU==Normal: C?On:BU==Dark;
( )   Mode_A!=Off && BU==Dark: C?On:BU==Off;
( )  true:C?On:Mode_A==~Mode_A;
( )