The document discusses architectural design, including software architecture, architecture genres, styles, and design. It covers topics such as what architecture is, why it's important, architectural descriptions, decisions, genres like artificial intelligence and operating systems, styles like layered and object-oriented, patterns, organization/refinement, representing systems in context, defining archetypes, refining into components, describing instantiations, and assessing alternative designs.
2. 1. Software architecture
• The first program was divided into modules,
software systems have had architectures , and
programmers have been responsible for the
interactions among the modules and the
global properties of the assemblage
3. 1.1What Is Architecture
• The architecture is not the operational
software. (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
• (3) reduce the risks associated with the
construction of the software.
4. • There is a distinct difference between the
terms architecture and design.
• A design is an instance of an architecture
similar to an object being an instance of a
class.
5. 1.2.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.
• The architecture highlights early design decisions
that will have a profound impact on all software
engineering.
• Architecture “constitutes a relatively small,
intellectually model of how the system is
structured and how its components work
together”
6. 1.3.Architectural Descriptions
• Developers want clear, decisive guidance on
how to proceed with design.
• Customers want a clear understanding on the
environmental changes that must occur and
assurances that the architecture will meet
their business needs
7. • The IEEE Computer Society has proposed the
following objectives:
• (1) to establish a conceptual framework and
vocabulary for use during the design of
software architecture
• (2) to provide detailed guidelines for
representing an architectural description
• (3) to encourage sound architectural design
practices.
8. 1.4.Architectural Decisions
• Each view developed as part of an architectural
description addresses a specific stakeholder
concern
• As a system architect, you can use the template
suggested in the sidebar to document each major
decision
• To develop each view the system architect
considers a variety of alternatives and ultimately
decides on the specific architectural features that
best meet the concern
9. 2.Arhitecture genres
• The architectural genre will often dictate the
specific architectural approach to the
structure that must be built
• Genre implies a specific category within the
overall software domain. Within each
category, you encounter a number of
subcategories
10. • 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
11. Architectural genres for software-
based systems
• Artificial intelligence—Systems that simulate or
augment human cognition, locomotion, or other
organic processes.
• Commercial and non profit—Systems that are
fundamental to the operation of a business enterprise.
• Communications—Systems that provide the
infrastructure for transferring and managing data, for
connecting users of that data, or for presenting data at
the edge of an infrastructure.
• Content authoring—Systems that are used to create or
manipulate textual or multimedia artifacts.
12. Architectural genres for software-
based systems:
• Devices—Systems that interact with the physical world
to provide some point service for an individual.
• Entertainment and sports—Systems that manage
public events or that provide a large group
entertainment experience.
• Financial—Systems that provide the infrastructure for
transferring and managing money and other securities.
• Games—Systems that provide an entertainment
experience for individuals or groups.
• Government—Systems that support the conduct and
operations of a local, state, federal, global, or other
political entity.
13. Architectural genres for software-
based systems
• Industrial—Systems that simulate or control physical processes.
• Legal—Systems that support the legal industry.
• Medical—Systems that diagnose or heal or that contribute to medical
research.
• Military—Systems for consultation, communications, command, control,
and intelligence (C4I) as well as offensive and defensive weapons.
• Operating systems—Systems that sit just above hardware to provide basic
software services.
• Platforms—Systems that sit just above operating systems to provide
advanced services.
• Scientific—Systems that are used for scientific research and applications.
14. 3.Architecture styles
• The architectural style is also a template for
construction.
• 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;
15. • (3) constraints that define how components
can be integrated to form the system
• (4) semantic models that enable a designer
to understand the overall properties of a
system by analyzing the known properties of
its constituent parts
16. • The intent is to establish a structure for all
components of the system.
• In the case where an existing architecture is to
be reengineered the imposition of an
architectural style will result in fundamental
changes to the structure of the software
including a reassignment of the functionality
of components
17. 3.1 A Brief Taxonomy of Architectural
Styles
• Data- centered architectures:
• 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
19. 3.1 A Brief Taxonomy of Architectural
Styles
• Data-flow architectures
• A pipe-and-filter pattern has a set of
components, called filters, connected by pipes
that transmit data from one component to the
next.
• Each filter works independently of those
components
21. 3.1 A Brief Taxonomy of Architectural
Styles
• Call and return architectures
• Main program/subprogram architectures.
This classic program structure decomposes
function into a control hierarchy where a “main”
program invokes a number of program components
that in turn may invoke still other components
• Remote procedure call architectures.
The components of a main program/subprogram
architecture are distributed across multiple
computers on a network.
23. 3.1 A Brief Taxonomy of Architectural
Styles
• Object-oriented architectures. The
components of a system encapsulate dataand
the operations that must be applied to
manipulate the data. Communication and
coordination between components are
accomplished via message passing.
24. 3.1 A Brief Taxonomy of Architectural
Styles
• Layered architectures : A number of different
layers are defined, each accomplishing operations
that progressively become closer to the machine
instruction set.
• At the outer layer, components service user
interface operations.
• At the inner layer, components perform operating
system interfacing.
• Intermediate layers provide utility services and
application software functions.
26. 3.2 Architectural Patterns
• Architectural patterns address an application-
specific problem within a specific context and
under a set of limitations and constraints.
• The pattern proposes an architectural
solution that can serve as the basis for
architectural design
27. 3.3 Organization and Refinement
• To establish a set of design criteria that can be
used to assess an architectural design that is
derived.
• Control. How is control managed within the
architecture?
• Data. How are data communicated between
components?
28. 4.Architectural Design
• The software to be developed must be put
into context
• An archetype is an abstraction that represents
one element of system behavior.
• The designer specifies the structure of the
system by defining and refining software
components that implement each element
29. 4.1 Representing the System in
Context
• A software architect uses an architectural
context diagram(ACD) to model the manner in
which software interacts with entities external
to its boundaries.
31. • Superordinate systems—those systems that use the
target system as part of some higher-level processing
scheme.
• Subordinate systems—those systems that are used by
the target system and provide data or processing that
are necessary to complete target system functionality.
• Peer-level systems—those systems that interact on a
peer-to-peer basis (i.e., information is either produced
or consumed by the peers and the target system.
• Actors—entities (people, devices) that interact with the
target system by producing or consuming information
that is necessary for requisite processing
32. 4.2 Defining Archetypes
• An archetype is a class or pattern that
represents a core abstraction that is critical to
the design of an architecture for the target
system
• archetypes can be derived by examining the
analysis classes defined as part of the
requirements model.
33. Example
• Node. Represents a cohesive collection of input and output
elements For example a node might be comprised of (1)
various sensors and (2) a variety of alarm (output)
indicators.
• Detector. An abstraction that encompasses all sensing
equipment that feeds information into the target system
• Indicator. An abstraction that represents all mechanisms
(e.g., alarm siren, flashing lights, bell) for indicating that an
alarm condition is occurring.
• Controller. An abstraction that depicts the mechanism that
allows the arming or disarming of a node. If controllers
reside on a network, they have the ability to communicate
with one another.
35. 4.3 Refining the Architecture into
Components
• As the software architecture is refined into
components, the structure of the system
begins to emerge
• The architecture must accommodate many
infrastructure components that enable
application components but have no business
connection to the application domain
36. • External communication management—
coordinates communication of the security
function with external entities such as other
Internet-based systems and external alarm
notification.
• Control panel processing—manages all control
panel functionality.
• Detector management—coordinates access to all
detectors attached to the system.
• Alarm processing—verifies and acts on all alarm
conditions
38. 4.4 Describing Instantiations of the
System
• The overall structure of the system is
apparent, and the major software
components have been identified
40. 5.Accessing alternative architecture
design
• Design results in a number of architectural
alternatives that are each assessed to
determine which is the most appropriate for
the problem to be solved
• The first method uses an iterative method to
assess design trade-offs.
• The second approach applies a pseudo
(algorithm) quantitative technique for
assessing design quality.
41. 5.1 An Architecture Trade-Off Analysis
Method
• The Software Engineering Institute (SEI)
establishes an iterative evaluation process for
software architectures
• 1.Collect scenarios. A set of use cases is
developed to represent the system from the
user’s point of view.
• 2.Elicit requirements, constraints, and
environment description. This information is
determined as part of requirements engineering
and is used to be certain that all stakeholder
concerns have been addressed.
42. • 3.Describe the architectural styles/patterns that
have been chosen to address the scenarios and
requirements.
• Module view for analysis of work assignments
with components and the degree to which
information hiding has been achieved.
• Process view for analysis of system Performance.
• Data flow view for analysis of the degree to
which the architecture meets functional
requirements.
43. 4.Evaluate quality attributes by considering each
attribute in isolation
• Quality attributes for architectural design
assessment include reliability, performance,
security, maintainability, flexibility, testability,
portability , reusability, and interoperability
44. • 5.Identify the sensitivity of quality attributes
to various architectural attributes for a
specific architectural style
• This can be accomplished by making small
changes in the architecture and determining
how sensitive a quality attribute, say
performance, is to the change.
• 6.Critique candidate using the sensitivity
analysis conducted
45. 5.2 Architectural Complexity
• A useful technique for assessing the overall
complexity of a proposed architecture is to
consider dependencies between components
within the architecture.
• Sharing dependencies represent dependence
relationships among consumers who use the
same resource or producers who produce for
the same consumers
46. • Flow dependencies represent dependence
relationships between producers and
consumers of resources
• Constrained dependencies represent
constraints on the relative flow of control
among a set of activities
47. 5.3 Architectural Description
Languages
• Architectural description language (ADL) provides
a semantics and syntax for describing a software
architecture
• ADL should provide the designer with the ability
to decompose architectural components
• compose individual components into larger
architectural blocks
• represent interfaces(connection mechanisms)
between components.
48. 6.Archiectural mapping using Data
flows
• A mapping technique, called structured design
is often characterized as a data flow-oriented
design method because it provides a
convenient transition from a data flow
diagram to software architecture
• The transition from information flow
(represented as a DFD) to program structure is
accomplished as part of a six step process:
49. • (1) The type of information flow is established
• (2) Flow boundaries are indicated
• (3) The DFD is mapped into the program
structure
• (4) Control hierarchy is defined
• (5) The resultant structure is refined using design
measures and heuristics
• (6) The architectural description is refined and
elaborated
50. 6.1 Transform Mapping
• Transform mapping is a set of design steps
that allows a DFD with transform flow
characteristics to be mapped into a specific
architectural style
51. • Step 1. Review the fundamental system
model. The fundamental system model or
context diagram depicts the security function
as a single transformation, representing the
external producers and consumers of data
that flow into and out of the function.
53. • Step 2. Review and refine data flow diagrams
for the software. Information obtained from
the requirements model is refined to produce
greater detail
55. • Step 3. Determine whether the DFD has
transform or transaction flow characteristics.
Evaluating the DFD we see data entering the
software along one incoming path and exiting
along three outgoing paths. Therefore, an
overall transform characteristic will be
assumed for information flow.
56. • Step 4. Isolate the transform center by
specifying incoming and outgoing flow
boundaries : Incoming data flows along a path
in which information is converted from
external to internal form
• outgoing flow converts internalized data to
external form.
• Incoming and outgoing flow boundaries are
open to interpretation.
57. • Step 5. Perform “first-level factoring.”
• An incoming information processing controller,
called sensor input controller, coordinates receipt
of all incoming data.
• A transform flow controller, called alarm
conditions controller, supervises all operations on
data in internalized form
• An outgoing information processing controller,
called alarm output controller, coordinates
production of output information
58. • Step 6. Perform “second-level factoring”.
• Second-level factoring is accomplished by
mapping individual transforms (bubbles) of a
DFD into appropriate modules within the
architecture.
• one-to-one mapping between DFD transforms
and software modules, different mappings
frequently occur
59. • Step 7. Refine the first-iteration architecture
using design heuristics for improved software
quality
• A first-iteration architecture can always be
refined by applying concepts of functional
independence
• Components are exploded or imploded to
produce sensible factoring, separation of
concerns, good cohesion,minimal coupling
60. 6.2 Refining the Architectural Design
• Refinement of software architecture during
early stages of design is to be encouraged
• This approach to optimization is one of the
true benefits derived by developing a
representation of software architecture.