The last post attempted to define distributed software development collaboration tools in generalities. This one will aim for specifics, with examples of existing tools.
Distributed software development teams need to collaborate. Besides the basic hardware, development software, and communications infrastructure needed there are the following specialized tool sets:
Design:
- documents
- requirements, specifications
- diagrams
Development:
- version control
- automated builds
- unit and functional testing
- source code navigation and viewing
- code coverage and analysis
- generators
Deployment:
- packaging
- automated deployment
- system monitoring
- acceptance
- integration tests
- reporting
Overall:
- Planning
- Budgeting
- Communication
- Feedback
A typical software development team might have the following collaboration tools:
A wiki & file share for documentation. Email, forums, instant message for communication. A task management tool like MS Project or Basecamp. A spreadsheet for budgeting.
A build script (ant, maven, make, rake).
Code generators (Appfuse, Hibernate).
Code coverage and analysis (Cobertura, Emma).
Continous integration server. (Cruise Control, Hudson)
Source code repository (CVS, Subversion, Git).
Repository browsing, code search, etc. (ViewVC, Fisheye).
A bug tracking tool. (Jira, Bugzilla)
Code tests (JUnit, TestNG)
Test case management (Test Director, Testopia)
Test automation (Selenium, Watir, Mercury Winrunner, QTP)
Requirements tracking (Harvest, Requisite pro)
Packaging and deployment scripts.
Smoke tests.
Performance tests.
Monitoring tools.
Recent Comments