Kevin Brightwell edited this page Aug 26, 2015 · 1 revision

Problems to be tackled


Umple is growing, with new features being added to ..

  • Provide specialized semantics for state machines (e.g. queued, pooled), classes (e.g. immutable, singleton), attributes, etc.

  • Analyse models to find syntactic, semantic and pragmatic errors and warnings

The code for various aspects of each feature is complex.


Many features correspond to 'stereotypes' (keywords added to existing model elements); all code is custom, often with complex algorithms.

When adding new features we want to be able to package it as:

  • changes to grammar (maybe a separate grammar file, or may be edits to existing files)
  • changes to metamodel
  • validations
  • test cases
  • user manual pages, with embedded examples which also serve as test cases
  • code generation templates and rules

The key challenge is to package the validations, and to represent them in a formal declarative language.

Umple in Education

How can we better use Umple in software engineering education

  • Features to add/improve

  • Studies of effectiveness

  • Discovering / documenting methods

Proposed approach to representing validations


  • represent each validation in a DSL that contains patterns which match umple metamodel elements and result in errors or warnings

Architecture options

  • Export to USE or Alloy; run the analysis in Alloy; pass results back

  • Compile the DSL internally in Umple and run against the metamodel

  • Merge the USE code and link to Umple in memory

Suggestions for initial experimentation with the above

Hierarchy multiplicity cycle

Tasks to achieve

A. Metamodel pattern language

  1. Further understand use cases
  • Build / retrieve / translate examples
  1. Build and refine the metamodel for the language, and the matches
  • constraints among the elements such as interrelationships among constraints

2a. Metamodel test.

2b. Extend / fix umple constraints and other features as needed.

2c ? Concrete syntax

  • Extending Umple grammar

2d Diagram drawing

  1. Integration of USE and FiniteUSE
  • Adriaan Cody Schuffelen (UIUC) Currently working on very basic import/export

3a. Tests

  1. Searching for matches base on an instance of the metamodel

4a. Tests.

  1. Application.

Applications of the generalized metamodel pattern language

  • Analysing diagrams for antipatterns (broadly defined)
  • Class diagrams
  • State diagrams --> Directly --> Export to external tool (USE and/or Alloy) for analysis
  • Searching for refactorings in a model

  • ?? Generating custom navigation and search capabilities

  • ?? Metrics

  • Generation of tests

Clone this wiki locally
You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.
Press h to open a hovercard with more details.