Title: Software Architecture
1Software Architecture Design Patterns
- SENG 311
- By Gabriel Becerra
2Todays Agenda
- Software Architecture A Definition
- Software Architect Definition via C-Map
- Software Architecture 4 Views
- Questions
3What is Software Architecture?
- Software architecture is a coherent set of
abstract patterns guiding the design of each
aspect of a larger software system. Wikipedia
http//en.wikipedia.org/wiki/Software_architecture
4Concept of Software Architect (1/3)
5Concept of Software Architect (2/3)
6Concept of Software Architect (3/3)
7Four Views
- One of the problems with large systems is the
complexity. - The solution is to provide multiple views that
separate different aspects of the system to help
us manage the complexity. - There are four architectural views
- The conceptual view describes the system in terms
of its major design elements and represents the
flow of control, thus addressing the requirements
of the system - The module view decomposes the system into
modules and partitions them into layers, thus
showing us how we can map our solution onto
software platforms and technologies. - The execution view maps the modules onto the
runtime platform and the hardware architecture
allowing us to address resource usage such as
memory, hardware and basic control flow - The code view allows us to map implementations to
deployment modules.
8Conceptual View
- The conceptual view is tied to the application
domain and represents the components and
connectors. - Problems and solutions are view in domain terms,
independent of particular software and hardware
techniques - Concerns addressed by the conceptual view
include - How does the system satisfy requirements?
- How are COTS components integrated?
- How do we partition the functionality into
releases? - How is the system designed for legacy and growth
integrations? - How are product lines supported?
- How can the impact of changes in requirements or
domain be minimized?
9Application
sender
receiver
mouse events
Node Window
commands
command objects out
commands
command objects in
receiver
sender
new and modified objects out
new and modified objects in
localcommand objects out
localcommand objects in
destination
source
Supervisor
data
data
source
destination
new and modified objects in
new and modified objects out
Hyperbase
10Module View
- The module view maps the components and
connectors to subsystems and modules. - Concerns addressed by the module view include
- How is the product mapped to the software
platform? - What system support/services does it use and
where? - How can testing be supported?
- How can dependencies between modules be
minimized? - How can reuse of modules and subsystems be
maximized? - How to we guard against changes in COTS software,
software platform, or standards?
11ltltlayergtgtLocalAgentServices
ltltlayergtgtRemoteAgentServices
ltltmodulegtgtLAC
ltltmodulegtgtCD
ltltmodulegtgtCDS
ltltmodulegtgtYP
ltltmodulegtgtWP
ltltlayergtgtApplication
ltltmodulegtgtNodeWindow
ltltlayergtgtSupervisory
ltltmodulegtgtSupervisor
ltltmodulegtgtSecurity
ltltmodulegtgthyperbase
ltltlayergtgtApplication
ltltmodulegtgtwindowsServices
ltltmodulegtgtfileServices
ltltmodulegtgtnetworkServices
12Execution View
- The execution view describes how modules are
mapped to elements of the runtime platform and
how these are mapped to the hardware
architecture. - Concerns addressed by the execution view include
- How does the system meet its performance,
recovery, and reconfiguration requirements? - How do we balance resource usage?
- How do we achieve concurrency, replication, and
distribution without adding too much complexity
to the algorithms? - How can the impact of changes in the runtime
platform be minimized?
13socket
ltltLACprocessgtgtLAC1..r
ltltCDprocessgtgtCD1..n
ltltCDprocessgtgtYP1..p
ltltCDSprocessgtgtCDS1..m
ltltWPprocessgtgtWP1..q
ltltmodulegtgtLAC
ltltmodulegtgtCD
ltltmodulegtgtCDS
ltltmodulegtgtYP
ltltmodulegtgtWP
socket
SC
socket
socket
socket
ltltOSgtgtSystem
ltltlayergtgtApplication
ltltApplicationProcessgtgtApp1..s
ltltlayergtgtApplication
ltltmodulegtgtNodeWindow
ltltmodulegtgtwindowsServices
SC
ltltlayergtgtSupervisory
ltltmodulegtgtfileServices
ltltHB_DLLgtgthyperbase
SC
ltltmodulegtgtSupervisor
ltltmodulegtgtSecurity
ltltmodulegtgthyperbase
ltltmodulegtgtnetworkServices
SC
14Code View
- The code view determines how runtime entities are
mapped to deployment components, how modules are
mapped to source components, and how the
deployment components are produced from the
source components. - Concerns addressed by the code view include
- How can the time and effort for product upgrades
be reduced? - How should product versions and releases be
managed? - How can build time be reduced?
- What tools are needed to support the development
environment? - How are integration and testing supported?
15generate
compile
import
link
compile
Use at runtime
link
compile
compile
link
16Questions?