YOU ARE DOWNLOADING DOCUMENT

Please tick the box to continue:

Transcript
Page 1: Quality attributes in software architecture

Quality Attributes in Software

Architecture

Page 2: Quality attributes in software architecture

Quality Attributes in Software Architecture

Nov 2011

Gang Tao

Page 3: Quality attributes in software architecture

Confidential

Levels of Requirement Business

Requirements

Vision and Scope

Documents

User

Requirements

Quality

Attributes

Other

Nonfunctional

Requirements

Use Cases

Functional

Requirements

Software Requirements

Specification

Page 4: Quality attributes in software architecture

Confidential

Quality Attributes

Page 5: Quality attributes in software architecture

Responsiveness

Page 6: Quality attributes in software architecture

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.

Page 7: Quality attributes in software architecture

Confidential

Responsive Matters

Page 8: Quality attributes in software architecture

Confidential

Responsiveness

• All Operations Must Be Responsive

Click Me

Under normal IO load, any operation must

return to the user within 3 seconds.

Page 9: Quality attributes in software architecture

Confidential

A Case Study

• getVersion() methods cause serious performance

downgrade.

Page 10: Quality attributes in software architecture

Confidential

What causes the performance issue?

• Complexity

• Indirection

• Repetitions

• Bad Design

• I/O

• … …

Page 11: Quality attributes in software architecture

Confidential

Price of Optimization

• Loss Readability

• Increase Complexity

• Hard to maintain and extend

• Introduce conflict

• … …

Page 12: Quality attributes in software architecture

Confidential

SAP Standard Reference

Page 13: Quality attributes in software architecture

Scalability

Page 14: Quality attributes in software architecture

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

Page 15: Quality attributes in software architecture

Confidential

Scale Up VS Scale Out

Page 16: Quality attributes in software architecture

Confidential

Scalability Considerations

• Increased Managed Content Must Scale Appropriately

• Maintain Viability as System Resources Decrease

• UI Data Presentation Scaling

• Load Sharing Considerations

Page 17: Quality attributes in software architecture

Usability

Page 18: Quality attributes in software architecture

Confidential

Usability

Page 19: Quality attributes in software architecture

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.

Page 20: Quality attributes in software architecture

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

Page 21: Quality attributes in software architecture

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?

Page 22: Quality attributes in software architecture

Confidential

Rule One – Don’t Make Me Think

Page 23: Quality attributes in software architecture

Confidential

Rule Two - Know Your Users

Page 24: Quality attributes in software architecture

Confidential

Rule Three – Be Consistent

• Be Consistent • Things that look the same should act the same.

• Things that look different should act different.

Page 25: Quality attributes in software architecture

Confidential

Usability VS. User Experiences

• Free Discussion

Page 26: Quality attributes in software architecture

Confidential

Case Study & Samples

Page 27: Quality attributes in software architecture

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》,中文版名为《交互设计之路——让高科技产品回归人性》

Page 28: Quality attributes in software architecture

Security

Page 29: Quality attributes in software architecture

Confidential

Security

• Security is defined as being protected against danger or loss

Page 30: Quality attributes in software architecture

Confidential

Security Model

Authentication Authorization

Audit Encryption

Page 32: Quality attributes in software architecture

Accessibility

Page 33: Quality attributes in software architecture

Confidential

Accessibility

• “accessibility“ refers to the possibility for everyone, including

and especially people with disabilities, to access and use

technology and information products.

Page 34: Quality attributes in software architecture

Confidential

Case Study : Choose the right color

Page 35: Quality attributes in software architecture

Serviceability

Page 36: Quality attributes in software architecture

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.

Page 37: Quality attributes in software architecture

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.

Page 38: Quality attributes in software architecture

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.

Page 39: Quality attributes in software architecture

Confidential

Cost of Service

Customer Self Service

Web Remote Support, BBS/MSN

Phone/Email Support

On Site Support

Page 40: Quality attributes in software architecture

Extensibility

Page 41: Quality attributes in software architecture

Confidential

Extensibility

• With extensibility, the design and implementation takes into

consideration future growth.

Page 42: Quality attributes in software architecture

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

Page 43: Quality attributes in software architecture

Distributability

Page 44: Quality attributes in software architecture

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.

Page 45: Quality attributes in software architecture

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.

Page 46: Quality attributes in software architecture

Confidential

Distributed Architecture

• Web Service

• CORBA

Page 47: Quality attributes in software architecture

Maintainability

Page 48: Quality attributes in software architecture

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.

Page 49: Quality attributes in software architecture

Confidential

Maintainability Tips

• Adhere to Coding Standards

• Avoid duplication

• Story Telling with your code

• Keep your code simple

Page 50: Quality attributes in software architecture

Portability

Page 51: Quality attributes in software architecture

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.

Page 52: Quality attributes in software architecture

Reliability

Page 53: Quality attributes in software architecture

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.

Page 54: Quality attributes in software architecture

Confidential

Availability

MTBF – Mean Time Between Failure

MTTR – Mean Time to Recovery

Availability= MTBF/(MTBF+MTTR)

Page 55: Quality attributes in software architecture

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

Page 56: Quality attributes in software architecture

Testability

Page 57: Quality attributes in software architecture

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.

Page 58: Quality attributes in software architecture

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

Page 59: Quality attributes in software architecture

Confidential

Testability of Requirements

• consistent

• complete

• unambiguous

• quantitative

• verifiable in practice

Page 60: Quality attributes in software architecture

Compatibility

Page 61: Quality attributes in software architecture

Confidential

Compatibility

• Backward

• Forward

Page 62: Quality attributes in software architecture

Summary

Page 63: Quality attributes in software architecture

Confidential

Quality Attributes Relationship Matrix

Responsive

ness Reliability Security Usability Extensibility

Reliability

Security

Extensibility

Usability

Responsive

ness

Negative Impact

No Impact

Positive Impact

Page 64: Quality attributes in software architecture

Confidential

Quality Model

• McCall/GE Quality Model

• ISO 9126

Page 65: Quality attributes in software architecture

Confidential

Business Qualities

• Time to Market

• Cost and Benefit

• Project Lifetime

• Target Market

• Rollout schedule

• Integration with Legacy System

Page 66: Quality attributes in software architecture

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.


Related Documents