CS616 – Software
Engineering II
|
Lecture 11
|
·
Objectives
o
Design a logical architecture
in terms of layers and partitions with the Layers pattern
o
Illustrate the logical
architecture using UML package diagrams
o
Apply the Façade,
Observer and Controller patterns
·
Software architecture
deals with the large scale system
·
Software architecture
includes –
o
organization and major
structure of the major elements of the system
o
system and subsystem
behavior
o
collaborations
Identifying those functional
and non-functional requirements that should have a significant impact on the
system design
Resolution of requirements
in the design of the software, the hardware and networking, etc.
Three Levels:
The purpose and number of
layers varies across applications and application domains. Applied to information
systems, typical layers look like this:
Partial layered architecture
for NEXGEN application:
·
Include diagram that
illustrates noteworthy coupling events between layers and packages
·
e.g. partial coupling between
packages
·
What kind of visibility
should other packages have to the Presentation Layer?
·
How should non-window
classes communicate with windows?
·
Should be no direct
coupling from other components to window objects
Model – Domain-Layer objects
View – presentation objects
·
The Model-View
Separation principle: model objects should have no direct knowledge of of view
objects
·
e.g. Register object
should not directly send message to a GUI window object ProcessSaleFrame asking
it to display something
·
Windows can obtain
information to display by sending messages to domain objects => polling or
pull-from-above
·
But polling is
insufficient => push-from-below
·
Objectives
o
Organize Packages to
reduce impact of changes
·
GuideLine – Package
Functionally Cohesive Vertical and Horizontal Slices
e.g.
All NextGen Pricing package types are related to product pricing
·
GuideLine – Package a
Family of Interfaces
e.g.
Java EJB package javax.ejb has 12 interfaces in separate packages
·
GuideLine – Package by
Work and by Cluster of Unstable Classes
e.g.
packages are usually the basic unit of development work not classes
·
GuideLine – Most
Responsible are most stable
e.g.
lowest-level classes are most stable
·
GuideLine – Factor out
Independent Types
Organize types that can be used independently or in different contexts into separate packages
·
GuideLine – Use
Factories to Reduce Dependency on Concrete Packages
Reduce
dependency on concrete classes in other packages
·
GuideLine – No Cycles
in Packages
If a group of packages have cyclic dependency they should be treated as one larger package
·
Create architectural
factor tables
·
Create technical memos
that record architectural decisions
·
Know basic principles
for architectural design
·
Know resources for
learning architectural patterns
·
UP records
architectural factors in Supplementary Specification
·
Architectural Decisions
recorded in Software Architecture Document (SAD)
1. Identify and analyze the non-functional requirements
that have an impact on the architecture
2. For requirements with a significant architectural
impact, analyze alternatives and create solutions that resolve the impact
·
Architectural Factors
o
Strongest architectural
Factors – high level FURPS+ categories:
§
Functionality
§
Reliability
§
Performance
§
Supportability
§
Implementation
§
Interface
·
Quality Scenarios
o
Define measurable or
observable responses
o
Quality scenarios are
short statements of the form <stimulus> <measurable response>
e.g. When a bug report arrives from the NextGen beta test volunteer, reply with a phone call within 1 working day
Six Views:
Conceptual organization of the software in terms of most important layers, subsystems, packages, frameworks, classes, and interfaces
Process and threads wrt responsibilities, collaborations, and allocation of logical elements
Physical deployment of processes and components to processing nodes, and the physical network configuration between nodes
Overview of persistent data schema and their mappings to database objects
Summary of most architecturally significant use cases and their non-functional requirements
Actual
source code and executables
·
After the system is
built – as a summary
·
At the end of each
iteration (e.g. elaboration I, II, III, …)
·
Speculatively, during
each iteration, as an aid to creative design
·
Architectural
Representation
Summary
of how the architecture will be described in this document
·
Architectural
Factors and Decisions
Reference
to the Supplementary Specification
·
Logical View
UML
package diagrams and class diagrams of major elements
·
Process View
UML class and interaction diagrams illustrating the processes and threads of the system
·
Use-Case View
Brief summary of most architecturally significant use cases, UML interaction diagrams for some use cas realizations with commentary
·
Deployment View
UML
deployment diagrams showing the nodes and allocation of processes and
components