IfSQ Level-1: An Entry-Level Standard
The base level for assessing quality is the IfSQ Level-1 Standard for Computer Program Source Code.
Level-1 defines the most obvious and commonly occurring defect indicators that are universally acknowledged by software experts as bad practice.
This standard helps programmers, managers or auditors to locate indicators of low reliability and high maintenance costs in computer software and fix them in an early stage before they proceed to testing or production.
Software that meets the requirements of IfSQ Level-1 is more reliable, and easier to maintain, than software that does not meet the requirements.
In the Level-1 Standard, we look for the following defect indicators:
Work In Progress
- WIP-1—Vague "To Do": A programmer has left a note to himself or his colleague indicating that a piece of work needs to be done. However it is clear that the work has not been carried out, and there is no indication as to when the work needs to be done.
- WIP-2—Disabled Code: Code has been written and the programmer has disabled it, or switched it off, without making it clear why it has been disabled, or when or whether it will be reenabled.
- WIP-3—Empty Statement Block: The programmer has left a statement block or placeholder empty. When a programmer designs a program top-down he will often first outline the structure of the program in the form of statement blocks and fill in the content of each block in the course of his work. An empty statement block therefore indicates that there may be missing logic and that some extra code may be required.
- SP-1—Routine Too Long: Routines longer than 150 lines (excluding comments and blank lines) have been shown to be less stable, more subject to change, and more expensive to fix than shorter routines.
- SP-2—Nesting Too Deep: Studies have shown that few people can understand nesting of conditional statements to more than 3 levels.
Single Point of Maintenance
- SPM-1—Magic Numbers: Numeric literals (other than 0 or 1) have been hard-coded into the program.