Download presentation
Presentation is loading. Please wait.
Published byMagdalene Jacobs Modified over 9 years ago
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
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.