Clone this wiki locally
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
- 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
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 http://www.cs.bgu.ac.il/~cd-patterns/?page_id=80
Tasks to achieve
A. Metamodel pattern language
Further understand use cases
- Build / retrieve / translate examples
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
- Integration of USE and FiniteUSE > - Adriaan Cody Schuffelen (UIUC) Currently working on very basic import/export
- Searching for matches base on an instance of the metamodel
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
Generation of tests