Recently while programming I've been trying to think of the design of systems in terms of *entanglemes* which are fundamental units (-eme) of entangled structures (entangl-). These correspond (mostly; they're a superset) to (cross-cutting concerns)[https://en.wikipedia.org/wiki/Cross-cutting_concern] in aspect-oriented programming. But unlike that programming-only term, entanglemes are much more general. For instance, the pipes, wiring, and structural elements in a house are all entanglemes because the house is an entanglement of the pipes, wires, etc
If you do any preliminary systems design at all when programming, it seems particularly important to identify entanglemes because entanglemes strongly inform what abstractions to use and they cannot be encapsulated. So identifying entanglemes is like identifying the limits of what can be encapsulated in your system
Ideally, you can decompose your system into a minimal set of entanglemes and maximally encapsulate everything else, but this seems to be an exceptionally hard, nonlinear problem