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
