Software Architectures for Shared Information Systems
Software system design takes place at many levels. Different kinds of design elements, notations, and analyses distinguish these levels. At the software architecture level, designers combine subsystems into complete systems. This paper studies some of the common patters, or idioms, that guide these configurations. Results from software architecture offer some insight into the problems of systems integration - the task of connecting individual, isolated, pre-existing software systems to provide coherent, distributed solutions to large problems. As computing has become more sophisticated, so too have the software structures used in the integration task. This paper reviews historical examples of shared information systems in three different applications whose requirements share some common features about collecting, manipulating, and preserving large bodies of complex information. These applications have similar architectural histories in which a succession of designs responds to new technologies and new requirements for flexible, highly dynamics responses. A common pattern, the shared information system evolution pattern, appears in all three areas.