240 likes | 389 Views
Umple Toolkit for Model-Oriented Programming. NECSIS Webinar, May 3 2013 Timothy C. Lethbridge, University of Ottawa tcl@eecs.uottawa.ca http://www.eecs.uottawa.ca/~tcl http://www.umple.org. Model-Oriented Programming (in general).
E N D
Umple Toolkit for Model-Oriented Programming NECSIS Webinar, May 3 2013 Timothy C. Lethbridge, University of Ottawa tcl@eecs.uottawa.ca http://www.eecs.uottawa.ca/~tcl http://www.umple.org
Model-Oriented Programming (in general) • A new software development paradigm where modeling abstractions can be freely mixed with programming abstractions in the same development artifacts • Uses a textual syntax that supports the above • Compatible with diagrams, but a diagram is just a view • Implies/enables • model-driven development • executable models Umple NECSIS Webinar - May 2013
Umple: Simple, Ample,UML Programming Language • 1. Textual model-oriented programming tool for UML++ • Class diagrams, state diagrams • Patterns, aspects, concurrency, constraints, tracing • Embeds in C++/Java or vice-versa • Separation of concerns by mixins, aspects • 2. State-of-the-art, open source code generator • Java, C++, XMI, others • The only one that has • Infinitely nested state machines, with concurrency • Proper referential integrity and multiplicity constraints Umple NECSIS Webinar - May 2013
Why Umple and MOP? • Human-readable text is preferred by many developers • Can be manipulated, searched with many tools • Great for version control & variability modeling • Modeling concepts are just one further step in the increasing abstraction of programming • Text and diagrams are interchangable views of a system • Need for ‘better’ formality and model executability • Research showed that graphical modeling tools are too heavyweight in many contexts Umple NECSIS Webinar - May 2013
Key Umple Tools • UmpleOnline [Demo http://try.umple.org ] • For demonstrations • For education • For exploring ideas quickly • Command line compiler [Demo] • For traditional programmers, build machines • Eclipse Plugin • For use like any other compiler in Eclipse • For merging with other Eclipse-based modeling tools Umple NECSIS Webinar - May 2013
Selected Umple features • Attributes • http://attributes.umple.org • Associations • http://associations.umple.org • Notice the inline and independent associations • State Machines • http://statemachines.umple.org • Switch to ‘GraphViz state diagram’ in the options menu Umple NECSIS Webinar - May 2013
Demos of generated code • Java and Javadoc demo • http://helloworld.umple.org • Real time C++ demo Umple NECSIS Webinar - May 2013
How can Umple be Used?1. Model-driven development • Start with a UML model • Extensive code from this will be generated • b) Then embed other needed code in it • Main method, special algorithms • Can embed and generate for different languages • Code can be in different mixed in files Umple NECSIS Webinar - May 2013
How can Umple be Used?2. Umplification of legacy code • a) Start with an existing system in any textual language • b) Embed Umple in it to incrementally replace boilerplate code and raise abstraction • We have done this automatically with JHotDraw • PhD student Miguel Garzon’s thesis Umple NECSIS Webinar - May 2013
How can Umple be Used?3. Lightweight modeling and prototyping • Sketch a model and analyse it • Draw pictures starting with a textual format • Tends to be faster than using a GUI • Expecially for editing and what-if exploration Umple NECSIS Webinar - May 2013
How can Umple be Used?4. Adjunct to existing tools (Rhapsody/Simulink) • Alternative code generation • Alternative model editing • Variability modeling • Integration of existing code with models generated by these tools • Small-scale adding of modeling concepts to existing code Umple NECSIS Webinar - May 2013
Keys to Quality:A. Umple is written in itself • Umple.ump is a central file • http://code.google.com/p/umple/source/browse/trunk/cruise.umple/src/Umple.ump • Grammar DSL: Online • http://grammar.umple.org • (we migrated from Antlr to better handle embedded code blocks and gain flexibility) Umple NECSIS Webinar - May 2013
Keys to Quality:Umple in itself - 2 • Umple’s own class diagram generated by itself, from itself: • http://metamodel.umple.org • Colours represent key subsystems • Click on classes to see Javadoc, and then Umple Code Umple NECSIS Webinar - May 2013
Keys to Quality:B. TDD with100% pass always required • Multiple levels: • Parsing tests: basic constructs • Metamodel tests: ensure it is populated properly • E.g. http://code.google.com/p/umple/source/browse/trunk/cruise.umple/test/cruise/umple/compiler/AssociationTest.java • Implementation template tests: to ensure constructs generate code that looks as expected • Testbed semantic tests: Generate code and make sure it behaves the way it should Umple NECSIS Webinar - May 2013
Keys to Quality:C. Continuous integration • Small increments compiled frequently http://cc.umple.org • Single trunk, no branches for now • Online QA report:http://qa.umple.org Umple NECSIS Webinar - May 2013
Future Directions:1. Real Time and Autosar Compliance • 1. Extensions to Umple syntax to allow for textual declaration of Autosar capabilities • 2. Autosar-compliant code generation in C and C++ • Potential uses • R&D of new automotive features • Replacement or complement to existing tools • Part of the work of Mahmoud and Ahmed Orabi • Also working with Prof. G. Bochmann + AliaaAlghamdi • Plan to generate code for GM adaptive cruise control Umple NECSIS Webinar - May 2013
Future Directions:2. Multidimensional Separation of Concerns • Umple synergistically combines • Mixins • Limited aspect oriented capabilities (to be extended) • Umple also has a feature modeling capability that will be integrated in the main system soon • http://try.umple.org/vml.php • Future work on this topic: Vahdat Abdelzad • Potential linkage with Clafer Umple NECSIS Webinar - May 2013
Future Directions:3. Formalism Done Right • Step 1: Formally specify Umple syntax and semantics • Already a restricted subset of UML with some extensions • Step 2: Since Umple is written in itself, the Umple compiler can become formally specified • A path to certifiable code for safety cases • Generated code is designed to be readable and of highest quality • Work of future student Adesina Opeyemi • Collaboration with Prof. Stéphane Somé Umple NECSIS Webinar - May 2013
Future Directions:4. Import/Export and Integration • Under consideration: Embed Umple in Rhapsody • Work with UML models textually • Could use Rhapsody or Umple code generators • Option to support OMG’s Alf • Read XMI, Simulink models and transform to Umple • Will allow textual manipulation • Have had discussions with OMG about conforming to new standard XMI testcases • Discussed with tool vendors about Umple support Umple NECSIS Webinar - May 2013
Future Directions:5. Instrumenting & Tracing at the Model level • Modeling sublanguage MOTL • Specify trace cases to instrument execution under certain conditions • Current work of PhD student HamoudAljamaan Umple NECSIS Webinar - May 2013
Future Directions:6. Model Analysis • Metrics • Synergistically analyse the combination of code and model • Code metrics + model metrics • Find hotspots, excessive coupling, etc. • Work done in part by Antonio Resende • visiting Postdoc from Brasil • Umple already has extensive analysis to point out problems in UML models: en.error Umple NECSIS Webinar - May 2013
Future Directions:7. Become and Eclipse Foundation Project • Discussions have started Umple NECSIS Webinar - May 2013
Questions? Umple NECSIS Webinar - May 2013