|
Interfaces and dependencies between implementation subsystems have been defined
The workload for the Implementation Team is balanced
| Potential bottlenecks have been identified and work has been redistributed, and contingency plans have been created to
allow critical work to be redistributed if the initial work allocation becomes unbalanced. |
There are no instances of dependencies crossing more than one layer boundary
Unnecessary dependencies on lower-layer subsystems have been eliminated
The impact of necessary dependencies on lower layer subsystems has been reduced by letting subsystems in middle layers re-export interfaces from subsystems in lower layers
The number of layers is no more than seven (plus or minus two), or there is a well-understood reason why more layers exist
The ratio between the number of packages or subsystems and the number of implementation elements is consistent with the application size and complexity
| For example, 5 packages or subsystems and 1,000 files is a sign that something is wrong. |
The amount of source code is consistent with the expectation based on the number of design classes
| For example, 100,000 lines of code for 10 design classes is a sign that the either the design or the implementation, or
both, may be flawed. |
The actual implementation effort is close to what was estimated, or if not, the basis for estimation has been examined and adjusted
|