Designing for NFPs Software Architecture Lecture 19 Copyright

  • Slides: 16
Download presentation
Designing for NFPs Software Architecture Lecture 19 Copyright © Richard N. Taylor, Nenad Medvidovic,

Designing for NFPs Software Architecture Lecture 19 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

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

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, DVD 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

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

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

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

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

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

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

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

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

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

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

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

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:

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.