Advanced Information Systems Engineering

The architecture of a software system is a high-level description of the major system components, their interconnections and their interactions. The main hypothesis underlying this paper is that architectural design plays the strategic role in identifying, articulating, and then reconciling the desirable features with the unavoidable constraints under which a system must be developed and will operate. The hypothesis results in a two-phase design philosophy and methodology. During the first phase, the desirable features as well as the constraints are identified. The second phase is a decision process with features and constraints as the driving factors, and tradeoffs contingent on a value system that will always include subjective elements. It is of course impossible to validate the hypothesis in full generality. Instead, we restrict ourselves to an analysis – much of it retrospective – of architectures of database management systems in networks. The analysis demonstrates that the most challenging part of architectural design is to identify – very much in the abstract – those features that promise to have the major impact on the architecture. Further, by separating the features into two classes, a primary class with all those features that dominate the design, and a second class with those features that can then be treated orthogonally, the complexity of the design task is reduced.