Parallel Composition using Event-B: Difference between revisions

From Event-B
Jump to navigationJump to search
imported>Asiehsalehi
imported>Asiehsalehi
 
Line 77: Line 77:
== Releases ==
== Releases ==


=====Version 1.6.0 =====
See the [http://wiki.event-b.org/index.php/Shared_Event_Composition_Release_History Shared Event Composition Release History].
 
''16th August 2012''
 
Version compatible with Rodin 2.6.x
 
*Bugs
** Change in files that belong to different project from where composed machine is stored were not detected (fixed)
 
*Features
** Composed machines are now named with suffix "_CMP" by default
 
=====Version 1.5.1 =====
 
''25th June 2012''
 
Version compatible with Rodin 2.5.x
 
*Bugs
**Small bug fixes
 
 
=====Version 1.5.0 =====
 
''1st June 2012''
 
Version compatible with Rodin 2.5.x
 
*Features
**Added proof obligations: WD and INV for (composition) invariants and INV, SIM and GRD for refinement; the other POs are expected to be proved in directly in the included machines
**Added stronger static checks: no shared variable is allowed; all abstract events must be refined; common parameters must have the same type; check that a composed event must have at least one combined event;
**Improved UI interface: using the form-based editor, if the symbol corresponding to a composed event is hovered, a preview of the composed event is displayed
 
=====Version 1.4.0 =====
 
''29th June 2011''
 
Version compatible with Rodin 2.2.x
 
*Bug fixes:
**When project or machine is changed in the included section, the modification is propagated for the combined events.
 
=====Version 1.3.1 =====
 
''9th Mar 2011''
 
Version compatible with Rodin 2.1.x
 
*Bug fixes:
**Fix bug for rodin app running 1.5.x
**removed 'extends' option in the composition file.
**fixed static checker problem when cleaning a project.
**when there is an error in the composition file, the file shows with a red figure overlaying the composition figure.
 
*Features
**Added pretty print
**Added a few static checks to the compositon file (incomplete)
**Improved UI interface
**Projects are now shown in between square brackets.
 
=====Version 1.2.0 =====
 
''8th Nov 2010''
 
Version compatible with Rodin 2.0.x
 
*Bug fixes:
**Fix bug when having projects name that include dots '.'.
 
*Features
**Added pretty print
**Added a few static checks to the compositon file (incomplete)
**Improved UI interface
**Projects are now shown in between square brackets.
 
=====Version 1.1.6 =====
 
''28th May 2010''
 
Version compatible with Rodin 1.3.x
 
*Features
** Composition now allows the selection of the project of the machines to compose. The context must exist in the composed machine project.
 
=====Version 1.1.5 =====
 
''25th February 2010''
 
Version compatible with Rodin 1.2.x
 
=====Version 1.1.4 =====
 
''2nd November 2009''
 
Version compatible with Rodin 1.1.0
 
*Features
** Section related with 'VARIANT' was removed.
** Labels of the elements in the generated machine used '\' instead of '/' for the separation.
 
 
=====Version 1.1.3 =====
 
''3rd July 2009''
 
Version compatible with Rodin 1.0.
 
*Bugs
** Corrected problem when loading the image on the composition machine.
 
 
*Improvements
** Added package corresponding to the renaming of elements in the bcp files.
 
 
=====Version 1.1.2 =====
 
''1st July 2009''
 
Version compatible with Rodin 1.0.0.
 
*Improvements
** By adding a machine in the refines section, the events of the abstract machine are automatically added as a composed event.
** Added the 'extended' button to the composed events.
 


[[Category:Parallel composition plugin]]
[[Category:Parallel composition plugin]]
[[Category:User documentation]]
[[Category:User documentation]]

Latest revision as of 11:02, 4 July 2013

Shared Event Composition Plug-in

Composition is the process by which it is possible to combine different sub-systems into a larger system. Known and studied in several areas, this has the advantage of reusability and combination of systems especially when it comes to distributed systems. While applying composition, properties must be maintained and proofs obligations need to be discharged in order for the final result to be considered valid. Our goal is to add this feature to the Rodin Platform (using Event-B notation) and study the concerns, properties, conditions, proof obligations, advantages and disadvantages when create/analysing system specifications. Since the composition maintains the monotonicity property of the systems, the sub-systems can be refined independently on a further stage, preserving composition properties.


A machine S with events e1, e2, e3 and e4 and variables v1, v2 and v3 can be decomposed using event (de)-composition of event e2 (as can be seen above). This would result in the machine S1 and S2 that have a partial part of the event e2: machine S1 has the part related to the variable v1 (e2') and machine S2 has the part related to the machine v2 (e2''). Also some other events are separated (e1 and v1 only exist on machine S1 and events e3 and e4 with variable v3 only exist on the machine S2) as can be seen above.

The composition is based on proposals for parallel composition in Event-B in the following paper: [1].

Installing/Updating

The installation or update for the shared event composition plug-in is available under the main Rodin Update site (http://rodin-b-sharp.sourceforge.net/updates). These are the steps that you need to follow:

Setup

The following steps will guide you through the setup process:

  1. Download Rodin for your platform from Sourceforge.
  2. Extract the downloaded zip file.
  3. Start Rodin from the folder where you extracted the zip file in the previous step.
  4. Install the Decomposition plug-in:
    1. In the menu choose Help -> Install New Software...
    2. In the Work with dropdown list, choose the location URL: Rodin - http://rodin-b-sharp.sourceforge.net/updates
    3. Select the Shared Event Composition feature under the Composition and Decomposition category, then click the check box
    4. Click Next, after some time, the Install Details page appears
    5. Click Next and accept the license
    6. Click Finish
    7. A Security Warning window may appear: click OK
  5. Restart Rodin as suggested.

Now you are ready to use the Shared Event Composition plug-in.

Usage

In order to use the composition plug-in, it is necessary to create a composition file (bcp extension).

  1. To create a new composition file, go to Toolbar (on top), New>>Other... Event-B>>Composition Machine. Then select the project (if not selected already) and filename (by default is cm.bcp).
  2. Bcp files are visible on Event-B perspective(from Rodin 0.9). For Rodin 0.8.2, go to Resource or Java perspective to edit the file.
  3. After editing the properties of the bcp file, you can generate a new bum file (machine), by using the green button on the toolbar (CM - symbol of machine) or by right clicling on the bcp file and choose the option :'Create Composed Machine'. You will have to introduce a name for the new machine and after that is just press 'OK'.


The Shared Event Composition Plugin is divided in 6 sections:

  • Refines : allows to define an abstract machine of this composed machine. It is a valid machine that exists on the project.
  • Includes: to compose a model, it is necessary to define which sub-systems(machines) interact. The machines must be abstract (not refinements of other machines) and have to be valid. It is also possible to choose if the included machine invariant should be visible to the composed machine or not (for proof optimization).
  • Sees: allows to add contexts to the composed machine. The contexts seen by the included machines are visible to the composed machine. So it is only allowed to see contexts that are not already seen by the composed machine.
  • Invariants: allows the inclusion of invariant clauses to the composed file. The inclusion of more invariants (from the included machines) depends on the user’s choice on Includes. The defined invariants on the composed machine are “joint” properties between the included machines (gluing invariants), so variables and contexts from all the included machines become part of the composed machine scope.
  • Composes Events: the interaction between systems only happens when the composed events are synchronised and ready to be executed. The systems can interact through shared parameters. It is possible to define the following properties for composes events:
    • Name: name of the composes event
    • Extended/Not Extended: in the composes machine refines an abstract machine and if there are events with the same name, the concrete event can extend the abstract one (from Rodin 0.9).
    • Convergence: event can be chosen from Ordinary, Convergence or Anticipated.


Still under Composes Events, there are more properties that characterise a composed event:

  • Refines : possibility to choose if the composes event it is a refinement of an abstract event
  • Combines Event: selection of the events that shall be composed. First the machine (out from the included machine list) is chosen and after, which event is supposed to be combined. It is possible to have only one combined event.
    • The parameters are listed in one single (composed) event. Parameters (from different events) with the same name will be merged (becoming only one parameter). This correspond to the shared event composition with message passing, where a parameter is passed from one event to other.
    • The guards from the different combined events are merged using conjuction. So this composed event will be available if all the guards are true.
    • the actions are also merged and executed in parallel.


Like mention above,a machine can be generated containing all the properties defined on the composed machine file. The generation of the new machine can be executed by using the green button on the toolbar (CM - symbol of machine) or by right clicling on the bcp file and choosing the option :Create Composed Machine. A name for the new machine have to be introduced (a name is suggested by default ) and by clicking 'OK' or 'Override', a new machine file is generated.

Bugs, Features and Comments

Please, use the SourceForge trackers to report a bug on existing features, or to request new features:

Releases

See the Shared Event Composition Release History.