Difference between pages "D45 General Platform Maintenance" and "D45 Scalability"

From Event-B
(Difference between pages)
Jump to navigationJump to search
imported>Tommy
 
imported>Tommy
 
Line 1: Line 1:
 
= Overview =
 
= Overview =
The Rodin platform versions concerned by this deliverable are:
+
* '''Performance Improvements''' According to the refocus mentionned in the [[D45_General_Platform_Maintenance#Motivations| General Platform Maintenance]] chapter, much of the reworking efforts performed on the core plateform basically aimed to overcome Rodin scalability weaknesses, and the continuous need of seamless proving experience. The performance was enhanced by core implementation and user interface refactorings. The proving usability was enhanced by the possibility to customize, combine, and parameterize tactics and the addition of new inference and rewriting rules.
* 2.1(08.02.2011),
+
* {{TODO}} An overview of the contribution about th design pattern management / Generic Instantiation (Thai Son Hoang)  
* 2.2(01.06.2011),
+
* {{TODO}} An overview of the contribution about the edition (Thomas Muller, Ingo Weigelt)
* 2.2.2(01.08.2011),
 
* 2.3(04.10.2011),
 
* 2.4(31.01.2011),
 
* 2.5(30.04.2011).
 
This year, the maintenance carried on fixing identified bugs, although an emphasis has been put on correcting usability issues. Indeed, during the meeting in Nice, the WP9 members agreed to refocus on the needed tasks to address some specific bugs and issues reported by DEPLOY partners, and wished resolved by the end of DEPLOY. Thus, no new features were implemented but those appearing in the description of work. The tasks to be performed by the WP9 members were then scheduled, prioritized and regularly updated during the WP9 bi-weekly meetings. The updates allowed to capture and integrate rapidly some minor changes to enhance the usability of the platform which were required by the DEPLOY partners. The following paragraphs will give an overview of the the work that has been performed concerning maintenance on the existing platform components (i.e. core platform and plug-ins).
 
 
 
See the Release Notes<ref name="documentation">http://wiki.event-b.org/index.php/D32_General_Platform_Maintenance#Available_Documentation</ref> and the SourceForge<ref name=documentation>http://wiki.event-b.org/index.php/D45_General_Platform_Maintenance#Available_Documentation</ref> databases (bugs and feature requests) for details about the previous and upcoming releases of the Rodin platform.
 
 
 
* General platform maintenance (Thomas Muller)
 
The maintenance done to overcome Rodin scalability weaknesses and enhance the proving experience will be detailed in a separate chapter. However, some features initially planned and some other which were later added and prioritized are worth to mention:
 
:*Possibility to highlight patterns in the ProverUI,
 
:*A better output providing warning and errors in case of wrong or missing building configurations,
 
:*The switch to Eclipse 3.7
 
:*A Handbook to complete and enhance the existing documentation.
 
These items will be detailed hereafter in this chapter.
 
 
 
* {{TODO}} An overview of the contribution about Mathematical extensions / Theory Plug-in (Issam Maamria)
 
 
 
* {{TODO}} An overview of the contribution about Plug-in Incompatibilities (All partners)
 
 
 
* {{TODO}} An overview of the contribution about Modularisation (Alexei Illiasov)
 
 
 
* {{TODO}} An overview of the contribution about Decomposition (Renato Silva)
 
 
 
* {{TODO}} An overview of the contribution about Team-based Development (Colin Snook, Vitaly Savicks)
 
 
 
* {{TODO}} An overview of the contribution about UML-B (Colin Snook, Vitaly Savicks)
 
 
 
* {{TODO}} An overview of the contribution about ProR (Michael Jastram)
 
  
 
= Motivations =
 
= Motivations =
The tasks to solve the issues faced by the DEPLOY partners have been listed and being assigned to groups according to their priority. A high priority means a high need in the outcome of a given task. The group 1 has the highest priority, the group 2 has an intermediate priority, and the group 3 has the lowest priority. The group 4 concerns topics that could not be ressourced during the lifetime of DEPLOY.The prover integrity item although not being directly covered, has been partially addressed thanks to Isabelle and SMT integration. Unfortunately, the originally planned export of full proofs and integrity check is beyond the scope of DEPLOY.
 
  
{{SimpleHeader}}
+
== Improved Performance ==
|-
+
It appeared that the various DEPLOY partners encountered several major issues while editing large models. Some were related to the core code of the Rodin platform, causing crashes, loss of data, corruption in models. Some other were related to the UI causing platform hanging, and sometimes leading to its freezing which required sometimes to kill the Rodin process, thus also leading to potential loss of data and corruption in models. Hence, it appeared necessary to solve such issues before the end of DEPLOY.
! scope=col | Group 1 (highest priority) || Responsible
 
|-
 
|Performance <br /> - Core (large models, etc.) <br /> - GUI (incl. prover UI, edition, etc.) || SYSTEREL
 
|-
 
|Prover Performances <br /> - New rewriting rules / inference rules <br /> - Automatic tactics (preferences, timeout, etc.) || SYSTEREL
 
|-
 
|ProB Disprover (incl. counter examples to DLF POs) || Düsseldorf
 
|-
 
|Stability (crash, corruption, etc.)  || SYSTEREL
 
|-
 
|Editors || SYSTEREL/Düsseldorf
 
|-
 
|}
 
{{SimpleHeader}}
 
|-
 
! scope=col | Group 2 || Responsible
 
|-
 
| Prover Performances <br /> - SMT provers integration <br /> - connection with Isabelle  <br /> - Mathematical extensions <br /> - ProB || <br />SYSTEREL <br /> ETH Zürich <br /> Southampton/SYSTEREL <br /> Düsseldorf
 
|-
 
|Scalability <br /> - Decomposition <br /> - Modularisation plug-in <br /> - Team-based development || <br /> Southampton <br /> Newcastle <br /> Southampton
 
|-
 
|Plug-in incompatibilities || Newcastle
 
|-
 
|Model-based testing || Pitesti/Düsseldorf
 
|-
 
|ProR || Düsseldorf
 
|}
 
{{SimpleHeader}}
 
|-
 
! scope=col | Group 3 || Responsible
 
|-
 
|Scalability <br /> - Generic instantiation <br /> - UML-B maintenance <br /> || <br /> Southampton <br /> ETH Zürich/Southampton
 
|-
 
|Code Generation || Southampton
 
|}
 
{{SimpleHeader}}
 
|-
 
! scope=col | Group 4
 
|-
 
|Prover Integrity
 
|-
 
|Integrity of Code Generation
 
|}
 
== Platform maintenance ==
 
The platform maintenance, as it can be deduced from the above tables in section [[#Motivations | Motivations]], mainly concerned stability and performance improvement. These topics will be discussed and detailed in a separate chapter about scalability improvements.<br>
 
However, other prioritary improvements were made on the platform. These improvements or came from DEPLOY partners specific needs, or were corresponding to previously identified needs (listed in D32 - Model Construction tools & Analysis III Deliverable).
 
Hence we review below the motivations of some noteworthy implemented features:
 
* A Possibility to highlight patterns in the ProverUI.
 
This feature came from a request of DEPLOY partners<ref name="searchInPUI">https://sourceforge.net/tracker/?func=detail&atid=651672&aid=3092835&group_id=108850</ref>, often facing the need to find particular patterns such as expressions in long predicates (e.g. long goals). Since Rodin 2.2, and its new ProvingUI interface, a nice feature was added, allowing to search and highlight a string pattern into the whole ProvingUI views and editors. This function as also been enabled on direct selection of text in this UI.
 
* A better output providing warning and errors in case of wrong or missing building configurations.
 
This issue, often seen as a bug or a plug-in incompatibility, raises when a user imoprts and tries to use a model on a platform with some missing plug-ins needed on build. The user often use to think his models corrupted although Rodin just being not able to build them, and hiding this information to the user. This is why, since Rodin 2.3, an output in such case has been provided taking the form of warnings or errors that any user can review. This is a partial answer to Rodin plug-in incompatibilities issue.
 
* The switch to Eclipse 3.7.
 
Due to the major improvements made every year in every Eclipse releases and the continuously growing number of contributing projects which are for some of them used as basis for Rodin plug-ins, the Rodin platform follows the evolution and is adapted every year quickly to the latest Eclipse version available. This year, Rodin 2.3 originated the switch from Eclipse 3.6 to Eclipse 3.7.
 
* A Handbook to complete and enhance the existing documentation.
 
At the DEPLOY Plenary Meeting in Zürich in 2010, it has been stated that the current documentation, in its state at that time, would not support, a engineer starting using the tools without significant support of an expert. Losts of efforts to improve the documentation were performed and coordinated by Düsseldorf, and took form of the Rodin Handbook. The Rodin handbook has the aim to minimize the access to an expert, by providing the necessary assistance to an engineer in the need to be productive using Event-B and the Rodin toolset. The contents of the handbook were originated by the contents of the Event-B wiki, although these contents have now all been migrated to the Rodin handbook.
 
  
== Mathematical extensions / Theory Plug-in ==
+
== Design Pattern Management / Generic Instantiation ==
{{TODO}} ''To be completed by Issam Maamria''
+
{{TODO}} ''To be completed by Thai Son Hoang''
== Plug-in Incompatibilities ==
+
== Edition ==
{{TODO}} ''To be completed by all partners''
+
{{TODO}} ''To be completed by Thomas Muller, Ingo Weigelt''
== Modularisation ==
 
{{TODO}} ''To be completed by Alexei Illiasov''
 
== Decomposition ==
 
{{TODO}} ''To be completed by Renato Silva''  
 
== Team-based Development ==
 
{{TODO}} ''To be completed by Colin Snook, Vitaly Savicks''  
 
== UML-B ==
 
{{TODO}} ''To be completed by Colin Snook, Vitaly Savicks''
 
== ProR ==
 
{{TODO}} ''To be completed by Michael Jastram''
 
  
 
= Choices / Decisions =
 
= Choices / Decisions =
== Platform maintenance ==
+
== Improved Performance ==
* Revisited task priority
+
Concerning the platform performance, SYSTEREL lead a two phase investigation to have a better idea of the work to be done. Each phase being followed by some refactoring of the code. Out of the early investigation, a cause and effect relationship has been found between perfomance loss and the various reported bugs, such as "platform hanging" bugs or even "no more handle" bugs related to the high consumption of graphical elements on Windows platforms. Indeed, it appeared that solving the performance issues sometimes solved induced bugs as well which made the scalability improvement tasks emcompass the maintenance goals.<br>
This year, the process to give priority to maintenance tasks was revisited according the the refocus mentionned above. Thus not only the requests coming from DEPLOY partners were given high priorities, but they were prioritized against the already planned tasks coming from both DEPLOY partners and the Description of Work. This prioritization was performed or internally at each WP9 member site, if the task is short (i.e. less than one man-week), or during the WP9 bi-weekly telephone conferences otherwise.  
+
Later, a deeper investigation was performed, to indentify and tackle the remaining performance issues. Profiling and code review were the two techniques used. The profiling strategy allowed to get a better localisation of the performance loss in both UI and core code while the code review helped to understand the intrinsic misuses or drawbacks of particular components and/or architectures.
* A way to tackle plug-in incompatibilities
+
A good example, was the Event-B built-in editor based on form editors with a high use of greedy graphical components. Such architecture appeard to be weak when it was needed to display industrial size models. This affected the modelling experience with some long, and really annoying to the user, reaction lags. To solve such issue, it has been chosen to refactor the editors using a textual representation which was a light-weight graphical alternative to lower the number of needed components. Such refactoring among others made on both core code and UI code, allowed to gain up to 25 times speed-up on the UI, and almost a 2 times speed-up in the core code, making the platform usable again in an industrial context.<br><br>
 
+
Concerning the prover performance, two directions were taken in the last year of DEPLOY: the addition of rewriting and inference rules, and the addition of a mechanism to allow the customization and the parameterization or combination of tactics.
* keeop 32-bit versions of Rodin on linux and windows systems
 
  
== Mathematical extensions / Theory Plug-in ==
+
== Design Pattern Management / Generic Instantiation ==
{{TODO}} ''To be completed by Issam Maamria''
+
{{TODO}} ''To be completed by Thai Son Hoang''
== Plug-in Incompatibilities ==
+
== Edition ==
{{TODO}} ''To be completed by all partners''
+
{{TODO}} ''To be completed by Thomas Muller, Ingo Weigelt''
== Modularisation ==
 
{{TODO}} ''To be completed by Alexei Illiasov''
 
== Decomposition ==
 
{{TODO}} ''To be completed by Renato Silva''  
 
== Team-based Development ==
 
{{TODO}} ''To be completed by Colin Snook, Vitaly Savicks''  
 
== UML-B ==
 
{{TODO}} ''To be completed by Colin Snook, Vitaly Savicks''
 
== ProR ==
 
{{TODO}} ''To be completed by Michael Jastram''
 
  
 
= Available Documentation =
 
= Available Documentation =
* Core platform:
+
* {{TODO}} Links for Improved Performance
:The following pages give useful information about the Rodin platform releases:
+
* {{TODO}} Links for Design Pattern Management / Generic Instantiation
:* Release notes<ref>http://wiki.event-b.org/index.php/Rodin_Platform_Releases</ref>.
+
* {{TODO}} Links for Edition
:* Bugs<ref>https://sourceforge.net/tracker/?group_id=108850&atid=651669</ref>.
 
:* Feature requests<ref>https://sourceforge.net/tracker/?group_id=108850&atid=651672</ref>.
 
 
 
*{{TODO}} Links for Mathematical extensions / Theory Plug-in
 
*{{TODO}} Links for Plug-in Incompatibilities
 
*{{TODO}}  Links for Modularisation
 
*{{TODO}}  Links for Decomposition
 
*{{TODO}}  Links for Team-based Development
 
*{{TODO}}  Links for UML-B
 
*{{TODO}} Links for ProR
 
  
 
= Status =
 
= Status =
== Platform maintenance ==
+
== Improved Performance ==
By the end of the project, there are :
+
{{TODO}} ''To be completed by Laurent Voisin, Nicolas Beauger, Thomas Muller''
* xx bugs reported and open. All with a priority lower or equal to 5.
+
== Design Pattern Management / Generic Instantiation ==
* xx feature requests expressed and still open.
+
{{TODO}} ''To be completed by Thai Son Hoang''
 
+
== Edition ==
== Mathematical extensions / Theory Plug-in ==
+
{{TODO}} ''To be completed by Thomas Muller, Ingo Weigelt''
{{TODO}} ''To be completed by Issam Maamria''
 
== Plug-in Incompatibilities ==
 
{{TODO}} ''To be completed by all partners''
 
== Modularisation ==
 
{{TODO}} ''To be completed by Alexei Illiasov''
 
== Decomposition ==
 
{{TODO}} ''To be completed by Renato Silva''  
 
== Team-based Development ==
 
{{TODO}} ''To be completed by Colin Snook, Vitaly Savicks''  
 
== UML-B ==
 
{{TODO}} ''To be completed by Colin Snook, Vitaly Savicks''
 
== ProR ==
 
{{TODO}} ''To be completed by Michael Jastram''
 
 
 
 
 
= References =
 
<references/>
 
  
 
[[Category:D45 Deliverable]]
 
[[Category:D45 Deliverable]]

Revision as of 15:22, 17 November 2011

Overview

  • Performance Improvements According to the refocus mentionned in the General Platform Maintenance chapter, much of the reworking efforts performed on the core plateform basically aimed to overcome Rodin scalability weaknesses, and the continuous need of seamless proving experience. The performance was enhanced by core implementation and user interface refactorings. The proving usability was enhanced by the possibility to customize, combine, and parameterize tactics and the addition of new inference and rewriting rules.
  • TODO An overview of the contribution about th design pattern management / Generic Instantiation (Thai Son Hoang)
  • TODO An overview of the contribution about the edition (Thomas Muller, Ingo Weigelt)

Motivations

Improved Performance

It appeared that the various DEPLOY partners encountered several major issues while editing large models. Some were related to the core code of the Rodin platform, causing crashes, loss of data, corruption in models. Some other were related to the UI causing platform hanging, and sometimes leading to its freezing which required sometimes to kill the Rodin process, thus also leading to potential loss of data and corruption in models. Hence, it appeared necessary to solve such issues before the end of DEPLOY.

Design Pattern Management / Generic Instantiation

TODO To be completed by Thai Son Hoang

Edition

TODO To be completed by Thomas Muller, Ingo Weigelt

Choices / Decisions

Improved Performance

Concerning the platform performance, SYSTEREL lead a two phase investigation to have a better idea of the work to be done. Each phase being followed by some refactoring of the code. Out of the early investigation, a cause and effect relationship has been found between perfomance loss and the various reported bugs, such as "platform hanging" bugs or even "no more handle" bugs related to the high consumption of graphical elements on Windows platforms. Indeed, it appeared that solving the performance issues sometimes solved induced bugs as well which made the scalability improvement tasks emcompass the maintenance goals.
Later, a deeper investigation was performed, to indentify and tackle the remaining performance issues. Profiling and code review were the two techniques used. The profiling strategy allowed to get a better localisation of the performance loss in both UI and core code while the code review helped to understand the intrinsic misuses or drawbacks of particular components and/or architectures. A good example, was the Event-B built-in editor based on form editors with a high use of greedy graphical components. Such architecture appeard to be weak when it was needed to display industrial size models. This affected the modelling experience with some long, and really annoying to the user, reaction lags. To solve such issue, it has been chosen to refactor the editors using a textual representation which was a light-weight graphical alternative to lower the number of needed components. Such refactoring among others made on both core code and UI code, allowed to gain up to 25 times speed-up on the UI, and almost a 2 times speed-up in the core code, making the platform usable again in an industrial context.

Concerning the prover performance, two directions were taken in the last year of DEPLOY: the addition of rewriting and inference rules, and the addition of a mechanism to allow the customization and the parameterization or combination of tactics.

Design Pattern Management / Generic Instantiation

TODO To be completed by Thai Son Hoang

Edition

TODO To be completed by Thomas Muller, Ingo Weigelt

Available Documentation

  • TODO Links for Improved Performance
  • TODO Links for Design Pattern Management / Generic Instantiation
  • TODO Links for Edition

Status

Improved Performance

TODO To be completed by Laurent Voisin, Nicolas Beauger, Thomas Muller

Design Pattern Management / Generic Instantiation

TODO To be completed by Thai Son Hoang

Edition

TODO To be completed by Thomas Muller, Ingo Weigelt