Sean,
I think I have to clarify my position.
What we have in our company is a software development process that creates the following (most important) artifacts:
- System Specification and Design.
The artifact is a document where we specify the use cases for the system. Requirements that are not part of the use cases are specified in the document. At the moment, we DO NOT track requirements--although we have the tool, RequisitePro, we just use it to store the use case documents and associate it with a Rose model's use cases. Only one requirement is created in RequisitePro: the one created by Rose to associate a use case document with RequisitePro. The use case document is beefed up. We've polished it very well over the years and the participants know how to obtain information from there.
- Software Architecture Document
Out of the specification, we may come out with several of these. Again, these include use case realizations from the specification. The name is a little bit of a misnomer, because it reflects either the software architecture for the system or the detailed design of a specific component in the system.
When used as a software architecture, this component identifies the software architecture for the system, the main components and their interaction.
When used as detailed design of a component, this artifact includes the specific component to be delivered, the UML model and the specific technology and programming language to use. We're very thorough with the technology and programming language aspects--a component has to be implemented somehow ;-).
Like several shops out there, our resources are limited. We have a team of 4 people that may produce system design and specs, 3 that produce software architectures and a team of 10 developers. I'm in all three groups, and some of the other people is in two groups.
Some of the problems (and relevant to this discussion) that we face as a team are:
- Time to market. Missing a business opportunity because of a delayed product is BIG for the company, perhaps more significant than other companies (though competition).
- UML knowledge. All of our teams know the necessary UML to fulfill their task. It's been until this year that we're discussing raising the bar for our developers, because us modelers can express more in our designs with the experience and feedback that we've obtained in the last 5 years.
So, when you say to track something in the model, my position is that you have to strike a balance. I agree that in an ideal world everything should be in the model, but is it really cost effective? Updating the model takes time (I came back a few days ago from a design review and I haven't been able to catch up on the changes that have to be done), and, although MDA will address this very problem, it'll take years for the industry to buy into that approach--same as it was for UML.
You may be asking yourself, how do you then address the problem? orally: let the developer talk to the modeler. You'd be surprised that this approach works most of the time. We modelers decide to eliminate some detail from the model, knowing that the developer will have some questions, but we address it with an office chat. Ultimately, what we try to do is to get the best bang for the buck when it comes to time.
Of course, this is my soapbox ;-), but I'll step down now.
We're (still) a Rational tools shop and we integrate Rose and RequisitePro, using SoDA to generate the documents. I'm evaluating EA because I see it as a superior UML tool, but it must be able to generate artifacts similar to what we have today with the same automatic features.
Regards,
Javier