| Criterion | Guideline |
| Cohesion | Make each module functional (or
at least sequential or communicational) |
| Coupling | Keep the coupling between
modules loose |
| Data Structure | Match the program
structure as much as possible to the data structure |
| Decision-Splitting | Keep the recognition
part of a decision close to its execution |
| Editing | Edit in successive levels, with
the simplest editing done at the lowest level |
| Error Reporting | Have the same module that
recognizes the error report the error |
| Factoring | Keep it high |
| Fan-In | Make it high |
| Fan-Out | Restrict the number of
subordinates of a module to fewer than seven |
Initialization/Termination
Modules | Initialize as late as possible; wrap up as soon as
possible |
| Restrictivity/Generality | Don't make a
module too restrictive or too general |
| State Memory | Avoid state memory wherever
possible |
| System Shape | Make the system balanced
(neither physically input-driven nor physically output-driven) |