Layered Design

A feature is always based on a set of other features. This dependency relationship must always be one directional. A feature, whether it is an instance, a class, or a library can only refer to those features that are below it in the design hierarchy. This layered design stems directly from the reusabilty requirement.