To be able to provide a library which can also be used when a certain level of quality is required, we label all classes and method using a quality label. We can then make releases with several levels of quality.
The names of the quality labels will be different minerals of carbon. Like programs are formed by combining instructions, minerals of carbon are formed with C atoms. Minerals with no structure (e.g. coal) have little value, as do programs with little structure, while perfectly structured C atoms form a diamond.
For a method, we define 2 quality labels:
- Specification quality:
- Informal
- Structured
- Formal
- Implementation quality:
The quality of a method is defined by the combination of its implementation and specification quality. Of course, the combination "Informal & Proven" is nonsense, as shown in the table below.
|
Unverified |
Tested |
Proven |
Informal |
Coal |
? |
X
|
Structured |
? |
? |
? |
Formal |
? |
? |
Diamond |
As you can see, the names haven't been filled in completely yet. A complete ordering would be nice for CVS, when a higher quality level is reached, code can be merged with the next branch. For now, we only have a single branch which represents 'coal', although about all code in it is 'formal & test'. When we've found a good way of organizing things branches will be added.
|