Abstract
Regularities, or the conformity to unifying principles, are essential to the comprehensibility, manageability and reliability of large software systems, and should, therefore, be considered an important element of their architecture. But, as is argued in this paper, the inherent globality of regularities makes them very hard to implement in traditional methods. This paper explores an approach to regularities which greatly simplifies their implementation, making them more easily employable for taming of the complexities of large systems. This approach, which is based on the concept of law-governed architecture (LGA), provides system designers and builders with the means for establishing regularities simply by declaring them formally and explicitly as the law of the system. Once such a law-governed regularity is declared, it is enforced by the environment in which the system is developed. We introduce here the formalism for specifying laws under the Darwin/2 environment, and give a sample of regularities that can be efficiently established by such laws. Although not all desirable regularities can be established this way, it is argued that the range of feasible law-governed regularities, which can be easily defined and efficiently enforced, is sufficiently broad for this to become a useful software engineering technique.