A colleague of mine lately asked me what would be the most important C++ IDE features for supporting the agile software development. While agile processes are more about people and interaction, than about the tools, a decent tool support certainly makes things easier. Here is a list of things I would value in the agile-aware C++ IDE in the order of decreasing priority.
1. Command-line repeatability
Agile methods see the high levels of automation of a ‘mechanical’ and repetitive tasks as a relief for the developers and help to reduce errors. While IDEs are important the ability build, test and deploy software in automated manner e.g. on a continuous integration server is of no smaller importance. Therefore, everything IDE has to do in order to produce the software that is DONE has to be identically repeatable from the command line. Or at least as much as possible
2. Unit testing support
Test driven development is virtually an indispensable part of the agile team toolbox. There has to be support for easy test case creation and execution. In particular, I'd like to see (in the order of decreasing importance):
a) Ability to switch unit testing frameworks. There are many frameworks out there and many teams build their own variations. It would be good to have the ability to plug various things in and maybe parse the report back into IDE. Naturally this ability would require from the framework developer to write an adaptation layer, but the IDE should have a place to plug this layer to
b) Ability to add/remove/rename tests in "one click". It has more to do with the framework used and how well it utilizes macros, but it would be good to have a tool support (wizard or browser based) for it. Disclaimer: I am working with Symbian OS. A number of limitations doesn't allow writing the test name in one place only. I constantly have to synchronize strings in at least three places for every test. Non-Symbian programmers might not value this item that high.
c) Ability to run all or some of the tests in "one click". And see the results, of course.
3. Refactoring support
The more the better. A good prioritisation principle could be to follow the Martin Fowler's Refactoring book table of contents (Amazon link). The earlier the refactoring is mentioned, the more useful it typically is. My personal top list (once again in the order of decreasing importance) would be:
a) Extract method
b) Rename method
c) Extract class
d) Duplicate observed data. Though I am not sure if this one can be automated
Other requirements
What would your desires for the agile-aware C++ IDE? Did I miss anything important or did I request anything useless?
Comments
I think that this can be a
February 1, 2012 by did (not verified), 6 days 22 hours ago
Comment id: 20861
I think that this can be a good opportunity for the people present there and I am sure that they will like it.
Oferte Cazare Predeal
Post new comment