UniMod 2

From UniMod Wiki

Contents

Dates

  1. End of April - first alfa
  2. June, 12 - first stable build

Scope

This document describes UniMod2 project requirements and features. Also it describes approximate project plan and development process.

What is UniMod2

  1. Tool for development of object-oriented (Java based) reactive systems
  2. Allows to describe classes behavior using Automata Based Programming (ABP)
  3. Should be used for classes with more than one explicit state only
  4. Model of program in ABP is set of classes, every class may has associated state machine (some kind of extended state machine with original syntax and operational semantic). Class method for ABP model is indivisible atom, method content is not make sense for ABP model.
  5. UniMod2 meta-model is subset of UML 2 [1] meta-model.
  6. Model representation in ABP is set of Class and Statechart diagrams.
  7. ABP model may be interpreted or translated into Java source code.
  8. ABP model may validated in design time.
  9. To execute model, startup configuration of objects instances should be defined. The simplest way - developer may write Java code that creates necessary objects configuration.

Requirements


Features inherited from UniMod 1

Features

Statechart Diagram Syntax and Semantics


Other Diagrams


Plan

EMF UML2 plug-in

Take EMF UML2 plug-in.

Interpretation plug-in

Create plug-in that

  • can interpretate EMF UML2 model (state chart diagram);
  • is independant from Eclipse environment;
  • defines hooks for debugger

UniMod test plug-in

Create plug-in that

  • contains unit tests for all UniMod2 plug-ins

Validation plug-in

Create plug-in that

  • depends on one of ready-to-use OCL framework should be used (Kent is most likely to be used);
  • depends on EMF UML2;
  • provides extention points for additional constraints expressed in OCL and Java;
  • has validation rules that check that model has that and only that elements that are handled by UniMod2. The list of these rules would be published as a part of documentation;
  • contains all constraints of UniMod1 expressed in OCL (if it is possible :);
  • uses some OCL-like mechanism to define model elements that should be outlined when particular OCL rule is not satisfied (context element is a good candidate for this);
  • provides some mechanism to invoke Java code from the OCL rules.

This plug-in may provide additional features

  • use some OCL-like mechanism should to define quick fixes for the broken OCL constraints (otherwise they would be implemented in Java);
  • calculate automatically based on OCL expression model elements and properties that influence on value of the OCL condition. This will be used for identifying of OCL constrains that should be recalculated on the model change;
  • use generative approach for OCL rules calculation and quick fix evaluation. Something like Java code generation for OCL rules.

Validation UI plug-in

Create plug-in that

  • uses different ways of elements and properties outlining (e.g. font coloring, underlining, font boldness change, etc.)
  • provides an opportunity to user to change the severity of different constraints: ignore, warning, error

UniMod builders plug-in

Create UI plug-in that

  • provides extention points for other plug-ins to be used as UniMod2 builder;
  • enables user to setup UniMod2 builders (define generated files names, etc.);
  • enables user to define what builders he wants to use.

Compilation plug-in

Create plug-in that

  • implements compilation approach;
  • provides extention points for code generation for different languages.

Compilation plug-in for Java

Create plug-in that

  • uses Compilation plug-in for code generation;
  • uses UniMod builders plug-in to be used on project rebuild.

Debugger plug-in

Create plug-in that

  • defines debugger interaction protocol
  • implements eclipse-side model debugger
  • provides extension point for visual debuggers (set-up breakpoint, handle debugger events)

Debugger plug-in UI

Create plug-in that

  • implements eclipse-side diagram debugger (hightlight elements, processes visual breakpoints)

Debugger plug-in for JSE

Create plug-in that

  • implements debugger interaction protocol for JSE platform
  • instruments Java byte code to add debugger invoication points in client compiled code

Debugger plug-in for J2ME MIDP 2.x

Create plug-in that

  • implements debugger interaction protocol for J2ME platform

Development Process