Centralize or Decentralize? A Requirements Engineering Perspective on Internet-Scale Architectures
Eric S. K. Yu · 2000
Large-scale systems are hard to design because of tensions among many interacting forces. For example, in considering whether to centralize or decentralize a function or resource, the designer has to make tough tradeoffs among competing requirements such as performance, cost, usability, reliability, security, time-to-market, maintainability, evolvability, etc. In the area of Requirements Engineering, techniques have been developed to support the managing of large numbers of requirements (functional and non-functional), detecting and analyzing their interactions, using requirements to guide the exploration, pruning and evaluation of design alternatives, and to support change. Such techniques typically emphasize the need to find suitable ways to represent knowledge, and to build tools that manipulate that knowledge in support of human design activities [MBY97].