Dear Sirs,
I want to call your attention to an interesting resource that may help developers that use workpackages.
When the CP does the design of new features he marks every method that related to the feature with a tag identifying the workpackage, like:
/** * * @workpackage SM001-013... */ public void getThisAndThat() { throw new NotImprementedException(); }
The developers may open all classes they own from the class owner list of the workpackage and search for the tag, browsing through them using F3 or any other location method. It allows for very fast browsing and location of all parts of the code that relate to the workpackage. In addition to that, if a programmer needs to touch any additional field or method to support a feature, he adds the tag to the modified piece of code. This process works the same both for designing and coding phases.
After designing or coding, when it is time to make the printouts, the developer may lay the print outs on his desk, search for the tags again on the source code, and using F3 jump from one tag to the next, marking on the printout the modified sections, that need to be looked at during the next review. After that he removes the unmarked pages of each class except for the first one that is always included, and makes copies for the other developers.
I believe that the consistent use of workpackage tags across our group saved us a good amount of time and made the tasks easier.
For this to work both CP and developers have to agree that:
- the tag is added by anyone that creates or changes something on the code for a given workpackage.
- the workpackage identification is used, rather than the feature identification.
If you have any questions please feel free to ask.
Bill Miller
Nice idea
I really like the idea of tagging the source with workpackages (or feature ids etc). It would really help in managing the Traceability Matrix, and as you mention, navigating the code. And by using javadoc tags, you have a structured way of referring to the tags.
You could even use something like the XDoclet engine to generate a cross-reference file. You could produce HTML reports and link that back to your CVS repository, or maybe even ctags for your editor, so you could quickly jump around.
I recently wrote some extensions to ViewCVS to produce stats by author, and since we used CVS tags for things like bug fixes, we could also generate cross-referencing info for bugs and features (and builds).
If you haven't seen the above two projects already, I can highly recommend them. There's all sorts of possibilities...
Very Useful Contribution
Yes, this is a great idea. I loved it the first time I learned of it earlier in the year. Thanks Bill for sharing it with the community here. It's one of the first truly useful contributions to Feature Driven Development. We've certainly adopted this practice and we'll be spreading the word as we teach and perform on projects.
Jeff