Institutionen för datavetenskap

Save this PDF as:
 WORD  PNG  TXT  JPG

Size: px
Start display at page:

Download "Institutionen för datavetenskap"

Transcription

1 Institutionen för datavetenskap Department of Computer and Information Science Final thesis ModelicaML Graphical Modeling Environment Based on Eclipse MDT Papyrus by Imran Hakam LIU-IDA/LITH-EX-A 11/004 SE Linköpings universitet SE Linköping, Sweden Linköpings universitet Linköping

2 Linköping University Electronic Press Upphovsrätt Copyright Imarn Hakam

3 Institutionen för datavetenskap Department of Computer and Information Science Examensarbete ModelicaML Graphical Modeling Environment Based on Eclipse MDT Papyrus Examensarbete utfört i Datavetenskap vid Tekniska högskolan vid Linköpings universitet av Imran Hakam LIU-IDA/LITH-EX-A-11/004-SE Linköping 2011 Department of Computer and Information Science Linköpings universitet SE Linköping, Sweden Linköpings tekniska högskola Linköpings universitet Linköping

4 ModelicaML Graphical Modeling Environment Based on Eclipse MDT Papyrus Examensarbete utfört i Datavetenskap vid Tekniska högskolan i Linköping av Imran Hakam LIU-IDA/LITH-EX-A-11/004-SE Examinator: Handledare: Prof. Peter Fritzson ida, Linköpings universitet Dr. Mohsen Torabzadeh-Tari ida, Linköpings universitet Mr. Wladimir Schamai EADS IW, Germany Linköping, 3 March, 2011

5 Avdelning, Institution Division, Department Division of Computer System Department of Computer and Information Science Linköpings universitet SE Linköping, Sweden Datum Date Språk Language Svenska/Swedish Engelska/English Rapporttyp Report category Licentiatavhandling Examensarbete C-uppsats D-uppsats Övrig rapport ISBN ISRN LIU-IDA/LITH-EX-A-11/004-SE Serietitel och serienummer Title of series, numbering ISSN URL för elektronisk version Titel Title Svensk titel ModelicaML Graphical Modeling Environment Based on Eclipse MDT Papyrus Författare Author Imran Hakam Sammanfattning Abstract The ModelicaML graphical Modeling Language and Modelica/UML profile is a language for the description of continuous-time and discrete-time/event-based system dynamics. Modelica ML uses Papyrus as modelling tool implementation platform which is used for editing models. These models may be expressed in UML with optional textual statements in Modelica as action language code. For the new version ModelicaML 2.0, the need for support in the new Papyrus M1 version was essential. In this master thesis project, new plug-in functionality was developed that has enhanced the existing functionality of the ModelicaML modelling environment within the Papyrus Eclipse plug-in. This includes handling Modelica modifiers as well as new views and component tree views which provides complete list of components for a selected class. Nyckelord Keywords Modelica, Papyrus

6 Abstract The ModelicaML graphical Modeling Language and Modelica/UML profile is alanguage for the description of continuous-time and discrete-time/event-based system dynamics. Modelica ML uses Papyrus as modelling tool implementation platform which is used for editing models. These models may be expressed in UML with optional textual statements in Modelica as action language code. For the new version ModelicaML 2.0, the need for support in the new Papyrus M1 version was essential. In this master thesis project, new plug-in functionality was developed that has enhanced the existing functionality of the ModelicaML modeling environment within the Papyrus Eclipse plug-in. This includes handling Modelica modifiers as well as new views and component tree views which provides complete list of components for a selected class. vi

7 Dedication I would like to dedicate my thesis work to my loving parents, affectionate Taya ge, devoted wife, considerate brother, caring sisters and other kind family members vii

8 Acknowledgments The special thanks go to my supervisors, Mr. Wladimir Schamai and Dr. Mohsen Torabzadeh Tari. The supervision and support that they gave me with their helping nature truly help the progression and smoothness of my thesis work. I radiate a lot of confidence while working at EADS Innovation Works it was very nice experience and I am thankful to my supervisors for providing me this opportunity. I would like to thank my examiner Professor Peter Fritzon for his help and timely advices during my thesis work. My grateful thanks also go to all my friends not only for the support in curricular activities but also for the hospitality in Linköping and Hamburg. I have spent a very good time of my life with my friends in Sweden and Germany specially with Mr. Adnan Waheed, Mr. Muhammad Ayaz Khan, Mr. Molana Sajid Hussain, Mr. Mansoor Munib, Mr. Mati Ullah Khan W, Mr. Muzammil Zareen, Mr. Farhan Khan, Mr. Azam Zia, Mr. Ahsan Rasool,Mr. Kamran Zafar,Mr. Syed Zahid Ali,Mr. Syed Yasir Imtiaz,Mr. Kamran Hakam, Mr. CH.Hassan Riaz(Late), Mr. Imran Khan and those not listed here but listed in my mind. viii

9 Contents 1 Background Modelica Overview OpenModelica ModelicaML Purpose of Thesis Pre-Study Phase Implementation Phase ModelicaML Papyrus MDT GUI Modeling, Validation, and Simulation ModelicaML Specific Views Model Browser Properties View Diagram Editors Palette ModelicaML Class Component tree Modelica Perspective Add ModelicaML Specific Views How to Create Model Structure How to Set the Type in ModelicaML Design of tools Papyrus Modelica ML Class Component Tree Plug-in Block Diagram Modelica Perspective Required Installations Table Model Structure Description of Stereotypes and Utilization in Model Package Modelica Class Modelica Restricted Classes ix

10 x Contents Modelica Package Operator Model Block Connector Type Record A common Constraint Constraint Stereotypes and Filtered Constraints Enumeration Function Calculation Model Requirement Annotation Variable Component Implementation Details Commands Filters Command Handler The Graphical Representation of Implementation Creating Class Components View What is a view in Eclipse? Why Do We Need Class Component Tree View? How It Works Counting the inside component Selection in outline window What if you select multiple items? Explanation with Example Source Tank1 and Tank picontinuous1 and picontinuous Implementation Details Implemented Classes Selection Process Modification Support in Class Component Tree Inheritance What does a modifier do Features of Class Component Tree View Information of component How can we modify the values

11 Contents xi 7 Conclusions and Future Work Conclusion Future Work ModelicaML Perspective Configuration OMC Communication Appendix 43 Bibliography 47

12

13 Chapter 1 Background 1.1 Modelica Overview Modelica is an object-oriented, equation based language to conveniently model the dynamic behaviour of complex physical systems containing, e.g., mechanical, electrical, electronic, hydraulic, thermal, control, electric power or process-oriented subcomponents as well as consisting of components from other similar domains. Models in Modelica are mathematically described by differential, algebraic and discrete equations. No particular variable needs to be solved for manually. A Modelica tool will have enough information to decide that automatically. Modelica is designed such that available, specialized algorithms can be utilized to enable efficient handling of large models having more than one hundred thousand equations [1]. Modelica community contributed its efforts in an efficient way for the sequential existence of the Modelica Language. Modelica is used in industry since year 2000 but it covers a long journey from late nineties up to the end of first decade of 21st century. The first Modelica version 1 was released in September, Now in March, 2010 the Modelica 3.2 has released. Modelica community is working hard to provide new advance features on every released version. 1.2 OpenModelica OpenModelica is an open source Modelica environment developed and supported by Linköping University and the Open Source Modelica Consortium (OSMC) - a growing group of companies, universities, institutes and individuals. The goal of this project is to create a complete Modelica modeling, compilation and simulation environment based on free software distributed in source code and executable 1

14 2 Background form intended for research, teaching, and industrial usage. OpenModelica is freely available [2]. 1.3 ModelicaML ModelicaML graphical Modeling Language for Modelica is language for the description of time-continuous and time-discrete/event-based system dynamics. ModelicaML is defined as an extended subset of the OMG Unified Modeling Language (UML). This subset enables the generation of executable Modelica code [3]. Modelica Modeling Language started its journey in 2007 at PELAB [4] Linköping University. Now ModelicaML is in a mature stage and can efficiently support modelling complex systems. The ModelicaML technology is fully explained in section 2.1. Now ModelicaML has a new version which is attuned to new version of Pypyrus UML [5]. 1.4 Purpose of Thesis In the OpenModelica Annual Workshop 2011, February 7 [6] ModelicaML introduces some new features which were not supported in the ModelicaML version 1. ModelicaML uses Papyrus UML as a modelling tool since papyrus UML introduces a new version and the previous version of ModelicaML was not compatible with this new version of Papyrus. Therefore it was reengineered with some new advanced features. The purpose of this thesis was to implement the new proposed features for the new version of the Modelica. These features include providing context menus for Modelica elements, displaying the components of a class in a User Interface (UI) view, providing modification support and providing a dedicated perspective for Modelica. The context menu, pallets, and diagrams from the previous version of ModelicaML were migrated into new version and some new features were implemented. The details of these features are comprehensively explained in chapters 4, 5 and Pre-Study Phase Understanding the tools and technology is a key to achieving the aims. Before starting work at EADS Innovation Work [7], pre study work was done at PELAB Linköping [4] under the supervision of Prof. Peter Fritzson and Dr. Mohsen Torabzadeh-Tari. This phase took three months form June 2010 to September It took some time in this period to get basic understanding of the Modelica, OpenModelica and ModelicaML technologies. For better insight into the requirement I used some modelling tools for viewing the components in a UI tree view. Getting an idea for

15 1.4 Purpose of Thesis 3 the implementation was a hard task and it took most of my time during working a PELAB Implementation Phase All the implementation work has done at EADS Innovation Works Hamburg Germany [7] under the supervision of Mr. Wladimir Schamai. Developing the plug-in for displaying components was the initial task which was achieved and then the most time consuming and challenging part was the modification support. The details of the implementation are described from chapter 4 and onwards.

16

17 Chapter 2 ModelicaML Papyrus MDT GUI Modelica Modelling Language (ModelicaML) is a graphical modeling language for the description of time-continuous and time-discrete/event-based system dynamics. ModelicaML is defined as an extended subset of the OMG Unified Modeling Language (UML). This subset enables the generation of executable Modelica code. The main purpose of ModelicaML is to enable an efficient and effective way to create, visualize and maintain combined UML and Modelica models. ModelicaML is defined as a graphical notation that facilitates different views (e.g., composition, inheritance, behaviour) on system models. It is based on a subset of UML and reuses some concepts from SysML. ModelicaML is designed to generate Modelica code from graphical models. Since the ModelicaML profile is an extension of the UML meta-model it can be used as an extension for both UML and SysML [8]. Figure 2.1. ModelicaML prototype architecture [9]. 5

18 6 ModelicaML Papyrus MDT GUI In the figure 1 the architecture of ModelicaML prototype is shown graphically. Papyrus [5] is an Eclipse based graphical editing tool and Papyrus UML is used for modeling the objects. The modeling tool Papyrus UML has special features like dedicated toolbars and diagram selection. Models are then validated and constraints are effectively checked through the validator plug-in which informs the user of any violation made by r. After completion of the modeling phase, Modelica ML code generator (which is implemented using Acceleo [10]) is used for generating Modelica code from the Modelica models. Acceleo follows the model driven approach in order to generate the code. The last step is performing simulation from the above mentioned generated Modelica code. The simulation can be performed by using either OpenModelica [12] Or Dymola [13]. Up till now the abstract working of ModelicaML has been explained, the next section contains the complete procedure for setting up the environment and workflow. 2.1 Modeling, Validation, and Simulation In order to know the complete technology of ModelicaML and to understand the above architecture it will be wise to explain through an example how the user can model objects using ModelicaML. The example is taken from the book Principles of Object-Oriented Modeling and Simulation with Modelica [22]. The example is precisely explained in chapter 12 System Modeling Methodology and Continuous Model Representation. The example describes a system containing a tank system with two water tanks, a source for liquid, and a controller which checks for the overflow of liquid. The graphical representation is given below in figure. In order to simulate this example we will first set Graphical User Interface (GUI), model it and then we generate the code using Acceleo [10] and finally we can simulate it by using the OpenModelica [2] or MathModelica [12] tools. The steps as well as the screenshots of the performed steps are given below. You may execute another example or model on your own system by using these steps. We will start by opening Eclipse, when the Eclipse plat form is visible after selecting a suitable workspace we need to change the perspective. For this we will go in Open Perspective tab and select the Papyrus perspective. The steps are shown in the figure: 2.3. After we switched the perspective the next step is to Create ModelicaML

19 2.1 Modeling, Validation, and Simulation 7 Figure 2.2. Two tanks system [15]. Figure 2.3. Changing perspective. Project. As we are using Papyrus as a modeling tool so we need to create a Papyrus project simply go to the file new Papyrus Project. This step is shown in the screen short given below. Specify a suitable name in the field Project name and click next. In the given example of the two tank system the naming convention of Eclipse is followed with a dot notation. After specifying the name, select UML check box and on the next page select the UML class diagram. Now we are going to create a class diagram for the example of two tanks system. Click on finish and now we have created a project. After creating a project we can find the following files inside the project explorer view. model.di file is the diagram file. This can only be edited by Papyrus UML

20 8 ModelicaML Papyrus MDT GUI Figure 2.4. Create new papyrus project. Figure 2.5. Create new papyrus project. editor. model.notation model.uml file is the model file and you can edit it by using any UML2 tool. In the model browser (Model Explorer) there is only one file with the name model with out any extension. We must rename this file and set a suitable name for our system. The reason of renaming is that model is a keyword in the Modelica representing is a class type. So, the name must be changed, in our example we set the example system s name. The screen short of the Eclipse platform is given below in figure 2.8. After renaming the file we are going to apply the ModelicaML stereotype to the model. This action is described in four steps: Step-1: Select the model which has now the name twotankssystem. Step-2: Go to the properties tab and press the button as shown in figure 2.9. Step-3: A pop up window with the title apply profile from Papyrus repository is now opened, and you will be able to see ModelicaML Select ModelicaML and press ok. Now this window will disappear and it takes a few seconds to load

21 2.1 Modeling, Validation, and Simulation 9 Figure 2.6. Selecting class diagram. Figure 2.7. File structure of ModelicaML project. and another pop up window will be opened. Step-4: Click to check the check box of ModelicaML and press ok to finalize. You have successfully applied the Modelica profile. You can see that inside the properties view profile tab the following text is visible: ModelicaML ModelicaML::ModelicaPredefinedTypes ModelicaML::ModelicaClassConstrucs ModelicaML::ModelicaBehaviorConstrucs And so on. This text shows that you have successfully applied the ModelicaML stereotype. These four steps are graphically represented in one screen shot on the next page. Note that the text in profile tab will only be visible after step-4.

22 10 ModelicaML Papyrus MDT GUI Figure 2.8. Renaming the Model. Now we will configure the model explorer. For this click on the Load browser customisation button and select ModelicaML customisation from left panel, put it on the right side panel and also set it on top by using the up button. 2.2 ModelicaML Specific Views Model Browser When we start modeling our system in the Papyrus perspective, the model browser is a view which shows the model elements of our system Properties View This view shows the properties of the selected element. This view has four tabs: UML provides the name and the visibility of selected element. ModelicaML provides the name of model selected. Profile provide the applied stereotypes on model. Advanced tab provide a brief summary of name and other properties Diagram Editors Diagram editors supports different UML-based diagrams. You can add a diagram by using Modelica actions and draw the diagram by using the components inside palette. Palette is described below.

23 2.2 ModelicaML Specific Views 11 Figure 2.9. Applying profile Step Palette The Palette can also be customised and it is different for each diagram. Class diagram: It provides the related contracts inside the classes, relation and annotation sections. Activity diagram: The palette will provide nodes, decision nodes, edges and annotation. An activity diagram can be of the type conditional algorithm or conditional equation ModelicaML ModelicaML code generation and validation actions can be performed from the context menu which can be visible when you right click on the model class. The code generated will be a file with the extension.mo. This file will be supplied to any simulation tool like Math Modelica for the simulation of the desired model Class Component tree Class component tree shows the component hierarchy of the selected class as well as the modification value which is modified by user. Inheritance is supported in Modelica through instance modification and class modification. This tree follows the class modification. (Explained in detail in Chapter 6) Modelica Perspective The Modelica perspective is like the Papyrus perspective. Modelica has its own perspective in which you can configure the model browser and can also add differ-

24 12 ModelicaML Papyrus MDT GUI Figure Model browser customisation. ent related views. The section below will explain how we can add different Modelica related views inside the perspective. 2.3 Add ModelicaML Specific Views To add views, inside the Eclipse platform go to windows show view others, a pop up window will open offering different views. You can see the folder of ModelicaML with a a drop down menu, drag it and select the class component view. This view will be added on the top of the outline window. You can place it at a suitable position inside the perspective as per you convenience. In the same way you can add the Modelica validation view. The screen short illustrating this section is provided in figure How to Create Model Structure In the above sections we have configured the various component of the platform. From this section, the description of the process for the actual modelling in Papyrus will be provided. We can create packages and classes using ModelicaML menus. Right click the model class and there is a menu containing the actions that can be performed on the selected element. The detail of this plug-in is explained in Chapter 3.

25 2.5 How to Set the Type in ModelicaML 13 Figure Adding views. The graphical representation is given below in a screenshot. Figure Adding Modelica elements. 2.5 How to Set the Type in ModelicaML There are four primitive types in Modelica given below: Modelica Real Modelica Integer Modelica String Modelica Boolean

26 14 ModelicaML Papyrus MDT GUI Figure Selecting the type. We can add more diagrams like activity diagram, conditional algorithm/equation diagram to our model. The process for adding these diagrams in a model is described in a tutorial [9]. So far, we have created a basic model structure and set the types for variables and components. Creation of a model structure such as adding a Modelica element is done by developing a separate plug-in as an extension to Papyrus. The detail of this plug-in is described in section 4.7.

27 Chapter 3 Design of tools The Eclipse platform is open source and it is designed in such a way that it can be extended easily. All the extensions are in the form of plug-ins. The Eclipse is surrounded by thousands of plug-ins but these plug-ins are not loaded at once. These plug-ins are dynamically loaded by the Eclipse plug-in loader at run time on demand and this is called lazy loading. The ModelicaML extensions are implemented in Papyrus UML as contribution to the new version of ModelicaML 2.0. The figure given below explains the general concept about the design of Eclipse based tools. The implementation detail of each plug-in is described in the later chapters. Figure 3.1. Eclips based tools. 15

28 16 Design of tools 3.1 Papyrus Papyrus is an open source tool which is based on the Eclipse platform and is used for modeling within UML2. Papyrus has an extendable architecture so we can add new diagrams and new code generators. 3.2 Modelica ML ModelicaML is implemented as an Eclipse plug-in. ModelicaML is an alternative way for authoring Modelica models. It extends the graphical modeling capabilities of Modelica by providing more diagrams (UML diagrams for presenting the composition, connection, inheritance or behaviour of classes) for graphical model definition or documentation. Moreover, ModelicaML incorporates concepts for formalizing and evaluating textual requirements during system simulations [25]. 3.3 Class Component Tree Plug-in The class component tree is a plug-in and is described more in detail in Chapter Block Diagram Figure 3.2. Block diagram of Papyrus MDT and supported plug-ins.

29 3.5 Modelica Perspective 17 In the block diagram, we can see that ModelicaML (UML profile) support the following: Create model structure Validate model Generate code In Section 2.4, how to create model structure was discussed in detail. In the next chapters the implementation of this plug-in will be discussed. ModelicaML profile uses the class component tree view plug-in which is responsible for adding a view inside the Papyrus perspective and shows the components of a selected class. This plug-in is also discussed in detail in the Chapters 5 and Modelica Perspective The Modelica perspective is another separate plug-in providing a dedicated perspective for ModelicaML. The purpose of this plug-in is try to reduce the initial set up efforts made by the user before modeling. The perspective has dedicated views and provides the customised pallets for each diagram like class diagram, activity diagram etc. A screenshot of the Modelica perspective is given below. Figure 3.3. Modelica perspectives.

30 18 Design of tools 3.6 Required Installations Table Before starting the modeling with ModelicaML, we need to install the tools that were discussed in ModelicaML architecture 2.1. The names and sources of the tools are given below in the table 3.1. Tools Eclipse 3.6 (Helios) Papyrus MDT Eclipse plug-in ModelicaML Eclipse plugins Acceleo Eclipse plug-in Modelica Development Tooling (MDT) Eclipse plug-in Source updates/index.php /tools/ /tools/133 Table 3.1. Required installations.

31 Chapter 4 Model Structure Modelica actions such as "add a Modelica element" and "launch of ModelicaML validator or code generator" are migrated from old version of Papyrus to new version of Papyrus because the old version of Papyrus is reengineered and now it has some extra feature in the new version. All the elements are implemented through commands and actions, the details of the implementation are described in section Description of Stereotypes and Utilization in Model In this section the detail of the stereotypes as well as the constraints is explained. The constraints represents the constraints under which another Modelica element can be added to the model. This will provide extra information to the modeller and will provide an ease while modeling. The details of stereotype are already described in [16], but in this section the detail [16] is merged with constraints that are implemented through filters. The filters are described in section Package A package inside the menu bar is the simple UML package. It is not a stereotype and it can be added any where in the model. 4.3 Modelica Class The Modelica class is a stereotype used to represent a Modelica class. The base class of modelica class is UML class Modelica class can be instantiated in the model inside an object element which is instance of a class or package and not the instance of behaviour with an additional constraint that the object element should not have the stereotype function. 19

32 20 Model Structure 4.4 Modelica Restricted Classes Modelica Package The Modelica package is Modelica restricted class Package and its base class property is Class. This stereotype is defined in Modelica class constructs. It can be instantiated any where in the model, inside an object element, which is an instance of a package Operator This stereotype corresponds to Modelica s restricted class Operator. The operator is defined in Modelica class constructs and its base class is Class. An operator can be instantiated any where in the model, inside an object element, which is an instance of a class or package with the additional constraint that the object element should not have the stereotype function Model This stereotype is corresponds to the Modelica restricted class model. The base class of the model is class. It can be instantiated under the following constraints: Instantiated inside an object element which is instance of a package or class as well as an object element that is not an instance of a behaviour. Moreover the object element should not have the stereotype function. In a Modelica model many classes are allowed such as equation sections, algorithm, sections, connectors, input states, outputs states Block A Modelica block is the same as a model but the important difference between the two is that the block must have the ports with fixed input and outputs. The ports are instances of a connector class. A Block can be instantiated inside a package or class that has the stereotype function Connector The connector stereotype represents the Modelica restricted class connector. A connector cannot contain an equation section or an algorithm section. It can have causality and flow specification. While creating ports inside the model the type of the ports must be connector. A connector can be instantiated inside an object element which is instance of a class or package and object element should not have the stereotype function and not an instance of behaviour.

33 4.5 A common Constraint Type This stereotype is used to represent the Modelica restricted class type. The base property of the stereotype is primitive type and is defined in Modelica class constructs. A type can be instantiated inside an object element that is instance of class or package and not an instance of behaviour as well as the object element that does not have the stereotype function Record A Record is the stereotype which corresponds to a modelica record and it can contain an algorithm section and an equation section. But it can not contain causality or flow specification. A Record can be instantiated inside an object element which has the same constraints as mentioned above in Section A common Constraint The constraint given below is very common in various Modelica elements. The implementation of these constraints is done by handler s filters. The detail of implementation is described under section Constraint A Modelica element can be instantiated inside an object element that is an instance of class or package and not an instance of behaviour as well as the object element that does not have the stereotype function. 4.6 Stereotypes and Filtered Constraints Enumeration Enumeration is a stereotype and its base class is enumeration and is defined in Modelica class constructs. It can be created in the model under the same constraints as described in section Function A Modelica function with the base property function behaviour which is defined under Modelica class constructs. It ca be instantiated in the model under the following constraints: It can be created under an object element which is instance of class or package but not an instance of behaviour.

34 22 Model Structure Calculation Model A calculation model is subtype of Modelica model. The advantage of defining the calculation model is to reuse the equations. It does not represent any physical system part and it cannot have external connectors. The calculation model is defined in Modelica class constructs and it can be instantiated under the constraints which are defined in section Requirement This stereotype is used to represent the requirement, which has textual statements or properties like id and text. The concept of textual requirement is taken and reused from Object Management Group (OMG) and System Modeling Language (SML). Requirement is defined under Modelica requirement constructs. It can be instantiated any where in the model under the common constraints which are defined in section Annotation This stereotype is used for storing extra information about the model such as documentation, graphics or versioning. Annotation is defined in Modelica annotation constructs. An annotation element can be instantiated inside an object element, which is an instance of class or package and not an instance of behaviour as well as the object element should not have stereotype enumeration Variable This stereotype is used to represent the Modelica class instance of a primitive type such as real, string, boolean, integer or a subtype of modelica restricted class type. It is defined in Modelica composite constructs. A variable can be instantiated if the object element have stereotype of any one of the following classes: function, model, Modelica class, Modelica package, record, connector and operator Component This stereotype is used to represent a Modelica component of composite type. Its base property is property and is defined in Modelica composite constructs. A component can be instantiated if the object element is the instance of a class and not has a stereotype function and modelica package and not an instance of behaviour. 4.7 Implementation Details The Modelica actions are implemented by commands and handlers technique in Java. Commands - One for each action as a declarative description

35 4.7 Implementation Details 23 Filter - When an action command should be visible Handler - One handler class is associated with one command as behaviour UI Assignment - Where should the command be included in the UI? Contribution to Description Uri Papyrus Application menu Add a Modelica item, application menu of papyrus model org.eclipse.ui.menu Papyrus menu Commands A command in Eclipse is a declarative description defined in an XML file particularly in extension tab and is independent from the implementation details. Commands are defined via the extension point org.eclipse.ui.commands. One command is assigned to one action with a unique id such as the command id for the Modelica Class action is: com.eadsiw.modelicaml.commands.createmodelicaclass Command. All 26 commands are defined in plug-in.xml in the extension tab Filters The constraints which are described in section are implemented with the help of filters. The filter takes the first object and checks the condition which is applied and then it let the action display in the menu. The implementation of filter for the command add a Modelica class is given below in a screen short from the XML file: Figure 4.1. Implementation of filters.

36 24 Model Structure The behaviour of each command is defined via a handler, handler is java class and all 26 java classes are in the package of: com.eadsiw.modelicaml.handlers Command Handler The behaviour of each command is defined via handlers. The handler is the Java class that will be executed. 4.8 The Graphical Representation of Implementation Figure 4.2. Modelica class command and handler.

37 Chapter 5 Creating Class Components View 5.1 What is a view in Eclipse? In the Eclipse platform, the workbench can be considered as a container of many workbench windows. Inside a window there are many pages so we can consider each window as a container of pages. An editor or view is contained in these particular pages. The view is used to navigate and edit information. Some examples of most common views in Eclipse are given below: The Navigator view is used to display and navigate through the workspace. If you select a file in the Navigator, you can open an editor on the contents of the file. Once an editor is open, you can navigate the structure in the editor data using the Outline view, or edit the properties of the file contents using the properties view [18]. 5.2 Why Do We Need Class Component Tree View? When the intended user starts modeling in ModelicaML as described is section 2.4, an outline view is already created which displays information about the model browser. In complex and time continuous systems there are several classes, where some of them are inherited. Furthermore each class has a number of components and it is very hard for the modeller to remember the exact location as well as the value of every variable or component. In order to reduce this headache of remembering the components it is necessary to make another view inside the Papyrus perspective to provide an ease to the modeller. 25

38 26 Creating Class Components View Class component tree is a view that builds the instance tree for a selected class and allows the definition of modifications in a pop up editor. Selection can be made in a diagram editor or in model browser and in the tree view all the variables and components of composite type can be viewed. The tree not only displays the values it also provide a functionality to edit these values. The editing process is called modification and it is described in chapter 5. Class component tree view is developed as a separate plug-in which is given below: com.eadsiw.modelicaml.classcomponentstree. You can add this view perspective as described in figure How It Works Class components tree works efficiently in the Papyrus perspective and provide an ease to the modeller while construction complex models. When a modeller clicks on the class in the model browser the class component tree shows all the components of this class in a tree view. This tree view provides a hierarchy that shows the first level components and provides a drop down menu to explore the second level components and so on until the modeller reaches the primitive type of Modelica. In short we can say that the first level components are classes inside a model class and the leaves of this component tree are the primitive types of Modelica. A leaf can be one of the primitive types described in figure As we know the Modelica language has 4 primitive types as well as some predefined types which are display unit, fixed, max, min, nominal, quantity, start, state select, and unit. In the class component tree every leaf node has a drop down menu that provides this set of predefined types Counting the inside component Every item inside the tree display its name and after the name it shows how many components that are inside the node. This is done by implementing a special counter that counts the number of child nodes and displays it in front of the name of the parent node. The special feature of this counter is that it does not count the predefined types and hence there are no number displays in front of a leaf node. This is done because the modeller already knows that a leaf node is primitive type of the Modelica language moreover the primitive type can further be categorized in predefined Modelica types, which are mentioned above Selection in outline window As other standard views of Eclipse platform, one of the unique features of our class component tree is that it displays the component in both cases either if you click on a model class in diagram editor or if you click on a class in a model browser.

39 5.4 Explanation with an Example 27 This is achieved by implementing a selection listener. The detail of the selection listener is described in the section What if you select multiple items? If you select multiple items then the listener will neglect the previous selections and provide only the current selection to the method collecting the components from the class. This feature has two advantages; the first one is that it neglects the previous selection and fills the tree with components of the last selected and secondly it provides another feature, that is you can select either the class from model browser or diagram editor as described in section Explanation with an Example Before going into the implementation details let us take an example in order to understand the complete working of class component tree. Let us consider figure 5.1: Figure 5.1. Explanation of diagram editor. This screenshot is taken from the diagram editor of Papyrus. The example of two tanks system is explained in section [19]. In the given diagram we can see that there are five major components which are: Source tank1 tank2 picontinuous1 picontinuous2

40 28 Creating Class Components View The basic purpose of this diagram is to illustrate the difference between the name and type of a component. The name of the first water tank is tank1 and it is of the type tank. Type means that the modeller has already defined a special type inside the class of composite components. And same is the case with picontinuous1 and picontinuous2. These are of the type connector and this connector is defined inside the class component. Up till now we have skimmed through only the first level components but each type has its own component defined in that particular class and this hierarchy is followed in depth until we reach the leaf node component which is the predefined data type of modelica language. Let s now go into the detail of first level components one by one Source Source is a first level component and it has the type Liquid source. Now liquid source is another class that defined in package components. It further has three components that is a port, a variable and a function given below: qout: this component has the type Liquid Flow flowlevel: This component having type Modelica Real (Primitive type) set outgoing flow level is a function It is very important to understand that qout is not a primitive type component it has the type Liquid Flow so in out tree this will not be a leaf node it will further expand inside the Liquid Flow until we reach the primitive type. Where as in the component number 2 flowlevel is a primitive type variable. So in our tree it will be a leaf node. If we click on the class Liquid Source the output in our class component tree will show flowlevel as a primitive type and qout as having more components inside. This figure shows the complete picture: Figure 5.2. Class Component Tree Position while Clicking on Liquid Source.

41 5.4 Explanation with an Example Tank1 and Tank2 The two components tank1 and tank2 have the same type tank. And this tank class is defined in the package of components. If we see the tank class it has 9 variables and 4 ports. The ports are even visible in figure: 5.1 but when we click on the tank class the class component tree gives he complete picture of all components inside tank. Some of them are of primitive types like flow Gain, h, maximum Volume, minimum Volume as well as some components has further components as shown in figure: 5.3. Figure 5.3. Class Tank Components picontinuous1 and picontinuous2 The two components -picontinuous1 and picontinuous2 are of the type PIContinuousController which is defined in the package of components. If we click on the base class tree view, it will provide us all the details of its components. In above Section: 5.5, we have seen the individual classes and this gives an idea about its implementation that a method that takes an object as a parameter and displays all the components. The recursive call of this particular method provide the functionality to just click on top level model class and then instead of checking individual classes just expand the tree drop down menu to reach the desired component. The figure 5.5 illustrates the complete hierarchy.

42 30 Creating Class Components View Figure 5.4. Class PIContinuousController Components. Figure 5.5. Labelled Diagram with Class Component Tree View. 5.5 Implementation Details A separate plug-in is developed for Class Component Tree which is given below: com.eadsiw.modelicaml.componentstree This plug-in is also used in modification of the components with the help of the modification editor ModelicaML Xtext Modification Editor which has the code completion functionality. The modification support is described in the next chapter, Chapter 5. In this chapter we focus on the implementation of the class component tree view. In the extension tab of our plug-in XML file, a view has been added and for this view a class is defined. The implementation of the class id is done under the package of Com.eadsiw.modelicaml.componenttree.views. The first portion of the figure: 5.6 is a screen shot from an XML file and the lower portion is a screen shot from the source editor where the actual implementation of the class is done.

43 5.5 Implementation Details 31 Figure 5.6. Graphical Representation of Class Component Tree Implemented Classes In the implementation the standard naming convention of Eclipse is used hence the package has special name starting with com and then followed by the organization name after a dot sign and then the details of actual project as given below. com.eadsiw.modelicaml.componenttree.views In the figure: 5.7 all the implemented classes can be seen and the classes are pointed with a very small description of usage of the particular class. The main class that instantiates the tree uses the methods defined in other supporting classes like name sorter, content provider and view Label Provider. Figure 5.7. Package <com.eadsiw.modelicaml.componenttree.views>.

44 32 Creating Class Components View Content Provider: The Class ViewContentProvider implements ITreeContentProvider, the purpose of ITreeContentProvider is to provide information to the viewer about the transformation of domain objects into tree items in UI tree. The tree viewer displays the child element of a parent node in UI and for this purpose it uses the following method from the content provider s class. Public object getparent(object element) Figure 5.8. Method Call Label Provider: This class is used to provide the images and text for items that are contained in the tree viewer. The domain object is the input argument for the label provider. The tree is initialized by tree viewer when the tree viewer calls the method: private void initialize (); // in the class component tree This method checks the selected object and if the selected element is a class then it calla another method responsible for building a tree from a class. It takes a class element as a parameter and returns an array of objects which are displayed in the form of a sorted tree items by tree viewer. For a better understanding of these method calls please see the figure: 5.9. This figure contains the important methods calls and flow control. The names of classes are in blue and a dotted line denotes the class containing the methods. Methods are shown in white boxes. 5.6 Selection Process In Section: 5.1, it is described what a view is (in the context of the Eclipse platform).in the Section: 5.5, we have seen how the implementation of Class Component Tree is done as well as the other supporting classes. The initialization of the tree is performed in such a way that first it checks the type of selection and then calls the method which generates the actual tree. It is very important to have some inside details of the selection process. That is how the selection is recognized when user clicks in the model browser or in a diagram editor? Each workbench window has its own selection service instance. The service keeps track of the selection in the currently active part and propagates selection

45 5.6 Selection Process 33 Figure 5.9. Tree viewer s Control Flow changes to all registered listeners. Such selection events occur when the selection in the current part is changed or when a different part is activated. Both can be triggered by user interaction or programmatically [20]. This concept is used while implementing the class ComponentsTree which is the main class of the plug-in. The figure given above explains a common selection process in Eclipse platform. Figure Selection Service Big Picture [20] Typically views react on selection changes in the workbench window. So we need to register an ISelectionListener to get notification when the current selection in a window is changes. To show how the selection listener is added in the implemented plug-in for class component tree lets have a look in the source code. This code snippet is taken from the implemented plug-in: "com.eadsiw.modelica ml.componentstree"

46 34 Creating Class Components View From the Class public class ComponentsTree extends ViewPart implements I TabbedPropertySheetPage Contributor public void createpartcontrol( Composite parent ) { viewer = new TreeViewer( parent, SWT. MULTI SWT. H_SCROLL SWT. V_SCROLL ); // Content Provider & Label Provider Methods are explained in Section : \ ref{ Imp Sec} } drilldownadapter = new DrillDownAdapter( viewer ); viewer. setcontentprovider( new ViewContentProvider()); viewer. setlabelprovider( new ViewLabelProvider()); viewer. setsorter( new NameSorter()); shell = parent. getshell (); PlatformUI. getworkbench(). gethelpsystem(). sethelp ( viewer. getcorol (), " com. eadsiw. modelicaml. componentstree. view "); makeactions(); hookcontextmenu(); hookdoubleclickaction(); contributetoactionbars(); getsite (). getworkbenchwindow(). getselectionservice(). addselectionlistener( listener ); Here by giving this command the selection listener has registered. In the implementation of initialize () function the selection check is performed and the source code snippet is given below: if ( sel!= null) { if ( sel instanceof IStructuredSelection) { Object first =(( IStructuredSelection) sel). getfirstele ment(); EObject selectedelement = null; if ( first instanceof ModelElementItem) { selectedelement = (( ModelElementItem) first ). geteobject(); } else if ( first instanceof IUMLEditPart) { selectedelement = (( IUMLEditPart) first ). getumlelement (); } } } If the selection is not empty then there will be the first element of selection in the first. This is because we have to avoid the multiple selections and the goal of class component tree view is to show the variables of primitive as well as components of composite types when the selected element is only the class. The entire source code can be downloaded from SVN as it will be an open source.

47 Chapter 6 Modification Support in Class Component Tree As described in Section: 5.2 the purpose of class component tree is not only display the variables and components in UI, but also to provide the functionality to modify these values. The modification concept is explained in the above section. In this section we will see how the modification support is provided in the class component tree view. In order to have a good understanding we need to take a look on the modification concept in modelica. 6.1 Inheritance The class concept with inheritance is the key to reuse of modeling knowledge in Modelica. Modelica provides inheritance through modification via so-called modifiers. This makes reuse even easier, and can be expressed very concisely. In fact, the three operations; inheritance, specialization through modifications, and object instantiation, can be expressed within a single Modelica declaration. There are three kinds of constructs in the Modelica language in which modifications can occur: Variable declarations. Short class declarations. Extends clause What does a modifier do It modifies one or more declarations from an inherited class by changing some aspect(s) of the inherited declarations. The most common kind of modifier just 35

48 36 Modification Support in Class Component Tree changes the default value or the start value in a declaration equation. Modelica provide two type of modification. Instance Modification Class Modification In class component tree plug-in, the instance modification is supported through the concept of merging of modification. The merging of modification mean that the In order to understand the modification concept in modelica let us look at the following example which is described in [22], [23]. We have four classes C1 having one variable of real type C2 having two variable of real type C3 extends C2 and C1 C4 extends C3 Figure 6.1. Graphical representation of classes.

49 6.2 Features of Class Component Tree View 37 Variables Default Values X1 None X2 22 X3.a 33 X4.b 4 X4.c 44 X5.a X3.a a 55 b 66 c 77 Table 6.1. Object of C4. The above example is taken from [22], [23]. Merging of Modification b=66, b=6, The Result is b=66 In the two tank example [19], we have seen that we have first level components and each component is of composite type. This means that the component is of the type of another class, that class becomes the second level component and so on. If we consider the example of twotankssystem [19], we can see that picountinuous1 is a component of composite type and it has the type PIContinuousController. If there is a variable declared or modified in the PIContinuousController and if we modify the same variable in the class picountinuous1 then this modification value will always overwrite the first modification. This concept is same for all the components so in short we can say that first level modification value (the value modified on the first level components) will always has highest priority and this value will be the final value of that component. The previous modifications have no worth anymore in the model. The concept of first level components and modification is graphically shown in the following figure: Features of Class Component Tree View The class component tree view provide a menu if you right click on a component. In the menu we can perform the following actions. Edit/Modify Delete the previous modification Add to class Get information about the selected component

50 38 Modification Support in Class Component Tree Figure 6.2. Components Level Information of component The information about the components gives a feasible view in a dialog box which describes about the component path, type and declaration. The path of component means its hierarchy in the tree which is denoted in dot notation. Each dot denotes the next level. Type describes that weather the components is of primitive type or a composite type. The information also includes the declaration as well as the class name in which this value has overwritten. Figure: 6.3 shows a screen short of the information about the component ref. Figure 6.3. Information of the component.

51 6.2 Features of Class Component Tree View How can we modify the values Select the component from the class components tree and right click on it, then select Edit from the right click menu. The popup window let able to modify the value. For example if we want to change the value of a Variable ref then it can be seen in the figure below. Figure 6.4. Modification editor. The modification concept is implemented in the class Modificationmanager.java described in figure: 5.7. For a deep knowledge about the implementation you can review source code.

52

53 Chapter 7 Conclusions and Future Work 7.1 Conclusion A Model is the representation of a real world system. The level of understanding of a model depends upon the level of elaboration. For a good representation of a system or simply for a good Model, the modeling tool should provide adequate support like contextual interfaces, the ability to build a logical model, provide ease of selecting features/functions and other related characteristics which can represent different components of a system. The work done in this master thesis was based on providing ease to the modeller. The functionality of an existing tool is enhanced according to the requirement. Effort was made to improve overall usability, model formatting and layout. Now a modeller can easily view the class/- component hierarchy and can also modify the components value. One interesting feature added is that the component of a class will only be visible in the menu items if it is related to a particular class. Although these features improved the Modelica modeling environment but this improvement in an ongoing process and there are some desired features which are not achieved yet. 7.2 Future Work There is a lot of work I wished to do in this time slot but now it will be done as my future work ModelicaML Perspective Configuration ModelicaML is a powerful modeling language with its unique features and integration of UML and SysML. But there is still need for work on the feasibility issues of ModelicaML. This means that the initial setup should be user friendly and short. 41

54 42 Conclusions and Future Work So in order to achieve this target a dedicated perspective for ModelicaML is essential. The perspective will be automatically configured and there will be no need to perform the whole process described in chapter 2. The desired perspective should look like this. Figure 7.1. Desired Perspective OMC Communication The target of interactive integrated communication between ModelicaML modeling tool and OMC has not yet achieved, which means that so far there is no integrated environment has been developed that facilitates a tight communication between ModelicaML modeling tool and OMC due to shortage of time. This work will be considered as a future work.

ModelicaML: Getting Started Issue February 2012

ModelicaML: Getting Started Issue February 2012 ModelicaML: Getting Started Issue 1.6.4 28. February 2012 Wladimir Schamai EADS Innovation Works (Hamburg, Germany) Linkoping University (Linkoping, Sweden) Abstract: This document provides a short introduction

More information

ModelicaML: Getting Started Issue April 2012

ModelicaML: Getting Started Issue April 2012 ModelicaML: Getting Started Issue 1.6.5 13. April 2012 Wladimir Schamai EADS Innovation Works (Hamburg, Germany) Linkoping University (Linkoping, Sweden) Abstract: This document provides a short introduction

More information

AADL Graphical Editor Design

AADL Graphical Editor Design AADL Graphical Editor Design Peter Feiler Software Engineering Institute phf@sei.cmu.edu Introduction An AADL specification is a set of component type and implementation declarations. They are organized

More information

Terrain Rendering using Multiple Optimally Adapting Meshes (MOAM)

Terrain Rendering using Multiple Optimally Adapting Meshes (MOAM) Examensarbete LITH-ITN-MT-EX--04/018--SE Terrain Rendering using Multiple Optimally Adapting Meshes (MOAM) Mårten Larsson 2004-02-23 Department of Science and Technology Linköpings Universitet SE-601 74

More information

Institutionen för datavetenskap Department of Computer and Information Science

Institutionen för datavetenskap Department of Computer and Information Science Institutionen för datavetenskap Department of Computer and Information Science Final thesis Design and Implementation of the ModelicaML Code Generator Using Acceleo 3.X by Ibrahim Bumin Kara LIU-IDA/LITH-EX-A--15/012

More information

1 Overview. 1 Overview. Contents. 1.1 Table of Contents Table of Contents

1 Overview. 1 Overview. Contents. 1.1 Table of Contents Table of Contents 1 Overview Contents 1. 1.1 Table of Contents 1 Overview Papyrus is an environment for editing any kind of EMF model, particularly supporting UML 2 ( Unified Modeling Language (UML) version 2.4.1 ) and

More information

PGT - A path generation toolbox for Matlab (v0.1)

PGT - A path generation toolbox for Matlab (v0.1) PGT - A path generation toolbox for Matlab (v0.1) Maria Nyström, Mikael Norrlöf Division of Automatic Control Department of Electrical Engineering Linköpings universitet, SE-581 83 Linköping, Sweden WWW:

More information

Institutionen för systemteknik

Institutionen för systemteknik Institutionen för systemteknik Department of Electrical Engineering Examensarbete Design and Implementation of a DMA Controller for Digital Signal Processor Examensarbete utfört i Datorteknik vid Tekniska

More information

Institutionen för systemteknik

Institutionen för systemteknik Institutionen för systemteknik Department of Electrical Engineering Examensarbete Automated Fault Tree Generation from Requirement Structures Examensarbete utfört i Fordonssystem vid Tekniska högskolan

More information

Towards Unified System Modeling and Simulation with ModelicaML: Modeling of Executable Behavior Using Graphical Notations

Towards Unified System Modeling and Simulation with ModelicaML: Modeling of Executable Behavior Using Graphical Notations Towards Unified System Modeling and Simulation with ModelicaML: Modeling of Executable Behavior Using Graphical Notations Wladimir Schamai 1, Peter Fritzson 2, Chris Paredis 3, Adrian Pop 2 1 EADS Innovation

More information

EXPRESSING REQUIREMENTS IN MODELICA

EXPRESSING REQUIREMENTS IN MODELICA EXPRESSING REQUIREMENTS IN MODELICA Lena Buffoni and Peter Fritzson Linköping University SE-581 83 Linköping Sweden ABSTRACT As cyber-physical systems grow increasingly complex, the need for methodologies

More information

Institutionen för datavetenskap Department of Computer and Information Science

Institutionen för datavetenskap Department of Computer and Information Science Institutionen för datavetenskap Department of Computer and Information Science Final thesis Load management for a telecom charging system by Johan Bjerre LIU-IDA/LITH-EX-A--08/043--SE 2008-10-13 1 Linköpings

More information

Towards Unified System Modeling with the ModelicaML UML Profile

Towards Unified System Modeling with the ModelicaML UML Profile Towards Unified System Modeling with the ModelicaML UML Profile Adrian Pop, David Akhvlediani, Peter Fritzson Programming Environments Lab, Department of Computer and Information Science Linköping University,

More information

Institutionen för systemteknik Department of Electrical Engineering

Institutionen för systemteknik Department of Electrical Engineering Institutionen för systemteknik Department of Electrical Engineering Examensarbete Automatic Parallel Memory Address Generation for Parallel DSP Computing Master thesis performed in Computer Engineering

More information

Getting Started with Papyrus for RealTime v0.9

Getting Started with Papyrus for RealTime v0.9 1. Introduction This tutorial will show the creation of a simple model using Papyrus for RealTime version 0.9.0 (based on Eclipse Neon). As a precondition to going through this tutorial, you must have

More information

Institutionen för datavetenskap

Institutionen för datavetenskap Institutionen för datavetenskap Department of Computer and Information Science Final thesis Validation of ModelicaML Models by Goutham Gatla LIU-IDA/LITH-EX-A 12/061 2012-11-22 Linköpings universitet SE-581

More information

ADT: Eclipse development tools for ATL

ADT: Eclipse development tools for ATL ADT: Eclipse development tools for ATL Freddy Allilaire (freddy.allilaire@laposte.net) Tarik Idrissi (tarik.idrissi@laposte.net) Université de Nantes Faculté de Sciences et Techniques LINA (Laboratoire

More information

Software Architecture Checker

Software Architecture Checker School of Mathematics and Systems Engineering Reports from MSI - Rapporter från MSI Software Architecture Checker Yasin Bahtiyar Jul 2008 MSI Report 08075 Växjö University ISSN 1650-2647 SE-351 95 VÄXJÖ

More information

Institutionen för datavetenskap Department of Computer and Information Science

Institutionen för datavetenskap Department of Computer and Information Science Institutionen för datavetenskap Department of Computer and Information Science Final thesis K Shortest Path Implementation by RadhaKrishna Nagubadi LIU-IDA/LITH-EX-A--13/41--SE 213-6-27 Linköpings universitet

More information

ATESST2 D4.2.1 Grant Agreement

ATESST2 D4.2.1 Grant Agreement Grant Agreement 224442 Advancing Traffic Efficiency and Safety through Software Technology phase 2 (ATESST2) Report type Report name Deliverable D4.2.1 Dissemination level PU (Public) Status Final Version

More information

Introduction to EGF. Benoît Langlois / Thales Global Services.

Introduction to EGF. Benoît Langlois / Thales Global Services. www.thalesgroup.com Introduction to EGF Benoît Langlois / Thales Global Services 2 / Agenda Introduction EGF Architecture Concepts & Practice EGF Portfolios 3 / Agenda Introduction EGF Architecture Concepts

More information

On the link between Architectural Description Models and Modelica Analyses Models

On the link between Architectural Description Models and Modelica Analyses Models On the link between Architectural Description Models and Modelica Analyses Models Damien Chapon Guillaume Bouchez Airbus France 316 Route de Bayonne 31060 Toulouse {damien.chapon,guillaume.bouchez}@airbus.com

More information

About the Tutorial. Audience. Prerequisites. Copyright & Disclaimer

About the Tutorial. Audience. Prerequisites. Copyright & Disclaimer i About the Tutorial Eclipse is an integrated development environment (IDE) for Java and other programming languages like C, C++, PHP, and Ruby etc. Development environment provided by Eclipse includes

More information

Meta-Model Guided Error Correction for UML Models

Meta-Model Guided Error Correction for UML Models Final Thesis Meta-Model Guided Error Correction for UML Models by Fredrik Bäckström and Anders Ivarsson LITH-IDA-EX--06/079--SE 2006-12-13 Final Thesis Meta-Model Guided Error Correction for UML Models

More information

with TestComplete 12 Desktop, Web, and Mobile Testing Tutorials

with TestComplete 12 Desktop, Web, and Mobile Testing Tutorials with TestComplete 12 Desktop, Web, and Mobile Testing Tutorials 2 About the Tutorial With TestComplete, you can test applications of three major types: desktop, web and mobile: Desktop applications - these

More information

OMEdit. OpenModelica Connection Editor. User Manual Version September 2011

OMEdit. OpenModelica Connection Editor. User Manual Version September 2011 OMEdit OpenModelica Connection Editor User Manual Version 1.8.0 September 2011 This Description is extracted from Chapter 2 of the OpenModelica 1.8 User's Guide Copyright by Open Source Modelica Consortium

More information

EMC Documentum Composer

EMC Documentum Composer EMC Documentum Composer Version 6.0 SP1.5 User Guide P/N 300 005 253 A02 EMC Corporation Corporate Headquarters: Hopkinton, MA 01748 9103 1 508 435 1000 www.emc.com Copyright 2008 EMC Corporation. All

More information

Enabling Component-Based Model Transformations with QVT. Li Dan

Enabling Component-Based Model Transformations with QVT. Li Dan Enabling Component-Based Model Transformations with QVT by Li Dan Doctor of Philosophy in Software Engineering 2013 Faculty of Science and Technology University of Macau Enabling Component-Based Model

More information

Enterprise Architect Training Courses

Enterprise Architect Training Courses On-site training from as little as 135 per delegate per day! Enterprise Architect Training Courses Tassc trainers are expert practitioners in Enterprise Architect with over 10 years experience in object

More information

Dominique Blouin Etienne Borde

Dominique Blouin Etienne Borde Dominique Blouin Etienne Borde dominique.blouin@telecom-paristech.fr etienne.borde@telecom-paristech.fr Institut Mines-Télécom Content Domain specific Languages in a Nutshell Overview of Eclipse Modeling

More information

EAXML Demonstration Platform on Artop/Sphinx.

EAXML Demonstration Platform on Artop/Sphinx. Grant Agreement 260057 Model-based Analysis & Engineering of Novel Architectures for Dependable Electric Vehicles Report type Report name Deliverable D5.3.1 EAXML Demonstration Platform on Artop/Sphinx.

More information

IncQuery for MagicDraw Quick Start Guide

IncQuery for MagicDraw Quick Start Guide IncQuery for MagicDraw Quick Start Guide v1.6.2, June 17, 2018 Table of Contents 1. Installation Guide............................................................. 1 2. Custom Query Evaluation......................................................

More information

MAENAD Modeling Workbench

MAENAD Modeling Workbench Grant Agreement 260057 Model-based Analysis & Engineering of Novel Architectures for Dependable Electric Vehicles Report type Report name Deliverable D5.1.1 MAENAD Modeling Workbench Dissemination level

More information

Automating Model Composition for Design Verification

Automating Model Composition for Design Verification Automating Model Composition for Design Verification Wladimir Schamai (Airbus Group Innovations) Lena Buffoni (Linköping University) Peter Fritzson (Linköping University) Daniel Bouskela (EDF) MODPROD

More information

MAEANAD Modeling Workbench

MAEANAD Modeling Workbench Grant Agreement 224442 Model-based Analysis & Engineering of Novel Architectures for Dependable Electric Vehicles Report type Report name Deliverable D5.1.1 MAEANAD Modeling Workbench Dissemination level

More information

20. Eclipse and Framework Extension Languages

20. Eclipse and Framework Extension Languages 20. Eclipse and Framework Extension Languages Prof. Uwe Aßmann TU Dresden Institut für Software und Multimediatechnik Lehrstuhl Softwaretechnologie Version 11-1.0, 12/17/11 Design Patterns and Frameworks,

More information

OMEdit OpenModelica Connection Editor

OMEdit OpenModelica Connection Editor OMEdit OpenModelica Connection Editor User Manual Version 1.8.1 January 2012 This Description is extracted from Chapter 2 of the OpenModelica 1.8.1 User's Guide Copyright by Open Source Modelica Consortium

More information

An Overview of the SysML-Modelica Transformation Specification

An Overview of the SysML-Modelica Transformation Specification An Overview of the SysML-Modelica Transformation Specification Christiaan J.J. Paredis 1, Yves Bernard 2, Roger M Burkhart 3. Hans-Peter de Koning 4, Sanford Friedenthal 5, Peter Fritzson 6, Nicolas F

More information

Mend for Eclipse quick start guide local analysis

Mend for Eclipse quick start guide local analysis The Semmle Mend for Eclipse plugin allows users to view Semmle results in Eclipse. This document describes how to install and use the plugin for local analysis. You can install the plugin using a Semmle

More information

COMMUNITIES USER MANUAL. Satori Team

COMMUNITIES USER MANUAL. Satori Team COMMUNITIES USER MANUAL Satori Team Table of Contents Communities... 2 1. Introduction... 4 2. Roles and privileges.... 5 3. Process flow.... 6 4. Description... 8 a) Community page.... 9 b) Creating community

More information

Appending Variable-Structure to Modelica Models (WIP)

Appending Variable-Structure to Modelica Models (WIP) Appending Variable-Structure to Modelica Models (WIP) Daniel Gomez Esperon, Alexandra Mehlhase, Thomas Karbe Technische Universität Berlin Ernst-Reuter-Platz 7, 10587 Berlin, Germany {gomezesperon, a.mehlhase,

More information

code pattern analysis of object-oriented programming languages

code pattern analysis of object-oriented programming languages code pattern analysis of object-oriented programming languages by Xubo Miao A thesis submitted to the School of Computing in conformity with the requirements for the degree of Master of Science Queen s

More information

Dynamic Model Based Diagnosis for Combustion Engines in RODON

Dynamic Model Based Diagnosis for Combustion Engines in RODON Dynamic Model Based Diagnosis for Combustion Engines in RODON Master Thesis performed at Vehicular Systems and Sörman Information & Media AB by Joella Lundkvist Stina Wahnström Reg nr: LiTH-ISY-EX -- 07/4003

More information

Workbench and JFace Foundations. Part One, of a two part tutorial series

Workbench and JFace Foundations. Part One, of a two part tutorial series Workbench and JFace Foundations Part One, of a two part tutorial series 2005 by IBM; made available under the EPL v1.0 Date: February 28, 2005 About the Speakers Tod Creasey Senior Software Developer,

More information

TogoDocClient Plug-ins development manual. TogoDocClient plug-ins development manual

TogoDocClient Plug-ins development manual. TogoDocClient plug-ins development manual TogoDocClient plug-ins development manual Contents TogoDocClient plug-ins development manual... i 1. The purpose of this document... 1 2. Developing TogoDoc Client's plug-ins... 1 2.1. Building development

More information

The ARCUS Planning Framework for UAV Surveillance with EO/IR Sensors

The ARCUS Planning Framework for UAV Surveillance with EO/IR Sensors Technical report from Automatic Control at Linköpings universitet The ARCUS Planning Framework for UAV Surveillance with EO/IR Sensors Per Skoglar Division of Automatic Control E-mail: skoglar@isy.liu.se

More information

Execution of UML State Machines Using Modelica

Execution of UML State Machines Using Modelica Execution of UML State Machines Using Modelica Wladimir Schamai 1, Uwe Pohlmann 2, Peter Fritzson 3, Christiaan J.J. Paredis 4, Philipp Helle 1, Carsten Strobel 1 1 EADS Innovation Works, Germany 2 University

More information

A QUICK OVERVIEW OF THE OMNeT++ IDE

A QUICK OVERVIEW OF THE OMNeT++ IDE Introduction A QUICK OVERVIEW OF THE OMNeT++ IDE The OMNeT++ Integrated Development Environment is based on the Eclipse platform, and extends it with new editors, views, wizards, and additional functionality.

More information

COP 3330 Final Exam Review

COP 3330 Final Exam Review COP 3330 Final Exam Review I. The Basics (Chapters 2, 5, 6) a. comments b. identifiers, reserved words c. white space d. compilers vs. interpreters e. syntax, semantics f. errors i. syntax ii. run-time

More information

Institutionen för systemteknik

Institutionen för systemteknik Institutionen för systemteknik Department of Electrical Engineering Examensarbete Baseband Processing Using the Julia Language Examensarbete utfört i Elektroteknik vid Tekniska högskolan vid Linköpings

More information

Institutionen för systemteknik

Institutionen för systemteknik Institutionen för systemteknik Department of Electrical Engineering Examensarbete Machine Learning for detection of barcodes and OCR Examensarbete utfört i Datorseende vid Tekniska högskolan vid Linköpings

More information

EMC Documentum Composer

EMC Documentum Composer EMC Documentum Composer Version 6.5 SP2 User Guide P/N 300-009-462 A01 EMC Corporation Corporate Headquarters: Hopkinton, MA 01748-9103 1-508-435-1000 www.emc.com Copyright 2008 2009 EMC Corporation. All

More information

Telerik Corp. Test Studio Standalone & Visual Studio Plug-In Quick-Start Guide

Telerik Corp. Test Studio Standalone & Visual Studio Plug-In Quick-Start Guide Test Studio Standalone & Visual Studio Plug-In Quick-Start Guide Contents Create your First Test... 3 Standalone Web Test... 3 Standalone WPF Test... 6 Standalone Silverlight Test... 8 Visual Studio Plug-In

More information

Migration to E4. Eclipse Con France 2016

Migration to E4. Eclipse Con France 2016 Migration to E4 Eclipse Con France 2016 8th June 2016 Table des matières I - Migration to E4 5 A. Presentation... 6 B. Migration to E4... 6 C. Migration tooling... 9 D. Model Fragments and Processors...

More information

Workpackage 15: DBE Business Modeling Language. Deliverable D15.5: BML Editor Final Release

Workpackage 15: DBE Business Modeling Language. Deliverable D15.5: BML Editor Final Release Contract n 507953 Workpackage 15: DBE Business Modeling Language Deliverable D15.5: BML Editor Final Release Project funded by the European Community under the Information Society Technology Programme

More information

User Guide: Content editing

User Guide: Content editing DIGITAL FACTORY 7.0 User Guide: Content editing Rooted in Open Source CMS, Jahia s Digital Industrialization paradigm is about streamlining Enterprise digital projects across channels to truly control

More information

WPS Workbench. user guide. "To help guide you through using the WPS user interface (Workbench) to create, edit and run programs"

WPS Workbench. user guide. To help guide you through using the WPS user interface (Workbench) to create, edit and run programs WPS Workbench user guide "To help guide you through using the WPS user interface (Workbench) to create, edit and run programs" Version: 3.1.7 Copyright 2002-2018 World Programming Limited www.worldprogramming.com

More information

OpenModelica Development Environment with Eclipse Integration for Browsing, Modeling, and Debugging

OpenModelica Development Environment with Eclipse Integration for Browsing, Modeling, and Debugging OpenModelica Development Environment with Eclipse Integration for Browsing, Modeling, and Debugging Adrian Pop, Peter Fritzson, Andreas Remar, Elmir Jagudin, David Akhvlediani PELAB Programming Environment

More information

Institutionen för systemteknik

Institutionen för systemteknik Institutionen för systemteknik Department of Electrical Engineering Examensarbete Image interpolation in firmware for 3D display Examensarbete utfört i Elektroniksystem vid Tekniska högskolan i Linköping

More information

Getting started with WebRatio 6 BPM - WebRatio WebML Wiki

Getting started with WebRatio 6 BPM - WebRatio WebML Wiki 1 of 28 12/12/12 20:02 Getting started with WebRatio 6 BPM From WebRatio WebML Wiki Category: Business Process Model Level: Beginner Topics: Business Process Model Users (rate it!) Rating: Thank you for

More information

Composer Guide for JavaScript Development

Composer Guide for JavaScript Development IBM Initiate Master Data Service Version 10 Release 0 Composer Guide for JavaScript Development GI13-2630-00 IBM Initiate Master Data Service Version 10 Release 0 Composer Guide for JavaScript Development

More information

Deliverable D5.1.1 MAENAD Modeling Workbench

Deliverable D5.1.1 MAENAD Modeling Workbench Grant Agreement 224442 Model-based Analysis & Engineering of Novel Architectures for Dependable Electric Vehicles Report type Report name Deliverable D5.1.1 MAENAD Modeling Workbench Dissemination level

More information

InfoSphere Data Architect Pluglets

InfoSphere Data Architect Pluglets InfoSphere Data Architect Pluglets Macros for Eclipse This article provides information on how to develop custom pluglets and use sample pluglets provided by InfoSphere Data Architect. InfoSphere Data

More information

Start Up Benoît Langlois / Thales Global Services Eclipse (EMFT) EGF 2011 by Thales; made available under the EPL v1.

Start Up Benoît Langlois / Thales Global Services Eclipse (EMFT) EGF 2011 by Thales; made available under the EPL v1. www.thalesgroup.com Start Up Benoît Langlois / Thales Global Services 2 / Introduction EGF Architecture Concepts & Practice EGF Portfolios 3 / Introduction EGF Architecture Concepts & Practice EGF Portfolios

More information

Metamodeling. Janos Sztipanovits ISIS, Vanderbilt University

Metamodeling. Janos Sztipanovits ISIS, Vanderbilt University Metamodeling Janos ISIS, Vanderbilt University janos.sztipanovits@vanderbilt.edusztipanovits@vanderbilt edu Content Overview of Metamodeling Abstract Syntax Metamodeling Concepts Metamodeling languages

More information

Modelica Environments and OpenModelica

Modelica Environments and OpenModelica Environments and Open 1 Peter Fritzson Dymola Dynasim (Dassault Systemes) Sweden First tool on the market Main focus on automotive industry www.dynasim.com 2 Peter Fritzson 1 Simulation X ITI Germany Mechatronic

More information

News in RSA-RTE 10.2 updated for sprint Mattias Mohlin, May 2018

News in RSA-RTE 10.2 updated for sprint Mattias Mohlin, May 2018 News in RSA-RTE 10.2 updated for sprint 2018.18 Mattias Mohlin, May 2018 Overview Now based on Eclipse Oxygen.3 (4.7.3) Contains everything from RSARTE 10.1 and also additional features and bug fixes See

More information

From: Sudarshan N Raghavan (770)

From: Sudarshan N Raghavan (770) Spectrum Software, Inc. 11445 Johns Creek Pkwy. Suite 300 Duluth, GA 30097 www.spectrumscm.com Subject: SpectrumSCM Plugin for the Eclipse Platform Original Issue Date: February 2 nd, 2005 Latest Update

More information

Proceedings of the 4th International Modelica Conference, Hamburg, March 7-8, 2005, Gerhard Schmitz (editor)

Proceedings of the 4th International Modelica Conference, Hamburg, March 7-8, 2005, Gerhard Schmitz (editor) Proceedings of the 4th International Modelica Conference, Hamburg, March 7-8, 2005, Gerhard Schmitz (editor) A Siemers, I Nakhimovski, D Fritzson Linköping University, Sweden Meta-modelling of Mechanical

More information

Synthesis-driven Derivation of Process Graphs from Functional Blocks for Time-Triggered Embedded Systems. Ghennadii Sivatki

Synthesis-driven Derivation of Process Graphs from Functional Blocks for Time-Triggered Embedded Systems. Ghennadii Sivatki Master Thesis Synthesis-driven Derivation of Process Graphs from Functional Blocks for Time-Triggered Embedded Systems by Ghennadii Sivatki LITH-IDA/DS-EX--05/010--SE 2005-11-25 Avdelning, institution

More information

Object Oriented Programming: In this course we began an introduction to programming from an object-oriented approach.

Object Oriented Programming: In this course we began an introduction to programming from an object-oriented approach. CMSC 131: Chapter 28 Final Review: What you learned this semester The Big Picture Object Oriented Programming: In this course we began an introduction to programming from an object-oriented approach. Java

More information

International Journal for Management Science And Technology (IJMST)

International Journal for Management Science And Technology (IJMST) Volume 4; Issue 03 Manuscript- 1 ISSN: 2320-8848 (Online) ISSN: 2321-0362 (Print) International Journal for Management Science And Technology (IJMST) GENERATION OF SOURCE CODE SUMMARY BY AUTOMATIC IDENTIFICATION

More information

EMC Documentum Composer

EMC Documentum Composer EMC Documentum Composer Version 6 SP1 User Guide P/N 300 005 253 A01 EMC Corporation Corporate Headquarters: Hopkinton, MA 01748 9103 1 508 435 1000 www.emc.com Copyright 2008 EMC Corporation. All rights

More information

User Guide. Data Preparation R-1.0

User Guide. Data Preparation R-1.0 User Guide Data Preparation R-1.0 Contents 1. About this Guide... 4 1.1. Document History... 4 1.2. Overview... 4 1.3. Target Audience... 4 2. Introduction... 4 2.1. Introducing the Big Data BizViz Data

More information

Piping & Instrumentation Diagrams

Piping & Instrumentation Diagrams Piping & Instrumentation Diagrams Preface Using This Guide What's New? Getting Started Entering the Workbench Setting up Working Units and Grid Placing Components Routing a Piping Line or I & C Loop Placing

More information

An Ontological Framework for Contextualising Information in Hypermedia Systems.

An Ontological Framework for Contextualising Information in Hypermedia Systems. An Ontological Framework for Contextualising Information in Hypermedia Systems. by Andrew James Bucknell Thesis submitted for the degree of Doctor of Philosophy University of Technology, Sydney 2008 CERTIFICATE

More information

Modeling GAMs with SysML. Automatic GAMs code generation with Model-2-Text tools

Modeling GAMs with SysML. Automatic GAMs code generation with Model-2-Text tools & Automatic GAMs code generation with Model-2-Text tools G. De Tommasi, R. Vitelli October 2011 Page 1 of 23 0. DOCUMENT INFORMATION 0.1 DOCUMENT HISTORY AND VERSION CONTROL REVISION DATE STATUS COMMENTS/MODIFICATIONS

More information

Implement a Multi-Frontend Chat Application based on Eclipse Scout

Implement a Multi-Frontend Chat Application based on Eclipse Scout BAHBAH TUTORIAL Implement a Multi-Frontend Chat Application based on Eclipse Scout http://www.eclipse.org/scout/ 24.10.2012 Authors: Matthias Zimmermann, Matthias Villiger, Judith Gull TABLE OF CONTENTS

More information

Model Driven Development Unified Modeling Language (UML)

Model Driven Development Unified Modeling Language (UML) Model Driven Development Unified Modeling Language (UML) An Overview UML UML is a modeling notation standardized by OMG (proposal 1997, ver.1.1 in 1998, ver. 2.0 in 2004) now in 2.4.1 mature based on notations

More information

Dominique Blouin Etienne Borde

Dominique Blouin Etienne Borde Dominique Blouin Etienne Borde SE206: Code Generation Techniques dominique.blouin@telecom-paristech.fr etienne.borde@telecom-paristech.fr Institut Mines-Télécom Content Introduction Domain specific Languages

More information

OMEdit. OpenModelica Connection Editor. User Manual Version April 2011

OMEdit. OpenModelica Connection Editor. User Manual Version April 2011 OMEdit OpenModelica Connection Editor User Manual Version 1.7.0 April 2011 This Description is Extracted from Chapter 2 of the OpenModelica 1.7 User's Guide Copyright by Open Source Modelica Consortium

More information

WA1278 Introduction to Java Using Eclipse

WA1278 Introduction to Java Using Eclipse Lincoln Land Community College Capital City Training Center 130 West Mason Springfield, IL 62702 217-782-7436 www.llcc.edu/cctc WA1278 Introduction to Java Using Eclipse This course introduces the Java

More information

News in RSA-RTE 10.1 updated for sprint Mattias Mohlin, November 2017

News in RSA-RTE 10.1 updated for sprint Mattias Mohlin, November 2017 News in RSA-RTE 10.1 updated for sprint 2017.46 Mattias Mohlin, November 2017 Overview Now based on Eclipse Neon.3 (4.6.3) Many general improvements since Eclipse Mars Contains everything from RSARTE 10

More information

IDERA ER/Studio Software Architect Evaluation Guide. Version 16.5/2016+ Published February 2017

IDERA ER/Studio Software Architect Evaluation Guide. Version 16.5/2016+ Published February 2017 IDERA ER/Studio Software Architect Evaluation Guide Version 16.5/2016+ Published February 2017 2017 IDERA, Inc. All rights reserved. IDERA and the IDERA logo are trademarks or registered trademarks of

More information

Computer Programming II C++ (830)

Computer Programming II C++ (830) DESCRIPTION This is an advanced course in computer programming/software engineering and applications. It reviews and builds on the concepts introduced in CP I. It introduces students to dynamic data structures,

More information

Structural Algorithms in RODON

Structural Algorithms in RODON Structural Algorithms in RODON With a prototype implementation in Java Master s thesis performed at the Vehicular Systems division, department of Electrical Engineering at Linköping University by Oskar

More information

FeatureIDE in a Nutshell

FeatureIDE in a Nutshell FeatureIDE in a Nutshell 3 FeatureIDE implements a general support to implement feature-oriented software product lines. In this chapter, we give a general overview on the functionalities of FeatureIDE.

More information

Computer Programming II Java

Computer Programming II Java EXAM INFORMATION Items 40 Points 41 Prerequisites SECONDARY MATH I COMPUTER PROGRAMMING I Course Length DESCRIPTION This is an advanced course in computer programming/software engineering and applications.

More information

Eclipse Plug-in for AccuRev User s Guide Version April 2012

Eclipse Plug-in for AccuRev User s Guide Version April 2012 Eclipse Plug-in for AccuRev User s Guide Version 2012.1 April 2012 Revised 4/16/12 Copyright AccuRev, Inc. 1995 2012 ALL RIGHTS RESERVED This product incorporates technology that may be covered by one

More information

Virtual Plant control based on ABB 800xa Conceptualization to Simulator

Virtual Plant control based on ABB 800xa Conceptualization to Simulator Virtual Plant control based on ABB 800xa Conceptualization to Simulator Yousef Iskandarani, Karina Nohammer and Hamid Reza Karimi Department of Engineering University of Agder Jon Lilletuns vei 9, 4879

More information

Institutionen för systemteknik

Institutionen för systemteknik Institutionen för systemteknik Department of Electrical Engineering Examensarbete Bus System for Coresonic SIMT DSP Examensarbete utfört i Elektroteknik vid Tekniska högskolan vid Linköpings universitet

More information

The New Generation of the Eclipse Platform. Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék

The New Generation of the Eclipse Platform. Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék The New Generation of the Eclipse Platform Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék Eclipse RCP For developing client applications o Based on the Eclipse

More information

Institutionen för systemteknik

Institutionen för systemteknik Institutionen för systemteknik Department of Electrical Engineering Examensarbete 3D Position Estimation of a Person of Interest in Multiple Video Sequences: Person of Interest Recognition Examensarbete

More information

Java for Programmers Course (equivalent to SL 275) 36 Contact Hours

Java for Programmers Course (equivalent to SL 275) 36 Contact Hours Java for Programmers Course (equivalent to SL 275) 36 Contact Hours Course Overview This course teaches programmers the skills necessary to create Java programming system applications and satisfies the

More information

Institutionen för systemteknik

Institutionen för systemteknik Institutionen för systemteknik Department of Electrical Engineering Examensarbete Implementations of the FFT algorithm on GPU Examensarbete utfört i Elektroniksystem vid Tekniska högskolan vid Linköpings

More information

UML PROFILING AND DSL

UML PROFILING AND DSL UML PROFILING AND DSL version 17.0.1 user guide No Magic, Inc. 2011 All material contained herein is considered proprietary information owned by No Magic, Inc. and is not to be shared, copied, or reproduced

More information

Formalisation of edit operations for structure editors

Formalisation of edit operations for structure editors Master s thesis Formalisation of edit operations for structure editors by Johan Holmquist LITH-IDA-EX--05/015--SE 2005-09-06 Master s thesis Formalisation of edit operations for structure editors by Johan

More information

VP-UML Quick Start. Last update: October 15, Copyright Visual Paradigm International Ltd.

VP-UML Quick Start. Last update: October 15, Copyright Visual Paradigm International Ltd. VP-UML Quick Start Last update: October 15, 2012 Copyright 2002-2012 Visual Paradigm International Ltd. Table of Contents Table of Contents... 2 Getting Started... 3 Installing Visual Paradigm for UML

More information

Computer Programming II Python

Computer Programming II Python EXAM INFORMATION Items 32 Points 33 Prerequisites SECONDARY MATH I COMPUTER PROGRAMMING I Grade Level 10-12 Course Length ONE YEAR DESCRIPTION This is an advanced course in computer programming/software

More information