views:

179

answers:

3

So I recently finish my 3rd year software engineering project. The project was a game.

It was not easy in the least. The most challenging project I have done.

After some reflection I noticed that the major problem our group had was:

  • Our SRS rarely matched our Design Diagrams
  • Our architecture was not well defined
  • And Lastly our code was in no way related to our design

In this project we were forced to use the Waterfall Process for our RADIT( reqs, anal, design, implementation, and testing). I hated this method and want to do TDD with Agile for my 4th year project. But I am afraid that I will not be able to keep track of reqs -> design -> architecture -> test -> source. Hence I am thinking of making a tool that does this on top of git. But It would be good if there is already one for this purpose.

+1  A: 

I've been working in tool support for traceability in software engineering on and off for the last fifteen years, and the best that's widely available is DOORS+SysML. They all require manual connection to be made (though you can add IDs to your code and unit tests, and get some coverage metrics back).

It's quite easy to make a simple tool which associates a specific test with a requirement ID, and then reports that requirement as tested. Similarly you can add markers to say what parts of your code map to your design elements (though that has mostly been automated by reverse engineering tools). Then you can tell whether you have markers for all your requirements and all your design elements. These are extensions to COTS UML tools, so probably not designed in quite the same spirit as git.

What no tool I'm aware of currently gives you is any means to actually determining whether the tests exercise the parts of the design which are supposed to implement the hyperlinked requirement (which is practicable, as you can log the coverage in the code which is linked to the design elements when the test is run).

There are other tools, such as CaDiZ and Cog which are theorem proving tools which can take a formal description of your requirements and annotated model of your code and verify that the model matches the specification. This works for sufficiently simple code, but is fairly time consuming (of the order of weeks for a few dozen lines of code) for post-doc level computer scientists.

None of the tools I know of integrate with git.

Pete Kirkham
If not git are there any tools that work with any source control?
kthakore
Also can you give me some links for the tools that you talk about?
kthakore
Any of the big UML tools (Rational Suite,Rapsody, Enterprise Architect) do this. It's mostly not integrated with source control, since they work by adding ids in the code, which is orthogonal to source control.
Pete Kirkham
A: 

I remember reviewing Rational RequisitePro many moons ago, though we didn't wind up using it. IIRC, it had integration with Rational's Clear Case source control system that we were using at the time. It was kind of nifty, but way overkill for our needs.

Jason DeFontes
+1  A: 

You could try mingle. It was built for managing agile project teams. The requirements are tracked as stories on a virtual card wall. It has SVN integration out of the box, but I think there is also a community plugin for git. There is a wiki built into it, so you can easily track requirements and the resulting architecture as you just link from your requirements into design wiki pages.

Also, academic users qualify for a free license if you plan to use Mingle for academic purposes, meaning in the classroom/lab or as part of a curriculum.

Stuart Caborn