A new approach for dealing with large scale software system is investigated. The central concept of this approach is that of a law- governed system (LGS). Informally, a law-governed system can be described by means of the following equation law-governed system = system + law where the law is an explicit and strictly enforced set of rules about the structure and operation of the system, about the way the system is to be used and modified, and about the allowable modifications in the law itself. In other words, under the LGS approach, the conventional notion of a system is augmented by a new component called the law of the system, which regulates both its operation and evolution. It is intended to build a programming environment, called Darwin, to support this approach. The concept of law-governed system appears to have a wide range of applications, ranging from controlling the operation of programs -- traditionally the domain of programming languages -- to controlling the process of development of large scale systems -- traditionally the domain of software-development environments and managerial disciplines. Specific contributions to software engineering are expected to include: general and flexible module-interconnection schemes, global treatment of exception handling, an object-oriented language which supports a wide variety of inheritance schemes in a unified manner, ability to monitor and audit the operation and the evolution of programs, etc. Perhaps the most interesting, and potentially useful, result expected from the proposed approach is that an evolving system could be made into a single "organism" which would exhibit a degree of predictability and coherency throughout its evolutionary lifetime. This result, which has no counterpart in conventional technology, is particularly important for systems that must provide long term, virtually uninterruptable, support for an enterprise.