NonFunctional Properties Software Architecture Copyright Richard N Taylor
- Slides: 34
Non-Functional Properties Software Architecture Copyright © Richard N. Taylor, Nenad Medvidovic, and Eric M. Dashofy. All rights reserved.
Software Architecture Foundations, Theory, and Practice What Is an NFP? l l A software system’s non-functional property (NFP) is a constraint on the manner in which the system implements and delivers its functionality Example NFPs u Efficiency u Complexity u Scalability u Heterogeneity u Adaptability u Dependability 2
Software Architecture Foundations, Theory, and Practice Designing for FPs l l l Any engineering product is sold based on its functional properties (FPs) u TV set, Blu-ray player, stereo, mobile telephone Providing the desired functionality is often quite challenging u Market demands u Competition u Strict deadlines u Limited budgets However, the system’s success will ultimately rest on its NFPs u “This system is too slow!” u “It keeps crashing!” u “It has so many security holes!” u “Every time I change this feature I have to reboot!” u “I can’t get it to work with my home theater!” 3
Software Architecture Foundations, Theory, and Practice FPs vs. NFPs – An Example l Microsoft Word 6. 0 u Released in the 1990 s u Both for the PC and the Mac u Roughly the same functionality u It ran fine on the PC and was successful u It was extremely slow on the Mac u Microsoft “solved” the problem by charging customers for downgrades u A lot of bad publicity 4
Software Architecture Foundations, Theory, and Practice FPs vs. NFPs – Another Example l Linux – “as-documented” architecture 5 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 FPs vs. NFPs – Another Example l Linux – “as-implemented” architecture 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 Challenges of Designing for NFPs l l Only partially understood in many domains u E. g. , MS Windows and security Qualitative vs. quantitative Frequently multi-dimensional Non-technical pressures u E. g. , time-to-market or functional features 7
Software Architecture Foundations, Theory, and Practice Design Guidelines for Ensuring NFPs l l l Only guidelines, not laws or rules Promise but do not guarantee a given NFP Necessary but not sufficient for a given NFP Have many caveats and exceptions Many trade-offs are involved 8
Software Architecture Foundations, Theory, and Practice Overarching Objective l Ascertain the role of software architecture in ensuring various NFPs u At the level of major architectural building blocks l Components l Connectors l Configurations u As embodied in architectural style-level design guidelines 9
Software Architecture Foundations, Theory, and Practice Efficiency l Efficiency is a quality that reflects a software system’s ability to meet its performance requirements while minimizing its usage of the resources in its computing environment u Efficiency is a measure of a system’s resource usage economy l What can software architecture say about efficiency? u Isn’t efficiency an implementation-level property? Ø Efficiency starts at the architectural level! 10
Software Architecture Foundations, Theory, and Practice Software Components and Efficiency l l l Keep the components “small” whenever possible Keep component interfaces simple and compact Allow multiple interfaces to the same functionality Separate data components from processing components Separate data from meta-data 11
Software Architecture Foundations, Theory, and Practice Multiple Interfaces to the Same Functionality 12 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 Software Connectors and Efficiency l l Carefully select connectors Use broadcast connectors with caution Make use of asynchronous interaction whenever possible Use location/distribution transparency judiciously 13
Software Architecture Foundations, Theory, and Practice Distribution Transparency 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 Efficiency l l l Keep frequently interacting components “close” Carefully select and place connectors in the architecture Consider the efficiency impact of selected architectural styles and patterns 15
Software Architecture Foundations, Theory, and Practice Performance Penalty Induced by Distance 16 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 Complexity l l IEEE Definition u Complexity is the degree to which a software system or one of its components has a design or implementation that is difficult to understand 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 u What about behavior? 17
Software Architecture Foundations, Theory, and Practice Software Components and Complexity l l l Separate concerns into different components Keep only the functionality inside components u 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 18
Software Architecture Foundations, Theory, and Practice Software Connectors and Complexity l l l 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 19
Software Architecture Foundations, Theory, and Practice Architectural Configurations and Complexity l l l Eliminate unnecessary dependencies Manage all dependencies explicitly Use hierarchical (de)composition 20
Software Architecture Foundations, Theory, and Practice Complexity in Linux 21 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 l l 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 u Heterogeneity is a software system’s ability to consist of multiple disparate constituents or function in multiple disparate computing environments u 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 22
Software Architecture Foundations, Theory, and Practice Software Components and Scalability l l l 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 u Results in architectural mismatch Distribute the data sources Replicate data when necessary 23
Software Architecture Foundations, Theory, and Practice Software Connectors and Scalability l l l 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 u Application functionality goes inside components Leverage explicit connectors to support data scalability 24
Software Architecture Foundations, Theory, and Practice Architectural Configurations and Scalability l l l 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 25
Software Architecture Foundations, Theory, and Practice Adaptability l Adaptability is a software system’s ability to satisfy new requirements and adjust to new operating conditions during its lifetime 26
Software Architecture Foundations, Theory, and Practice Software Components and Adaptability l l l 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 27
Software Architecture Foundations, Theory, and Practice Software Connectors and Adaptability l l l Give each connector a clearly defined responsibility Make the connectors flexible Support connector composability 28
Software Architecture Foundations, Theory, and Practice Composable Connectors 29 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 l l l Leverage explicit connectors Try to make distribution transparent Use appropriate architectural styles 30
Software Architecture Foundations, Theory, and Practice Dependability l Dependability is a collection of system properties that allows one to rely on a system functioning as required u Reliability is the probability that a system will perform its intended functionality under specified design limits, without failure, over a given time period u Availability is the probability that a system is operational at a particular time u Robustness is a system’s ability to respond adequately to unanticipated runtime conditions u Fault-tolerant is a system’s ability to respond gracefully to failures at runtime u Survivability is a system’s ability to resist, recognize, recover from, and adapt to mission-compromising threats u 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 31 property
Software Architecture Foundations, Theory, and Practice Software Components and Dependability l l Carefully control external component inter-dependencies Provide reflection capabilities in components Provide suitable exception handling mechanisms Specify the components’ key state invariants 32
Software Architecture Foundations, Theory, and Practice Software Connectors and Dependability l l l Employ connectors that strictly control component dependencies Provide appropriate component interaction guarantees Support dependability techniques via advanced connectors 33
Software Architecture Foundations, Theory, and Practice Architectural Configurations and Dependability l l Avoid single points of failure Provide back-ups of critical functionality and data Support non-intrusive system health monitoring Support dynamic adaptation 34
- Nonfunctional requirements
- Taylor brace vs knight taylor brace
- What does life mean
- Ivanhoe 1952
- Looking for richard stream
- Software architecture definitions
- Data centered architecture
- Extensive and intensive properties
- Physical properties and chemical properties
- Modular product architectures
- Modular vs integral product architecture
- Bus architecture in computer architecture
- Emergent system properties in software engineering
- Fast desktop for architecture software
- Marketplace software architecture
- Atm kiosk solution
- Interoperability quality attribute scenario
- Software architecture assessment
- Architect design patterns
- Saam software architecture analysis method
- Software architecture diagram
- Arsitektur perangkat lunak
- Software architecture topics
- Complex software architecture
- Sic machine architecture in system software
- What does software architecture means?
- An introduction to software architecture
- Availability tactics in software architecture
- Modular software architecture
- Repository architecture in software engineering
- Software communication architecture
- Main program and subroutine architectural style
- Scada software architecture
- Decoupled software architecture
- Software architecture 101