The "official" way of doing this is probably to use an Abstraction with the
<<trace>> stereotype.  Unfortunately, the only Abstraction subtype that we
currently support is Realization (Abstraction with a <<realize>> stereotype
used between an Interface and a Class).  You could create a <<trace>>
Stereotype Definition with a base class of Abstraction and apply it by hand
to a Realization to convert it to a Trace, but that's a clumsy workaround.
 
As far a creating dependencies between arbitratry model elements goes, much
of ArgoUML depends on being able to get elements on a diagram to be able to
do something useful with them.  We've recently liberalized some of the rules
about what elements you can put on what types of diagrams which should help
some, but I don't know if this code is released (I would guess not, off the
top of my head).
 
The other method that can sometimes be used is to work from the property
panel, provided it displays the information that you need.  Dependencies are
allowed between arbitrary Model Elements according to the UML metamodel, but
we only show them for Classes, not Methods, Operations, Use Cases, or
Actors.  If you want to create a new Dependency for a Class, you can right
click on the Supplier Dependencies or Client Dependencies field and
selection "Add..." to create a Dependency to an arbitrary element (including
Use Case, etc), but you can't do the same for an Operation or Method and you
can't make the Dependency an Abstraction.
 
All in all, it looks like the "official" solution isn't really workable with
ArgoUML currently.  Feel free to create an enhancement request if we don't
already have one for this.  Your solution of using tagged values with an
associated stereotype sounds like a reasonable approach, but I haven't done
this in practice, so can't offer much feedback on implementation details.
 
Tom

-----Original Message-----
From: Mark Fortner [mailto:[EMAIL PROTECTED] 
Sent: Tuesday, June 26, 2007 1:31 PM
To: [email protected]
Subject: [argouml-users] ArgoUML And Traceability


I'm looking for a way to add traceability to a model that I'm currently
working on and would like to get your advice on the best approach.  In
essence, I want to be able to be able to associate individual requirements
to pieces of code that will satisfy that requirement.  Here are a couple of
approaches that I came up with, but I'm curious about what other people do. 



1.      Create a "Traceable" stereotype and tagged values for
"requirement-id" and "requirement-href" and associate it with anything that
is traceable.  The requirement id would be a static human-readable id, and
the requirement-href would be the id that ArgoUML automatically assigns to
model elements. 

2.      Use the "see" field in the Documentation tab to link to specific
use-case objects in the xmi document.  Something like
"myproject.xmi#requirement.id=1234".  Currently my use cases have a special
tagged value called "requirement id" and this is just a reference to that
id. 

I haven't figured out any way to create arbitrary associations between use
cases and classes or methods, but I've seen this capability in other tools.
Is there a way to do this in ArgoUML?

Are there any other ways of adding traceability? 

Regards,

Mark Fortner


Reply via email to