http://www.moskitt.org Automating the Development of Information Systems with the MOSKitt Open Source Tool Vicente Pelechano Universidad Politécnica de Valencia
Content PART I: About the Project and the Tool PART II: Advanced Features PART III: Industry, Research and Lessons
Content Project Overview What is MOSKitt? Technologies Tools Infrastructure PART I: About the Project and the Tool
Project Overview The history begins with gvpontis Conselleria d Infraestructures, Territori i Medi Ambient (CITMA) (Infrastructures, Territory and Environment Regional Ministry) Comunidad Valenciana Government (Generalitat)
Project Overview gvmétrica: Software Development Method How to apply gvmétrica? Document Templates Tools?
Project Overview Free CASE tools survey: April 2006 No tools satisfying most of the organization requirements were found Decision: Develop New free CASE tool UPV-PROS proposes Eclipse as technological platform gvcase Project: Starts April 2007 Renamed as MOSKitt in 2008
Project Overview Project Participants Development Leading Requirements Fundings Technical Knowledge Dissemination
What is MOSKitt? A free CASE tool built on Eclipse (EPL license) It provides the necessary tools for supporting gvmétrica and much more... CITMA Supports UML modeling language and more...
What is MOSKitt? it is MORE than a CASE Tool... MOSKitt has been conceived as a Particular CASE tool MOSKitt is a general Framework for the definition and implementation of SW production methods based on MDE principles MOSKitt can be easily adapted and extended
Technologies Eclipse Modeling Project EMF GMF GEF UML2 Tools EMF Compare EMF Search Eclipse Process Framework (EPF)
Technologies ATL Data Tools Platform AMW BPMN STP XPand2 Xtend JUnit EVL
Technologies Content Management System Control Version System Project Management Web App
Distribution Currently, MOSKitt is based on Eclipse Galileo Now, we are Migrating to Eclipse INDIGO RC2 (3.7.2) MOSKitt is distributed as a standalone RCP Modules can be downloaded and installed to build a concrete version of MOSKitt adapted to user needs
General View Method Support: gvmétrica Method Designer X METHOD... Z METHOD TOOLS RDB Designer BPMN Editor UML Editor Sketcher User Interface Modeling INFRASTRUCTURE Transformation Management and Configuration Graphical Editors Traceability Model Synchronization Forms Modeling Framework Artifacts Library Model Explorer
Tools Method Support: gvmétrica Method Designer X METHOD... Z METHOD TOOLS RDB Designer BPMN Editor UML Editor Sketcher User Interface Modeling INFRASTRUCTURE Transformation Management and Configuration Graphical Editors Traceability Model Synchronization Forms Modeling Framework Artifacts Library Model Explorer
BPMN Modeler BPMN Modeling Support Administrative Procedures Lanes, Tasks, SubProcess and Control Flow Document Modeling Groups and Families of Documents Templates
UML2 Modeler UML2 Modeling Class Sequence State Transition Activity Use Cases Support the Definition and Application of UML Profiles
RDB Designer RDB Modeling Tables Keys Views Users Roles Groups DDL Generation MySQL PostgreSQL Oracle Reverse Engineering
User Interface Modeling User/Roles System Views Interaction Units Navigations Presentation Options Interface Behavior Interface Patterns User Interface Modeling
Sketcher Sketcher Window Label Button Textbox Checkbox Table Tab Panel Bar Menu Pagination
Infrastructure Method Support: gvmétrica Method Designer X METHOD... Z METHOD TOOLS RDB Designer BPMN Editor UML Editor Sketcher User Interface Modeling INFRASTRUCTURE Transformation Management and Configuration Graphical Editors Traceability Model Synchronization Forms Modeling Framework Artifacts Library Model Explorer
The MOSKitt Perspective Resource Explorer A Predefined Set of Views Model/Diagram Editor Palette Model Explorer Properties Tab
Forms Modeling Framework (FMF) Facilitates the development of Forms Editors to manipulate Ecore models Links Widgets and Model Elements through Databinding
Transformation Registering Transformations Visualization Organization Prioritization Manager Executing Transformations Input Parameters Results, Validation and Execution Infrastructure (Extensions) MOSKitt Transformations
Transformation Manager 2. Configuration 1. Transformation Parameters 4. Results 3. Validation 2. Configuration 2. Configuration 2. Configuration
Transformation Configuration We can apply different design/implementation decisions (configuration rules) to the same Input Model. AllTables OnlyChildTables Generalization OnlyParentTable
Transformation Configuration FMF Forms for Rule Selection
ModelSync and Traceability MOSKitt provides a complete framework for supporting Model Traceability and Synchronization MOSKitt provides M2M transformations to automate and simplify modeling tasks
Artifacts Library A repository to store pieces of diagrams to be reused
Content Process Support and Method Engineering Dealing with User Interfaces Model Transformations and Code Generation PART II: Advanced Features
Process Support and Method Engineering http://www.moskitt.org Dashboard and Moskitt4ME
Dashboard Simple DSL for Specifying Development Processes Method Modeler Method Interpreter Integrated Workbench Reuse GMF Dashboard Infrastructure
Dashboard DSL Primitives: Tasks Task Dependencies I/O Resources, References to Resources Actions: open Editor, execute Transformation... Help Guides: invoke Cheatsheets, invoke Help, open an URL...
Dashboard Snapshot of the Project State Analysis task is Finished and its Resources are Completed ( Finished ) The Dependency between Analysis and Design tasks is Resolved Doing/Executing the Design Task ( ToDo )
Dashboard Interpreter Dashboard Open Editors Link and Edit Resources Open Cheet Sheets
MOSKitt4ME A Methodological Framework to support the specification of methods and the generation of CASE tools following MDE and ME principles. Model'Driven'Engineering' Method'Model' Process'Part' Retrieve' Product'Part' Store' MethodBase Method'Design' 4ME M2T' Transforma2on' CASE'Environment' MethodProcess Support MethodProduct Support Method'Implementa2on'
MOSKitt4ME Method Design Method model SPEM 2.0 standard. Reuse of method fragments. 4ME EPF$Composer$ Repository$client$
MOSKitt4ME Method Configuration Reusable assets (RAS standard). Repository includes: editors, model transformations, etc. Must be associated with method elements to indicate how these elements will be managed in the generated CASE environment. 4ME Repository*client*
MOSKitt4ME Method Implementation Method process supported by a process engine Method product supported by reusable assets Method'Model' Method'Base' Method'Design' Asset'Base' Configured'Method'Model' references' references' references' Method'Configura4on' So7ware'Pla:orm' MethodProcessSupport ProcessEngine MethodProductSupport Method'Implementa4on' Method'''''''''''''''''''''Engineer' Model'''''''''''''''''Transforma4on'
MOSKitt4ME
MOSKitt4ME
MOSKitt4ME Process View Tasks can be filtered by: Roles State (All, Pending) Use Colors to distinguish Task State: Optional Executable Not Executable Done
Dealing with UIs http://www.moskitt.org User Interface Model (UIM) and Sketcher
UIM: User Interface Modeling A DSL for Modeling User Interfaces Technology Independent (Abstract) Integrated into the Development Method Linked to Data Models (UML2, DB, Ecore, ) Generated from other Models (if necessary and possible) Can define and apply UI Patterns
UIM. The Language Views Parts of the overall user interface Users Can access to one or several Views
UIM. The Language Interaction Units (IU) An interaction between the system and the user Kinds of IUs Information Editable Information Operation Navigation Selection Composite Pattern
UIM. The Language Information IUs: Data Model View Additional UI Properties: Ordering Filtering Masks Triggers
The Sketcher Allows designing more concrete User Interfaces while preserving the Technology Independence Focused on Design Concerns of UIs Uses a visual notation that provides a closer view to what the End User expects Provides Abstract Widgets commonly used in UI design
The Sketcher Large library of user interface controls/ widgets: textbox, table, listbox etc... Template support to facilitate the definition of UIs Library of Predefined Templates
The Sketcher Sketcher as a Front-End of the UIM SKETCHER UIM
The Sketcher Connected to UML Models: Behavior Structure Connected to DB: Data Persistence
Model Transformations M2M and M2T to automate the SW Production Process
Model Transformations BPMN UML2
Model Transformations BPMN UML2 RDB
Model Transformations BPMN UML2 Sketcher Also Sketcher to UIM
Code Generation Protected Zones can be used to preserve developers changes (codification)
Code Generation
Code Generation
Content Industrial Projects Research Projects and Extensions Project Timeline Some Statistics Lessons Learned PART III: Industry, Research and Lessons
Industrial Projects MOSKitt-GEO Dirección General de Tecnologías de la Información
Industrial Projects
Industrial Projects
Research Projects European Projects
Research Projects European Projects
Extensions
Collaborations MDT/Papyrus subproject within the Eclipse Model Development Tools (MDT) Project Main Goal: Develop advanced editors for UML and and SysML. We implemented the UML Sequence Diagram Participants: CA LIST (Papyrus project leaders), Airbus (TopCased), Atos Origin, Obeo and Prodevelop (MOSKitt)
Project Timeline RDB Designer, DDL Generation and Reverse Engineering UML2 + Profiles WBS Transformation Manager Transformation Configuration Traceability and Synchronization FEFEM Starts 0.7.2 1.0.1 1.3.1 1.3.7 4/2007 11/2008 11/2009 12/2010 10/2011 1.3.9 6/2012 2.0
Project Timeline gvmétrica Development Process Support. The Dashboard User Interface Modeling (UIM) Code Generation in PHP (first gvhidra prototypes) Business Process Modeling (BPMN) Interoperability and Integration with Third Party Tools Starts 0.7.2 1.0.1 1.3.1 1.3.7 4/2007 11/2008 11/2009 12/2010 10/2011 1.3.9 6/2012 2.0
Project Timeline Sketcher + User Interface Patterns Editor Sketcher and UIM Integration Code Generation in gvhidra (PHP5) Code Generation in gvnix (Java) Usability, Stability and Performance Improvements Starts 0.7.2 1.0.1 1.3.1 1.3.7 4/2007 11/2008 11/2009 12/2010 10/2011 1.3.9 6/2012 Mature Enough for SW Companies and P. Administration 2.0
Project Timeline Code Generation in OpenXava (Java/AJAX) MOSKitt4ME. Method Engineering Support Code Generators Improved New Transformations (UML2Sketcher) Usability, Stability and Performance Improvements ModelSync Improved Starts 0.7.2 1.0.1 1.3.1 1.3.7 4/2007 11/2008 11/2009 12/2010 10/2011 1.3.9 6/2012 2.0 Now: Maintaining and Improving MOSKitt
Some Statistics 1.800 downloads in 2007, 2.117 downloads in 2008... OS Windows Linux Mac Modules/ Other TOTAL 2009 3.156 809 453 2.056 6.474 2010 3.831 1.414 737 1.412 7.394 2011 2.104 1.817 581 2.765 7.267 2012 606 415 70 225 1.316 TOTAL 9.697 4.455 1.841 6.458 22.451 12% 28% 61% Windows Linux Mac OS X
Some Statistics Aprox. 12 Million Euros Project Statistics in OHLOH (https://www.ohloh.net/projects/moskitt)
Lessons Learned Expressive Power vs. Usability vs. Implementability. Difficult to Balance Ergonomics: If editing the model is more cumbersome than implementing functionality in the code, developers will hardly switch to MDD Infer Knowledge avoid Over Specification: Everything that can be reasonably inferred from the context must not be specified
Lessons Learned Openness. Forget a Closed Tool. Prepare your Tool to be extended, adapted, modified by expert users Open the Code Generation Extensibility of the Models. Prepare the Models to be Extended in an easy way Modeling UI at Abstract level is complex and tedious. Sketch/Draw the UI Reusability. Promote Reuse...Support Reuse. Introduce Systematic Reuse (software product lines, model reuse)
Lessons Learned Building Software is a Complex Task...MDD can help but...it is not a Silver Bullet yet MDD: Promotes and Facilitates Abstraction, Automation, Communication Introducing MDD in Software Production Methods is an INVESTMENT not a COST but could be EXPENSIVE in the short term
Lessons Learned MDD should be gradually introduced Many times it is not possible to generate the 100% of the code HIGHER % of generated code requires HIGHER MODELS complexity and completeness HIGHER number of Domains, Types of Projects, etc., leads to a HIGHER difficulty to generate 100% code and LESS Reuse
Download and try MOSKitt
Contribute PROFILES Develop a Module that can be Integrated into MOSKitt Participate in the Development of MOSKitt Basic Modules Adapt existing Modules http://www.moskitt.org/perfilescolaboracion
Contribute Mailing Lists https://moskitt.org/lists/mailman/listinfo/moskitt-en https://dev.eclipse.org/mailman/listinfo/spain-ec Eclipse Project Repository http://subversion.moskitt.org
http://www.moskitt.org Thank you for your Attention Vicente Pelechano Universidad Politécnica de Valencia