1. A method of configuring a system, comprising: providing models of corresponding components, wherein the models contain constraints, wherein the models specify that at least one of the components is composed of at least another one of the components, and wherein at least one of the models specifies a structure that refers to another structure in a collection of the components; inputting the models into a design tool executing in a computer; and generating, by the design tool executing in the computer, a configuration of the system that includes the components, wherein the generated configuration satisfies the constraints contained in the models.