Constructs for hierarchically describing the organization of large-scale software systems are presented. The constructs allow the explicit specification of subsystem sharing. Descriptions using these constructs are therefore not necessarily tree-like and hence are frequently more natural and clear. The constructs were developed as part of a language for describing a system’s design, as opposed to its implementation. The efficacy of the constructs is argued with respect to this description task and the constructs are compared to similar ones available in programming languages