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:

  1. Cross-cutting: Cannot be localized to one feature. Security, performance, compliance, and multi-language support are all Aspects.
  2. 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.