Designing for NFPs Software Architecture Lecture 19
What Is an NFP? <ul><li>A software system’s  non-functional property (NFP)  is a constraint on the manner in which the sys...
Designing for FPs <ul><li>Any engineering product is sold based on its functional properties (FPs) </li></ul><ul><ul><li>T...
FPs vs. NFPs – An Example <ul><li>Microsoft Word 6.0 </li></ul><ul><ul><li>Released in the 1990s </li></ul></ul><ul><ul><l...
FPs vs. NFPs – Another Example <ul><li>Linux – “as-documented” architecture </li></ul>Software Architecture: Foundations, ...
FPs vs. NFPs – Another Example <ul><li>Linux – “as-implemented” architecture </li></ul>Software Architecture: Foundations,...
Challenges of Designing for NFPs <ul><li>Only partially understood in many domains </li></ul><ul><ul><li>E.g., MS Windows ...
Design Guidelines for Ensuring NFPs <ul><li>Only guidelines, not laws or rules </li></ul><ul><li>Promise but do not guaran...
Overarching Objective <ul><li>Ascertain the role of software architecture in ensuring various NFPs </li></ul><ul><ul><li>A...
Efficiency <ul><li>Efficiency  is a quality that reflects a software system’s ability to meet its performance requirements...
Software Components and Efficiency <ul><li>Keep the components “small” whenever possible </li></ul><ul><li>Keep component ...
Multiple Interfaces to the Same Functionality Software Architecture: Foundations, Theory, and Practice ; Richard N. Taylor...
Software Connectors and Efficiency <ul><li>Carefully select connectors </li></ul><ul><li>Use broadcast connectors with cau...
Distribution Transparency Software Architecture: Foundations, Theory, and Practice ; Richard N. Taylor, Nenad Medvidovic, ...
Architectural Configurations and Efficiency <ul><li>Keep frequently interacting components “close” </li></ul><ul><li>Caref...
Performance Penalty Induced by Distance Software Architecture: Foundations, Theory, and Practice ; Richard N. Taylor, Nena...
Upcoming SlideShare
Loading in …5
×

19 designing for_nf_ps

519 views

Published on

Published in: Technology, News & Politics
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
519
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
22
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

19 designing for_nf_ps

  1. 1. Designing for NFPs Software Architecture Lecture 19
  2. 2. What Is an NFP? <ul><li>A software system’s non-functional property (NFP) is a constraint on the manner in which the system implements and delivers its functionality </li></ul><ul><li>Example NFPs </li></ul><ul><ul><li>Efficiency </li></ul></ul><ul><ul><li>Complexity </li></ul></ul><ul><ul><li>Scalability </li></ul></ul><ul><ul><li>Heterogeneity </li></ul></ul><ul><ul><li>Adaptability </li></ul></ul><ul><ul><li>Dependability </li></ul></ul>
  3. 3. Designing for FPs <ul><li>Any engineering product is sold based on its functional properties (FPs) </li></ul><ul><ul><li>TV set, DVD player, stereo, mobile telephone </li></ul></ul><ul><li>Providing the desired functionality is often quite challenging </li></ul><ul><ul><li>Market demands </li></ul></ul><ul><ul><li>Competition </li></ul></ul><ul><ul><li>Strict deadlines </li></ul></ul><ul><ul><li>Limited budgets </li></ul></ul><ul><li>However, the system’s success will ultimately rest on its NFPs </li></ul><ul><ul><li>“ This system is too slow!” </li></ul></ul><ul><ul><li>“ It keeps crashing!” </li></ul></ul><ul><ul><li>“ It has so many security holes!” </li></ul></ul><ul><ul><li>“ Every time I change this feature I have to reboot!” </li></ul></ul><ul><ul><li>“ I can’t get it to work with my home theater!” </li></ul></ul>
  4. 4. FPs vs. NFPs – An Example <ul><li>Microsoft Word 6.0 </li></ul><ul><ul><li>Released in the 1990s </li></ul></ul><ul><ul><li>Both for the PC and the Mac </li></ul></ul><ul><ul><li>Roughly the same functionality </li></ul></ul><ul><ul><li>It ran fine on the PC and was successful </li></ul></ul><ul><ul><li>It was extremely slow on the Mac </li></ul></ul><ul><ul><li>Microsoft “solved” the problem by charging customers for down grades </li></ul></ul><ul><ul><li>A lot of bad publicity </li></ul></ul>
  5. 5. FPs vs. NFPs – Another Example <ul><li>Linux – “as-documented” architecture </li></ul>Software Architecture: Foundations, Theory, and Practice ; Richard N. Taylor, Nenad Medvidovic, and Eric M. Dashofy; © 2008 John Wiley & Sons, Inc. Reprinted with permission.
  6. 6. FPs vs. NFPs – Another Example <ul><li>Linux – “as-implemented” architecture </li></ul>Software Architecture: Foundations, Theory, and Practice ; Richard N. Taylor, Nenad Medvidovic, and Eric M. Dashofy; © 2008 John Wiley & Sons, Inc. Reprinted with permission.
  7. 7. Challenges of Designing for NFPs <ul><li>Only partially understood in many domains </li></ul><ul><ul><li>E.g., MS Windows and security </li></ul></ul><ul><li>Qualitative vs. quantitative </li></ul><ul><li>Frequently multi-dimensional </li></ul><ul><li>Non-technical pressures </li></ul><ul><ul><li>E.g., time-to-market or functional features </li></ul></ul>
  8. 8. Design Guidelines for Ensuring NFPs <ul><li>Only guidelines, not laws or rules </li></ul><ul><li>Promise but do not guarantee a given NFP </li></ul><ul><li>Necessary but not sufficient for a given NFP </li></ul><ul><li>Have many caveats and exceptions </li></ul><ul><li>Many trade-offs are involved </li></ul>
  9. 9. Overarching Objective <ul><li>Ascertain the role of software architecture in ensuring various NFPs </li></ul><ul><ul><li>At the level of major architectural building blocks </li></ul></ul><ul><ul><ul><li>Components </li></ul></ul></ul><ul><ul><ul><li>Connectors </li></ul></ul></ul><ul><ul><ul><li>Configurations </li></ul></ul></ul><ul><ul><li>As embodied in architectural style-level design guidelines </li></ul></ul>
  10. 10. Efficiency <ul><li>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 </li></ul><ul><ul><li>Efficiency is a measure of a system’s resource usage economy </li></ul></ul><ul><li>What can software architecture say about efficiency? </li></ul><ul><ul><li>Isn’t efficiency an implementation-level property? </li></ul></ul><ul><li>Efficiency starts at the architectural level! </li></ul>
  11. 11. Software Components and Efficiency <ul><li>Keep the components “small” whenever possible </li></ul><ul><li>Keep component interfaces simple and compact </li></ul><ul><li>Allow multiple interfaces to the same functionality </li></ul><ul><li>Separate data components from processing components </li></ul><ul><li>Separate data from meta-data </li></ul>
  12. 12. Multiple Interfaces to the Same Functionality Software Architecture: Foundations, Theory, and Practice ; Richard N. Taylor, Nenad Medvidovic, and Eric M. Dashofy; © 2008 John Wiley & Sons, Inc. Reprinted with permission.
  13. 13. Software Connectors and Efficiency <ul><li>Carefully select connectors </li></ul><ul><li>Use broadcast connectors with caution </li></ul><ul><li>Make use of asynchronous interaction whenever possible </li></ul><ul><li>Use location/distribution transparency judiciously </li></ul>
  14. 14. Distribution Transparency Software Architecture: Foundations, Theory, and Practice ; Richard N. Taylor, Nenad Medvidovic, and Eric M. Dashofy; © 2008 John Wiley & Sons, Inc. Reprinted with permission.
  15. 15. Architectural Configurations and Efficiency <ul><li>Keep frequently interacting components “close” </li></ul><ul><li>Carefully select and place connectors in the architecture </li></ul><ul><li>Consider the efficiency impact of selected architectural styles and patterns </li></ul>
  16. 16. Performance Penalty Induced by Distance Software Architecture: Foundations, Theory, and Practice ; Richard N. Taylor, Nenad Medvidovic, and Eric M. Dashofy; © 2008 John Wiley & Sons, Inc. Reprinted with permission.

×