Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Quality Attributes in Software Architecture

Gang Tao
April 14, 2014

Quality Attributes in Software Architecture

Quality attributes are the overall factors that affect run-time behavior, system design, and user experience. They represent areas of concern that have the potential for application wide impact across layers and tiers. Some of these attributes are related to the overall system design, while others are specific to run time, design time, or user centric issues. The extent to which the application possesses a desired combination of quality attributes such as usability, performance, reliability, and security indicates the success of the design and the overall quality of the software application.

Gang Tao

April 14, 2014
Tweet

More Decks by Gang Tao

Other Decks in Technology

Transcript

  1. Confidential Levels of Requirement Business Requirements Vision and Scope Documents

    User Requirements Quality Attributes Other Nonfunctional Requirements Use Cases Functional Requirements Software Requirements Specification
  2. Confidential Responsiveness • Responsiveness is defined as how quickly a

    system responds to user input. • Long delays can be a major cause of user frustration, or let the user believe the system is broken or that a command or input has been ignored. • Responsiveness is not same as performance.
  3. Confidential Responsiveness • All Operations Must Be Responsive Click Me

    Under normal IO load, any operation must return to the user within 3 seconds.
  4. Confidential What causes the performance issue? • Complexity • Indirection

    • Repetitions • Bad Design • I/O • … …
  5. Confidential Price of Optimization • Loss Readability • Increase Complexity

    • Hard to maintain and extend • Introduce conflict • … …
  6. Confidential Scalability • Scalability refers to a systems ability to

    handle increased adversity in its environment in a manner that is graceful and predictable. • Adversity comes in two dimensions: • Increased managed content • Decreased system resources
  7. Confidential Scalability Considerations • Increased Managed Content Must Scale Appropriately

    • Maintain Viability as System Resources Decrease • UI Data Presentation Scaling • Load Sharing Considerations
  8. Confidential Usability • Usability is the customer’s ability to get

    work done with the system in an efficient and pleasing manner. • A usable system should build on skills a user already has and not require new or unique knowledge to use the system. • Each new function the user encounters should follow a similar pattern so that once a user has learned one function others are intuitive to learn.
  9. Confidential Usability Notions • More efficient to use—takes less time

    to accomplish a particular task • Easier to learn—operation can be learned by observing the object • More satisfying to use
  10. Confidential Usability Composition • Learnability • How easy is it

    for users to accomplish basic tasks the first time they encounter the design? • Efficiency • Once users have learned the design, how quickly can they perform tasks? • Memorability • When users return to the design after a period of not using it, how easily can they re establish proficiency? • Errors • How many errors do users make, how severe are these errors, and how easily can they recover from the errors? • Satisfaction • How pleasant is it to use the design?
  11. Confidential Rule Three – Be Consistent • Be Consistent •

    Things that look the same should act the same. • Things that look different should act different.
  12. Confidential Some References of Usability • [1]《Designing Interfaces》,中文版名为《Designing Interfaces中文版》 •

    [2]《Usability Engineering》,中文版名为《可用性工程》 • [3]《The Design of Everyday Things》,中文版名为《设计心理学》 • [4]《About Face 3》,中文版名为《交互设计精髓》 • [5]《Designing Web Interfaces》,中文版名为《Web界面设计》 • [6]《Designing the Obvious》,中文版名为《一目了然——Web软件显性设计之路》 • [7]《Communicating Design》,中文版名为《设计沟通十器》 • [8]《Don’t Make Me Think》,中文版名为《点石成金:访客至上的网页设计秘笈》 • [9]《Designing From Both Sides of the Screen》,内外兼修的设计,尚未出版文版 • [10]《UI Design for Programmers》,程序员之用户界面设计,尚未出版中文版 • [11]《The Inmates are Running the Asylum》,中文版名为《交互设计之路——让高科 技产品回归人性》
  13. Confidential Refereneces • OWASP Top Ten • Seven Pernicious Kingdoms

    • Sans Top 25 • Common Weakness Enumerations
  14. Confidential Accessibility • “accessibility“ refers to the possibility for everyone,

    including and especially people with disabilities, to access and use technology and information products.
  15. Confidential Serviceability • Serviceability refers to the ability to monitor

    systems, identify issues, perform root cause analysis, and provide maintenance in order to solve a problem and restore the system to a functioning state.
  16. Confidential Serviceability • Diagnostic Infrastructure Should Not Be Intrusive •

    Issues that arise on a customer site that require engineering involvement should be able to be diagnosed without requiring that the affected system gets taken off line, new binaries get installed, or a debugger gets installed.
  17. Confidential Serviceability • Solutions Must Support a Customer-Centric Service Model

    • Common issues are able to be root-caused and addressed by customers or entry level technical service representatives over the phone. • Meaningful log messages, alerts, and trouble-shooting trees all must be considered to be mandatory and complementary components for servicing a system.
  18. Confidential Extensibility Considerations • Design and Implement With Scale in

    Mind • Producers of Interfaces Must Support the Ability to Minimize the Amount of Data Returned to a Client • Clients Should Minimize Data Traffic and Network Requests • Business Logic Must Be Centralized • Revision Compatibility Focus
  19. Confidential Distributability • Distributability is defined as the ability to

    manage a group of systems as one unit and to perform management from any location in the network. • Decide whether a component will run in process, in a separate process on the same machine, or on a remote machine.
  20. Confidential Layers and Tiers • Layers are a means of

    logical separation, and are an architectural pattern to separate concerns • Tiers are the physical separation of an application.
  21. Confidential Maintainability • Maintainability means the ease with which a

    system can be modified in order to correct defects, meet new functionality, make maintenance easier, or cope with a changing environment.
  22. Confidential Maintainability Tips • Adhere to Coding Standards • Avoid

    duplication • Story Telling with your code • Keep your code simple
  23. Confidential Portability • Portability is defined as the ability to

    reuse features and utility source code, across multiple Operating systems. • By having an OS abstraction layer that implements platform specific utilities, such as locks and shared memory. • Can also be achieved by compiling different segments of code, depending on the platform the software is to be run on.
  24. Confidential Reliability (Availability) • Reliability is defined as the ability

    of a system, to function correctly, under any reasonable circumstance. • Reasonable can include adverse situations, in which unexpected (but supported) usage occurs. • For Storage systems, this includes putting extreme I/O load on the system, but expecting the system to be manageable.
  25. Confidential Availability MTBF – Mean Time Between Failure MTTR –

    Mean Time to Recovery Availability= MTBF/(MTBF+MTTR)
  26. Confidential Reliability Consideration • All errors must be handled in

    a graceful manner • The Storage System must be manageable, without external dependencies. • There should be NO single point of failure
  27. Confidential Testability • Software testability is the degree to which

    a software artifact (i.e. a software system, software module, requirements- or design document) supports testing in a given test context.
  28. Confidential Testability of Software Components • Controllability: The degree to

    which it is possible to control the state of the component under test (CUT) as required for testing. • Observability: The degree to which it is possible to observe (intermediate and final) test results. • Isolateability: The degree to which the component under test (CUT) can be tested in isolation. • Separation of concerns: The degree to which the component under test has a single, well defined responsibility. • Understandability: The degree to which the component under test is documented or self-explaining. • Automatability: The degree to which it is possible to automate testing of the component under test. • Heterogeneity: The degree to which the use of diverse technologies requires to use diverse test methods and tools in paralle
  29. Confidential Quality Attributes Relationship Matrix Responsive ness Reliability Security Usability

    Extensibility Reliability Security Extensibility Usability Responsive ness Negative Impact No Impact Positive Impact
  30. Confidential Business Qualities • Time to Market • Cost and

    Benefit • Project Lifetime • Target Market • Rollout schedule • Integration with Legacy System
  31. Confidential Symptoms of Bad Architecture • Rigidity • the system

    is hard to change because every change forces many other changes. • Fragility • changes cause the system to break in conceptually unrelated places. • Immobility • it’s hard to disentangle the system into reusable components. • Viscosity • doing things correctly is harder than doing things incorrectly. • Opacity • the code is hard to read and understand. It does not express its intent well.