The characteristic approach in mature engineering disciplines (e.g. civil and chemical engineering) is to build systems (e.g., buildings or chemical plants) from known solutions such as proven designs and existing components. Engineers in mature disciplines also put great emphasis on proactively avoiding costly problems by evaluating the system before it is built. Models of the system’s architecture are important tools for applying known solutions and doing early evaluation in mature engineering disciplines. In software engineering, the corollary is modeling the software architecture.