For developing software, configuration management is crucial including proper tooling. Especially when developing with more than one person. Without it, wrong versions are build or tested, software code is accidentally overwritten and in the end software is released without actually knowing what is in it. Therefore, the following mechanisms must be put into place:
- A software version control tool (includes both software code and documentation)
- A software work environment (compilers, builders, etcetera)
- A baseline mechanism (to freeze and label a collection of software sources) at least for each software release in order to retrieve this baseline in case defects after release are found.
- Identification and control of software not developed within own environment also known as SOUP (e.g. purchased libraries, software that does not adhere to medical device standards).
- Tracing of work environment against the software code: with which environment is the software build and can it be re-build?
- Release notes per software release containing all resolved and known bugs
- Backup and restore facilities in case of loss of data