quality attributes in software architecture

66
Quality Attributes in Software Architecture

Upload: gang-tao

Post on 20-Feb-2017

426 views

Category:

Software


0 download

TRANSCRIPT

Quality Attributes in Software

Architecture

Quality Attributes in Software Architecture

Nov 2011

Gang Tao

Confidential

Levels of Requirement Business

Requirements

Vision and Scope

Documents

User

Requirements

Quality

Attributes

Other

Nonfunctional

Requirements

Use Cases

Functional

Requirements

Software Requirements

Specification

Confidential

Quality Attributes

Responsiveness

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.

Confidential

Responsive Matters

Confidential

Responsiveness

• All Operations Must Be Responsive

Click Me

Under normal IO load, any operation must

return to the user within 3 seconds.

Confidential

A Case Study

• getVersion() methods cause serious performance

downgrade.

Confidential

What causes the performance issue?

• Complexity

• Indirection

• Repetitions

• Bad Design

• I/O

• … …

Confidential

Price of Optimization

• Loss Readability

• Increase Complexity

• Hard to maintain and extend

• Introduce conflict

• … …

Confidential

SAP Standard Reference

Scalability

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

Confidential

Scale Up VS Scale Out

Confidential

Scalability Considerations

• Increased Managed Content Must Scale Appropriately

• Maintain Viability as System Resources Decrease

• UI Data Presentation Scaling

• Load Sharing Considerations

Usability

Confidential

Usability

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.

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

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?

Confidential

Rule One – Don’t Make Me Think

Confidential

Rule Two - Know Your Users

Confidential

Rule Three – Be Consistent

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

• Things that look different should act different.

Confidential

Usability VS. User Experiences

• Free Discussion

Confidential

Case Study & Samples

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

Security

Confidential

Security

• Security is defined as being protected against danger or loss

Confidential

Security Model

Authentication Authorization

Audit Encryption

Accessibility

Confidential

Accessibility

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

and especially people with disabilities, to access and use

technology and information products.

Confidential

Case Study : Choose the right color

Serviceability

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.

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.

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.

Confidential

Cost of Service

Customer Self Service

Web Remote Support, BBS/MSN

Phone/Email Support

On Site Support

Extensibility

Confidential

Extensibility

• With extensibility, the design and implementation takes into

consideration future growth.

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

Distributability

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.

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.

Confidential

Distributed Architecture

• Web Service

• CORBA

Maintainability

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.

Confidential

Maintainability Tips

• Adhere to Coding Standards

• Avoid duplication

• Story Telling with your code

• Keep your code simple

Portability

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.

Reliability

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.

Confidential

Availability

MTBF – Mean Time Between Failure

MTTR – Mean Time to Recovery

Availability= MTBF/(MTBF+MTTR)

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

Testability

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.

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

Confidential

Testability of Requirements

• consistent

• complete

• unambiguous

• quantitative

• verifiable in practice

Compatibility

Confidential

Compatibility

• Backward

• Forward

Summary

Confidential

Quality Attributes Relationship Matrix

Responsive

ness Reliability Security Usability Extensibility

Reliability

Security

Extensibility

Usability

Responsive

ness

Negative Impact

No Impact

Positive Impact

Confidential

Quality Model

• McCall/GE Quality Model

• ISO 9126

Confidential

Business Qualities

• Time to Market

• Cost and Benefit

• Project Lifetime

• Target Market

• Rollout schedule

• Integration with Legacy System

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.