• Home
  • About
  • Sitemap
  • Search
Complete Coding
Subscribe to Complete Coding
Subscribe to Complete Coding

    Six must have tools for every software project

    20th January 2010

    Version Control System
    A version control system provides versions of not just the software but also of all the documents. Even if a software project consists of just one person, it is always healthy to maintain a version control system. It is good to maintain versions not just for the backup but also because it is easy to revert back changes by selecting any previous version that we want. Popular version control systems are CVS, SVN, VSS. A version control system also provides a method of creating branches, so that we can have development on one branch which we set as the stable version. And we can have a bug fixing branch where we fix bugs. Later once most of the bugs are fixed, we can merge the bug fixes into the stable branch.

    Unit Test Framework
    Following the concept of test driven development, one part of testing which is under the control of developers is unit testing. Ideally, unit tests should be written along with (or perhaps even before) the implementation. A particular tried and tested unit testing framework such as CUnit can be used. Many of us as developers tend to ignore unit testing and are satisfied by random testing of the system that we create. This is definitely an invitation for letting off unnecessary bugs which will come back far later in the project to haunt us.

    Automated Build System
    It should be possible to have in addition to manual builds, an automated build system which is triggered by certain events such as nightly builds, change in critical files, etc. An automated build system can help detect a break in the system early. Reports can be generated automatically and sent to the concerned personnel by email. Automated build systems can be created using scripting languages such as perl or python.

    Automated Test Framework
    One of the most important tools in a software project is the automated test framework. Ideally, the automated tests should be run after every nightly build has successfully completed. As with the build, the test reports if any failure can be generated automatically and sent by email. Automated Test frameworks may be specific to projects.

    Task/Defect tracking system
    Most useful when the project consists of several members. More so if the members are geographically distributed. A task management system helps to assign tasks, prioritize tasks, set the percentage completed. Charts can be generated to analyse the work done in the project. Microsoft Project is an example of task management or rather project management. A defect tracking system is useful for developers and testers to report bugs, track the progress of fixing those bugs and to analyse the overall defects in the system. Bugzilla, Jira are examples of defect tracking systems.

    Wiki/site
    Maintain a wiki, website or blog about your project. This can contain the project milestones that are set and achieved. Also information such as project presentations can be added. This can be used not just for team clarity in project achievements but also as a front end for management whenever they need a gist or status of the project.

    Related Posts:

    • Did We Pass On The Joel Test?
    • Programming Is About Doing The Job Right
    • Today's Read: Four Ways To A Practical Code Review
    • Don't Be A Hotshot Programmer, Be A Boring Programmer
    • How To Avoid Bugs By Not Writing Code (At-least Not Too Much)
    Author : kevin | My Website

    {One comments... read them below or add one}
      Leave a Comment
      Click here to cancel reply.

      Click to cancel reply

      « Previous Article Next Article »

      Recent Posts

      • Did We Pass On The Joel Test?
      • Programming Is About Doing The Job Right
      • How should I decide on the programming language to learn next?
      • How To Handle Errors In Google Go
      • How To Achieve Concurrency In Google Go
      Complete Coding Categories
      • development
      • general
      • programming
      • programs
      • today's read
      © 2010-2011 Kevin Rodrigues.