Software Configuration Management Tools
So now is the fun part. You get to pick which tools you
will be using to make your development process as smooth as possible.
I will attempt to give my experiences with a select few tools
that I have seen be useful in a software configuration management
environment. If you, the reader, know of other tools that you
feel should really be mentioned, please
feel
free to send suggestions to my email address in the contact section.
Version Control Tools
Subversion (http://subversion.tigris.org) - This is quickly becoming the open source industry standard for version control. Subversion provides numerous features and also there is an enormous amount of support for development tools (Eclipse, NetBeans, etc) Subversion was developed by many of the original CVS developers and was designed to address all the things wrong with CVS.Git (http://git.or.cz/) - A non-traditional SCM tool but efficient and distributed version control system. This project was originally created to manage version controlling LINUX kernels. The main push on Git is to handle large projects more efficiently.
Clearcase (http://www-306.ibm.com/software/awdtools/clearcase/) - Did I say that I was cheap? Yes, I did, but I would like to mention Clearcase anyway. First, understand the cost of Clearcase is more than what appears on your invoice. The real cost to maintain Clearcase is in maintaining a local server, and then if multi-site is needed, just multiply that cost by the number of remote locations. Other than the enormous costs, if I had to pay for a version control tool I would select Clearcase for its overall functionality.
Multi Site replicators
WANDisco (http://www.wandisco.com) - I have not personally used this product, but I know that WANDisco is the leader in providing multi site solutions for Subversion, JIRA, and CVS.Defect and Enhancement Tracking
JIRA (http://www.atlassian.com/software/jira/) - JIRA is a customizable bug and issue tracker. JIRA provides custom workflows, web service interfaces and much more. I have used JIRA and it is extremely intuitive. JIRA is not free, but it is extremely cheap compared to other tools.TRAC (http://trac.edgewall.org) - I use TRAC on all my home projects, and it is extremely simple and flexible. TRAC has an interface to Subversion and also has an integrated wiki. TRAC also reads wiki markup in the commit comments of Subversion. TRAC is also open source.
Bugzilla (http://www.bugzilla.org) - Bugzilla is an old standby for many developers. I would suggest though that there are many better tools out there these days. However, if you just want the old classic, Bugzilla is still actively maintained. Bugzilla is open source.
Scarab (http://scarab.tigris.org) - Scarab is an open source tool to track issues. Scarab is a Java based implementation over MySQL. Scarab is highly configurable, and will also import/export data from other defect tracking tools.
Mantis (http://www.mantisbt.org) - Mantis is a popular open source web based issue tracker. Easily installed and configurable.
Requirement Tools
OSRMT (http://sourceforge.net/projects/osrmt)
- Open Source Requirements Management Tool manages features,
requirements, design, implementation, and testing.
Iterative Build Tools
Cruise Control
- CruiseControl was for many years on the forefront of continuous build
integration. CruiseControl has been a favorite by many.
There are many options to the CruiseControl tool, which can
all
be configured in its xml configuration file.Hudson - A newer but powerful continuous integration build tool. I am using this tool on a project now, and enjoy Hudson's many options, nice interface, and good communication options.
Environment Management Tools
SourceForge
- (http://sourceforge.net)
- The world's largest open source development web site. This
environment allows any open source project to host itself for free on
the site. SourceForge also enables developers to communicate
efficiently, track defects, and provides version control.
Build Tools
Ant (http://ant.apache.org)
- Ant is a Java XML based build tool that has many built in libraries
to automate builds and deploys. Most development environments
have plugins to Ant, and Ant enjoys widespread support.Maven (http://maven.apache.org) - Maven is another Java XML based build tool with many built in libraries. Maven differs in a few aspects from Ant. First Maven is object oriented. A developer will create a POM file to build code and that file will be inherited on all subprojects. If you are trying to decide whether to use Maven or Ant, I would recommend that if you have a basic J2EE app that does not deviate from good design patterns, then Maven is great. If you really need to create creative design patterns, I would recommend Ant.
Make (http://www.gnu.org/software/make) - You may be designing C++ apps and using Make. If so, I dropped the link, but chances are this is tattooed on your forearm by now.