Version control
Version control tracks and coordinates revisions to a set of resources (typically program source files). Makes it easier for multiple authors to revise files and maintain document integrity. The Cytoscape project uses CVS (Concurrent Versions System - http://www.cvshome.org/). There are more advanced version control systems available these days, but CVS is free and sufficient for our needs.
Issue tracking
Issue tracking has the following advantages:
- Track bugs in a structured way.
- Provides a single well-known place to look for information on bug reports until they can be acted upon
- Bugs can be searched for similar past issues
- Allows us to report back to end users automatically
Cytoscape is using the open-source mantis bug-tracking system (http://mantisbt.sourceforge.net/). Our instance is: http://cbio.mskcc.org/cytoscape/bugs/main_page.php
Regression testing
Regression testing is the developer centric process of running an automated test suite to find if recent changes have broken the software. Cytoscape uses the freely available JUnit tool (http://www.junit.org). Unit tests should be written for each class. An example test would read in a file and check to see that values read from the file are properly stored in memory after the read operation.
It is recommended that developers write unit tests, that these tests be organized into suites, and that all tests be organized to run from the single ant 'test' target. This makes regression testing easier before release. Unit tests are currently organized so they can be run individually and locally if desired. Full details are available in the cytoscape.unitTests.AllTests class.
Cytoscape may also require a GUI testing suite, like Abbot (http://abbot.sourceforge.net/), although no tool has been tested or chosen. If you know of a good one that is free, please let us know.
Integration and release testing
This user-centric quality assurance process involves a typical user testing the application on a typical platform. Currently Cytoscape does not have dedicated QA staff, but it has been decided that a minimal integration test process be worked out and followed before any major software release. A number of interested users within each participating developer organization should be locally organized as a test group and alerted when Cytoscape is ready for general testing before each release.
Documentation
There are four types of documentation considered here.
Operations manuals (protocols) describe how we do things here. This document is an example. A number of these documents are available on the Cytostaff_Development page.
- User guides are typical user documentation. Cytoscape currently has some useful user documentation (a user manual), although the newest features are not always described.
Development (technical) documentation describes architecture, APIs, classes and methods. Cytoscape uses the freely available JavaDoc system to document the code.
Project management documents include software status reports and implementation plans. Cytoscape uses the FastTrack project management software to keep track of our project plan and also the wiki to keep track of faster changing planning phases, like a Cytoscape version release.
Analysis and estimation (A&E)
Feature prioritization and planning are important things to consider in any software development project and should allow the most important features to be implemented to a stable level first. Typically, Cytoscape performs A&E in the individual groups for each project, although major features are discussed on weekly conference calls and at the Cytoscape retreat.
Build Process
Cytoscape is currently built using Ant scripts. Ant also automates testing tasks as well. Changes to the build process should be localized to the single build.xml file for clarity.