Software Architecture
13.4.4 Software Architecture
WebRef
Software architecture alludes to “the overall structure of the software and the ways in The STARS Software
which that structure provides conceptual integrity for a system” [SHA95a]. In its sim- Architecture Technology
Guide provides in-depth plest form, architecture is the hierarchical structure of program components (mod- information and resources
ules), the manner in which these components interact and the structure of data that at
are used by the components. In a broader sense, however, components can be gen-
www-ast.tds-gn. eralized to represent major system elements and their interactions. lmco.com/arch/ 3 guide.html
One goal of software design is to derive an architectural rendering of a system. This rendering serves as a framework from which more detailed design activities are conducted. A set of architectural patterns enable a software engineer to reuse design- level concepts.
Shaw and Garlan [SHA95a] describe a set of properties that should be specified as “A software
part of an architectural design: architecture is the
Structural properties. This aspect of the architectural design representation defines the
development work product that gives components of a system (e.g., modules, objects, filters) and the manner in which those com-
the highest return on
ponents are packaged and interact with one another. For example, objects are packaged to
investment with
encapsulate both data and the processing that manipulates the data and interact via the
respect to quality,
invocation of methods.
schedule and cost.”
Extra-functional properties. The architectural design description should address how
Len Bass et al.
the design architecture achieves requirements for performance, capacity, reliability, secu- rity, adaptability, and other system characteristics. Families of related systems. The architectural design should draw upon repeatable pat- terns that are commonly encountered in the design of families of similar systems. In essence, the design should have the ability to reuse architectural building blocks.
Given the specification of these properties, the architectural design can be repre- sented using one or more of a number of different models [GAR95]. Structural mod- els represent architecture as an organized collection of program components.
Five different types of Framework models increase the level of design abstraction by attempting to identify models are used to
repeatable architectural design frameworks (patterns) that are encountered in simi- represent the
lar types of applications. Dynamic models address the behavioral aspects of the pro- architectural design. gram architecture, indicating how the structure or system configuration may change
as a function of external events. Process models focus on the design of the business
3 For example, the architectural components of a client/server system are represented at a differ- ent level of abstraction. See Chapter 28 for details.
CHAPTER 13
DESIGN CONCEPTS AND PRINCIPLES
F I G U R E 13.3
for a call and return archi-
tectural style Depth
pq Fan-in
Width
or technical process that the system must accommodate. Finally, functional models can be used to represent the functional hierarchy of a system.
A number of different architectural description languages (ADLs) have been devel- oped to represent these models [SHA95b]. Although many different ADLs have been proposed, the majority provide mechanisms for describing system components and the manner in which they are connected to one another.
Parts
» The Concurrent Development Model
» SUMMARY Software engineering is a discipline that integrates process, methods, and tools for
» PEOPLE In a study published by the IEEE [CUR88], the engineering vice presidents of three
» THE PROCESS The generic phases that characterize the software process—definition, development,
» THE PROJECT In order to manage a successful software project, we must understand what can go
» METRICS IN THE PROCESS AND PROJECT DOMAINS
» Extended Function Point Metrics
» METRICS FOR SOFTWARE QUALITY
» INTEGRATING METRICS WITHIN THE SOFTWARE PROCESS
» METRICS FOR SMALL ORGANIZATIONS
» ESTABLISHING A SOFTWARE METRICS PROGRAM
» Obtaining Information Necessary for Scope
» An Example of LOC-Based Estimation
» QUALITY CONCEPTS 1 It has been said that no two snowflakes are alike. Certainly when we watch snow
» SUMMARY Software quality assurance is an umbrella activity that is applied at each step in the
» R diagram 1.4 <part-of> data model; data model <part-of> design specification;
» SYSTEM MODELING Every computer-based system can be modeled as an information transform using an
» Facilitated Application Specification Techniques
» Data Objects, Attributes, and Relationships
» Entity/Relationship Diagrams
» Hatley and Pirbhai Extensions
» Creating an Entity/Relationship Diagram
» SUMMARY Design is the technical kernel of software engineering. During design, progressive
» Data Modeling, Data Structures, Databases, and the Data Warehouse
» Data Design at the Component Level
» A Brief Taxonomy of Styles and Patterns
» Quantitative Guidance for Architectural Design
» Isolate the transform center by specifying incoming and outgoing
» SUMMARY Software architecture provides a holistic view of the system to be built. It depicts the
» The User Interface Design Process
» Defining Interface Objects and Actions
» D E S I G N E VA L U AT I O N
» Testing for Real-Time Systems
» Organizing for Software Testing
» Criteria for Completion of Testing
» The Transition to a Quantitative View
» The Attributes of Effective Software Metrics
» Architectural Design Metrics
» Component-Level Design Metrics
» SUMMARY Software metrics provide a quantitative way to assess the quality of internal product
» Encapsulation, Inheritance, and Polymorphism
» Identifying Classes and Objects
» The Common Process Framework for OO
» OO Project Metrics and Estimation
» Event Identification with Use-Cases
» SUMMARY Object-oriented analysis methods enable a software engineer to model a problem by
» Partitioning the Analysis Model
» Designing Algorithms and Data Structures
» Program Components and Interfaces
» SUMMARY Object-oriented design translates the OOA model of the real world into an
» Testing Surface Structure and Deep Structure
» Deficiencies of Less Formal Approaches 1
» What Makes Cleanroom Different?
» Design Refinement and Verification
» SUMMARY Cleanroom software engineering is a formal approach to software development that
» Structural Modeling and Structure Points
» Describing Reusable Components
» SUMMARY Component-based software engineering offers inherent benefits in software quality,
» Guidelines for Distributing Application Subsystems
» Middleware and Object Request Broker Architectures
» An Overview of a Design Approach
» Consider expert Web developer will create a complete design, but time and cost can be appropriate
» A Software Reengineering Process Model
» Reverse Engineering to Understand Data
» Forward Engineering for Client/Server Architectures
» SUMMARY Reengineering occurs at two different levels of abstraction. At the business level,
Show more