Meta-modelling and Coded Operational Semantics 

  Assignment Goal

The goal of this assignment is to build a formalism to model production systems for assembling armoured personnel carriers (APCs):
  1. Implement abstract syntax using CD_ClassDiagramsV3, enrich with constraints on the ASG if necessary, create a concrete syntax, and generate a modelling environment.
  2. [optional] Create a nice buttons menu for your production systems formalism environment that you generated in step 1. (In order to do this, open the generated _META file as a model.)
  3. Make your production system visually more appealing by adding constraints that move/resize/... model elements. Find useful constraints.
  4. Implement operational semantics in Python. (To be able to execute the code, create a button (see step 2) that imports your implemented Python module.) Think about fairness, and use time slicing!

  Static Semantics

  1. A production system is a set of connected machines and conveyor belts.
  2. Machines can be operated by an operator. [use a class, not an attribute for an operator]
  3. A conveyor belt carries (unfinished) products.
  4. Machines are connected to exactly one conveyor belt on which they can drop processed products.
  5. Machines can either generate the parts of a APC (wheels, tracks, bodies, machine guns or water cannons), or process these parts or assembled APCs.
  6. Machines that process can be assemble machines, quality control or repair machines.
  7. Machines that process are connected to exactly one conveyor belt from which they take products that are to be processed.
  8. Conveyor belts can be connected.
  9. Quality control machines are a special kind of machine, as they can put products that need to be reworked on a different conveyor belt.

  Operational Semantics

  1. There is only one direction in which products can be moved from one conveyor belt to the other.
  2. Products can move from a conveyor belt to a connected conveyor belt.
  3. A generator for a certain APC part can put such a part on its connected conveyor belt.
  4. Machines can only process when there is an operator at the machine.
  5. An operator can go from one machine to the other if the required (unfinished) part(s) is/are ready for that machine.
  6. An assemble machine with an operator can take two tracks, a body and a machine gun from the input conveyor belt and process them into a war APC that is put on the output conveyor belt, or can take four wheels, a body and a water cannon from the input conveyor belt and process them into a riot APC that is put on the output conveyor belt.
  7. A repair machine with an operator can take an (unfinished) product from the input conveyor belt, repair it, and put it on the output conveyor belt.
  8. A quality control machine with an operator can take an assembled piece from the input conveyor belt and in case of a successful outcome puts it on the output conveyor belt, and in case of an error puts it on the other conveyor belt for pieces that need to be reworked.
[optional] More fine grained: conveyor belts are queues.
[optional] (Unfinished) products can get "broken" arbitrarily.

  Useful Links