Meetings summary until 05/03/2021
This section will summarize all the previous meetings since they haven't been updated as they should
Summary
- We discussed starting the development of the Railcar System using Yakindu
- I started implementing the system using Yakindu and noting down the problems I face and the workarounds I come up with
- Yakindu supports having multiple statecharts communicating with each other in its latest version, but is lacking behind in the following points:
- Objects cannot be created dynamically during runtime, the number of these object instances has to be pre-defined before running the system.
- Variables cannot be added in an array in the default Yakindu environment (which supports code generation for all programming languages, not just specific ones).
- Parent can directly communicate and raise events with its children, but the children can only raise out events which are read by all of their parents.
- Communication between two children of the same parent is impossible without event routing
- Yakindu simulations are slow because all instances of any statechart are created whenever they are mentioned in the system; even if they were never accessed and used. This also causes a loop of objects creating each other when both reference the each other.
- In order to simplify the complexity of the system, we decided to only implement a one-way track between every two terminals of the system instead of a two-ways track
- The Yakindu implementation of the system was completed and is fully functional. Except that the system cannot be simulated entirely because some operations and functions have to be implemented in the generated code. So the current Yakindu simulation can only show having one car and passenger at a time in the system.
- After having completed the Yakindu implementation, it was time to work on generating the code and inserting it in a GUI.
- We decided to use Python along with the TKinter library in order to implement this GUI.
- Code generation is straight forward using the tools provided by Yakindu
- The GUI needs to be able to visualize the placement of the cars in the system. It should also allow the users to add new passengers, specify their origin and destination terminals, and watch the cars transport them to their destination
- It would be a good idea to add a timer in the GUI to make it easier to check the passage of time since the simulation started
- To make it easier to follow the cars, I also need to add some sort of log that shows each car's origin and destination
- Some of the points I noticed from the code generated by Yakindu:
- Simulating the system isn't slow anymore because I can specify which statecharts are created and at what point, unlike with Yakindu simulations
- It is easy to forget/incorrectly initiate the different statechart objects which is even harder to debug later on
- Some issues arise from the generated code that aren't previously visible
Action items
- Finish the implementation of the GUI and fixing the bugs related to it
- Continue working on the report
- Start working on the SCCD implementation of the system
- It's preferable to try generate the SCCD code from the current Yakindu statecharts directly instead of having to redo everything manually from the start
- Use an implementation similar to PDEVS to create the system trace and make it easier to pinpoint where the bugs could be
Meeting 3: 11/12/2020
Summary
This meeting was a short one in which we only discussed the previous assignment.
We also talked about the GitHub and how it'd be better to upload my projects on it.
Action items
We agreed by the end of this meeting that the next step would be to go through the paper Executable Object Modeling with Statecharts by David Harel and start working on the rail car system discussed in this paper.
This assignment is not for the following meeting since it takes longer to be completed but we agreed that I should start working on it and discuss my progress in the next meeting
Meeting 2: 27/11/2020
Summary
This meeting was delayed a bit until the weekly meetings were completely set-up and the list of papers to read shared.
During this meeting we discussed the papers that I read and the problems/questions I had
We also discussed in detail the potential Master Thesis topics as shown in the picture below and the deadlines.
I shared with the Prof. my interest in knowing more about the behind the scenes of the statecharts, where, instead of only reading about the semantics of statecharts, I would also like to know more about how the code is generated and connected to the statecharts.
Because of this question, we discussed the following:
- TKinter and its usage for creating GUI in python
- Yakindu and how easy it is to use it to generate code from the created statecharts
- The MOSIS assignment of 2013-2014 related to the Specification of Digital Watch Behaviour using Statecharts
Action items
As an assignment for the next meeting we agreed that I should go more into details in connecting a python code to statecharts by doing the Specification of Digital Watch Behaviour using Statecharts assignment of 2013-2014 using Yakindu
Meeting 1: 02/11/2020
Summary
During this meeting we discussed the following:
- Statecharts and its usage
- Some of the semantics of statecharts
- The previous MOSIS classes and how they are helpful with the project
- The potential Master Thesis topics following the research project
After we were done discussing the project and its practicalities, the Prof. went through a number of papers that can be helpful throughout my research project.
We also agreed that the final step for the research project would be to implement David Harel's Rail Car system and document what I learn throughout the way.
Action items
As an assignment for the next meeting, I had to read and understand the following 3 papers:
- Statecharts: A Formalism to Model, Simulate and Synthesize Reactive and Autonomous Timed Systems by Simon Van Mierlo and Hans Vangheluwe
- Statecharts: A Visual Formalism For Complex Systems by David Harel
- Articles on Visual Formalisms by David Harel