SE 616 – Introduction to Software Engineering
|
Lecture 5
|
Architectural
Design (Chapter 10)
What Is Architecture?
Software
architecture is a representation that enables a software engineer to
- Analyze the effectiveness of the
design in meeting stated requirements
- Consider architectural alternatives
- Reduce the risk associated with the
construction of the software
- Examine the system as a whole
Why Is Architecture Important?
- Enable communication between all
parties (stakeholders) interested in the development of a computer-based
system.
- Highlights early design decisions that
will have a profound impact on all software engineering work that follows
and on the ultimate success of the system as an operational entity.
- Architecture "constitutes a
relatively small, intellectually graspable model of how the system is
structured and how its components work together".
Data Design
- refine data objects and develop a set
of data abstractions
- implement data object attributes as
one or more data structures
- review data structures to ensure that
appropriate relationships have been established
- simplify data structures as required
Data Design Principles
- Systematic analysis principles applied
to function and behavior should also be applied to data.
- All data structures and the operations
to be performed on each should be identified.
- Data dictionary should be established
and used to define both data and program design.
- Low level design processes should be
deferred until late in the design process.
- Representations of data structure should
be known only to those modules that must make direct use of the data
contained within in the data structure.
- A library of useful data structures
and operations should be developed.
- A software design and its
implementation language should support the specification and realization
of abstract data types.
Architectural Styles
Each
style describes a system category that encompasses:
- a set of components (e.g., a database,
computational modules) that perform a function required by a system
- a set of connectors that enable
“communication, coordination and cooperation” among components
- constraints that define how components
can be integrated to form the system
- 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 - data store (e.g. file or database) lies at the center of
this architecture and is accessed frequently by other components that
modify data
- Data flow - input data is transformed by a series of computational or
manipulative components into output data
- Call and return - program structure decomposes function into control
hierarchy with main program invokes several subprograms
- Main
program/subprogram architectures: Classic program structure decomposes
function into a control hierarchy where a "main" program
invokes a number of program components, which in turn may invoke still
other components.
- Remote procedure
call architectures: Components of a main program/subprogram architecture are
distributed across multiple computers on a network
- Object-oriented - components of system encapsulate data
and operations, communication between components is by message passing
- Layered - several layers are defined, each accomplishing
operations that progressively become closer to the machine instruction set
Architecture Design Assessment Questions
- How is control managed within the
architecture?
- Does a distinct control hierarchy
exist?
- How do components transfer control
within the system?
- How is control shared among
components?
- What is the control topology?
- Is control synchronized or
asynchronous?
- How are data communicated between
components?
- Is the flow of data continuous or
sporadic?
- What is the mode of data transfer?
- Do data components exist? If so what
is their role?
- How do functional components interact
with data components?
- Are data components active or passive?
- How do data and control interact
within the system?
Architecture Trade-off Analysis Method
- Collect scenarios
- Elicit requirements, constraints, and
environmental description
- Describe architectural styles/patterns
chosen to address scenarios and requirements:
- module view
- process view
- data flow view
- Evaluate quality attributes
independently (e.g. reliability, performance, security, maintainability,
flexibility, testability, portability, reusability, interoperability)
- Identify sensitivity points for
architecture (any attributes significantly affected by variation in the
architecture)
- Critique candidate architectures (from
step 3) using the sensitivity analysis (conducted in step 5)
Architectural Complexity (similar to coupling)
- Sharing dependencies - represent dependence relationships
among consumers who use the same resource or producers who produce for the
same consumers
- Flow dependencies - represent dependence relationships
between producers and consumers of resources
- Constrained dependencies - represent
constraints on the relative flow among a set of components
Mapping Requirements to Software Architecture in Structured
Design
- Establish type of information flow:
- transform flow - overall data
flow is sequential and flows along a small number of straight line paths
- transaction flow - a single data
item triggers information flow along one of many paths
- Flow boundaries indicated
- DFD is mapped into program structure
- Control hierarchy defined
- Resultant structure refined using
design measures and heuristics
- Architectural description refined and
elaborated
Transform Mapping
Set
of design steps that allows a DFD with transform flow
characteristics to be mapped into a specific architectural style
Example:
Steps:
- Review fundamental system model with
an evaluation of both the System Specification and the Software
Requirements Specification
Context level DFD for SafeHome
- Review and refine data flow diagrams
for the software
Level 1 DFD for SafeHome
Level 2 DFD that refines the monitor sensors process
Level 3 DFD for monitor sensors with flow boundaries
- Determine whether the DFD has
transform or transaction characteristics
- Isolate the transform center by specifying
incoming and outgoing flow boundaries
- Perform first level factoring
- Top-level modules
perform decision making
- Low-level modules
perform most input, computation, and output work
- Middle-level
modules perform some control and do moderate amounts of work
- e.g First-level
factoring for monitor sensors
- 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 (e.g., a module that invokes
various data transformation procedures).
- An outgoing
information processing controller, called alarm output controller,
coordinates production of output information.
- Perform second level factoring
- Map individual
transforms (bubbles) of a DFD into appropriate modules within the
architecture
- Refine the first iteration
architecture using design heuristics for improved software quality
Transaction Mapping
Example
Level 2 DFD for user interaction subsystem with flow boundaries
- Review fundamental system model
- Review and refine data flow diagrams
for the software
- Determine whether the DFD has transform
or transaction characteristics
- Identify the transaction center and
flow characteristics along each action path
- Map the DFD to a program structure
amenable to transaction processing
Transaction mapping
- Factor and refine the transaction
structure and the structure of each action path
- Refine the first iteration
architecture using design heuristics for improved software quality
Refining Architectural Design
- Processing narrative developed for
each module
- Interface description provided for
each module
- Local and global data structures are
defined
- Design restrictions/limitations noted
- Design reviews conducted
- Refinement considered if required and
justified
Software Design Specification (Product)
Component-Level
Design (Chapter 11)
Purpose
- Translate the design model into
operational software.
- Represent the software in a way that
allows its review or correctness and consistency, before it is built
Timeline
- Occurs after the data, architectural,
and interface designs are established
Work
Product
- Procedural design for each software component, represented using graphical, tabular, or
text-based notation.
Structured
Programming
- Each block of code has a single entry
at the top
- Each block of code has a single exit
at the bottom
- Three control structures are required:
- sequence
- condition
(if-then-else)
- repetition
(looping)
- Reduces program complexity by
enhancing readability, testability, and maintainability
Design
Notation
- Flowcharts (arrows for flow of
control, diamonds for decisions, rectangles for processes)
- Box diagrams (also known as Nassi-Scheidnerman charts - process boxes subdivided
to show conditional and repetitive steps)
(1) functional
domain (that is, the scope of repetition or if-then-else) is well defined and
clearly visible as a pictorial representation
(2) arbitrary
transfer of control is impossible
(3) the scope of
local and/or global data can be easily determined
(4) recursion is
easy to represent
- Decision table (subsets of system
conditions and actions are associated with each other to define the rules
for processing inputs and events)
Steps to develop a decision table:
- List all actions that can be
associated with a specific procedure (or module).
- List all conditions (or decisions
made) during execution of the procedure.
- Associate specific sets of conditions
with specific actions, eliminating impossible combinations of conditions;
alternatively, develop every possible permutation of conditions.
- Define rules by indicating what
action(s) occurs for a set of conditions.
Example
If the customer
account is billed using a fixed rate method, a minimum monthly charge is
assessed for consumption of less than 100 KWH (kilowatt-hours). Otherwise,
computer billing applies a Schedule A rate structure.
However, if the account is billed using a variable rate method, a Schedule A rate structure will apply to consumption below 100 KWH,
with additional consumption billed according to Schedule B.
- Program Design Language (PDL - structured
English or pseudocode used to describe
processing details)
- Characteristics
- Fixed syntax with
keywords providing for representation of all structured constructs, data
declarations, and module definitions
- Free syntax of
natural language for describing processing features
- Data declaration
facilities for simple and complex data structures
- Subprogram
definition and invocation facilities
Design Notation Assessment
Criteria
- Modularity (notation supports
development of modular software)
- Overall simplicity (easy to learn,
easy to use, easy to write)
- Ease of editing (easy to modify
design representation when changes are necessary)
- Machine readability (notation can be
input directly into a computer-based development system)
- Maintainability (maintenance of
the configuration usually involves maintenance of the procedural design
representation)
- Structure enforcement (enforces the use
of structured programming constructs)
- Automatic processing (allows the
designer to verify the correctness and quality of the design)
- Data representation (ability to
represent local and global data directly)
- Logic verification (automatic logic
verification improves testing adequacy)
- "Code-to" ability (easily converted
to program source code)