Login | Register
My pages Projects Community openCollabNet

argouml
Wiki: Tasks for UML 2.x Support

Revision 13 as of 2009-07-28 09:17:39 -0700

Edit this page | Links to this page | Page information | Attachments | Refresh page

 

This page is relevant for all willing contributors to UML 2.x support.

Approach

For the development of a first ArgoUML release that support UML 2.x, there are (at least) three approaches:

  1. Keep all existing UML 1.4 support in the same release,
  2. fork into a UML 1.4 release and a UML 2.x release, and
  3. use modules to separate UML 1.4 and UML 2.x dependant code.

We chose the third approach, because it combines the advantages of the first (the actual version can handle both UML 1.4 and UML 2.x projects) and the second (the code is not a mixture of UML 1.4 and UML 2.x code). I was proposed by Bob Tarling in this mail on the dev mailing list.

Old Stuff

Introduction

Back in the days where the model subsystem was created, the goal was to allow for an easy replacement of the model repository implementation (we wanted to replace Novosoft NSUML by Netbeans MDR). In fact, this was a transition from UML 1.3 to 1.4. There were differences, but not too many, so things got running and new UML 1.4 features were only implemented where absolutely necessary or needed (still not finished).

For the transition of UML 1.x to 2.x, too many things in the metamodel changed to just replace the model implementation and only handle a few changes. Existing metamodel elements changed the way they are used (like Classifier) or completely vanished (like AssociantionEnd or ClassifierRole). So we can expect that our model subsystem interface changes a lot: Facade, Factories, Helpers and ?ModelEventPump. Luckily, Bogdan has done a great part here already with eUML, mainly focussing on class diagrams.

But even after Bogdan's work we have two approaches:

  • Systematically go through all changes in the UML spec, or
  • do this only for a single feature, and then proceed feature by feature.

Systematic approaches to analyse the changes

Independently if this is done only for a particular feature or for the whole UML, a first step would be to analyse the relevant changes. And here we again have several possible approaches:

  • Review the (relevant) chapters of the UML superstructure specification.
  • Review the (relevant) parts of our current MDR model subsystem implementation and see if there's a change in the UML spec (e.g.: "Is this method suitable for UML2, and is the condition for not throwing an IllegalArgumentException still ok?").

  • Review the (relevant) client code for the model subsystem and see if there's a change in the UML spec for the used model methods (e.g. "Does this property panel or model figure still makes sense, does it need to be modified/extended?").

List of all Tasks

Here are tables of all identified tasks with links to corresponding issues. Please contribute to these tables, they need to be extended and updated.

From Dave: I am (and perhaps others are) looking for a low impact way into all of this, such as some small low risk tasks that are ok to start on straight away, which aren't waiting on any decisions. Feel free to delete this paragraph once it's been noted.

Preliminary Tasks

ID

Task Summary

Status

Dependencies

T1

decision: when making a first eUML based release

0%

?

T2

read UML superstructure specification

0%

?

T3

analyze changes between UML 1.4 (1.3) and UML 2.2

0%

?

T4

analyze Bogdan's changes to the core for his demo

100%

?

T5

decision: roadmap on complience levels

0%

?

General Implementation Tasks

Issue No

Task Summary

Status

Dependencies

?

upgrade to current eclipse UML2 version

0%

?

?

create UML 2.x profile

10%

?

?

UML 2.x model management (profiles, extents)

0%

?

?

check the persistence functionality

0%

?

?

make a first eUML based release

0%

T1,T5

Undo/Redo Implementation

Issue No

Task Summary

Status

Dependencies

?

let ?CommandStackImpl (eUML) implement org.argouml.model.?ModelMemento

0%

-

?

0%

?

?

completing JUnit tests for undo/redo

0%

?

Class Diagram Implementation

Issue No

Task Summary

Status

Dependencies

?

eUML Facade implementation completion for class diagrams

0%

?

?

eUML Factory implementation completion for class diagrams

0%

?

?

eUML Helper implementation completion for class diagrams

0%

?

?

interface notation (circle and half circle)

0%

?

?

enable operations for classes/interfaces

0%

?

?

fix property panels for class diagrams

0%

?

?

0%

?

?

completing JUnit tests for class diagrams

0%

?

Use Case Diagram Implementation

Issue No

Task Summary

Status

Dependencies

?

eUML subsystem implementation completion

0%

?

?

fix property panels

0%

?

?

0%

?

?

completing JUnit tests

0%

?

Sequence Diagram Implementation

Issue No

Task Summary

Status

Dependencies

?

eUML subsystem implementation completion

0%

?

?

fix property panels

0%

?

?

new structuring features (loops, "if", ...)

0%

?

?

0%

?

?

completing JUnit tests

0%

?

Collaboration Diagram Implementation

Issue No

Task Summary

Status

Dependencies

?

eUML subsystem implementation completion

0%

?

?

fix property panels

0%

?

?

0%

?

?

completing JUnit tests

0%

?

Statechart Diagram Implementation

Issue No

Task Summary

Status

Dependencies

?

eUML subsystem implementation completion

0%

?

?

fix property panels

0%

?

?

0%

?

?

completing JUnit tests

0%

?

Activity Diagram Implementation

Issue No

Task Summary

Status

Dependencies

?

eUML subsystem implementation completion

0%

?

?

fix property panels

0%

?

?

0%

?

?

completing JUnit tests

0%

?

Deployment Diagram Implementation

Issue No

Task Summary

Status

Dependencies

?

eUML subsystem implementation completion

0%

?

?

fix property panels

0%

?

?

0%

?

?

completing JUnit tests

0%

?

New Diagram Types Implementation

Issue No

Task Summary

Status

Dependencies

?

eUML subsystem implementation completion

0%

?

?

fix/create property panels

0%

?

?

0%

?

?

creating JUnit tests

0%

?