Presentation is loading. Please wait.

Presentation is loading. Please wait.

Exploring a Model-Oriented and Executable Syntax for UML Attributes SERA 2013SERA 2013 (August 7, 2013 in Prague, Czech Republic) Omar Badreddin, Andrew.

Similar presentations


Presentation on theme: "Exploring a Model-Oriented and Executable Syntax for UML Attributes SERA 2013SERA 2013 (August 7, 2013 in Prague, Czech Republic) Omar Badreddin, Andrew."— Presentation transcript:

1 Exploring a Model-Oriented and Executable Syntax for UML Attributes SERA 2013SERA 2013 (August 7, 2013 in Prague, Czech Republic) Omar Badreddin, Andrew Forward, Timothy C. Lethbridge1 University of Ottawa obadr024@uottawa.caobadr024@uottawa.ca / oobahy@gmail.comoobahy@gmail.com aforward@site.uottawa.caaforward@site.uottawa.ca / aforward@gmail.comaforward@gmail.com tcl@site.uottawa.ca http://umple.org Exploring a Model-Oriented and Executable Syntax for UML Attributes 1

2 Overview Model Oriented Programming Umple Overview Attributes in Practice Umple Attribute Syntax Attribute Code Generation 2 Exploring a Model-Oriented and Executable Syntax for UML Attributes

3 The philosophy of Model-Oriented Programming (MOP) MOP 3 Exploring a Model-Oriented and Executable Syntax for UML Attributes

4 Embed Models In Code 4 Exploring a Model-Oriented and Executable Syntax for UML Attributes

5 Unify programs and models 5 Exploring a Model-Oriented and Executable Syntax for UML Attributes

6 Supports Modeller and Programmer workflows Model-FirstIncremental Re- Engineering 6 Exploring a Model-Oriented and Executable Syntax for UML Attributes

7 Text Diagram Duality 7 Exploring a Model-Oriented and Executable Syntax for UML Attributes

8 Reduce Need to Round-Trip 8 Exploring a Model-Oriented and Executable Syntax for UML Attributes

9 Easily Integrate with Text-Based Tooling 9 Exploring a Model-Oriented and Executable Syntax for UML Attributes

10 A MOP technology and language family Umple 10 Exploring a Model-Oriented and Executable Syntax for UML Attributes

11 Why call it Umple? UML Programming Language Ample Simple 11 Exploring a Model-Oriented and Executable Syntax for UML Attributes

12 What does Umple support? Modeling abstractions Associations, Attributes, State machines (both simple and composite), model based tracing, and simple debugging. Supported languages Java, C++, Ruby, PhP Integration support XMI for model exchange, Ecore, textUML, Yuml, GraphViz, SQL 12 Exploring a Model-Oriented and Executable Syntax for UML Attributes

13 Attributes In Practice Google Code: fizzbuzz ExcelLibrary Ndependencyinjection Java Bug Reporting SourceForge: jEdit Freemaker Freecode: Java Financial Library 1831 variables 620 static 1211 instance 469 classes 13 Exploring a Model-Oriented and Executable Syntax for UML Attributes

14 Variable Distribution 14 Static (Class) Variables Member (Object) Variables E.g. avoiding magic numbers and state symbols (i.e. LEFT_NODE, RIGHT_NODE) Mostly counts, names and booleans (51%) Exploring a Model-Oriented and Executable Syntax for UML Attributes A lot of other object types

15 Attribute Identification 15 About 33% had attribute-like methods implementations Surprising that 35% had no external access at all Exploring a Model-Oriented and Executable Syntax for UML Attributes

16 Attribute Code Generation 16 Over half were simple boiler- plate implementations Exploring a Model-Oriented and Executable Syntax for UML Attributes

17 Observations Many simple set and get methods Drastic reduction in boiler-plate code Few truly immutable attributes Few attributes set in constructor Immutability needed for proper hash code (Java) Attribute multiplicities typically ‘one’ Basic multiplicity (0..1, 1, 0..*) available for attributes 17 Exploring a Model-Oriented and Executable Syntax for UML Attributes

18 Umple Attributes class Student { // defaults to String studentNumber; String grade; Integer entryAverage; } 18 Exploring a Model-Oriented and Executable Syntax for UML Attributes

19 Umple Data Types Umple treats the following attribute types as special String (always the default if unspecified) Integer Double Boolean Date, Time Code generation from the above will generate suitable types in the underlying language (Java, PHP, etc.) Umple classes can be used as types, but consider associations instead 19 Exploring a Model-Oriented and Executable Syntax for UML Attributes

20 Initializing Attributes class Student { // Initial value set to “Unknown”, // not required in class constructor name = "Unknown"; // Initialized, but can also be reset defaulted type = “FullTime”; // Name initialized to null in // constructor lazy program; } 20 Exploring a Model-Oriented and Executable Syntax for UML Attributes

21 Immutable Attributes class Student { // Cannot be changed after set in constructor immutable idNumber; // Can be set once, right after construction, // and is immutable after that // Useful for frameworks where objects are // created without initializing values lazy immutable barcode; } 21 Exploring a Model-Oriented and Executable Syntax for UML Attributes

22 Derived Attributes class Rectangle { Integer l; Integer w; // Derived Attributes Integer perimeter = { 2*getL() + 2*getW() } Integer area = { getL() * getW() } } 22 Exploring a Model-Oriented and Executable Syntax for UML Attributes

23 Additional Attribute Options class Student { // Umple assigns the next // available number autounique id; // Creates a constant value const Integer MAX_NUM_COURSES = 8; } class Address { // An address has many lines String[] lines; } 23 Exploring a Model-Oriented and Executable Syntax for UML Attributes

24 Attribute Code Generation (1) class Rectangle { name = "Rectangle"; Integer length; Integer width; Integer area = {getLenth() * getWidth()} } 24 Exploring a Model-Oriented and Executable Syntax for UML Attributes

25 Attribute Code Generation (2) // line 2 "model.ump" public class Rectangle { @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.RUNTIME) public @interface umplesourcefile{int[] line();String[] file();int[] javaline();int[] length();} //------------------------ // MEMBER VARIABLES //------------------------ //Rectangle Attributes private String name; private int length; private int width; //------------------------ // CONSTRUCTOR //------------------------ public Rectangle(int aLength, int aWidth) { name = "Rectangle"; length = aLength; width = aWidth; } //------------------------ // INTERFACE //------------------------ public boolean setName(String aName) { boolean wasSet = false; name = aName; wasSet = true; return wasSet; } public boolean setLength(int aLength) { boolean wasSet = false; length = aLength; wasSet = true; return wasSet; } public boolean setWidth(int aWidth) { boolean wasSet = false; width = aWidth; wasSet = true; return wasSet; } public String getName() { return name; } public int getLength() { return length; } public int getWidth() { return width; } @umplesourcefile(line={7},file={"model.ump"},javaline={79},length={2}) public int getArea() { return getLenth() * getWidth(); } public void delete() {} public String toString() { String outputString = ""; return super.toString() + "["+ "name" + ":" + getName()+ "," + "length" + ":" + getLength()+ "," + "width" + ":" + getWidth()+ "," + "area" + ":" + getArea()+ "]" + outputString; } 25 Constructor based on attributes missing an initial value Set method returns a boolean (was it “set” or not) Simple get method Derived methods do not have internal members Exploring a Model-Oriented and Executable Syntax for UML Attributes

26 http://try.umple.org Try It Yourself 26 Exploring a Model-Oriented and Executable Syntax for UML Attributes

27 Summary 27 Umple features can be created and viewed diagrammatically or textually Umple extends a base language in a minimally invasive way Intermediate generated code should not be edited = Modeling is programming and vice versa No round-trip engineering required Exploring a Model-Oriented and Executable Syntax for UML Attributes

28 Getting involved Open source project: https://code.google.com/p/umple/https://code.google.com/p/umple/ Teaching Use Umple to introduce UML and MDE. Umplification Incrementally replace boilerplate code with modeling abstractions Lightweight Modeling and Analysis Visualize Umple source as UML diagrams to analyze it Model driven development Generate code in one of the supported base languages Comments and feedback: tcl@site.uottawa.catcl@site.uottawa.ca 28 Exploring a Model-Oriented and Executable Syntax for UML Attributes

29 More information Publications on Umple: https://code.google.com/p/umple/wiki/Publications https://code.google.com/p/umple/wiki/Publications The User Manual: http://cruise.eecs.uottawa.ca/umple/GettingStarted.html http://cruise.eecs.uottawa.ca/umple/GettingStarted.html Umple Home page: http://cruise.eecs.uottawa.ca/umple/http://cruise.eecs.uottawa.ca/umple/ Download Umple: http://cruise.eecs.uottawa.ca/umpleonline/download_eclipse_umpl e_plugin.html http://cruise.eecs.uottawa.ca/umpleonline/download_eclipse_umpl e_plugin.html Report an issue: https://code.google.com/p/umple/issues/entryhttps://code.google.com/p/umple/issues/entry 29 Exploring a Model-Oriented and Executable Syntax for UML Attributes

30 30 Exploring a Model-Oriented and Executable Syntax for UML Attributes


Download ppt "Exploring a Model-Oriented and Executable Syntax for UML Attributes SERA 2013SERA 2013 (August 7, 2013 in Prague, Czech Republic) Omar Badreddin, Andrew."

Similar presentations


Ads by Google