To prevent implementation errors resulting from code managing failures and to increase the quality of the developed sourcecode, we aim at using a code management system (or software configuration management system) that strictly follows the concepts of unified process. In our opinion, the following requirements should be fulfilled:
- Six eyes principle: Separating the development team into developers, reviewers, and integrators and ensure that code changes can only be added to the baseline if both a reviewer and an integrator have accepted the changes.
- Quality control: Ensure that code changes meet our quality criteria by automatically rejecting sourcecode of lower quality.
- Test suites: Force developers to build tests before the development of a new code change starts. Moreover, all existing tests shall be tested before a developer can relay a change to a reviewer. This way, a complex test suite is automatically created over time.
- Atomic commits: Ensure that code changes can only be applied to the baseline only completely. Thus, the repository can never be in an inconsistent state.
Unfornuately, at the time being we are not aware of an open source tool providing all this features. Therefore, we are currently extending subversion such that it provides at least the most important features.