tag:blogger.com,1999:blog-48275760468605760682024-02-20T11:39:50.587+01:00SOCIS - AADL Designer<b>European Space Agency Summer of Code in Space 2012 </b><br>
Developing an Architecture Analysis & Design LanguageAnonymoushttp://www.blogger.com/profile/14653133332588297691noreply@blogger.comBlogger12125tag:blogger.com,1999:blog-4827576046860576068.post-22968115006775128862012-10-17T10:12:00.001+02:002012-10-17T10:12:35.748+02:00Entering the final turn<div dir="ltr" style="text-align: left;" trbidi="on">
Slowly approaching the end of SoCiS 2012, the final touches need to be done to the designer. In the remaining time, I will check for inconsistencies and issues within the developed odesign. A final check to see if the required tools for the mapped nodes are implemented. Of course, all the newly created elements should be accepted by Xtext and the example I worked on, Cruise Control, should be easily understandable.<br />
<br />
With the checks and fixes done in this direction so far, it looks fine - tools are implemented and working, Xtext accepts all the newly created elements (and they are created at the right position in the private or public section for example) and after rearranging the representation, you get a better overview of the system.<br />
<br />
Now, I start a new learning phase while preparing the update-site for the 1.0 release of the modeler. Tools like Tycho, maven and Hudson will be taken under the loop for the next days to get everything working.<br />
<br /></div>
Anonymoushttp://www.blogger.com/profile/14653133332588297691noreply@blogger.com0tag:blogger.com,1999:blog-4827576046860576068.post-18735122759433378142012-10-12T16:08:00.001+02:002012-10-12T16:19:38.924+02:00One more week past<div dir="ltr" style="text-align: left;" trbidi="on">
The focus for this week was to continue developing the odesign file. With the existing 3 Diagrams: Package, Declaration and Implementation Diagram, the last one is the one I have worked most on this week. I added creation tools for the System, Thread and Process implementation. This was a major progress in understanding the aadl2 model, as it required more than one property to be set during the element creation. More it is also a "cool" tool containing a selection wizard to display all the available systems/threads/processes for which an implementation can be created. This feature was personally an interesting achievement as the java service, required to return the correct elements to populate the wizard, worked almost out-of-the box (of course, there followed some re-factoring to accommodate the method for all the types, but it did the job good straight on).<br />
<br />
I have added creation tools for all the components that can be created inside the System/Thread/Process implementation. It was not very difficult to develop this tools once an example was ready, but it quite took some time.... Element edition tools for label renaming and element deletion are also available.<br />
<br />
Some work was done also for the PackageDiagram: I noticed the possibility to navigate from a package to one of the other available diagrams. I have added two new options to be able to create a Description or an Implementation Diagram for the existing package. Now in this Diagram the Public and the Private sections are viewed as separate elements.<br />
<br />
Finally, the Declaration Diagram got some improvements for the DataPort available inside a system: The general Data Port (already available) was split into three nodes: Input, Output and InputOutput nodes. The initial creation tools where replaced by more complex ones with a selection wizard (thanks to the experience with the implementation creation tools) and looks quite nice. Still need to place the input/output ports at the correct place because they now can be mixed up.<br />
<br />
All in all, it was a week with some difficult moments, like the one when I got stuck in getting an element property - thanks Melanie for the help :) - but the design file is getting more and more complex with some nice features :)</div>
Anonymoushttp://www.blogger.com/profile/14653133332588297691noreply@blogger.com0tag:blogger.com,1999:blog-4827576046860576068.post-76138569467573030952012-10-09T08:11:00.002+02:002012-10-09T08:11:57.254+02:00Work in progress<div dir="ltr" style="text-align: left;" trbidi="on">
For some time now, the focus of the work is building up the design file. More and more elements can be observed and drawn in one of the three available diagrams: Package Diagram, Declaration Diagram and Implementation Diagram.<br />
<br />
Having started with a very simple, basic example, now the working example is the Cruise Control code found here. The trace of the project, what and when was developed, can be observed in the <a href="https://github.com/ObeoNetwork/AADL-Designer" target="_blank">git repo</a>.<br />
<br />
Now, going again to continue building the AADL design file...<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiYDJoWK90wP_3pW_EsUed-b196t2y_qrcXbSxSatY6GyB2drDXuJUT234LKPMowo280BXMAb_vZJsTnuj7pbBw7XMbIqM7G2Wgtuvclwd9-6jxa9zUjIrje9V0oAf-xgmHsd9TBGwIZK-t/s1600/designer_status_9oct.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="215" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiYDJoWK90wP_3pW_EsUed-b196t2y_qrcXbSxSatY6GyB2drDXuJUT234LKPMowo280BXMAb_vZJsTnuj7pbBw7XMbIqM7G2Wgtuvclwd9-6jxa9zUjIrje9V0oAf-xgmHsd9TBGwIZK-t/s400/designer_status_9oct.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Declaration Diagram view for the Cruise Control example</td></tr>
</tbody></table>
<br /></div>
Anonymoushttp://www.blogger.com/profile/14653133332588297691noreply@blogger.com0tag:blogger.com,1999:blog-4827576046860576068.post-33836055599199153422012-09-21T12:00:00.004+02:002012-09-21T21:11:10.982+02:00Preparing the AADL environment<div dir="ltr" style="text-align: left;" trbidi="on">
In order to develop the SoCiS Architecture Analysis and Design Language, Obeodesigner together with some tools must be available before working with the example.<br />
<br />
This post can also be downloaded as PDF from <a href="https://docs.google.com/open?id=0B0JaZFMBEyC-NFktRlFXaVBud0k" target="_blank">here</a>.<br />
<br />
<br />
<h2 style="text-align: left;">
<span style="font-size: large;">
1. Installing the required tools</span></h2>
<h3 style="text-align: left;">
1.1 Downloading and installing Obeo Designer</h3>
<div>
The graphical designer will be developed using Obeo Designer (Eclipse based). It can be downloaded <a href="http://www.obeodesigner.com/download" target="_blank">here</a> together with a trial license. This is the cornerstone tool for the next steps. After the download is finished, extract the archive and run <i style="font-weight: bold;">obeodesigner</i> to see that the tool is working fine.</div>
<div>
<br /></div>
<h3 style="text-align: left;">
1.2 Install Xtext 2.2.1</h3>
<div>
Start Obeo Designer and go to Help menu -> Install New Software -> Select Add. In the new dialog paste <a href="http://download.itemis.de/updates/releases/">http://download.itemis.de/updates/releases/</a> into the URL field and give the install a name (eg. Xtext). Scroll among the available items and select Xtext 2.2.1.</div>
<div>
<br /></div>
<div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgP_FuiJo5H10EsxUKxhzUH2lJ990LhTQ-Dvmu7u1uEvDivoljmrtE0U0JfE7-W-3pkTiWhmt3OjBAcOUQpirpHahpb1B9Q7H5FmWA8QRU2gahgSoylcbPrcDKdDYYBngW_rX14Pwh-gqS9/s1600/xtext.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgP_FuiJo5H10EsxUKxhzUH2lJ990LhTQ-Dvmu7u1uEvDivoljmrtE0U0JfE7-W-3pkTiWhmt3OjBAcOUQpirpHahpb1B9Q7H5FmWA8QRU2gahgSoylcbPrcDKdDYYBngW_rX14Pwh-gqS9/s400/xtext.png" width="383" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
In the next screen ("Install Details") select "Next", then accept the terms of license agreement and select "Finish". The install procedure should now start. Restart the environment in the end of the procedure.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<h3 style="text-align: left;">
1.3 Installing Git support</h3>
<div>
<span style="font-family: inherit;">This step is required in order to import the Osate sources. Go to the Help menu of Obeo Designer and select Install New Software. In the dialog window that appears select <b>Indigo </b>- <a href="http://download.eclipse.org/releases/indigo">http://download.eclipse.org/releases/indigo</a> and after the components list is loaded select from the <i>Collaboration </i>category <b>Eclipse EGit. </b>Click in the next two screens <i>"Next"</i>. After accepting the license agreement click <i>"Finish"</i> and accept Obeo Designer's proposal to restart.</span></div>
<div>
<br /></div>
<div>
<br /></div>
<h2 style="text-align: left;">
<span style="font-size: large;">
2. Importig the required projects</span></h2>
<h3 style="text-align: left;">
2.1 Import Osate 2 sources</h3>
<span style="font-family: inherit;">In Obeo Designer select <b>File </b>-> <b>Import</b>. In the newly opened dialog select from the <i>Git</i> category <b>"Projects from Git"</b> click <i>"Next"</i>. In the following screen select <i>URI </i>and click <i>"Next"</i>. Here provide the github link for the Osate 2 sources, </span><span style="line-height: 19.03333282470703px;"><b><a href="git://github.com/osate/osate2-core.git">git://github.com/osate/osate2-core.git</a>, </b>and click <i>"Next":</i></span><br />
<b style="background-color: white; font-family: sans-serif; font-size: 13px; line-height: 19.049999237060547px;"><br /></b>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi0am28aj3aS4Stm35PBuuhOBO2dLMiFME6-h2ijkIIuCJY9fhbgcX40apw_MtN6NiEn8SEvyaz3G9f4mc7i01qsgUIB5L7LH0uADvX5s_jrEvbVD2KyX0imIODhdDVzGcTZNyomTdjsG4v/s1600/git_link.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi0am28aj3aS4Stm35PBuuhOBO2dLMiFME6-h2ijkIIuCJY9fhbgcX40apw_MtN6NiEn8SEvyaz3G9f4mc7i01qsgUIB5L7LH0uADvX5s_jrEvbVD2KyX0imIODhdDVzGcTZNyomTdjsG4v/s400/git_link.png" width="382" /></a></div>
<br />
<span style="line-height: 19.03333282470703px;">In the next dialog select only the <i>develop </i>branch and click <i>"Next"</i>. The <i>develop</i> branch contains the most recent builds. Then select the destination folder for the files. If the path directs to your workspace, you can accept the default settings, otherwise change it to your workspace:</span><br />
<span style="background-color: white; font-family: sans-serif; font-size: 13px; line-height: 19.049999237060547px;"><br /></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgLHxUjgQE_70MF8CCNt9HYHGWIySit2kP4lNVA6IG7qGeBvKVF4qFlsGCmlFu7lQgPB-KDKX3PGkqRWKk8tk-xxaL_slHl4icrEYbQ0SU2A3kBQlO66avBvcvMDGH6qMGlngYO1F0tzQIw/s1600/git_dest.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgLHxUjgQE_70MF8CCNt9HYHGWIySit2kP4lNVA6IG7qGeBvKVF4qFlsGCmlFu7lQgPB-KDKX3PGkqRWKk8tk-xxaL_slHl4icrEYbQ0SU2A3kBQlO66avBvcvMDGH6qMGlngYO1F0tzQIw/s400/git_dest.png" width="381" /></a></div>
<br />
<span style="font-family: sans-serif;"><span style="line-height: 19.049999237060547px;"><br /></span></span>
<span style="font-family: sans-serif;"><span style="line-height: 19.049999237060547px;">Click "<i>Next</i>" and after the complete project list is loaded, accept the default settings and click again "<i>Next</i>". In the next, last dialog, select </span></span><span style="font-family: sans-serif; line-height: 19.049999237060547px;">- if they are not already selected - </span><span style="font-family: sans-serif; line-height: 19.049999237060547px;">all the projects and click "<i>Finish</i>". The workspace should look like in the next screenshot - be sure to be in a perspective where the "</span><i style="font-family: sans-serif; line-height: 19.049999237060547px;">PackageExplorer</i><span style="font-family: sans-serif; line-height: 19.049999237060547px;">"</span><i style="font-family: sans-serif; line-height: 19.049999237060547px;"> </i><span style="font-family: sans-serif; line-height: 19.049999237060547px;">window is visible (left side of the image)</span><span style="font-family: sans-serif; font-size: x-small; line-height: 19.049999237060547px;">:</span><br />
<span style="font-family: sans-serif; font-size: x-small;"><span style="line-height: 19.049999237060547px;"><br /></span></span>
<span style="font-family: sans-serif; font-size: x-small;"><span style="line-height: 19.049999237060547px;"><br /></span></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiYlvr4Jf76JPt9W-_X40x8mIPruQym9ghk_53RH53OJZrKQuTqaNBzm4KP5_js_Xui28eukMzH2CaZXmtqIW4qSKFOerZrydl4B6KzE0U9d2u2vWRW5BnL_ZWSuzDwHqEICa9AYAVj-ZB9/s1600/imported_osate_java_persp.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiYlvr4Jf76JPt9W-_X40x8mIPruQym9ghk_53RH53OJZrKQuTqaNBzm4KP5_js_Xui28eukMzH2CaZXmtqIW4qSKFOerZrydl4B6KzE0U9d2u2vWRW5BnL_ZWSuzDwHqEICa9AYAVj-ZB9/s640/imported_osate_java_persp.png" width="588" /></a></div>
<span style="font-family: sans-serif; font-size: x-small;"><span style="line-height: 19.049999237060547px;"><br /></span></span>
<span style="font-family: sans-serif; font-size: x-small;"><span style="line-height: 19.049999237060547px;"><br /></span></span>
<br />
<h3 style="text-align: left;">
2.2 Importing the AADL design</h3>
<div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<ul style="text-align: left;">
<li>Go to <b>File</b> -> <b>Import</b></li>
<li>select from the <i>Git </i>category <b>Import projects from Git</b></li>
<li>select <i>URI </i>and click "<i>Next</i>"</li>
<li>provide the Git repository link, <b><a href="git://github.com/ObeoNetwork/AADL-Designer.git">git://github.com/ObeoNetwork/AADL-Designer.git</a></b>, in the <i>URI</i> field and click "<i>Next</i>"</li>
</ul>
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjTbqV_cQhh4ER7rqSlk7lH2BitlMiNu5B7EFAaPJow6JoAb_aa_u0aoy-yhXV8B9JsLVDlqJVH7a6QjAGSl_ubiEcvmSyxcKRqpaZAqF36dGXTWpSm5uMXXhi9EIF7owP963l9x4C2j6rE/s1600/aadlgit.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="345" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjTbqV_cQhh4ER7rqSlk7lH2BitlMiNu5B7EFAaPJow6JoAb_aa_u0aoy-yhXV8B9JsLVDlqJVH7a6QjAGSl_ubiEcvmSyxcKRqpaZAqF36dGXTWpSm5uMXXhi9EIF7owP963l9x4C2j6rE/s400/aadlgit.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<ul>
<li style="text-align: left;">Select branch <b>master</b> (the only one available) and click "<i>Next</i>"</li>
<li style="text-align: left;">In the following dialog provide the destination folder for the sources. If the folder is already a folder in the workspace, the default settings can be accepted, otherwise select a folder inside the workspace and click "<i>Next</i>"</li>
<li style="text-align: left;">Wait for the list to be populated, and click "i"</li>
<li style="text-align: left;">In the <i>Import Projects</i> dialog select only the <b>org.obeonetwork.dsl.aadl.design </b>and click "i". After this step, the project is imported into the workspace and visible within the <i>PackageExplorer.</i></li>
</ul>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg-KiLelAaPLK1ZVo3I5lZqb8UJ0D0xtzedgwJDvJYyzWJpKJJjEk0fZKTqjLCgR5tJGEB79fPILw8_9GBlBhex4p6HH3TOAAZZg2ysxl1fUgrndw0A-nbq4ux2DLK_OJxRpFh7Orj0mnfi/s1600/import_aadl_project.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="342" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg-KiLelAaPLK1ZVo3I5lZqb8UJ0D0xtzedgwJDvJYyzWJpKJJjEk0fZKTqjLCgR5tJGEB79fPILw8_9GBlBhex4p6HH3TOAAZZg2ysxl1fUgrndw0A-nbq4ux2DLK_OJxRpFh7Orj0mnfi/s400/import_aadl_project.png" width="400" /></a></div>
<span style="font-family: sans-serif; font-size: x-small;"><span style="line-height: 19.049999237060547px;"><br /></span></span>
<br />
<h3 style="text-align: left;">
2.3 Launch a new Eclipse Application</h3>
</div>
<div>
<span style="line-height: 19.049999237060547px;">To launch a new eclipse application click on <b>Run </b>-> <b>Run Configurations</b>. Double click on "<b>Eclipse Application</b>" (or right click on it and select "<i>New</i>") to create a "New_configuration". It be renamed by your desire, eg. "AADL_Example". Make sure that in the "<i>Main</i>"<i> </i>tab, in the "<i>Program run</i>" section, the <b>fr.obeo.dsl.designer.architect.product</b> is selected.</span></div>
<div>
<span style="line-height: 19.049999237060547px;"><br /></span></div>
<div>
<span style="line-height: 19.049999237060547px;">In the "<i>Arguments</i>" tab provide the VM arguments as follows:</span></div>
<div style="text-align: center;">
<span style="color: lime; font-family: Courier New, Courier, monospace; font-size: large; line-height: 19.049999237060547px;"><b>-Xms256m -Xmx1024m -XX:MaxPermSize=256m</b></span></div>
<div style="text-align: center;">
<span style="line-height: 19.049999237060547px;"><b><br /></b></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEioda_nvwQyBUZOqhyphenhyphenyxQ63_eV2FuFYnn-Juxjzql6iF0RclL2D0okI4yyqBuOoo_AOIVtizWBijTicKBJiDEgaG2a3Js45LlyytYJSj_5qcDtcTfZQg2JjlOiBxQ-bBVFsWrBccYDJoECM/s1600/eclipse_new_config.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="350" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEioda_nvwQyBUZOqhyphenhyphenyxQ63_eV2FuFYnn-Juxjzql6iF0RclL2D0okI4yyqBuOoo_AOIVtizWBijTicKBJiDEgaG2a3Js45LlyytYJSj_5qcDtcTfZQg2JjlOiBxQ-bBVFsWrBccYDJoECM/s400/eclipse_new_config.png" width="400" /></a></div>
<div style="text-align: center;">
<br /></div>
<div style="text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div style="text-align: center;">
<span style="line-height: 19.049999237060547px;"><b><br /></b></span></div>
<div style="text-align: left;">
<span style="line-height: 19.049999237060547px;">After the above set up is prepared, click "<i>Run</i>" to start the new eclipse instance.</span></div>
<div style="text-align: left;">
<span style="line-height: 19.049999237060547px;"><br /></span></div>
<h3 style="text-align: left;">
2.4 Importing the AADL Example</h3>
<div>
<span style="line-height: 19.049999237060547px;"><span style="font-size: large;"><br /></span></span></div>
<div>
<span style="line-height: 19.049999237060547px;">This procedure is very similar to importing the AADL design. make sure to select a destination folder inside your workspace (eg. "aadl_example")The major difference is during the "<i>Importing projects</i>" step, when <b>o</b></span><b>rg.obeonetwork.dsl.aadl.control_processing.example </b> must be selected (instead of <i>org.obeonetwork.dsl.aadl.design</i>):</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_hmRW-qyMvAYb3qw1KtwQE9uKN3lyNGpZUw1ruRlZjQnwHm5oNeM7VS_HbK4d0uIKUbN17cS8I66iABD5kgYdnCK8NhWBiSaElQrI8_-UxBWav9BXqr7pWZL5yr6fgz8UFc9gGIW7nH2Q/s1600/aadl_example.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_hmRW-qyMvAYb3qw1KtwQE9uKN3lyNGpZUw1ruRlZjQnwHm5oNeM7VS_HbK4d0uIKUbN17cS8I66iABD5kgYdnCK8NhWBiSaElQrI8_-UxBWav9BXqr7pWZL5yr6fgz8UFc9gGIW7nH2Q/s400/aadl_example.png" width="381" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
After the import procedure is finished, the workspace must look like this:</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhJHGj24mKbn7iL8KGCfq-X-Xsqvv-o7xaq80-oirxkL_x6MRS3fdwo_S2D5rLQstjinmw0R03uGJZKIvc4bjrTcOZ8QlLGxm6C-7poq8fMIfkgpCfeiCh8vVovtKF5Fui29S5Froukt-8d/s1600/aadl_example_workspace.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="301" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhJHGj24mKbn7iL8KGCfq-X-Xsqvv-o7xaq80-oirxkL_x6MRS3fdwo_S2D5rLQstjinmw0R03uGJZKIvc4bjrTcOZ8QlLGxm6C-7poq8fMIfkgpCfeiCh8vVovtKF5Fui29S5Froukt-8d/s400/aadl_example_workspace.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div>
<br /></div>
<h3 style="text-align: left;">
2.5 Browsing the <span style="line-height: 19.049999237060547px;"><b>o</b></span><b>rg.obeonetwork.dsl.aadl.control_processing.example</b></h3>
<div>
Opening the "<i>control_processing.aadl</i>" will open the file containing the aadl code. It contains a package, a system together with a basic system implementation, two data type declarations and one process. It is a basic example in order to start the development of the AADL modeler.</div>
<div>
<br /></div>
<div>
The "<i>instances</i>" folder contains an Osate 2 instance of the AADL code example. An instance of the code is required in order to create a diagram. It can be easily done by right clicking inside the <i>System Implementation </i>definition - when the "control_processing.aadl" file is open - and then selecting <i>Instantiate System.</i></div>
<div style="text-align: left;">
<span style="line-height: 19.049999237060547px;"><b><br /></b></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi3Lad0yxK_rFkwo4hzuTEipsc6dQxIblCHcOlq5pEmMX5SAnyB8gPKMIKmjQ8vIqB20OE7-kAuy0pt_kTenjo0E72BsdvYj3zxilaoGo1TBdrDTsKGvGKTf3rqSrYJQDICCn59SmgMrCPj/s1600/representation_aird.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" height="112" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi3Lad0yxK_rFkwo4hzuTEipsc6dQxIblCHcOlq5pEmMX5SAnyB8gPKMIKmjQ8vIqB20OE7-kAuy0pt_kTenjo0E72BsdvYj3zxilaoGo1TBdrDTsKGvGKTf3rqSrYJQDICCn59SmgMrCPj/s200/representation_aird.png" width="200" /></a></div>
<div style="text-align: left;">
<span style="line-height: 19.049999237060547px;">In order to view the existing code with the defined AADL Designer, open the <i>"representation.aird</i>" file and navigate the tree until the final node, "<i>test_diagram</i>"</span></div>
<div style="text-align: left;">
<span style="line-height: 19.049999237060547px;"><br /></span></div>
<div style="text-align: left;">
<span style="line-height: 19.049999237060547px;">Double click on "<i>test_diagram</i>" will open the current representation. The nodes can be freely moved on the canvas:</span></div>
<div style="text-align: left;">
<span style="line-height: 19.049999237060547px;"><br /></span></div>
<div style="text-align: left;">
<span style="line-height: 19.049999237060547px;"><br /></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjx7SAr84yG33kf0fgRvhRkq9imx1tcXsEHN4GD8PNgW1g1q-LhGs0raD0XVQ7bUiQhchicNJWHfvfeDkptz9kGS59ssJcW6cp1-s5FqShOkbJVUyv0Z4O89gb6UVRoouzx4RHlaX8uJGPD/s1600/test_diagram.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="145" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjx7SAr84yG33kf0fgRvhRkq9imx1tcXsEHN4GD8PNgW1g1q-LhGs0raD0XVQ7bUiQhchicNJWHfvfeDkptz9kGS59ssJcW6cp1-s5FqShOkbJVUyv0Z4O89gb6UVRoouzx4RHlaX8uJGPD/s400/test_diagram.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<i><b>Note: </b>The status of the screenshots and examples is the date of publishing this post. Changes in the example or the designer can occur, as it is under development!</i></div>
<div style="text-align: left;">
<span style="line-height: 19.049999237060547px;"><br /></span></div>
</div>
Anonymoushttp://www.blogger.com/profile/14653133332588297691noreply@blogger.com0tag:blogger.com,1999:blog-4827576046860576068.post-83129028988216829732012-09-04T13:09:00.002+02:002012-09-12T12:20:14.066+02:00ADELE Example<div dir="ltr" style="text-align: left;" trbidi="on">
Before specifying the requirements for the SOCIS AADL designer, I developed a simple demo using the existing TOPCASED AADL Designer, named ADELE. The example is very basic and is based on the specification presented in <a href="http://www.sei.cmu.edu/reports/06tn011.pdf" target="_blank">Table 4-2 of "AADL: An Introduction</a>". The model is not complete but it gives an overview on how to work with the tool, how to create and connect elements. The final purpose is to have AADL code automaticaly generated.<br />
<br />
The TOPCASED model files can be downloaded <a href="https://docs.google.com/open?id=0B0JaZFMBEyC-Y21IamhxM3lET2c" target="_blank">here</a>. The archive contains 3 files:<br />
<br />
<ul style="text-align: left;">
<li><b>demo_control_processing.aadl</b> contains the generated AADL Code</li>
<li><b>demo_control_processing.adele</b> is the XML model representation</li>
<li><b>demo_control_processing.adeledi</b> contains the graphical model</li>
</ul>
<br />
<br />
Summary of the example:<br />
<ol style="text-align: left;">
<li>Goal: What does the model contain?</li>
<li>ADELE Project and Diagram set up</li>
<li>Data type declaration</li>
<li>Thread declaration</li>
<li>Thread implementation</li>
<li>Process declaration & implementation</li>
<li>AADL code generation</li>
<li>No .aadl file is generated</li>
</ol>
<br />
<h3 style="text-align: left;">
1. Goal: What does the model contain?</h3>
<br />
As in the AADL Introduction paper, a process type with the component type name "control_processing" will be defined. The <b><i>features</i> </b>of the process are an<b> in data port </b>of type <i>sensor_data </i>and an <b>out data port</b> of type <i>command_data.</i><br />
<br />
For this example two <i style="font-weight: bold;">thread types</i>,<i style="font-weight: bold;"> </i><i>"</i>control_in<i>" </i>and "control_out", are declared. The implementation of the thread types is "control_in.<i>input_processing_01</i>" respectively "control_out.<i>output_processing_01</i>".<br />
<br />
The above thread declarations and implementations are required for the "control_processing" process implementation. The example implementation will be named "speed_control" and contains two <b><i>thread</i> </b><b style="font-style: italic;">subcomponents </b>which reference the previously defined thread implementations.<br />
<br />
In order to achieve this, we will first define the data types. Next the two thread types will be declared and their implementations designed. Now we are ready to declare the process. Last step is to implement it. When we are so far, code generation is straight forward.<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh04f9FSckTy10OOvVaoq1I12ADpbXRmywZNiYH0YN38yvKo7FqCqGHGbAx_Sfjx4GhkgTXQyio2mYLBMmETF5ZfDYoafjfszggOm0hxMY9iaP_FJjjfUxoIbDsxJxmK5XO8trmvRbKgBsP/s1600/table.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="225" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh04f9FSckTy10OOvVaoq1I12ADpbXRmywZNiYH0YN38yvKo7FqCqGHGbAx_Sfjx4GhkgTXQyio2mYLBMmETF5ZfDYoafjfszggOm0hxMY9iaP_FJjjfUxoIbDsxJxmK5XO8trmvRbKgBsP/s400/table.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">This is how the final model should look like. <a href="http://www.sei.cmu.edu/reports/06tn011.pdf" target="_blank">[Source Table 4-2: A Simplified Example of an AADL Specification]</a></td></tr>
</tbody></table>
<h3>
</h3>
<h3>
2. ADELE Project and Diagram set up</h3>
<br />
Start Topcased in your preferred way: double click on the launcher or from terminal (if working under GNU/Linux). I prefer starting Topcased from terminal because in this way I can see any exceptions that occur.<br />
<br />
Create a new "ADELE Project" via "File" -> "New" -> "Other" and then search for "ADELE Project". In the following window name the project "demo" and select "Finish". If the selected perspective is not the "ADELE Perspective" you will be prompted to enable it. Please do so.<br />
<br />
You should see the following screen:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_wUHZFh1ObVS7-e3tUYdxTPp9RdoS6ioa6-Txpkd1TT0F_KsR0dnXUPkqcU0IjukLm0oYVKbXc-yYGmGzTvRzGvnxtjmx1KukdBe4sSzsdnh9oafHvpcshsZ8ZvrTMfL6d8A8f9I7CWX_/s1600/window1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="285" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_wUHZFh1ObVS7-e3tUYdxTPp9RdoS6ioa6-Txpkd1TT0F_KsR0dnXUPkqcU0IjukLm0oYVKbXc-yYGmGzTvRzGvnxtjmx1KukdBe4sSzsdnh9oafHvpcshsZ8ZvrTMfL6d8A8f9I7CWX_/s400/window1.png" width="400" /></a></div>
<br />
Now an ADELE Diagram needs to be created. Righ click on the "demo" inside the "Project Explorer". Select "New" and then "ADELE Diagram". In the following dialog provide the information as follows - be careful to select "Package" in the "Diagram" field:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi5sAgkJJB3GQdDpnSoI0VcJb6IVROxRc8dAmqJydiWi-riBFxz0rN-ElQ13k2hXAtymNm5YUeA2qVEIDE1F_kyCxY_59KdEdRqSCmC8lkXAXTyajowImJwTnly4jUqoKvy52IXtA1rIv8j/s1600/adele_diagram.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi5sAgkJJB3GQdDpnSoI0VcJb6IVROxRc8dAmqJydiWi-riBFxz0rN-ElQ13k2hXAtymNm5YUeA2qVEIDE1F_kyCxY_59KdEdRqSCmC8lkXAXTyajowImJwTnly4jUqoKvy52IXtA1rIv8j/s640/adele_diagram.png" width="492" /></a></div>
<br />
Inside the "demo" project we previously created, a new folder "demo_ctrl_processing" and two files "demo_ctrl_processing" with the extensions .adele respectively .adeledi are created. Open the "demo_ctrl_processing.adeledi" (by double click on it) and we can move on.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgP3jROcPq8EzFuH_fa1KiZpaXb5CZpPtlLe-dqeXrWiCSDFVfs93xMMswSTzhxc8zDm2tOiGnRFcDYPu2FLmZxfv6brdSMm2kiXRl-ls-G4oR2FGsruYOYes-9zJ3S3-xcFt5qHsjus3Az/s1600/final_prep.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="217" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgP3jROcPq8EzFuH_fa1KiZpaXb5CZpPtlLe-dqeXrWiCSDFVfs93xMMswSTzhxc8zDm2tOiGnRFcDYPu2FLmZxfv6brdSMm2kiXRl-ls-G4oR2FGsruYOYes-9zJ3S3-xcFt5qHsjus3Az/s400/final_prep.png" width="400" /></a></div>
<br />
<br />
<h3 style="text-align: left;">
</h3>
<h3 style="text-align: left;">
3. Data type declaration</h3>
<div>
<br />
To declare the two data types we need, click on the "Data" component and then click somewhere in the available canvas. <b>Please be careful, as drag-and-drop of the components on the canvas does not work! </b>This will create a data declaration. Name it "sensor_data" and repeat the steps to declare another data type named "command_data". The created objects can be moved after declaration around the canvas by drag-and-drop.</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgVMyTES587zho2xALwQ6DlP4yjWVr0Sbz9Rp6B2vwnNNT83EbgRUIsTwRIwo5qTjXdNiDfVjXGgYzxbqqzFVtZOEk7ZHKlaNfChIEAcumUgJ2tYWhSbmDfnjgarX12C5QNpgqWt5pqqFzW/s1600/data_type_definition.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="217" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgVMyTES587zho2xALwQ6DlP4yjWVr0Sbz9Rp6B2vwnNNT83EbgRUIsTwRIwo5qTjXdNiDfVjXGgYzxbqqzFVtZOEk7ZHKlaNfChIEAcumUgJ2tYWhSbmDfnjgarX12C5QNpgqWt5pqqFzW/s400/data_type_definition.png" width="400" /></a></div>
<div>
<br /></div>
<h3 style="text-align: left;">
</h3>
<div>
<br /></div>
<h3 style="text-align: left;">
4. Thread declaration</h3>
<div>
<br />
The process of declaring threads is very similar to the "Data type" declaration that we have done earlier. Now select the "Thread" tool inside the "Components" list and then click on a free are in the canvas to the right. Name the thread "control_in". Repeat the process and create the declaration of a second thread named "control_in". The canvas should look like this now (I have moved around the data type declarations):<br />
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg5RgrB-j-CC-ujgz_y6Pt7lCVKhmqPENdjeWMuIKb579Axs3YHgyDHCG5XBClasRwmos3I1J16XeFtSGjKDO3aLBxby6pcQfX7UyWfRXIs_6j3S8FBFnQ1aYY60CbfSyFSUgSS_PVllBeh/s1600/thread_declare.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="217" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg5RgrB-j-CC-ujgz_y6Pt7lCVKhmqPENdjeWMuIKb579Axs3YHgyDHCG5XBClasRwmos3I1J16XeFtSGjKDO3aLBxby6pcQfX7UyWfRXIs_6j3S8FBFnQ1aYY60CbfSyFSUgSS_PVllBeh/s400/thread_declare.png" width="400" /></a></div>
<div>
<br /></div>
<h3 style="text-align: left;">
</h3>
<h3 style="text-align: left;">
5. Thread implementation</h3>
<div>
<br /></div>
<div>
This step of defining the thread implementation is not as intuitive as the thread declaration and might take some time to figure it out. This is done the following way: the "Thread" component tool is selected (as in the previous step) and then <i>click inside of a thread declaration </i>(for the thread declaration we have clicked on some empty place on the canvas). The thread implementation instance appears inside the thread declaration and the thread declaration name (the string before the ".") is taken over from the thread declaration. Complete the implementation name with "input_processing_01" respectively "output_processing_01"</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhcFGFLh1dMJpuuQE-K54qOfBSmtfQx_MLpS3vFak0i4IW1rc4AxaUI_ZHq0Z3z7Pe9_Xyix2Ek-DHlZGz2ZoF64wDhGiN4YSrQA5xybhPfdkNjEKlWplu78KKk5V5eRfsfR7yoozVZnJ6r/s1600/thread_implementation.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="136" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhcFGFLh1dMJpuuQE-K54qOfBSmtfQx_MLpS3vFak0i4IW1rc4AxaUI_ZHq0Z3z7Pe9_Xyix2Ek-DHlZGz2ZoF64wDhGiN4YSrQA5xybhPfdkNjEKlWplu78KKk5V5eRfsfR7yoozVZnJ6r/s400/thread_implementation.png" width="400" /></a></div>
<div>
<br />
<br />
<br /></div>
<h3 style="text-align: left;">
6. Process declaration & implementation</h3>
<h4 style="text-align: left;">
</h4>
<h4 style="text-align: left;">
Process declaration</h4>
<div>
In this step we will define the process named "control_processing" containing 2 <b>features</b> <i>input </i>and <i>output. </i>They will be referencing the data types declared at step 3. <i>input</i> will reference "sensor_data" while <i>output </i>will reference "command_data".</div>
<div>
<br /></div>
<div>
To declare a process select the <i>"</i>Process<i>" </i>component tool and then click on a free space on the canvas. Name the newly created process "control_processing". Next we need to define the two data port futures for the process. For this inside the "Features" palette select the "<b>In Data Port</b>"<b> </b>and then click on the representation of the process. Name the feature "input". Now the feature is created, but it is not connected to the <i>sensor_data</i> type earlier defined. To do this, in the "ODS" section of the workspace (lower part by default) select "Classifier" and then click the button available in the right side named "<i>Choose a classifier</i>". This will open a dialog were you have the possibility to select the correct data type.</div>
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjqE8XsiU9zsAvVShbkIAW7DYjjMcwPB8Q1n80jwnERzEuhsAgNj28J0YoGzUQTF_xMAEvyXFDZG4gvVyH4j57wRR0NUTSNJNuwSVRjKvyJq2MV24X86ZoXpbjUbej21tVtTbAn35jXz2Px/s1600/input.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjqE8XsiU9zsAvVShbkIAW7DYjjMcwPB8Q1n80jwnERzEuhsAgNj28J0YoGzUQTF_xMAEvyXFDZG4gvVyH4j57wRR0NUTSNJNuwSVRjKvyJq2MV24X86ZoXpbjUbej21tVtTbAn35jXz2Px/s1600/input.png" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Step 1: define a "In Data Port" feature for the process.</td></tr>
</tbody></table>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh3jB1TPu9aED93Dg5J7Eb4ZaMGVrZ5EhxH-dhxb-4x7AwnwV-4lA6jZSKJoLOYUSuBO6GWHM9fEgIJJGKyi6G8UmOvDleFPGXcTnwWDpQ4oSDfmFeu7bdMt5jcHorRtzH3ZFNstwE1Lnks/s1600/classifier.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="96" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh3jB1TPu9aED93Dg5J7Eb4ZaMGVrZ5EhxH-dhxb-4x7AwnwV-4lA6jZSKJoLOYUSuBO6GWHM9fEgIJJGKyi6G8UmOvDleFPGXcTnwWDpQ4oSDfmFeu7bdMt5jcHorRtzH3ZFNstwE1Lnks/s400/classifier.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Step 2: select in the ODS section the "Classifier" and <br />
click in the right side on the "Choose a classifier"</td></tr>
</tbody></table>
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhlF4PoRuZ7nwXCCmNVuqzhbtq2xvcKGKtRxB66nOMMdAcU980EiPcyXWc8b7CmnPxeoBHGU5jC-yUBCuQMVIElRMT3cRmW6vQc2EpVKC-4PGQuwPIiO8Javj-lqm7UxafRY2LmyfE39nBF/s1600/sensor-data_select.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="142" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhlF4PoRuZ7nwXCCmNVuqzhbtq2xvcKGKtRxB66nOMMdAcU980EiPcyXWc8b7CmnPxeoBHGU5jC-yUBCuQMVIElRMT3cRmW6vQc2EpVKC-4PGQuwPIiO8Javj-lqm7UxafRY2LmyfE39nBF/s400/sensor-data_select.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Step 3: in the "Classifier explorator" dialog select the <i>sensor_data</i> type declaration</td></tr>
</tbody></table>
<br />
The same steps need to be repeated in order to create an "<b>Out data port</b>". If the <b>out data port </b>is not directly visible inside the <i>Features </i> palette, then please right click on the small arrow left to the in data port. This will extend the node and the desired data port will become visible:<br />
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEin2fKSZquhCPI24offKiHPs1dY6LTaEev3CMiCczcp8JuqxUEsLNR3BPWMdztHEBqSDMFQenSnk8Ty6K9jSJJ5z5VNIOIvfx095F5F_tuJtEYcsA15buWJ1XxZAtE1hD7Z7shc0pux16DI/s1600/out_data_port.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEin2fKSZquhCPI24offKiHPs1dY6LTaEev3CMiCczcp8JuqxUEsLNR3BPWMdztHEBqSDMFQenSnk8Ty6K9jSJJ5z5VNIOIvfx095F5F_tuJtEYcsA15buWJ1XxZAtE1hD7Z7shc0pux16DI/s1600/out_data_port.png" /></a></div>
<div>
<br />
<h4 style="text-align: left;">
Process implementation</h4>
<div>
The implementation of the process is identical to the thread implementation described at step 5: Select the "Process" from the palette and clicked inside the declaration of the "control_processing" process. Name the implementation <i>control_processing.speed_control:</i></div>
<div>
<i><br /></i></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQBlIWtjLmG656RcLNzxF6osUEcVb7Yxk1d_M0wffBicN6Y_s4qLOBDUC_RhBkMCIYWaciHw-1ILsjNjzNvfE5vrtYtDkw1qGhtRQf_r1jEToW1nOHF-yiuu7wjKXPbU5LsS6xANtlN8fN/s1600/control_proc_impl.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="119" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQBlIWtjLmG656RcLNzxF6osUEcVb7Yxk1d_M0wffBicN6Y_s4qLOBDUC_RhBkMCIYWaciHw-1ILsjNjzNvfE5vrtYtDkw1qGhtRQf_r1jEToW1nOHF-yiuu7wjKXPbU5LsS6xANtlN8fN/s320/control_proc_impl.png" width="320" /></a></div>
<div>
<i><br /></i></div>
<div>
Next, the two <i>thread </i><b>subcomponents</b> need to be defined: "control_input" referencing the "control_in.input_processing_01" implementation and "control_output" referencing the "control_out.output_processing_01" implementation. This step is very simple once know the workflow of how to do it. It took me some time to figure this out, but afterwards everything went smoothly. By double clicking on the <u>"control_processing.speed_control"</u> implementation, the following dialog is presented:</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi7aJBU55mdqGc3I2I-3w2ueRh7WEcLQAKmSTXBv_EWYIGer23l_IoKTa_nJpAsMKvRvyZzvEoiKD8UCJjmBKGBs09gmlLMalImwB2DWcCymevihVmQbuesBYbBw8Cz5iM5OUa72IAocUgH/s1600/process_impl_dialog1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="377" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi7aJBU55mdqGc3I2I-3w2ueRh7WEcLQAKmSTXBv_EWYIGer23l_IoKTa_nJpAsMKvRvyZzvEoiKD8UCJjmBKGBs09gmlLMalImwB2DWcCymevihVmQbuesBYbBw8Cz5iM5OUa72IAocUgH/s400/process_impl_dialog1.png" width="400" /></a></div>
<div>
<br /></div>
<div>
The user can select either to "Create Behavior Annex Editor diagram" or "Create Process diagram". For this step, the "Create Process diagram" must be chosen. This will open a new canvas containing the in/out ports that are defined in the process declaration - our case "input" and "output". This is a new layer which is hierarchically one level below the declarations and implementations we previously defined. It can be imagined to be "inside" the process <i>speed_control </i>implementation. On the top margin of the canvas the current working level can be observed:</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj37aQuCG41gZe9BNHE7fedkwVGa_HODbHv9MkgtE4f5hG2O36CkLaRo6g27lWL4BpCIkGw0_HyAm4MGH3zqOaHhnUoDlFrKyJEzbLG_J9-iuQn8uEI0qcQvtKhwkH5WXhd4idSRGrNPaCU/s1600/new_canvas.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="87" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj37aQuCG41gZe9BNHE7fedkwVGa_HODbHv9MkgtE4f5hG2O36CkLaRo6g27lWL4BpCIkGw0_HyAm4MGH3zqOaHhnUoDlFrKyJEzbLG_J9-iuQn8uEI0qcQvtKhwkH5WXhd4idSRGrNPaCU/s400/new_canvas.png" width="400" /></a></div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhuor_BHN8LkPyXCma7hwKjn73WA_tzMGKEmCvqHWFagsR2bO00_eifE3EV151mi5RQQV5O85CN-ktEDReTsLalhl-JxfAYO5FewUPArcUMMvwiVVX9-vE6XLW61vBJQCmYtt_CL_Iqu-5U/s1600/nav_buttons.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhuor_BHN8LkPyXCma7hwKjn73WA_tzMGKEmCvqHWFagsR2bO00_eifE3EV151mi5RQQV5O85CN-ktEDReTsLalhl-JxfAYO5FewUPArcUMMvwiVVX9-vE6XLW61vBJQCmYtt_CL_Iqu-5U/s1600/nav_buttons.png" /></a></div>
<div>
To navigate between these two layers the toolbar buttons to the right can be used. To go to the higher level use the "up arrow". To open the speed control implementation double click on it's block on the top level. A small green arrow in the top-right corner of the implementation box indicates the presence of a lower level:</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjkr1nflNn7b-zzcDMjEQxbYT_DNlQ9NS5zv1rRvlu-1O1DujEjeGwFXC0XhMve9m4VoNPPskPkB8R_3Z5l1IjY26wf3S_PzAZrPSL-AW5cgqledwafm097xKpKEf7f5NLQyV1alX480wzt/s1600/green_arrow.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="117" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjkr1nflNn7b-zzcDMjEQxbYT_DNlQ9NS5zv1rRvlu-1O1DujEjeGwFXC0XhMve9m4VoNPPskPkB8R_3Z5l1IjY26wf3S_PzAZrPSL-AW5cgqledwafm097xKpKEf7f5NLQyV1alX480wzt/s320/green_arrow.png" width="320" /></a></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
Having the <i>Process Diagram</i> defined, we need to add the thread sub-components. In order to do this, we need to navigate inside the <u>control_processing.speed_control</u> implementation (double click). Here add two thread instances by selecting the <b>Thread </b>component and clicking on the canvas. Name one of them "<i>control_input</i>" and the other one "<i>control_output</i>". Next they need to be connected to the thread implementations <i>control_in.input_processing_01 </i>respectively to <i>control_out.output_processing_01</i>. To do this, click on one of the newly created threads. We will use for the example the <i>control_output</i><b style="font-style: italic;"> </b>thread declaration. Select in the "ODS" section of the workspace (lower part by default) the <i style="font-weight: bold;">Classifier </i>node. In the right window then click on the button "<u>Choose a classifier</u>" and in the presented dialog choose the<i> demo_ctrl_processing::control_out.output_processing_01 </i>classifier. Your screen should look like this:<br />
<br /></div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEizGuyMQq-UbfzV9rAxK0jn8Rri6yhlvx_x42Sxj3BdMwxmj6tih8f0xdPDFYcnPW8WbhmBBaIrMD6kie5C1_CmtAi4cvO_I36cLw6JZoZ1dK9FfYhL7etWFHhuM0XMPxFp1IJ1DaxNbf2e/s1600/selecting_output_classifier.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="130" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEizGuyMQq-UbfzV9rAxK0jn8Rri6yhlvx_x42Sxj3BdMwxmj6tih8f0xdPDFYcnPW8WbhmBBaIrMD6kie5C1_CmtAi4cvO_I36cLw6JZoZ1dK9FfYhL7etWFHhuM0XMPxFp1IJ1DaxNbf2e/s400/selecting_output_classifier.png" width="400" /></a></div>
<div>
<br /></div>
<div>
<br />
As a last step before generating code, repeat the process in order to connect the "<i>control_input</i>" thread to <i>demo_ctrl_processing::control_in.input_processing_01. </i>This will end the definition of our first AADL model. We can view the top level:<br />
<br /></div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjPnCVQdjNK1Rmi6zIgSAGioT3CsD4cqUgBNNqQJJDKi9KaM2NKvFJnh2AVABY5TPCTwah7weSHi3q8IrnmB8s3b-myishMklO30qQMibdgItFqvW6JyuO_cHfnZefdxcGyzZwrLQvqL7K4/s1600/final_model.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="226" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjPnCVQdjNK1Rmi6zIgSAGioT3CsD4cqUgBNNqQJJDKi9KaM2NKvFJnh2AVABY5TPCTwah7weSHi3q8IrnmB8s3b-myishMklO30qQMibdgItFqvW6JyuO_cHfnZefdxcGyzZwrLQvqL7K4/s400/final_model.png" width="400" /></a></div>
<div>
<br /></div>
<h3 style="text-align: left;">
</h3>
<h3 style="text-align: left;">
</h3>
<div>
<br /></div>
<h3 style="text-align: left;">
7. AADL code generation</h3>
<div>
<br /></div>
<div>
Having the difficult jobs behind us, we can invoke the code generator. For this, right click on the "<i>demo_ctrl_processing.adeledi</i>" (or .adele) file in the <i>Project Explorer</i> and select "<i>ADELE</i>" and from the submenu click on "<i>generate aadl code</i>". You can keep in mind, that this is not the only way to start the code generation.</div>
<div>
<br /></div>
<div>
A new file named "<i>demo_ctrl_processing.aadl</i>" can be observed in the project explorer. If no file is generated, please look at section 8.<br />
<br /></div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiTKnKB1dcgmP3o8zNMIZHlbow97Eqe3iT2UFqJk-PKRH4ONhZ8hqZW8g-KrXx9v-k9sgbh_Wd8ssUOK_VW-qKVR4qYGQVNa0kE91Mq0bv4k1f33YayrPmUH9JCrbTB0hc-gNpJVZR4o-5l/s1600/aadl_file.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="198" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiTKnKB1dcgmP3o8zNMIZHlbow97Eqe3iT2UFqJk-PKRH4ONhZ8hqZW8g-KrXx9v-k9sgbh_Wd8ssUOK_VW-qKVR4qYGQVNa0kE91Mq0bv4k1f33YayrPmUH9JCrbTB0hc-gNpJVZR4o-5l/s320/aadl_file.png" width="320" /></a></div>
<div>
<br />
<br /></div>
<div>
Having a look over the generated code (the file can be opened by double click), it can be noticed that it is similar to the one presented in <a href="http://www.sei.cmu.edu/reports/06tn011.pdf" target="_blank">Table4-2</a> (in our demo model the comments are missing):<br />
<br /></div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjE4amHd2SZjzuN1_hwgmeG_b6YqN4OqeCTVvINIcLP6qeSsn2yJmWLTvOobg8JLqz9xEiXkxXFDVOVFhV0GFhKBk9JiO3G3yD-wnkDzJvZC6w2TknHum61W-BAfcW4exzuAyYNURMDKnFX/s1600/gen_code.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="298" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjE4amHd2SZjzuN1_hwgmeG_b6YqN4OqeCTVvINIcLP6qeSsn2yJmWLTvOobg8JLqz9xEiXkxXFDVOVFhV0GFhKBk9JiO3G3yD-wnkDzJvZC6w2TknHum61W-BAfcW4exzuAyYNURMDKnFX/s400/gen_code.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<h3 style="text-align: left;">
8. No .aadl file is generated</h3>
<div>
<br /></div>
<div>
In my situation, after invoking the code generator as described in step 7, no code was generated and I could observe the following error in the console where TOPCASED is started:</div>
<div>
<br /></div>
<div style="background-color: black;">
<div>
<div>
<div>
<span style="background-color: black; color: lime;">java.io.IOException: Cannot run program "/home/TOPCASED/Topcased-5.2.0/plugins/org.topcased.adele.admin_2.6.0.201204031215/usr/LMP/bin.pclinux/sbprolog" (in directory "/home/TOPCASED/Topcased-5.2.0/plugins/org.topcased.adele.admin_2.6.0.201204031215/usr/LMP/sbprolog"): error=13, Permission denied</span></div>
<div>
<span style="background-color: black; color: lime;"><span class="Apple-tab-span" style="white-space: pre;"> </span>at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029)</span></div>
<div>
<span style="background-color: black; color: lime;"><span class="Apple-tab-span" style="white-space: pre;"> </span>at java.lang.Runtime.exec(Runtime.java:615)</span></div>
<div>
<span style="background-color: black; color: lime;"><span class="Apple-tab-span" style="white-space: pre;"> </span>at org.topcased.adele.tools.prolog.actions.PrologExtractionAction.launchAADLGeneration(PrologExtractionAction.java:1057)</span></div>
<div>
<span style="background-color: black; color: lime;"><span class="Apple-tab-span" style="white-space: pre;"> </span>at org.topcased.adele.tools.prolog.actions.PrologExtractionAction.createPrologFiles(PrologExtractionAction.java:315)</span></div>
<div>
<span style="background-color: black; color: lime;"><span class="Apple-tab-span" style="white-space: pre;"> </span>at org.topcased.adele.tools.prolog.actions.PrologExtractionAction.run(PrologExtractionAction.java:193)</span></div>
<div>
<span style="background-color: black; color: lime;"><span class="Apple-tab-span" style="white-space: pre;"> </span>at org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:121)</span></div>
<div>
<span style="background-color: black; color: lime;">Caused by: java.io.IOException: error=13, Permission denied</span></div>
<div>
<span style="background-color: black; color: lime;"><span class="Apple-tab-span" style="white-space: pre;"> </span>at java.lang.UNIXProcess.forkAndExec(Native Method)</span></div>
<div>
<span style="background-color: black; color: lime;"><span class="Apple-tab-span" style="white-space: pre;"> </span>at java.lang.UNIXProcess.<init>(UNIXProcess.java:135)</span></div>
<div>
<span style="background-color: black; color: lime;"><span class="Apple-tab-span" style="white-space: pre;"> </span>at java.lang.ProcessImpl.start(ProcessImpl.java:130)</span></div>
<div>
<span style="background-color: black; color: lime;"><span class="Apple-tab-span" style="white-space: pre;"> </span>at java.lang.ProcessBuilder.start(ProcessBuilder.java:1021)</span></div>
<div>
<span style="background-color: black; color: lime;"><span class="Apple-tab-span" style="white-space: pre;"> </span>... 5 more</span></div>
</div>
</div>
</div>
<div>
<br /></div>
<div>
The text "<span style="background-color: black; color: lime;">error=13, Permission denied</span>" made me look over the permission of the <b>sbprolog </b>program. I moved to the <i>home/TOPCASED/Topcased-5.2.0/plugins/org.topcased.adele.admin_2.6.0.201204031215/usr/LMP/</i> folder and could observe, that sbprolog was not marked as executable. A simple <b><span style="font-family: Courier New, Courier, monospace;">chmod 777 sbprolog</span></b> solved my issue. A new run of the code generator worked smoothly (777 rights are not necessary, just the x bit must be set).</div>
</div>
</div>
Anonymoushttp://www.blogger.com/profile/14653133332588297691noreply@blogger.com0tag:blogger.com,1999:blog-4827576046860576068.post-11758907106576367812012-08-31T15:14:00.000+02:002012-08-31T15:14:16.858+02:00Topcased AADL<div dir="ltr" style="text-align: left;" trbidi="on">
While learning by doing I had an introduction into <a href="http://www.topcased.org/index.php/content/view/40/54/" target="_blank">TOPCASED</a> v.5.2.0, an Eclipse based IDE for development of complex safety critical real-time hard- and sofware systems in the area of aerospace and automotive. Installation ran smoothly after downloading the bundle from the <a href="http://gforge.enseeiht.fr/frs/?group_id=52" target="_blank">project page</a>. To get a first overview of the tool, I looked over the official presentations available <a href="http://gforge.enseeiht.fr/docman/view.php/52/3629/TOPCASED-presentation-30mn.pdf" target="_blank">here</a> (short version) and <a href="http://gforge.enseeiht.fr/docman/view.php/52/3627/TOPCASED-presentation-2h.pdf" target="_blank">here</a> (long version) - don't worry, without someone talking besides the slides it won't take much time to read them. I found the article: <a href="http://www.h-online.com/open/features/TOPCASED-System-development-using-Open-Source-746462.html" target="_blank">"TOPCASED: System development using Open Source"</a> very interesting and helpful to find the motivation of the project and place it into the industrial context.<br />
<br />
In the context of SOCIS, the AADL Designer that comes with TOPCASED is of interest and should serve as an example of what an AADL modeler should incorporate. The first mystery to solve was, which one of the tools in TOPCASED is the AADL Designer? After long research among the <a href="http://www.topcased.org/index.php?documentsSynthesis=y&Itemid=59" target="_blank">available documentation</a> I was totally confused and didn't find the answer. My mentor helped me forward here and told me the AADL Designer is named "ADELE"! This was a big step forward!<br />
<br />
Having a path indicated and some presentations to begin with, I started learning about ADELE. My entry point was the <a href="http://gforge.enseeiht.fr/projects/adele/" target="_blank">project homepage</a> for general information. Next, I have read the ADELE <a href="http://gforge.enseeiht.fr/docman/view.php/73/2735/ADELEPresentation.pdf" target="_blank">presentation</a> and played with the tool. Just some basic stuff: creating a project, drawing some elements and interconnecting them. I had the same feeling as I had when playing with the Obeo Designer for the family demo.<br />
<br />
This being said, the introduction to the technologies and tools I will be using has got to an end. Now it's time to work and in parallel study in more detail the tools and technologies.</div>
Anonymoushttp://www.blogger.com/profile/14653133332588297691noreply@blogger.com0tag:blogger.com,1999:blog-4827576046860576068.post-83572270826684525412012-08-28T21:37:00.000+02:002012-08-28T21:37:30.014+02:00First steps towards AADL<div dir="ltr" style="text-align: left;" trbidi="on">
<i>"[...] <span style="color: #f3f3f3; font-family: Times, Times New Roman, serif;">when you learn to read then you learn everything you didn't know before. But when you write you write only what you know already</span> [...]" </i>I think Umberto Eco's statement describes very good the situation I find myself in: by reading information available on the web I have the power to learn everything about AADLs, but writing on the blog is very difficult as my knowledge is just starting to shape up.<br />
<br />
For others that are in a similar situation to mine, I think writing down my trace to learn AADL could be helpful. The first dilemma to solve is what does the acronym AADL stand for? Initially the acronym meant "Avionics Architecture Description Language", but AADL covers all the embedded real time systems. In 2004 the <a href="http://www.sae.org/" target="_blank">Society of Automotive Engineers</a> released the standard named "Architecture Analysis & Design Language" which is the current meaning of AADL. According to the definition found <a href="http://www.sei.cmu.edu/library/abstracts/reports/06tn011.cfm" target="_blank">here</a> "t<i>he AADL is a modeling language that supports early and repeated analyses of a system's architecture with respect to performance-critical properties through an extendable notation, a tool framework, and precisely defined semantics."</i><br />
<i><br /></i>
At a first reading that definition didn't cleared much my understanding, so I had to dig more into the details. First I left the first 'A' in AADL out, and read shortly about <a href="http://en.wikipedia.org/wiki/Architecture_description_language" target="_blank">Arhitecture Description Language</a> and found out that AADL is the <a href="http://en.wikipedia.org/wiki/Architecture_description_language#Examples" target="_blank">secondary candidate of being the best ADL</a>. Having the term "ADL" cleared, I moved forward for a general introduction about AADL on <a href="http://en.wikipedia.org/wiki/Architecture_Analysis_%26_Design_Language" target="_blank">wikipedia</a>. The information found in the "<a href="http://www.sei.cmu.edu/reports/06tn011.pdf" target="_blank">The Architecture Analysis & Design Language (AADL): An Introduction</a>" report by Peter H. Feiler, David P. Gluch, John J. Hudak is very detailed and might be just a little bit to much for a snooker. The sketchy description found <a href="http://www.axlog.fr/aadl/presentation_en.html" target="_blank">here</a> can be a much better starting point and then build up with the report previously mentioned.<br />
<br />
Going through those lectures I can scarcely say I have a basic idea of what an AADL is. The road is long ahead and resources are plenty - next in line would be the AADL community<a href="https://wiki.sei.cmu.edu/aadl/index.php/Main_Page" target="_blank"> page</a> and I will move to "learning by doing". Creating a model with already existing AADL modelers will shortly follow on my learning path.</div>
Anonymoushttp://www.blogger.com/profile/14653133332588297691noreply@blogger.com0tag:blogger.com,1999:blog-4827576046860576068.post-39776049405279066452012-08-24T20:19:00.000+02:002012-08-24T20:19:34.223+02:00Week 4<div dir="ltr" style="text-align: left;" trbidi="on">
and I am still learning and getting used to the tools, before starting the real work. As time goes by, the tools and technologies get more specific and custom tailored to solve a specific problem.<br />
<br />
This week I had my introduction to the <a href="http://www.obeodesigner.com/" target="_blank">Obeo Designer</a>. I started with small steps reading and trying to understand Viewpoint. For this purpose, the "Viewpoint Specifier Guide" is, in my opinion, a very detailed document - this compared to my zero knowledge on this topic. Further, it was very helpful and made much more sense when put together in a practical example: The Obeo Designer Tutorial.<br />
<br />
I have faithfully followed all the steps in creating the basic family example. The Specifier Guide was during the training a very good reference point as I returned for detailed explanations very often to it. It was sometimes a bumpy road, as I didn't correctly understood some steps, or some tools just didn't wanted to work as expected. It was a great volume of information that I assimilated and still there are issues which I do not understand and do not work... A small break, patience, reading once more the documentation and talking to my mentor should fix this.<br />
<br />
This week, I have created my first basic graphical modeler for a simple example. I found it very interesting, challenging to assimilate the new technology but also rewarding when elements did, what they were supposed to do!</div>
Anonymoushttp://www.blogger.com/profile/14653133332588297691noreply@blogger.com0tag:blogger.com,1999:blog-4827576046860576068.post-10106105083718168692012-08-20T16:54:00.000+02:002012-08-20T16:54:09.764+02:00Graphical Modelers<div dir="ltr" style="text-align: left;" trbidi="on">
Continuing the learning process, previous week I have worked on finding out the theoretical backgrounds of graphical modelers. I have read, as suggested, about:<br />
<br />
<ul style="text-align: left;">
<li><a href="https://www.ibm.com/developerworks/library/os-eclipse-gef11/" target="_blank">Graphical Editing Framework</a></li>
<li><a href="http://wiki.eclipse.org/Graphical_Modeling_Framework/Tutorial/Part_1" target="_blank">Graphical Modeling Framework</a> (eclipse.org) and on <a href="http://www.ibm.com/developerworks/opensource/library/os-ecl-gmf/" target="_blank">ibm.com</a>, all to sum up in a nice presentation <a href="http://www.slideshare.net/mchv/gmf-create-your-graphical-dsl-eclipsecon-11" target="_blank">here</a>.</li>
</ul>
<div>
The purpose of this lecture was to get a feeling of what is currently available to develop graphical modelers - and I did.</div>
<div>
<br /></div>
<div>
I have spent some extra time in following tutorials for <a href="http://www.eclipse.org/acceleo/" target="_blank">Acceleo 3</a>. After reading some randomly available information on the internet, performing the <a href="http://wiki.eclipse.org/Acceleo/Quick_Start" target="_blank">Quick Start</a> and the <a href="http://wiki.eclipse.org/Acceleo/Getting_Started" target="_blank">Getting Started Guide</a> put order in my thoughts. After these two exercises I have got a slight feeling about the code generator and it's syntax, but the road is still long ahead to feel confident with the tool...</div>
<br />
<br /></div>
Anonymoushttp://www.blogger.com/profile/14653133332588297691noreply@blogger.com0tag:blogger.com,1999:blog-4827576046860576068.post-55418495447374061782012-08-10T15:28:00.002+02:002012-08-10T15:28:26.922+02:00The world of the Eclipse Modeling Framework<div dir="ltr" style="text-align: left;" trbidi="on">
"The EMF project is a modeling framework and code generation facility for building tools and other applications based on a structured data model. From a model specification described in XMI, EMF provides tools and runtime support to produce a set of Java classes for the model, along with a set of adapter classes that enable viewing and command-based editing of the model, and a basic editor." <a href="http://www.eclipse.org/modeling/emf/" target="_blank">[source]</a> This text was my entry point to this world, quite interesting as EMF can sustain my work by automatic code generation.<br />
<br />
A short walk through the <a href="http://www.eclipse.org/modeling/emf/docs/" target="_blank">EMF documentation</a> got me familiar with the terminology required to work with the framework, but at a deeper look, I found the information there overwhelming. I choose to try out the "learn-by-doing" method and followed the tutorial "<a href="http://eclipsesource.com/blogs/2011/03/22/what-every-eclipse-developer-should-know-about-emf-part-1/" target="_blank">What every Eclipse Developer should know about EMF</a>". This was a far better start to understand the framework and see what you can develop using it. I paid attention to all the details in the first part of the tutorial to better understand the ideas and concepts presented. This was very helpful, but getting to the 4th part of the tutorial, "<a href="http://eclipsesource.com/blogs/2011/03/31/what-every-eclipse-developer-should-know-about-emf-%E2%80%93-part-2/" target="_blank">EMF API</a>" got me totally confused. I fought to get it over and succeeded, but with great gaps of knowledge. Reading about the EMF.Edit Framework <a href="http://pic.dhe.ibm.com/infocenter/wasinfo/v6r0/index.jsp?topic=/org.eclipse.emf.doc/references/overview/EMF.Edit.html" target="_blank">here</a>, following another tutorial available on <a href="http://www.vogella.com/articles/EclipseEMF/article.html" target="_blank">www.vogella.com</a> and having a good night sleep cleared up the things a lot. Reading the extra resources indicated during the tutorial also helped a lot clarifying things. I decided to run once more through the tutorial "What every Eclipse Developer should know about EMF" and it turned out to be a good decision mainly of two reasons:<br />
<br />
<ol style="text-align: left;">
<li>the tutorial made much more sense. I could understand the connections between the elements and how they work together to build up an application</li>
<li>I now know how bowling league is structured ;)</li>
</ol>
The tutorial by Lars Vogel added new powers by introducing the Ecore Diagram (instead of directly using the Ecore model). For my personal understanding it was ok to first do <a href="http://eclipsesource.com/blogs/2011/03/22/what-every-eclipse-developer-should-know-about-emf-part-1/" target="_blank">this</a> tutorial and then the one by Lars Vogel, but I figured out, that Lars Vogel's tutorial is a glimpse easier. Maybe it would have been a good idea to start with that one. It was especially helpful at the beginning by presenting the packages required to be installed before starting - this information lacked to my first read tutorial. <div>
<br />
<div>
<br /></div>
<div>
I would say, the purpose of this 2nd week of SOCIS2012 to understand what an Ecore metamodel is, to define my own DSLs and how to generate basic editors for it, was achieved.</div>
</div>
</div>Anonymoushttp://www.blogger.com/profile/14653133332588297691noreply@blogger.com0tag:blogger.com,1999:blog-4827576046860576068.post-86434818300472970872012-08-03T22:32:00.000+02:002012-08-03T22:32:42.818+02:00First three days of SOCIS2012<div dir="ltr" style="text-align: left;" trbidi="on">
Since Wednesday things got moving, in the right direction I'll say. I had my first contact with my mentor and agreed upon the communication channel.<br />
<br />
Walking through the Eclipse IDE tutorial was a nice starting point for accommodating to the technology, but things got more interesting with the Eclipse plug-in development tutorial. Only once in your geek life a new Eclipse application says "Hello world!" to you.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgL-b3bKWwJYHXOX-Me2v5rVsLvCV2orO6Q1u1WbmAz8sqm1jEN9DdrW8Kifb7aTADpfHsY11FoL7jSNFfVkbrUAhBbJcx5XZg1AmgHfMnzAiM6zflhxn47otHY4i6eBaguN2mf9zCVgpuH/s1600/RCP.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img alt="" border="0" height="245" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgL-b3bKWwJYHXOX-Me2v5rVsLvCV2orO6Q1u1WbmAz8sqm1jEN9DdrW8Kifb7aTADpfHsY11FoL7jSNFfVkbrUAhBbJcx5XZg1AmgHfMnzAiM6zflhxn47otHY4i6eBaguN2mf9zCVgpuH/s320/RCP.png" title="Hello World!" width="320" /></a></div>
</div>Anonymoushttp://www.blogger.com/profile/14653133332588297691noreply@blogger.com0tag:blogger.com,1999:blog-4827576046860576068.post-36459279043961991992012-08-02T09:36:00.000+02:002012-08-02T09:37:14.889+02:00ESA Summer of Code in Space 2012 here we go!<div dir="ltr" style="text-align: left;" trbidi="on">
<span style="font-family: Arial, Helvetica, sans-serif;">The 1st of August was a special day: I got accepted for the ESA Summer of Code in Space 2012. The complete participants list can be found <a href="http://sophia.estec.esa.int/socis2012/?q=node/16" target="_blank">here</a>. Coding starts in 3....2....1....</span></div>Anonymoushttp://www.blogger.com/profile/14653133332588297691noreply@blogger.com0