jagomart
digital resources
picture1_System Software Pdf 185705 | Gar01 Item Download 2023-02-01 18-10-15


 137x       Filetype PDF       File size 0.12 MB       Source: www.cis.upenn.edu


File: System Software Pdf 185705 | Gar01 Item Download 2023-02-01 18-10-15
software architecture david garlan school of computer science carnegie mellon university 5000 forbes avenue pittsburgh pa 15213 412 268 5056 garlan cs cmu edu 1 introduction 2 the roles of ...

icon picture PDF Filetype PDF | Posted on 01 Feb 2023 | 2 years ago
Partial capture of text on file.
                                                                  Software Architecture 
                                                                                             
                                                                                  David Garlan 
                                                                       School of Computer Science 
                                                                        Carnegie Mellon University 
                                                                             5000 Forbes Avenue 
                                                                             Pittsburgh, PA 15213 
                                                                                 (412) 268-5056 
                                                                              garlan@cs.cmu.edu 
                  
                  
                 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 C … C ,” (b) an architectural style, as in “sys-
                 elements; physical distribution; scaling and performance,                                       1      n
                                                                                                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, 
                                      Software Architecture                                            clearly identifying the major internal system inter-
                                                                                                       faces, and constraining what parts of a system may 
                                                                                                       rely on services provided by other parts [2]. 
                                                                                                        
                                                 Code                                             4.   Evolution: Software architecture can expose the di-
                                                                                                       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.  The first was the recognition of a shared rep-
              of the design space [47].                                        ertoire of methods, techniques, patterns, and idioms for 
                                                                               structuring complex software systems. For example, the 
              These early efforts to develop good ways to talk about sys-      box-and-line-diagrams and explanatory prose that typically 
              tem structures and to provide criteria for software modu-        accompany a high-level system description often refer to 
              larization focused primarily on the problem of code organi-      such organizations as a "pipeline,'' a "blackboard-oriented 
              zation, and relationships between the parts based on inter-      design,'' or a "client-server system.''  Although these terms 
              actions such as procedure call and simple data sharing. The      were rarely assigned precise definitions, they permitted 
              key question was how to partition the software into units        designers to describe complex systems using abstractions 
              that could be implemented separately by software develop-        that make the overall system intelligible. Moreover, they 
              ers, and that would provide downstream benefits in support       provided significant semantic content about the kinds of 
              of extensibility, maintenance, and system understandability.     properties of concern, the expected paths of evolution, the 
                                                                               overall computational paradigm, and the relationship be-
              Today’s view of software architecture builds on the insights     tween this system and other similar systems. 
              and concepts from the early days of software structuring,         
              but goes much further by also considering architectural          The second trend was the concern with exploiting com-
              representations that capture a system’s run-time structures      monalities in specific domains to provide reusable frame-
              and behavior. By representing architectures as interacting       works for product families. Such exploitation is based on 
              components (viewed as actual run-time entities), these rep-      the idea that common aspects of a collection of related sys-
              resentations more directly facilitate reasoning about system     tems can be extracted so that each new system can be built 
              properties such as performance, security, and reliability.       at relatively low cost by "instantiating'' the shared design. 
              Additionally, modern views of software architecture pro-         Familiar examples include the standard decomposition of a 
              vide a much richer notion of interaction (than procedure         compiler (which permits undergraduates to construct a new 
              call and simple data sharing), permitting new abstractions       compiler in a semester), standardized communication pro-
              for the “glue” that allows components to be composed.            tocols (which allow vendors to interoperate by providing 
                                                                               services at different layers of abstraction), fourth-
              4.  A NEW DISCIPLINE EMERGES                                     generation languages (which exploit the common patterns 
              Initially architectural design was largely an ad hoc affair.     of business information processing), and user interface 
              Architectural definitions relied on informal box-and-line        toolkits and frameworks (which provide both a reusable 
              diagrams, which were rarely maintained once a system was         framework for developing interfaces and sets of reusable 
              constructed.  Architectural choices were made in an idio-        components, such as menus and dialogue boxes). 
              syncratic fashion – typically by adapting some previous           
              design, whether or not it was appropriate.  Good architects      Much has changed in the past decade.  Although there is 
              – even if they were classified as such within their organiza-    wide variation in the state of the practice, broadly speaking, 
              tions – learned their craft by hard experience in particular     architecture is much more visible as an important and ex-
              domains, and were unable to teach others what they knew.         plicit design activity in software development. Job titles 
              It was usually impossible to analyze an architectural de-        now routinely reflect the role of software architect; compa-
              scription for consistency or to infer non-trivial properties     nies rely on architectural design reviews as critical staging 
              about it.  There was virtually no way to check that a given      points; and architects recognize the importance of making 
              system implementation faithfully represented its architec-       explicit tradeoffs within the architectural design space. 
              tural design.                                                     
               
                                                                                                                                           
              In addition, the technological basis for architectural design       Although these languages (and their tools) differ in many 
              has improved dramatically. Three of the important ad-               respects, a number of key insights have emerged through 
              vancements have been the development of architecture de-            their development. 
              scription languages and tools, the emergence of product              
              line engineering and architectural standards, and the codifi-       The first insight is that good architectural description bene-
              cation and dissemination of architectural design expertise.         fits from multiple views, each view capturing some aspect 
                                                                                  of the system [2, 24, 44, 48]. Two of the more important 
              5. ARCHITECTURE DESCRIPTION LANGUAGES                               classes of view are:  
                   AND TOOLS                                                       
              The informality of most box-and-line depictions of archi-               •    Code-oriented  views, which describe how the 
              tectural designs leads to a number of problems.  The mean-                   software is organized into modules, and what 
              ing of the design may not be clear.  Informal diagrams can-                  kinds if implementation dependencies exist be-
              not be formally analyzed for consistency, completeness, or                   tween those modules. Class diagrams, layered dia-
              correctness. Architectural constraints assumed in the initial                grams, and work breakdown structures are exam-
              design are not enforced as a system evolves. There are few                   ples of this class of view; and 
              tools to help architectural designers with their tasks.                 •    Execution-oriented views, which describe how 
                                                                                           the system appears at run time, typically providing 
              To alleviate these problems there have been number of im-                    one or more snapshots of a system in action. These 
              portant developments. First has been the emergence of                        views are useful for documenting and analyzing 
              practitioner guidelines [2] and published standards for ar-                  execution properties such as performance, reliabil-
              chitectural documentation [44, 48].  These have helped to                    ity, and security. 
              codify best practices and provide some uniformity to the             
              way architectures are documented.                                   A second insight is that architectural description of execu-
                                                                                  tion-oriented views, as embodied in most of the ADLs 
              A second development has been the creation of formal no-            mentioned earlier, requires the ability to model the follow-
                                                                                                                   
              tations for representing and analyzing architectural designs.       ing as first class design entities: 
              Sometimes referred to as "Architecture Description Lan-              
              guages'' or “Architecture Definition Languages” (ADLs),                 •    Components represent the computational ele-
              these notations usually provide both a conceptual frame-                     ments and data stores of a system.  Intuitively, 
              work and a concrete syntax for characterizing software                       they correspond to the boxes in box-and-line de-
              architectures [19, 30].  They also typically provide tools for               scriptions of software architectures. Examples of 
              parsing, displaying, compiling, analyzing, or simulating                     components include clients, servers, filters, black-
              architectural descriptions.                                                  boards, and databases.  Components may have 
                                                                                           multiple interfaces, each interface defining a point 
              Examples of ADLs include Acme[18], Adage [10], Aesop                         of interaction between a component and its en-
              [15], C2 [28], Darwin [26], Rapide [25], SADL [32], Uni-                     vironment.  A component may have several inter-
              Con [39], Meta-H [6], and Wright [3].  While all of these                    faces of the same type (e.g., a server may have 
              languages are concerned with architectural design, each                      several active http connections). 
              provides certain distinctive capabilities: Acme supports                •    Connectors represent interactions among compo-
              interchange of architectural descriptions, Adage supports                    nents.  They provide the “glue” for architectural 
              the description of architectural frameworks for avionics                     designs, and correspond to the lines in box-and-
              navigation and guidance; Aesop supports the use of archi-                    line descriptions. From a run-time perspective, 
              tectural styles; C2 supports the description of user interface               connectors mediate the communication and coor-
              systems using an event-based style; Darwin supports the                      dination activities among components. Examples 
              analysis of distributed message-passing systems; Meta-H                      include simple forms of interaction, such as pipes, 
              provides guidance for designers of real-time avionics con-                   procedure call, and event broadcast. Connectors 
              trol software; Rapide allows architectural designs to be                     may also represent complex interactions, such as a 
              simulated, and has tools for analyzing the results of those                  client-server protocol or a SQL link between a da-
              simulations; SADL provides a formal basis for architectural                  tabase and an application.  Connectors have inter-
              refinement; UniCon has a high-level compiler for architec-                   faces that define the roles played by the partici-
              tural designs that supports a mixture of heterogeneous                       pants in the interaction. 
              component and connector types; Wright supports the for-                 •    Systems represent graphs of components and con-
              mal specification and analysis of interactions between ar-                   nectors. In general, systems may be hierarchical: 
              chitectural components.                                                      components and connectors may represent subsys-
                                                                                           tems that have their own internal architectures. We 
                                                                                           will refer to these as representations. When a sys-
                                                                                                                                               
The words contained in this file might help you see if this file matches what you are looking for:

...Software architecture david garlan school of computer science carnegie mellon university forbes avenue pittsburgh pa cs cmu edu introduction the roles as size and complexity systems increase what exactly is meant by term design specification analysis overall system if we look at common uses in structure becomes a critical issue structural issues include find that it used different ways often organization composition compo making difficult to understand aspect being ad nents global control structures protocols for communi dressed among are par cation synchronization data access assignment ticular s contains functionality elements components c b an architectural style sys physical distribution scaling performance n tem adopts client server gen dimensions evolution this architec eral study there many books on ture level over past decade has emerged within engineering however most important subfield practitioners focus first these interpretations typical have come realize having good de de...

no reviews yet
Please Login to review.