Aspect
An Aspect is a cross-cutting requirement that shapes the architecture and constraints of an entire component, sub-product, or product. Two defining characteristics:
- Cross-cutting: Cannot be localized to one feature. Security, performance, compliance, and multi-language support are all Aspects.
- Exponentially growing cost: Cost increases exponentially the longer it is deferred.
When two parts of a product have different Aspect profiles (e.g., monthly updates vs. 15-year support), they belong in different components. Inspired by AOP (Kiczales et al., 1997), but broader in scope.