| 1 | = Code Quality Evaluation Guidelines = |
| 2 | [[TOC]] |
| 3 | |
| 4 | == General Requirements == |
| 5 | |
| 6 | The general quality requirements are defined here as attributes of the solution that is to be evaluated ("The solution must be ..."). |
| 7 | |
| 8 | These attributes are grouped in four quality "levels" - a higher level representing a higher quality standard. |
| 9 | |
| 10 | In order to pass a level, all criteria of this level and all previous levels must be fulfilled. |
| 11 | |
| 12 | ||=Level=||=Priority (MoSCoW)=||=Key Attributes=||=Description=|| |
| 13 | ||1 - '''Minimal'''||Must||valid, correct, safe||minimum standard that must be met by any solution to be considered a "solution" at all|| |
| 14 | ||2 - '''Appropriate'''||Should||usable, maintainable, secure||minimum standard for production use|| |
| 15 | ||3 - '''Good'''||Can||integrated, configurable, robust||goals of long-term development|| |
| 16 | ||4 - '''Optimal'''||Want||efficient, scalable, customizable||goals of optimization efforts|| |
| 17 | |
| 18 | Projects can refer to these levels to define minimum quality goals, to prioritize certain quality aspects vs. other requirements, or to define an iterative approach of continuous quality improvement. |
| 19 | |
| 20 | === Level 1: Minimal === |
| 21 | |
| 22 | ==== Valid ==== |
| 23 | |
| 24 | ''"Writing the right code"'' |
| 25 | |
| 26 | * The specified solution solves the targeted problem and meets the minimum functional requirements |
| 27 | |
| 28 | * The required input data are available in the target scenario |
| 29 | |
| 30 | * The user actions required to apply and/or use the solution or its responses are ''possible'' in the target scenario |
| 31 | |
| 32 | * All dependencies of the feature set are resolvable, and hardware and infrastructure requirements can be met in the target scenario |
| 33 | |
| 34 | ==== Correct ==== |
| 35 | |
| 36 | ''"Writing the code right"'' |
| 37 | |
| 38 | * Processing does not fail for any valid input data or user action. |
| 39 | |
| 40 | * All responses are correct for the respective input data or user actions according to the specification |
| 41 | |
| 42 | ==== Safe ==== |
| 43 | |
| 44 | |
| 45 | * The solution does not break functionality of the application (except for functionality it replaces) |
| 46 | |
| 47 | * All processing always ends with a valid database status regardless whether it succeeds or fails |
| 48 | |
| 49 | * All failed processes are effectively removed from the system and their transactions properly rolled back |
| 50 | |
| 51 | * The solution effectively prevents uncontrolled indefinite object or process proliferation |
| 52 | |
| 53 | * The solution always returns to a defined system status after a failure so that the application remains accessible |
| 54 | |
| 55 | === Level 2: Appropriate === |
| 56 | |
| 57 | ==== Secure ==== |
| 58 | |
| 59 | * The solution applies all relevant system configurations for authentication, authorization and accounting (AAA) appropriately and correctly. |
| 60 | |
| 61 | * The solution does not allow the user to perform actions or initiate processes beyond the intended functionality. |
| 62 | |
| 63 | ==== Usable ==== |
| 64 | ==== Maintainable ==== |
| 65 | |
| 66 | === Level 3: Good === |
| 67 | |
| 68 | ==== Integrated ==== |
| 69 | ==== Configurable ==== |
| 70 | ==== Robust ==== |
| 71 | |
| 72 | === Level 4: Optimal === |
| 73 | |
| 74 | ==== Efficient ==== |
| 75 | ==== Scalable ==== |
| 76 | ==== Interoperable ==== |
| 77 | |
| 78 | == Advanced Criteria == |
| 79 | |
| 80 | The following ''advanced'' quality criteria that can be used to compare different solutions, or to define quality roadmaps beyond the standard criteria. |
| 81 | |
| 82 | However, these ''advanced'' criteria do not enhance the general quality levels: a level-2 solution is still of lower quality than a level-3 solution - regardless how many advanced criteria the level-2 solution fulfills. |
| 83 | |
| 84 | === Stable === |
| 85 | === Appealing === |
| 86 | === Flexible === |
| 87 | === Standardized === |
| 88 | === Extensible === |
| 89 | === Generic === |
| 90 | === Customizable === |