Concern requirements list using MDSOCRE notation. Here we show how the concrete concerns of our domain are expressed with the MDSOCRE approach.

<Concern name="Game">
 <Requirement id="1"> A slot machines have 5 reels.</Requirement>
 <Requirement id="2"> Reels spin when play button is pressed.</Requirement>
 <Requirement id="3"> Prizes are awarded according to a pay table. </Requirement>
 <Requirement id="4"> A slot machine has  one or more devices for entering money.</Requirement>
 <Requirement id="5"> As money is inserted credits are "assigned" to the player. </Requirement>
 <Requirement id="6"> A slot machine must provide means for cashing the credits out.
              It could be a ticket printer, a coin hopper.</Requirement>
</Concern>
 
<Concern name="Meters">
 <Requirement id="1"> Credit meter: shall at all times indicate all credits or cash 
             available for the player to wager or cashout  (GLI 11 4.10.1)  </Requirement>
 <Requirement id="2"> Credit Meter Incrementing: The value of every prize (at
             the end of a game) shall be added to the player's credit meter. The 
             credit meter shall also increment with the value of all valid coins, tokens, 
             bills, Ticket/Vouchers, coupons or other approved notes accepted. (GLI 11 4.10.5) </Requirement>
 <Requirement id="3"> Accounting Meters (GLI 11 4.10.9):  Coin In: a meter that
             accumulates the total value of all wagers [...]. Games-played: accumulates
             the number of games played; since power reset, since door close and 
             since game initialisation. </Requirement>
 <Requirement id="4"> Meters should be updated upon occurrence of any event 
             that must be counted, including: play, cashout, bill in, coin in.  </Requirement>
</Concern>
 
 
<Concern name="Game Recall">
 <Requirement id="1"> Information on at least the last ten (10) games is to be 
             always retrievable on the  operation of a suitable external key-switch, 
             or another secure method that is not available to  the player. </Requirement>
 <Requirement id="2"> Last play information shall provide all information 
             required to fully reconstruct the last ten (10) plays. All values shall be 
             displayed; including the initial credits, credits bet, and credits won, 
             payline symbol combinations and credits paid whether the outcome 
             resulted in a win or loss. This information should include the final game
             outcome, including all player choices and  bonus features. </Requirement>
</Concern>
 
<Concern name="G2S">
 <Requirement id="1"> The  G2S protocol is designed to communicate 
              information between a SM, and one or more host systems. </Requirement>
 <Requirement id="2"> Meters within the G2S protocol: Each device is metered 
             separately. Meters are always available on a device-by-device basis.
              (G2S  1.16) </Requirement>
 <Requirement id="3"> Some G2S meters are: gamesSinceInitCn Number of 
              games since initialisation. WonCnt: Number of primary games won 
              by the player. LostCnt: Number of primary games lost by the player </Requirement> 
 <Requirement id="4"> Important events must be reported in real-time, including: 
             error conditions, tickets inserted, ticket printed.</Requirement>
</Concern>
 
<Concern name="Proprietary Communication Protocol">
 <Requirement id="1"> The PCP  communicates a SM with a host system. </Requirement>
 <Requirement id="2"> It must report all meters of a SM. </Requirement>
 <Requirement id="3"> Important events must be reported in real-time, including: 
             error conditions, tickets inserted, ticket printed.</Requirement>
</Concern>
 
<Concern name="Program Resumption">
 <Requirement id="1"> After a program interruption (e.g., processor reset), the 
             software shall be able to recover to the state it was in immediately prior 
             to the interruption occurring.  </Requirement>
 <Requirement id="2"> Restoring Power. If a gaming device is powered down 
             while in an error condition, then upon restoring power, the specific error
             message shall still be displayed and the gaming device shall remain 
             locked-up. </Requirement>
 <Requirement id="3"> A SM must store all meter information in persistent 
             memory. (G2S  1.16) </Requirement>
</Concern>
 
<Concern name="Error Conditions">
 <Requirement id="1"> Gaming devices shall be capable of detecting and 
              displaying error conditions and illuminate the tower light for each
              or sound an audible alarm. </Requirement>
 <Requirement id="2"> Error conditions should cause the gaming device to
             lock up and require attendant intervention. Error conditions shall be 
             cleared either by an attendant or upon initiation of a new play 
             sequence after the error has cleared except for those deemed as
             a critical error.</Requirement>
 <Requirement id="3"> Error conditions are: coin jam, reverse coin in, stacker
             full, bill jam, external doors open. </Requirement>
 <Requirement id="4"> Video based games shall display meaningful text as to 
             the error  conditions. </Requirement>
 <Requirement id="5"> Error conditions shall be communicated to an on-line 
             monitoring and  control system when this is available. </Requirement>
</Concern>
 
<Concern name=" Demo Mode">
<Requirement id="1"> The Slot Machine must permit a a test, diagnostic or demo
             mode, which permits             gaming device (e.g.,  a hopper test) shall be completed on 
             resumption of normal operation.
<Requirement id="1.1"> If the gaming device is in a test, diagnostic or demo
             mode, any test that incorporates credits entering or leaving the 
             gaming device (e.g.,  a hopper test) shall be completed on 
             resumption of normal operation.</Requirement>
<Requirement id="1.2"> There shall not be any mode other than 
             normal operation (ready for play) that increments any of 
             the electronic meters.</Requirement>
<Requirement id="1.3">  Any credits on the gaming device that
             were accrued during the test, diagnostic or demo mode shall be 
             automatically cleared before the mode is exited. </Requirement>
<Requirement id="1.4"> Specific meters are permissible for these types of 
             modes provided the meters indicate as such (GLI 11 4.17.1). </Requirement>
</Requirement>
<Requirement id="1.5"> The main cabinet door of the gaming device may 
             automatically place the gaming device in a service or test/diagnostic 
             mode. Test/diagnostics mode may also be entered, via an appropriate 
             instruction, from an attendant during an audit mode access. These 
             modes should not be accessible to the player (GLI 11 4.17.2). </Requirement>
<Requirement id="1.6">  When exiting from test-diagnostic mode, the game 
             shall return to the original state it was in when the test mode was 
             entered (GLI 11 4.17.3). </Requirement>
<Requirement id="1.7"> Test Games. If the device is in a game test mode,
             the machine shall clearly indicate that it is in a test mode, not normal 
             play (GLI 11 4.17.4). </Requirement>
</Concern>

Composition rules

Composition rules are used to express crosscutting relationships. Here we show the composition rules, consisting of a Constraint tag that defines how the base requirements are constrained by aspectual requirements. The Constraint tag has actions, operators and outcome elements, used to express in detail how the base is affected.

1. Demo to Game: The demo requirements affect many of the definitions of the original requirements of Game, in order to alter the Game's behaviour for testing purposes.

<Composition>
 <Requirement concern="Demo Mode" id="all">
  <Constraint action="enforce" operator="on"> 
   <Requirement concern="Game" id="all" />  
  </Constraint>
  <Constraint action="exclude" operator="on"> 
   <Requirement concern="Game" id="1" />  
   <Requirement concern="Game" id="2" />  
  </Constraint>
  <Outcome action="fulfilled"/>
 </Requirement>
</Composition>

2. Game Recall to Game: Game Recall requirements affect many aspects of the Game's behaviour, its requirements call for recording pieces of information regarding game play.

<Composition>
 <Requirement concern="Game Recall" id="2">
  <Constraint action="enforce" operator="on"> 
   <Requirement concern="Game" id="2" />  
  </Constraint>
  <Outcome action="fulfilled"/>
 </Requirement>
</Composition>

3.Meters to Game: Meters count activities of many functions defined in Game's requirements, for instance: game play, bill in, cashout, etc.

and

10.Dependency of G2S on Meters: Some data reported to the RS is stored or can be derived from meters. G2S needs the meters to be up to date in order to accomplish its purpose.

<Composition>
 <Requirement concern="Meters" id="4">
  <Constraint action="enforce" operator="on"> 
   <Requirement concern="Game" id="3" /> 
  </Constraint>
  <Outcome action="fulfilled"/>
 </Requirement>
 <Requirement concern="Meters" id="3">
  <Constraint action="ensure" operator="with">
   <Requirement concern="G2S" id="2"/> 
  </Constraint>
  <Outcome action="fulfilled"/>
 </Requirement>
</Composition>

4.Program resumption to Game. Program resumption is analogous to persistence. It crosscuts all the places where important data, which needs to be restored, is changed.

<Composition>
 <Requirement concern="Program Resumption" id="1">
  <Constraint action="enforce" operator="on"> 
   <Requirement concern="Game" id="2" />  
  </Constraint>
  <Outcome action="fulfilled"/>
 </Requirement>
</Composition>

5.G2S to Game: this concern cut across many Game's requirements, since several events in Game need to be reported, monitored and communicated to reporting system.

<Composition>
 <Requirement concern="G2S" id="4">
  <Constraint action="enforce" operator="on"> 
   <Requirement concern="Game" id="2" />  
  </Constraint>
  <Outcome action="fulfilled"/>
 </Requirement>
</Composition>

6.Error Conditions to Game: Requirements in Game that could raise an error condition vary: from a bill inserted to a door opened.

<Composition>
 <Requirement concern="Error Condition " id="3">
  <Constraint action="enforce" operator="on"> 
   <Requirement concern="Game" id="2" />  
  </Constraint>
  <Outcome action="satisfied">
   <Requirement concern=" Error Condition" id="2"/> 
  <Outcome/>
 </Requirement>
</Composition>

7.Proprietary Protocol to Game: This refers to another protocol used for the same purpose as G2S, that is to monitor the game's behaviour.

<Composition>
 <Requirement concern="Proprietary Communication Protocol" id="1">
  <Constraint action="enforce" operator="on"> 
   <Requirement concern="Game" id="2" />  
  </Constraint>
  <Outcome action="fulfilled"/>
 </Requirement>
</Composition>

11.Mutex between G2S and Proprietary Protocol: There is overlapping functionality defined in the requirements of both protocols and they cannot be active at the same time.

<Composition>
 <Requirement concern="Proprietary Communication Protocol" id="all">
  <Constraint action="XOR" operator="with"> 
   <Requirement concern="G2S" id="all" />  
  </Constraint>
  <Outcome action="fulfilled"/>
 </Requirement>
</Composition>

12.Reinforcement of G2S with Error Conditions: Some parts of the G2S protocol are not mandatory for specific instances. When error conditions are tracked in the game, additional behaviour is made available in G2S, such as real time event reporting.

<Composition>
 <Requirement concern="Error Condition" id="3">
  <Constraint action="provide" operator="for"> 
   <Requirement concern="G2S" id="4"/> 
  </Constraint>
  <Outcome action="fulfilled"/>
 </Requirement>
</Composition>