Software Architecture

Software Architecture

Software Architecture David Garlan School of Computer Science Carnegie Mellon University 5000 Forbes Avenue Pittsburgh, PA 15213 (412) 268-5056 [email protected] 1. INTRODUCTION 2. THE ROLES OF SOFTWARE ARCHITECTURE As the size and complexity of software systems increase, What exactly is meant by the term “software architecture?” the design, specification, and analysis of overall system If we look at the common uses of the term “architecture” in structure becomes a critical issue. Structural issues include software, we find that it is used in different ways, often the organization of a system as a composition of compo- making it difficult to understand what aspect is being ad- nents; global control structures, the protocols for communi- dressed. Among the uses are: (a) the architecture of a par- cation, synchronization, and data access; the assignment of ticular system, as in “the architecture of system S contains functionality to design elements; the composition of design components C1… Cn,” (b) an architectural style, as in “sys- elements; physical distribution; scaling and performance, tem S adopts a client-server architecture,” and (c) the gen- and dimensions of evolution. This is the software architec- eral study of architecture, as in “there are many books on ture level of design. software architecture.” Over the past decade architectural design has emerged as Within software engineering, however, most uses of the an important subfield of software engineering. Practitioners term focus on the first of these interpretations. A typical have come to realize that having a good architectural de- definition is: sign is a critical success factor for complex system devel- opment. A good architecture can help ensure that a system The software architecture of a program or computing will satisfy key requirements in such areas as performance, system is the structure or structures of the system, reliability, portability, scalability, and interoperability. A which comprise software components, the externally bad architecture can be disastrous. visible properties of those components, and the rela- tionships among them [5]. Practitioners have also begun to recognize the value of making explicit architectural choices, and leveraging past While there are numerous similar definitions of software architectural designs in the development of new products. architecture, at the core of all of them is the notion that the Today there are numerous books on architectural design, architecture of a system describes its gross structure using regular conferences and workshops devoted specifically to one or more views. The structure in a view illuminates a software architecture, a growing number of commercial set of top-level design decisions, including things such as tools to aid in aspects of architectural design, courses in how the system is composed of interacting parts, where are software architecture, major government and industrial the main pathways of interaction, and what are the key research projects centered on software architecture, and an properties of the parts. Additionally, an architectural de- increasing number of formal architectural standards. Codi- scription ideally includes sufficient information to allow fication of architectural principles, methods, and practices high-level analysis and critical appraisal. has begun to lead to repeatable processes of architectural design, criteria for making principled tradeoffs among ar- Software architecture typically plays a key role as a bridge chitectures, and standards for documenting, reviewing, and between requirements and code (see Figure 1). implementing architectures. To appear in Encyclopedia of Software Engineering, John Wiley & Sons, Inc. 2001 3. Construction: An architectural description provides a partial blueprint for development by indicating the major software components and dependencies be- Requirements tween them. For example, a layered view of an ar- chitecture typically documents abstraction bounda- ries between parts of a system’s implementation, clearly identifying the major internal system inter- Software Architecture faces, and constraining what parts of a system may rely on services provided by other parts [2]. 4. Evolution: Software architecture can expose the di- Code mensions along which a system is expected to evolve. By making explicit the "load-bearing walls" of a system, system maintainers can better under- stand the ramifications of changes, and thereby more Figure 1: Software Architecture as a Bridge accurately estimate costs of modifications. More- over, architectural descriptions separate concerns By providing an abstract description (or model) of a sys- about the functionality of a component from the tem, the architecture exposes certain properties, while hid- ways in which that component is connected to (in- ing others. Ideally this representation provides an intellec- teracts with) other components, by clearly distin- tually tractable guide to the overall system, permits design- guishing between components and mechanisms that ers to reason about the ability of a system to satisfy certain allow them to interact. This separation permits one requirements, and suggests a blueprint for system construc- to more easily change connection mechanisms to tion and composition. handle evolving concerns about performance and re- use. For example, an architecture for a signal processing appli- cation might be constructed as a dataflow network in which 5. Analysis: Architectural descriptions provide new the nodes read input streams of data, transform that data, opportunities for analysis, including system consis- and write to output streams. Designers might use this de- tency checking [3, 25], conformance to constraints composition, together with estimated values for input data imposed by an architectural style [1], conformance flows, computation costs, and buffering capacities, to rea- to quality attributes [9], dependence analysis [42], son about possible bottlenecks, resource requirements, and and domain-specific analyses for architectures built schedulability of the computations. in specific styles [10, 15, 26]. To elaborate, software architecture can play an important 6. Management: Experience has shown that successful role in at least six aspects of software development. projects view achievement of a viable software ar- chitecture as a key milestone in an industrial soft- 1. Understanding: Software architecture simplifies our ware development process. Critical evaluation of an ability to comprehend large systems by presenting architecture typically leads to a much clearer under- them at a level of abstraction at which a system’s de- standing of requirements, implementation strategies, sign can be easily understood [2, 20, 35]. Moreover, and potential risks [7]. at its best, architectural description exposes the high- level constraints on system design, as well as the ra- 7. Communication: An architectural description often tionale for specific architectural choices. serves as a vehicle for communication among stake- holders. For example, explicit architectural design 2. Reuse: Architectural design can support reuse in reviews allow stakeholders to voice opinions about several ways. Current work on reuse generally fo- relative weights of features and quality attributes cuses on component libraries. Architectural design when architectural tradeoffs must be considered [9]. supports, in addition, both reuse of large components (or subsystems) and also frameworks into which 3. PRECURSORS components can be integrated. Such reusable frame- The notion of providing explicit descriptions of system works may be domain-specific software architectural structures goes way back. In the 1960’s and 1970’s there styles [4, 27], component integration standards [43], [ were active debates about criteria on which to base modu- and architectural design patterns 8]. larization of software [12, 45]. Programming languages began to provide new features for modularization and the specification of interfaces. However, despite their informality, architectural descrip- In 1975 DeRemer and Kron [11] argued that creating pro- tions were central to system design. As people began to gram modules and connecting them to form larger struc- understand the critical role that architectural design plays in tures were distinct design efforts. They created the first determining system success, they also began to recognize module interconnection language (MIL) to support that the need for a more disciplined approach. Early authors connection effort. In an MIL, modules import and export began to observe certain unifying principles in architectural resources, which are named programming-language ele- design [36], to call out architecture as a field in need of ments such as type definitions, constants, variable, and attention [35], and to establish a working vocabulary for functions. A compiler for an MIL ensures system integrity software architects [20]. Tool vendors began thinking using inter-module type checking. Since DeRemer and about explicit support for architectural design. Language Kron’s proposal, other MILs have been developed for spe- designers began to consider notations for architectural rep- cific programming languages such as Ada and Standard resentation [30]. ML, and have provided a base from which to support soft- ware construction, version control, and system families Within industry, two trends highlighted the importance of [33,46]. Enough examples are available to develop models architecture.

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    10 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us