Upload
majong-devjfu
View
521
Download
0
Embed Size (px)
DESCRIPTION
Citation preview
Copyright © Richard N. Taylor, Nenad Medvidovic, and Eric M. Dashofy. All rights reserved.
NFP Design Techniques
Software ArchitectureLecture 20
Software Architecture: Foundations, Theory, and Practice
Complexity
IEEE Definition Complexity is the degree to which a software
system or one of its components has a design or implementation that is difficult to understand and verify
Complexity is a software system’s a property that is directly proportional to the size of the system, number of its constituent elements, their internal structure, and the number and nature of their interdependencies
2
Software Architecture: Foundations, Theory, and Practice
Software Components and Complexity Separate concerns into different components Keep only the functionality inside components
Interaction goes inside connectors Keep components cohesive Be aware of the impact of off-the-shelf
components on complexity Insulate processing components from changes in
data format
3
Software Architecture: Foundations, Theory, and Practice
Software Connectors and Complexity Treat connectors explicitly Keep only interaction facilities inside connectors Separate interaction concerns into different
connectors Restrict interactions facilitated by each connector Be aware of the impact of off-the-shelf connectors
on complexity
4
Software Architecture: Foundations, Theory, and Practice
Architectural Configurations and Complexity Eliminate unnecessary dependencies Manage all dependencies explicitly Use hierarchical (de)composition
5
Software Architecture: Foundations, Theory, and Practice
Complexity in Linux
6
Software Architecture: Foundations, Theory, and Practice; Richard N. Taylor, Nenad Medvidovic, and Eric M. Dashofy; © 2008 John Wiley & Sons, Inc. Reprinted with permission.
Software Architecture: Foundations, Theory, and Practice
Scalability and Heterogeneity
Scalability is the capability of a software system to be adapted to meet new requirements of size and scope
Heterogeneity is the quality of a software system consisting of multiple disparate constituents or functioning in multiple disparate computing environments Heterogeneity is a software system’s ability to consist
of multiple disparate constituents or function in multiple disparate computing environments
Portability is a software system’s ability to execute on multiple platforms with minimal modifications and without significant degradation in functional or non-functional characteristics
7
Software Architecture: Foundations, Theory, and Practice
Software Components and Scalability Give each component a single, clearly defined
purpose Define each component to have a simple,
understandable interface Do not burden components with interaction
responsibilities Avoid unnecessary heterogeneity
Results in architectural mismatch Distribute the data sources Replicate data when necessary
8
Software Architecture: Foundations, Theory, and Practice
Software Connectors and Scalability Use explicit connectors Give each connector a clearly defined responsibility Choose the simplest connector suited for the task Be aware of differences between direct and indirect
dependencies Avoid placing application functionality inside
connectors Application functionality goes inside components
Leverage explicit connectors to support data scalability
9
Software Architecture: Foundations, Theory, and Practice
Architectural Configurations and Scalability Avoid system bottlenecks Make use of parallel processing capabilities Place the data sources close to the data
consumers Try to make distribution transparent Use appropriate architectural styles
10
Software Architecture: Foundations, Theory, and Practice
Adaptability
Adaptability is a software system’s ability to satisfy new requirements and adjust to new operating conditions during its lifetime
11
Software Architecture: Foundations, Theory, and Practice
Software Components and Adaptability Give each component a single, clearly defined
purpose Minimize component interdependencies Avoid burdening components with interaction
responsibilities Separate processing from data Separate data from metadata
12
Software Architecture: Foundations, Theory, and Practice
Software Connectors and Adaptability Give each connector a clearly defined
responsibility Make the connectors flexible Support connector composability
13
Software Architecture: Foundations, Theory, and Practice
Composable Connectors
14
Software Architecture: Foundations, Theory, and Practice; Richard N. Taylor, Nenad Medvidovic, and Eric M. Dashofy; © 2008 John Wiley & Sons, Inc. Reprinted with permission.
Software Architecture: Foundations, Theory, and Practice
Architectural Configurations and Adaptability Leverage explicit connectors Try to make distribution transparent Use appropriate architectural styles
15
Software Architecture: Foundations, Theory, and Practice
Dependability Dependability is a collection of system properties that
allows one to rely on a system functioning as required Reliability is the probability that a system will perform
its intended functionality under specified design limits, without failure, over a given time period
Availability is the probability that a system is operational at a particular time
Robustness is a system’s ability to respond adequately to unanticipated runtime conditions
Fault-tolerant is a system’s ability to respond gracefully to failures at runtime
Survivability is a system’s ability to resist, recognize, recover from, and adapt to mission-compromising threats
Safety denotes the ability of a software system to avoid failures that will result in (1) loss of life, (2) injury, (3) significant damage to property, or (4) destruction of property 16
Software Architecture: Foundations, Theory, and Practice
Software Components and Dependability Carefully control external component inter-
dependencies Provide reflection capabilities in components Provide suitable exception handling mechanisms Specify the components’ key state invariants
17
Software Architecture: Foundations, Theory, and Practice
Software Connectors and Dependability Employ connectors that strictly control
component dependencies Provide appropriate component interaction
guarantees Support dependability techniques via advanced
connectors
18
Software Architecture: Foundations, Theory, and Practice
Architectural Configurations and Dependability
Avoid single points of failure Provide back-ups of critical functionality and data Support non-intrusive system health monitoring Support dynamic adaptation
19