Within an enterprise, there may be many software systems with varying software architectures. At the systems level, the goal is to achieve some interoperability benefit. Here, the goal is to reuse architecture so that applications may benefit from commonality between systems, which includes interoperability and software reuse. At the system level, managing change and managing complexity are the two most important primal forces. Managing functionality and performance have more importance at the application level where they are directly controlled.
Complexity is managed through arriving the right amount of abstraction for a system architecture.
Management of changes is focused on the development of common interfaces. This defines how services are accessed. Common interfaces allow for component replacement of applications and systems. Good architecture is about matching the right amount abstraction with the appropriate set of common interfaces. The system level implements the system's internal model, and provides the cohesiveness needed to allow applications to interoperability effectively with one another.