Professional Documents
Culture Documents
Design Concepts: Software Engineering: A Practitioner's Approach, 7/e
Design Concepts: Software Engineering: A Practitioner's Approach, 7/e
Design Concepts
Slide Set to accompany
Software Engineering: A Practitioner’s Approach, 7/e
by Roger S. Pressman
All copyright information MUST appear if these slides are posted on a website for student
use.
These slides are designed to accompany Software Engineering: A Practitioner’s Approach, 7/e
(McGraw-Hill, 2009). Slides copyright 2009 by Roger Pressman. 1
Design Concepts
Software design encompasses the set of principles, concepts,
and practices that lead to the development of a high-quality
system or product
These slides are designed to accompany Software Engineering: A Practitioner’s Approach, 7/e
(McGraw-Hill 2009). Slides copyright 2009 by Roger Pressman. 2
DESIGN WITHIN THE CONTEXT
OF SOFTWARE ENGINEERING
3
Translating the requirements
model into the design model
These slides are designed to accompany Software Engineering: A Practitioner’s Approach, 7/e
(McGraw-Hill 2009). Slides copyright 2009 by Roger Pressman. 5
Design Model (Section 8.4)
Design Elements of each of the Design
Component
These slides are designed to accompany Software Engineering: A Practitioner’s Approach, 7/e
(McGraw-Hill 2009). Slides copyright 2009 by Roger Pressman. 6
Data/Class Design
The data/class design transforms class models (Chapter 6)
into design class realizations and the requisite data
structures required to implement the software.
These slides are designed to accompany Software Engineering: A Practitioner’s Approach, 7/e
(McGraw-Hill 2009). Slides copyright 2009 by Roger Pressman. 7
Architectural Design
Defines the relationship between major structural elements
of the software
The architectural design representation—the framework of a
computer-based system—is derived from the requirements
model.
The architectural design for software is the equivalent to
the floor plan of a house.
The floor plan depicts the overall layout of the rooms; their size, shape,
and relationship to one another; and the doors and windows that allow
movement into and out of the rooms.
Architectural design elements give us an overall view of the software.
These slides are designed to accompany Software Engineering: A Practitioner’s Approach, 7/e
(McGraw-Hill 2009). Slides copyright 2009 by Roger Pressman. 8
The interface design elements for software
depict information flows into and out of the
system and how it is communicated among
the components defined as part of the
9
10
Component-level Design
The component-level design transforms structural elements
of the software architecture into a procedural description of
software components.
Information obtained from the class-based models, flow
models, and behavioral models serve as the basis for
component design.
The component-level design for software is the equivalent to
a set of detailed drawings (and specifications) for each room in a house.
These drawings depict wiring and plumbing within each room, the
location of electrical receptacles and wall switches, faucets, sinks,
showers, tubs, drains, cabinets, and closets.
11
The design details of a component can be modeled at many different levels of
abstraction.
These slides are designed to accompany Software Engineering: A Practitioner’s Approach, 7/e
(McGraw-Hill 2009). Slides copyright 2009 by Roger Pressman. 12
Deployment-level Design
These slides are designed to accompany Software Engineering: A Practitioner’s Approach, 7/e
(McGraw-Hill 2009). Slides copyright 2009 by Roger Pressman. 13
Chapter 9
Architectural Design
Slide Set to accompany
Software Engineering: A Practitioner’s Approach, 7/e
by Roger S. Pressman
All copyright information MUST appear if these slides are posted on a website for student
use.
These slides are designed to accompany Software Engineering: A Practitioner’s Approach, 7/e
(McGraw-Hill, 2009). Slides copyright 2009 by Roger Pressman. 14
Architecture?
-software components,
-the externally visible properties of those components, and
- the relationships among components
These slides are designed to accompany Software Engineering: A Practitioner’s Approach, 7/e
(McGraw-Hill 2009). Slides copyright 2009 by Roger Pressman. 15
Architecture?
The architecture is not the operational software.
Rather, it is a representation (a graspable model) that
enables a software engineer to:
(1) analyze the effectiveness of the design in meeting its
stated requirements,
(2) consider architectural alternatives at a stage when
making design changes is still relatively easy, and
(3) reduce the risks associated with the construction of
the software.
These slides are designed to accompany Software Engineering: A Practitioner’s Approach, 7/e
(McGraw-Hill, 2009). Slides copyright 2009 by Roger Pressman. 16
Why is Architecture Important?
Representations of software architecture are an enabler
for communication between all parties (stakeholders)
interested in the development of a computer-based
system.
17
Architectural Descriptions
The IEEE Standard defines an architectural description (AD)
as a “a collection of products to document an architecture.”
The description itself is represented using multiple views, where
each view is “a representation of a whole system from the
perspective of a related set of [stakeholder] concerns.”
Software Engineer
Owner Stable
Aesthetically pleasing Accommodate changes
Ensure its profitability
End-user
Ease my work
Ease of interaction
18
Architectural Decisions
Each view developed as part of an architectural
description addresses a specific stakeholder concern.
These slides are designed to accompany Software Engineering: A Practitioner’s Approach, 7/e
(McGraw-Hill 2009). Slides copyright 2009 by Roger Pressman. 19
Architectural Genres
Genre implies a specific category within the
overall software domain.
Within each category, you encounter a number
of subcategories.
For example, within the genre of buildings, you
would encounter the following general styles:
houses, apartment buildings, office buildings,
industrial building, warehouses, and so on.
Within each general style, more specific styles might
apply. Each style would have a structure
These slides are designed to accompany Software Engineering: A Practitioner’s Approach, 7/e
(McGraw-Hill, 2009). Slides copyright 2009 by Roger Pressman. 20
Architectural Genres
These slides are designed to accompany Software Engineering: A Practitioner’s Approach, 7/e
(McGraw-Hill 2009). Slides copyright 2009 by Roger Pressman. 21
Architectural Genres
These slides are designed to accompany Software Engineering: A Practitioner’s Approach, 7/e
(McGraw-Hill 2009). Slides copyright 2009 by Roger Pressman. 22
Architectural Styles/
Taxonomy of Architectural
Styles
Each style describes a system category that encompasses: (1) a
set of components (e.g., a database, computational modules)
that perform a function required by a system, (2) a set of
connectors that enable “communication, coordination and
cooperation” among components, (3) constraints that define
how components can be integrated to form the system, and
(4) semantic models that enable a designer to understand the
overall properties of a system by analyzing the known
properties of its constituent parts.
Data-centered architectures
Data flow architectures
Call and return architectures
Object-oriented architectures
Layered architectures
These slides are designed to accompany Software Engineering: A Practitioner’s Approach, 7/e
(McGraw-Hill, 2009). Slides copyright 2009 by Roger Pressman. 23
Data-Centered Architecture
A data store (e.g., a file or database) resides at the center of this architecture and is
accessed frequently by other components that update, add, delete, or otherwise modify
data within the store. Figure illustrates a typical data-centered style. Client software
accesses a central repository.
24
Data Flow Architecture
This architecture is applied when input data are to be transformed through a series of
computational or manipulative components into output data.
25
Call and Return Architecture
This architectural style enables you to achieve a program structure that is relatively easy
to modify and scale. 26
Object-oriented architectures
These slides are designed to accompany Software Engineering: A Practitioner’s Approach, 7/e
(McGraw-Hill 2009). Slides copyright 2009 by Roger Pressman. 27
Layered Architecture
29
Representing the System in
Context
At the architectural design level, a software architect
uses an architectural context diagram (ACD) to model
the manner in which software interacts with entities
external to its boundaries. The generic structure of the
architectural context diagram is illustrated in Figure.
30
Example ACD
These slides are designed to accompany Software Engineering: A Practitioner’s Approach, 7/e
(McGraw-Hill 2009). Slides copyright 2009 by Roger Pressman. 31
Designing Archetypes
An archetype represents a core abstraction that is critical
to the design of an architecture for the target system.
In general, a relatively small set of archetypes is required
to design even relatively complex systems.
The target system architecture is composed of these
archetypes
In many cases, archetypes can be derived by examining
the analysis classes defined as part of the
requirements/analysis model
These slides are designed to accompany Software Engineering: A Practitioner’s Approach, 7/e
(McGraw-Hill 2009). Slides copyright 2009 by Roger Pressman. 32
Example - Archetypes
Continuing the discussion of the SafeHome
home security function, you might define the
following archetypes:
These slides are designed to accompany Software Engineering: A Practitioner’s Approach, 7/e
(McGraw-Hill 2009). Slides copyright 2009 by Roger Pressman. 33
Example - Archetypes
34
Refining the Architecture into
Components
As the software architecture is refined into components, the structure of the
system begins to emerge.
But how are these components chosen?
In order to answer this question, we begin with the classes that were described as part of the
requirements model. These analysis classes represent entities within the application (business)
domain that must be addressed within the software architecture. Hence,
the application domain is one source for the derivation and refinement of components.
Another source is the infrastructure domain. The architecture must accommodate many
infrastructure components that enable application components but have no business connection
to the application domain, for example, communication components, database components
The interfaces depicted in the architecture context diagram imply
one or more specialized components that process the data that flows across the interface. (e.g.,
a graphical user interface),
35
Example – Refining
Continuing the SafeHome home security function example, you might
define the
set of top-level components that address the following functionality:
36
Example – Refining
These slides are designed to accompany Software Engineering: A Practitioner’s Approach, 7/e
(McGraw-Hill 2009). Slides copyright 2009 by Roger Pressman. 37
Describing Instantiations of the
System – Further Refinement
The architectural design that has been
modeled to this point is still relatively high
level.
The context of the system has been represented
archetypes that indicate the important abstractions
have been defined
the major software components have
been identified.
However, further refinement is still necessary.
These slides are designed to accompany Software Engineering: A Practitioner’s Approach, 7/e
(McGraw-Hill 2009). Slides copyright 2009 by Roger Pressman. 38
Describing Instantiations of the
System – Further Refinement
To accomplish this, an actual instantiation of
the architecture is developed
These slides are designed to accompany Software Engineering: A Practitioner’s Approach, 7/e
(McGraw-Hill 2009). Slides copyright 2009 by Roger Pressman. 39
Describing Instantiations of the
System – Further Refinement
These slides are designed to accompany Software Engineering: A Practitioner’s Approach, 7/e
(McGraw-Hill 2009). Slides copyright 2009 by Roger Pressman. 40
Do it yourself
Section 9.5
Section 9.6
Will not be part of the examination
These slides are designed to accompany Software Engineering: A Practitioner’s Approach, 7/e
(McGraw-Hill 2009). Slides copyright 2009 by Roger Pressman. 41