Patterns for Software Architectures
نویسنده
چکیده
Software designers rely on informal patterns, or idioms, to describe the architectures of their software systems—the configurations of components that make up the systems. My purpose here is to reflect on the role these patterns play in software design. I am particularly interested in the ways that informal patterns shape the configurations. These patterns determine how separate parts are combined, or “woven together”. The resulting organization is often called the architecture of the system. Current programming languages do not support these patterns; indeed, the patterns address problems that lie outside the scope of conventional programming languages. This paper describes the character of these architectural patterns and the status of work on models and tools to support them. Design Patterns for Software Architectures The conventional view holds that software components interact by importing and exporting access rights to procedures, then calling the procedures (sometimes referred to as “invoking the methods”). However, software designers describe the interactions among components using quite a rich vocabulary of abstractions. Although the descriptions and the underlying vocabulary are imprecise and informal, designers nevertheless appear to communicate effectively. Even vocabulary that has been overloaded to the extent of becoming buzz-words, when used in context, carries content. For example: • "Camelot is based on the client-server model and uses remote procedure calls both locally and remotely to provide communication among applications and servers." [Spector 87] • "Abstraction layering and system decomposition provide the appearance of system uniformity to clients, yet allow Helix to accommodate a diversity of autonomous devices. The architecture encourages a client-server model for the structuring of applications." [Fridrich 85] • "We have chosen a distributed, object-oriented approach to managing information." [Linton 87] • "The easiest way to make the canonical sequential compiler into a concurrent compiler is to pipeline the execution of the compiler phases over a number of processors. ... A more effective way [is to] split the source code into many segments, which are concurrently processed through the various phases of compilation [by multiple
منابع مشابه
Architectural Design Patterns for Multiagent Coordination
This paper presents our rst step towards agent-oriented software engineering, focusing on the area of coordinated multi-agent systems. In multi-agent systems, the interactions between the agents are crucial in determining the eeectiveness of the system. Hence the adoption of an appropriate coordination mechanism is pivotal in the design of multi-agent system architectures. This paper does not f...
متن کاملDesign of a novel congestion-aware communication mechanism for wireless NoC architecture in multicore systems
Hybrid Wireless Network-on-Chip (WNoC) architecture is emerged as a scalable communication structure to mitigate the deficits of traditional NOC architecture for the future Multi-core systems. The hybrid WNoC architecture provides energy efficient, high data rate and flexible communications for NoC architectures. In these architectures, each wireless router is shared by a set of processing core...
متن کاملSome Patterns for Software Architectures
Software designers rely on informal patterns, or idioms, to describe the architectures of their software systems—the configurations of components that make up the systems. At the first PLoP, I identified seven patterns that guide high-level system design and discussed the way they guide the composition of systems from particular types of components [Shaw 95]. This paper extends the descriptions...
متن کاملChapter ? ? Some Patterns for Software Architectures
Software designers rely on informal patterns, or idioms, to describe the architectures of their software systems—the configurations of components that make up the systems. At the first PLoP, I identified seven patterns that guide high-level system design and discussed the way they guide the composition of systems from particular types of components [Shaw 95]. This paper extends the descriptions...
متن کاملArchitectural Software Patterns and Maintainability: a Case Study (hs-ida-ea-01-105) Architectural Software Patterns and Maintainability: a Case Study Architectural Software Patterns and Maintainability: a Case Study
The importance of building maintainable software is being recognized in the community of software development. By developing software that is easy to maintain, the time and resources needed to perform the modifications may be decreased. This will in turn mean economical savings and increased profits. Architectural software patterns are said to promote the development of maintainable software. T...
متن کاملDimensions of Software Architecture for Program Understanding
Software architecture is usually considered in terms of software construction rather than software understanding. Architectures for construction typically embody design patterns based on software engineering principles. In contrast, architectures for understanding represent change patterns and business rules based on conceptual models. This paper presents three dimensions of software architectu...
متن کاملذخیره در منابع من
با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید
عنوان ژورنال:
دوره شماره
صفحات -
تاریخ انتشار 1994