Developing software is more than just writing code.
It involves some paperwork like writing software design specifications, writing documentation.
It involves building the binaries from your code and deploying them.
It involves testing your binaries: unittesting, integration testing, etc…
It involves managing your source code, versioning it, etc…
To do this, you need a lot of tools.
These are the tools we use:
The most important tool when programming is of course your editor. We are currently using Visual Studio 2003 which we use for developing .Net and C++ applications.
Testing your code
For testing our .Net code we use NUnit and for running tests from our IDE, we installed TestDriven.NET
Testing of the C++ code happens by using a library from BOOST. There is no other means then running the test program completely to execute the tests. It is not possible to execute individual test methods from inside the IDE.
Building your code
When developing, our code is build by using our IDE. For release purposes we use Nant as a build tool
Deploying the binaries
For deployment of the binaries resulting from our code we use Nant
Maintenance of our code
The sourcecontrol system we are currently using is Visual Sourcesafe but we are considering migration to Subversion. To manage it easily we consider using TortoiseSVN.
To view differences between files we currently use the Visual Sourcesafe diff tool, but we also use KDiff3.
Documenting our sourcecode
For .Net we use NDoc, and for C++ we use a slightly customized version of Autoduck. For Autoduck, we made a custom configuration file to output the comments in XML format. We are however also considering replacing Autoduck with Doxygen.
This is not yet a part of our environment but are considering to use CruiseControl.NET as an integration server.
What are you using ?
The above tools are of course not the only tools that can be used for developing software. They are mainly the result of the context we work in: we develop for Windows and the .Net Framework.
What tools do you use? What tools do you definitely not use and why (bad experiences, other..) Just post your comments…