quality principles in software development

Post on 14-Apr-2018

216 views

Category:

Documents


0 download

TRANSCRIPT

  • 7/30/2019 Quality Principles in Software Development

    1/114

    CSQA Preparation

    Quality

    Principles

  • 7/30/2019 Quality Principles in Software Development

    2/114

    Quality Principles

    Definitions of Quality

    Quality Concepts

    Quality Objectives

    Quality Attributes

    QA v/s QC

    Quality Pioneers

    Quality Vocabulary

  • 7/30/2019 Quality Principles in Software Development

    3/114

    Definitions of Quality

    Quality Software and Software Quality

    Software that exhibits all the functionalcapabilities and non-functional attributesthat ensure that it can be put to all its

    intended uses with the least effort,inconvenience and resource cost to theuser is Quality Software

  • 7/30/2019 Quality Principles in Software Development

    4/114

    Software Product Evaluation lists six keyfactors in producing Quality Software functionality

    reliability

    usability

    efficiency

    maintainability

    portability

  • 7/30/2019 Quality Principles in Software Development

    5/114

    Definitions of Software

    Quality

    "Quality is Conformance to requirements"

    - CROSBY "Software Quality means fitness for

    purpose" - OULD

    Quality is all the features that allow aproduct to satisfy stated or implied needsat an affordable cost - ISO-8402

  • 7/30/2019 Quality Principles in Software Development

    6/114

    Definitions of Software

    Quality

    GARVIN gives five views of Quality

    transcendent product-based

    user-based

    manufacturing-based

    value-based

  • 7/30/2019 Quality Principles in Software Development

    7/114

    Conclusions

    It is generally accepted that quality of

    the process plays a crucial role indetermining the quality of the product

    Quality must be built into software from

    the outset - it cannot be added on later It is people that determine whether or

    not a quality product is produced

  • 7/30/2019 Quality Principles in Software Development

    8/114

    Quality Concepts

    Cost Of Quality

    Plan-Do-Check-Act

    Six Sigma

    Benchmarking

    Continuous Improvement

    Best Practices

  • 7/30/2019 Quality Principles in Software Development

    9/114

    Software Quality Concepts

    Quality is conformance to product requirementsand should be free.

    Quality is achieved through prevention of defects .

    Quality control is aimed at finding problems asearly as possible and fixing them.

    Doing things right the first time is the performance

    standard which results in zero defects and savesthe expenses of doing things over.

    The expense of quality is nonconformance toproduct requirements

  • 7/30/2019 Quality Principles in Software Development

    10/114

    Software Quality Concepts

    Quality is what distinguishes a good companyfrom a great one.

    Quality is meeting or exceeding ourcustomer's needs and requirements.

    Software Quality is measurable.

    Quality is continuous improvement.

    The quality of a software product comes fromthe quality of the process used to create it.

  • 7/30/2019 Quality Principles in Software Development

    11/114

    Cost of Quality

    Quality costs are the costs associated

    with preventing, finding and correctingdefective work

    One of the key functions of a quality

    engineer is the reduction of the total costof quality associated with a product

  • 7/30/2019 Quality Principles in Software Development

    12/114

    Prevention Costs

    These are costs of activities specificallydesigned to prevent poor quality(coding

    errors, design errors, bad documentation,un maintainable coding)

    E.g.,Staff Training, Requirement Analysis,Fault-tolerant design, defensiveprogramming, usability analysis, clearspecification, accurate internaldocumentation, evaluation of the reliability

    of development tools

  • 7/30/2019 Quality Principles in Software Development

    13/114

    Appraisal Costs

    These are Costs of activities designed to

    find quality problems, such as codeinspections and any type of testing

    E.g.,Design Review, Code Inspection,

    White box testing, Black box testing,training testers, Beta testing, testautomation, usability testing

  • 7/30/2019 Quality Principles in Software Development

    14/114

    Failure Costs

    Costs that result from poor quality, such asthe cost of fixing bugs and cost of dealingwith customer complaints

    Internal failure costs are failure costs thatarises before your company supplies theproduct to customer

    External failure costs are failure costs thatarises after your company supplies theproduct to customer

  • 7/30/2019 Quality Principles in Software Development

    15/114

    Internal failure Costs

    Bug fixes, Regression testing

    Wasted in-house user time

    Wasted tester time, Wasted writer time

    Wasted marketer time

    Wasted advertisements

    Direct cost of late shipment

    Opportunity cost of late shipment

  • 7/30/2019 Quality Principles in Software Development

    16/114

    External failure costs

    Technical support calls, Investigation of

    customer complaints, refunds and recalls,coding/testing of interim bug fix releases,shipping of updated product, addedexpense of supporting multiple versions

    of the product, lost sales, lost customergoodwill, warranty costs, liability costs,penalties.

  • 7/30/2019 Quality Principles in Software Development

    17/114

    Total Cost of Quality = Sum of all costs

    Prevention + Appraisal + Internal failure+ External failure

  • 7/30/2019 Quality Principles in Software Development

    18/114

    Plan-Do-Check-Act

  • 7/30/2019 Quality Principles in Software Development

    19/114

    Step 1 Plan - Identify the

    Problem Select the problem to be analyzed

    Clearly define the problem and establisha precise problem statement

    Set a measurable goal for the problem

    solving effort Establish a process for coordinating with

    and gaining approval of leadership

  • 7/30/2019 Quality Principles in Software Development

    20/114

    Step 2 Plan - Analyze the

    Problem Identify the processes that impact the

    problem and select one

    List the steps in the process as itcurrently exists

    Map the Process Validate the map of the process

    Identify potential cause of the problem

  • 7/30/2019 Quality Principles in Software Development

    21/114

    Step 2 Plan - Analyze the

    Problem (continued) Collect and analyze data related to the

    problem

    Verify or revise the original problemstatement

    Identify root causes of the problem Collect additional data if needed to verify

    root causes

  • 7/30/2019 Quality Principles in Software Development

    22/114

    Step 3 Do - Develop Solutions

    Establish criteria for selecting a solution

    Generate potential solutions that will

    address the root causes of the problem

    Select a solution

    Gain approval and supporter for thechosen solution

    Plan the solution

  • 7/30/2019 Quality Principles in Software Development

    23/114

    Step 4 Do - Implement

    Solutions Implement the chosen solution on a trial

    or pilot basis

    If the Problem Solving Process is beingused in conjunction with the ContinuousImprovement Process, return to Step 6 of

    the Continuous Improvement Process

    If the Problem Solving Process is beingused as a standalone, continue to Step 5

  • 7/30/2019 Quality Principles in Software Development

    24/114

    Step 5 Check - Evaluate the

    Results

    Gather data on the solution

    Analyze the data on the solution

  • 7/30/2019 Quality Principles in Software Development

    25/114

    Achieved the Desired Goal?

    If YES, go to Step 6.

    If NO, go back to Step 1.

  • 7/30/2019 Quality Principles in Software Development

    26/114

    Step 6 Act - Standardize the

    solution Identify systematic changes and training

    needs for full implementation

    Adopt the solution

    Plan ongoing monitoring of the solution

    Continue to look for incrementalimprovements to refine the solution

    Look for another improvement opportunity

  • 7/30/2019 Quality Principles in Software Development

    27/114

    Six Sigma

    The word 'Sigma' is a statistical term thatmeasures how far a given processdeviates from perfection.

    The significance of Six Sigma is that ifyou can measure how many defects you

    have in a process, you can systematicallyfigure out how to eliminate them and getas close to 'zero defects' as possible.

  • 7/30/2019 Quality Principles in Software Development

    28/114

    Key Concepts of Six Sigma Critical to Quality:Attributes most important to

    the customer

    Defect:Failing to deliver what the customer wants

    Process Capability:What your process can deliver

    Variation:What the customer sees and feels

    Stable operations:Ensuring consistent, predictableprocesses to improve what the customer sees andfeels

    Design:Designing to meet customer needs andprocess capability

  • 7/30/2019 Quality Principles in Software Development

    29/114

    Critical to Quality

    Understanding Customer's needs and expectationsby employing six approaches to communicating

    with customer Measure business performance against dynamic

    customer requirements and respond to changingmarket place conditions

    Quality function deployment (QFD) and failuremodes and effects analysis (FMEA) can help identifycritical to quality characteristics.

  • 7/30/2019 Quality Principles in Software Development

    30/114

    Defect

    Reducing the defect rate

    Determining the defect cost

    Mistake Proofing techniques eliminate thesources of errors and ensure that a

    process is free of defects.

  • 7/30/2019 Quality Principles in Software Development

    31/114

    Process Capability

    Understanding Process Capabilityprinciples and calculating ProcessCapability are integral to stayingcompetitive and meeting customerrequirements.

  • 7/30/2019 Quality Principles in Software Development

    32/114

    Variation

    Two sources of variation : Common causeand special cause

    Multi-Vari Analysis offers a means ofreducing large numbers of unrelated causesof variation to a family of related causes.

    Reducing common-cause variation so thatthe distribution has a very small standarddeviation

  • 7/30/2019 Quality Principles in Software Development

    33/114

    Stable operations

    Operational Excellence methodology foridentifying the right projects, using the rightpeople to lead projects, right tools androadmap

    Turning quality into a management system

    Improving cycle time to process applicationsfor long term disability benefits

  • 7/30/2019 Quality Principles in Software Development

    34/114

    Design

    Follow a four phase process to achievedesign. Identify, Design, Optimize and

    Validate

    Design helps eliminate designed-in

    quality problems that account for 70-80% of defects

    Link Six Sigma with QS 9000

  • 7/30/2019 Quality Principles in Software Development

    35/114

    Benchmarking

    The continuous process of measuringproducts, services, and practices againstthe toughest competitors and industryleaders

    The search for industry best practices

    that lead to superior performance It is not a mechanism for determining

    resource reductions

  • 7/30/2019 Quality Principles in Software Development

    36/114

    Elements of Benchmarking

    A structured process/approach

    Continuous/ongoing

    Involves measuring, evaluating, andcomparing results (and the process ofbenchmarking)

    Focus on best practices/results

    Goal is to improve to level of best

  • 7/30/2019 Quality Principles in Software Development

    37/114

    Fundamentals of

    Benchmarking Focus on key services/processes

    Learn from others

    Apply what has been learned

  • 7/30/2019 Quality Principles in Software Development

    38/114

    Types of Benchmarking

    Internal - best within organization

    Competitive - best within competition

    Functional - best within industry

    Collaborative - best within voluntarynetwork

  • 7/30/2019 Quality Principles in Software Development

    39/114

    10 Step Benchmarking

    Process Planning

    Identify benchmarking subject & team

    Identify & select benchmarking partners Identify data collection techniques

    Analysis

    Determine current performance gap

    Project future performance levels

  • 7/30/2019 Quality Principles in Software Development

    40/114

    10 Step Benchmarking

    Process Integration

    Communicate findings & gain acceptance

    Establish functional improvement goals

    Action

    Develop action plan

    Implement plans & monitor progress

    Recalibrate & reset benchmark performancelevels

  • 7/30/2019 Quality Principles in Software Development

    41/114

    Benchmarking Made easy

    Observe

    Whos best? How do you know? Identifypractices.

    Understand

    Are others better? Why? How much better?What can be adopted?

    Act

    Commit to findings. Set goals. Communicatenew direction. Take action to change.

    Recalibrate

  • 7/30/2019 Quality Principles in Software Development

    42/114

    Common Pitfalls

    No clear purpose/wrong purpose

    Poor team balance

    Too many subjects

    Too many metrics/poor metrics

    No management buy-in

    Unrealistic schedule

    Wrong partners

  • 7/30/2019 Quality Principles in Software Development

    43/114

    Accelerators of Benchmarking

    Leadership commitment

    Organizational preparation

    Identification & mapping of key processes

    Capacity for learning

    Knowledge of customers & competitors

    Resources

  • 7/30/2019 Quality Principles in Software Development

    44/114

    Continuous Improvement

    Software development mainly focuses onProblem Solving.

    Continuous improvement is a TQM conceptwhich involves examining processes toproactively determine improvementopportunities apart from problem solving.

    Both problems and opportunities can beaddressed using the same methodology(Continuous Improvement)

  • 7/30/2019 Quality Principles in Software Development

    45/114

    Steps in continuous improvement

    Describe the issue

    Identify the cause

    Resolve the issue

    Follow up

  • 7/30/2019 Quality Principles in Software Development

    46/114

    Describe the issue

    Identify improvement opportunities fromsources such as trouble reports, cutomercomplaints and employee ideas.

    Utilize information gathered through outsoftware development life cycle such asdefect analysis, post project reviews orreviewing project attribute data

  • 7/30/2019 Quality Principles in Software Development

    47/114

    Describe the issue(contd)

    Once an issue has been identified,describe it fully and quantify theconsequences of making changes.

    Consequences can be the cost of notfixing a problem or the cost of savingsresulting from the improvement.

    These consequences are due to reducedrework or increased quality andproductivity

  • 7/30/2019 Quality Principles in Software Development

    48/114

    Determine the cause

    Addressing the symptoms instead of causesleaves the problems for long and the

    improvements would be ineffective

    Techniques used to determine root causes areprocess flow analysis, requirements reviews,

    cause/effect or fishbone diagramming, andmeasurement.

    Brainstorming is an effective technique for

    smaller issues

  • 7/30/2019 Quality Principles in Software Development

    49/114

    Resolve the issue

    Resolutions involves brainstorming orresearch.(also the necessity tounderstand individual authority andresponsibility to determine what level ofcommitment and involvement fromothers is necessary is important)

    Impacts on time, cost, customers,suppliers and schedules should beanalyzed to select the appropriate action

  • 7/30/2019 Quality Principles in Software Development

    50/114

    Implementing the Resolution

    Need to be planned to avoid problems

    This can be a project plan which involvesspecifying activities, responsibilities andtime frames for making process changes

    Project plan also ensures resources are

    available when following up on theimprovement

  • 7/30/2019 Quality Principles in Software Development

    51/114

    Follow up

    Making sure that the changes have been correctlyimplemented and the desired outcome was achieved

    Follow-up enables organizations to show successes

    and demonstrate the impact of improvements

    It involves measuring the impact against the initialobjectives

    More specifically, results are measured to see ifcosts have been reduced or avoided and whetherdefects have decreased or productivity hasincreased

  • 7/30/2019 Quality Principles in Software Development

    52/114

    Conclusions

    Improving processes should be part of what isdone every day

    As industries, customers and technologies

    grow and change, organizations need to moveahead as well. Often what has worked in thepast will not work in the future

    Individuals must be willing to look for ways toresolve problems and improve processes sotheir jobs will be efficient, effective and meetcompany needs.

  • 7/30/2019 Quality Principles in Software Development

    53/114

    Best Practices

    What is a best practice ?

    Best practices" are documented strategiesand tactics employed by highly admiredcompanies

    Due to the nature of competition and their drivefor excellence, the profiled practices have beenimplemented and honed to help place theirpractitioners as the most admired, the mostprofitable, and the keenest competitors inbusiness.

  • 7/30/2019 Quality Principles in Software Development

    54/114

    Integrated Performance

    Systems Key Performace dimensions identified

    using best practise

    Link Best Practices to Strategy Fulfillment

    Best Practice Identification Systems

    Best Practice Recognition Systems

    Communicating Best Practices

    Best Practice Knowledge Sharing Systems

    Ongoing Nurturing of Best Practices

  • 7/30/2019 Quality Principles in Software Development

    55/114

    Quality Objectives

    Improve Customer Satisfaction

    Reduce development costs

    Improve time-to-market capability

    Improve processes

  • 7/30/2019 Quality Principles in Software Development

    56/114

    Customer Satisfaction

    Knowing what to ask

    Knowing how to ask

    Knowing who to ask

    Turning the results into information

  • 7/30/2019 Quality Principles in Software Development

    57/114

    Customer Satisfaction Survey

    Provides the management with theinformation they need to determine theircustomers level of satisfaction with their

    software products and with the servicesassociated with those products.

    Technical staff can use the survey info to

    identify opportunities for ongoing processimprovements and to monitor the impact ofthose improvements

  • 7/30/2019 Quality Principles in Software Development

    58/114

    C S Survey : Key Steps

    Focusing on Key Customer QualityRequirements

    Creating the Questionnaire Deciding Who to Ask

    Designing a Customer Satisfaction

    Database Reporting Survey Results: Turning

    Data into Information

  • 7/30/2019 Quality Principles in Software Development

    59/114

    Reduce development costs/improvetime-to-market capability Seven ways to better software projects in terms of money,

    effort and quality

    Minimize overhead work during a project. Stop tinkering the projectplan. Put away the audit checklists. Cut meeting times to bare

    minimum and keep them focussed. Take lengthy discussions off-line.You need to ship software, so make it your mantra. Dont do anyactivity that makes it harder. To make sure you ship good softwarekeep reading..

    Cutting buggy features and excess new functionality to meet releasedates will allow you to get revenue in the door sooner rather thanlater. It is hard to decide what and when to let go. Get help deciding.Prioritization of features will also give your project team moreguidance on what the key high-priority items are so they know whereto spend their time instead of investing long hours on less importantor trivial features.

    Manage Stakeholders' Expectations Work with your stakeholderst k th t thi h d h d l li th k

  • 7/30/2019 Quality Principles in Software Development

    60/114

    to make sure that, as things change and schedules slip, they knowwhat's going on. They can help with determining priorities, andprovide valuable input into making decisions. At the same time,they will appreciate you being honest with them about anychanges needed or problems encountered. Asking yourstakeholders for input will make them part of the process - andthey will have a greater interest in seeing you succeed. As well,the stakeholders' might be willing to let certain things go - such as

    being more flexible on a shipping date in order to keep a feature,or on the feature set in order to meet a release date.

    Before buying a tool, consider how well the tool fits into theprocesses you are currently working with, regardless of whetherthose processes are formal or informal. Remember, you need tospend time and money to train your resources to be able tointegrate the new tool into your project effectively. If you can't dothat and ship your next release simultaneously, while doing agood job at each, the tool will quickly become shelf-ware and the

    organization will have lost money, time, and buy-in for future toolurchases.

    Proper risk analysis can provide guidance for you and your team

  • 7/30/2019 Quality Principles in Software Development

    61/114

    Proper risk analysis can provide guidance for you and your teamin deciding what you must do, what you can avoid, and what youare not going to worry about. Perhaps appoint one person on theproject team to be the "Risk Officer", responsible for tracking the

    project's risks and the status of mitigation/avoidance plans, and toreport on this information to the rest of the team during projectstatus meetings. Regular risk reviews and implementation ofmitigation strategies will make your software journey a safer,more successful experience.

    Look for Quick Wins Quick Wins are things that are easy toimplement or adopt and have a large potential return oninvestment (ROI) in the short term. Continually looking for QuickWins in a planned manner means you are now doing continuous

    process improvement at a rate that makes sense for you. Quickwins are the kinds of small changes that you can make in the wayyou do things that, while consuming less than 5% of your dailyavailable time, can add up to significant savings (time, effort) atthe end of the project.

  • 7/30/2019 Quality Principles in Software Development

    62/114

    Skip the training - Hire the brains. Bringing in experts in the

    present can pave the way for leveraging less seniorresources in the future. This is one good way to avoid or

    mitigate risks. These "hired guns" are experts in ramping upquickly on new projects, and can become effective in a veryshort period of time.

    In short: keep your product and processes simple, do it well

    manually first and automate only when it makes sense,make changes and improvements in process as you gorather than all at once, and never stop looking for betterways to do things that make sense for your organization,

    product, and market

  • 7/30/2019 Quality Principles in Software Development

    63/114

    Quality Attributes

    Reliability

    Maintainability

    Usability

    Portability

  • 7/30/2019 Quality Principles in Software Development

    64/114

    Software Reliability

    Reliability is the ability of a system or component to performits required functions under stated conditions for a specifiedperiod of time

    Software Reliability is the application of statistical techniquesto data collected during system development and operationto specify, predict, estimate, and assess the reliability ofsoftware-based systems

    Software Reliability Engineering (SRE) is a standard, provenbest practice that makes testing more reliable, faster, andcheaper. It can be applied to any system using software andto frequently-used members of software component libraries

    S ft R li bilit E i i

  • 7/30/2019 Quality Principles in Software Development

    65/114

    Software Reliability Engineering

    Set quantitative reliability objectives that balancecustomer needs for reliability, timely delivery, andcost

    Characterize quantitatively how users will employ

    your product

    Track reliability during test

    Maximize the efficiency of development and test byfocusing resources on the operations that are mostused and/or most critical, by realisticallyreproducing field conditions, and by delivering just

    enough reliability

  • 7/30/2019 Quality Principles in Software Development

    66/114

    The advantages of SRE

    is unique in helping testers ensurenecessary reliability in minimum deliverytime and cost

    increases tester productivity andreduces time to market of a product

    improves customer satisfaction andreduces the risk of angry customers

  • 7/30/2019 Quality Principles in Software Development

    67/114

    Applying SRET

    SRET should be applied over the entire software life cycle,including all releases with particular focus on testing

    Apply to feature, load, performance, regression, certification

    or acceptance testing

    Determine which associated system requires separatetesting

    Decide which type of SRET required for each system to betested

    Descision is made to apply development testing to theproduct and certification testing to the operating system

  • 7/30/2019 Quality Principles in Software Development

    68/114

    Applying SRET(Contd)

    Determine Operational Mode(Operational mode is a distinctpattern of system use and/or environment that needsseparate testing).

    Define failure in terms of severity classes

    Set failure intensity objectives

    Engineer reliability strategies (means finding the rightbalance among them to achieve the failure intensity

    objective in the required time and at minimum cost) Develop Operational profiles (Operational profile is simply

    the set of operations and their probabilities of occurrence)

  • 7/30/2019 Quality Principles in Software Development

    69/114

    Applying SRET(Contd)

    Prepare for testing (includes preparing test cases, testprocedures and any autmated tools decided to use)

    Execute tests(conducting testing and then identifying

    failures, determining when they occurred, and establishingthe severity of their impact)

    Interpret failure data in development testing and certificationtesting. (applying failure data to guide decisions)

    For further details referhttp://www.cs.bsu.edu/homepages/metrics/cs639d/CS639WWW/musa-oneil/index.htm

  • 7/30/2019 Quality Principles in Software Development

    70/114

    Maintainability

    Qualitative Definition

    the characteristics of material design and installationwhich make it possible to meet operational objectiveswith a minimum expenditure of maintenance effort underoperational environmental conditions in which scheduledand unscheduled maintenance will be performed

    Quantitative Definition

    maintainability is a characteristic of design and installationwhich is expressed as the probability that an item will berestored to specified conditions within a given period oftime when maintenance action is performed in

    accordance with prescribed procedures and resources

  • 7/30/2019 Quality Principles in Software Development

    71/114

    Software Maintenance

    Is the process of modifying the existingprogram to keep the system up and

    functioning

    Is the final phase of Software life cycledesigned using Water fall model

  • 7/30/2019 Quality Principles in Software Development

    72/114

    Role of a Software Maintainer

    Understand the software completely and thechanges to be made for modification

    Modify the software to incorporate changes by

    creating new programs or changing existingprograms

    Revalidate the modified software to ensure

    correctness and to ensure that no side effects wereintroduced

    Interact with customers to identify and correct all

    problems

  • 7/30/2019 Quality Principles in Software Development

    73/114

    Software maintenance problems

    Program understanding

    Top-down approach

    Poor software design

    Poorly coded software

    Outdated hardware

    Lack of common data definitions

    More than one programming language

    Increasing Inventory

    Excessive resource requirements

    User requirements

  • 7/30/2019 Quality Principles in Software Development

    74/114

    Classes of Software Maintenance

    Corrective maintenance : improving a system as theresult of an error

    Adaptive maintenance : improving a system as a result

    of changes in the environment Perfective maintenance : improving a system as a result

    of the needs of end users

    Emergency maintenace : unscheduled correctivemaintenance to prevent disaster

    Preventive maintenance : developing maintainablesoftware that in turn reduces the amount of

    maintenence expense

    f f

  • 7/30/2019 Quality Principles in Software Development

    75/114

    Standards for softwaremaintenance Phase 1:Problem/modification identification and classification

    The maintainer identifies, classifies and prioritizes themodification request

    Phase 2:Analysis - The maintainer uses repositoryinformation and modification request to analyze the scope ofthe modification and devises a preliminary plan for design,implementation, test and delivery

    Phase 3:Design - the maintainer designs the modification tothe system

    Phase 4:Implementation - the maintainer implements thechanges to the system

  • 7/30/2019 Quality Principles in Software Development

    76/114

    Standards (Contd)

    Phase 5:Regression/System Testing - the systemis tested for completeness and accuracy and alsoto validate that the modified code does not

    introduce faults.

    Phase 6:Acceptance Testing - the system istested to ensure that the modifications are

    satisfactory. Problems encountered aredocuemented

    Phase 7:Delivery - Once the system has been

    approved the system is delivered to the customer

  • 7/30/2019 Quality Principles in Software Development

    77/114

    Usability - Definitions

    Usability is defined in ISO 9241 part 11 as theextent to which a product can be used byspecified users to achieve specified goals witheffectiveness, efficiency and satisfaction in aspecified context of use

    Effectiveness - How well the user achieves the goalsthey set out to achieve using the system.

    Efficiency - The resources consumed in order toachieve their goals.

    Satisfaction -How the user feels about their use of the

    system.

    Usability Definitions

  • 7/30/2019 Quality Principles in Software Development

    78/114

    Usability - Definitions

    User - the person who will use the product to dotheir job

    User-centered design - an approach to design inwhich a high level of usability of the end product is

    an objective. It includes involving users, obtainingtheir feedback on the design and use of the system,providing prototypes for users to try out and re-designing as a result of user feedback.

    Usability evaluation - the process by which thelevel of usability of a system is measured. It involvesobserving users as they try out certain aspects of aprodcut or process

    Aspects of usability

  • 7/30/2019 Quality Principles in Software Development

    79/114

    Aspects of usability

    User-centered design

    Designers must understand who the users will be andwhat tasks they will do. If possible, designers shouldlearn to do some or all of the users' tasks. This must takeplace before the system design work starts, and design

    for usability must start by creating a usabilityspecification.

    Participative design

    A panel of expected users should work closely with thedesign team, especially during the early formulationstages and when creating the usability specification. Toenable these users to make useful contributions, they willneed to show a range of possibilities and aletrnatives by

    means of mock-ups and simulations

    Usabilit Aspects

  • 7/30/2019 Quality Principles in Software Development

    80/114

    Usability Aspects

    Experimental design Early in the development process, the expected users

    should do pilot trials and then subsequently use thesimulations, and later the prototypes, to do real work.

    Whenever possible alternative versions of importantfeatures and interfaces should be simulated orprototyped for evaluation by comparative testing.

    Iterative design

    The difficulties revealed in user tests must be remediedby redesign, so the cycle design, test and measure,redesign must be repeated as often as is necessary until

    the usability specification is satisfied.

    U bilit A t (C td)

  • 7/30/2019 Quality Principles in Software Development

    81/114

    Usability Aspects (Contd)

    User Supportive design Careful attention to user support facilities such as

    documentation, help screens can significantly assist

    usability

    Design for all

    By taking account of the needs of the people withsay, impaired hearing, vision, speech and motorskills, the future product will be more useful to awider range of people, and be more successful as aresult.

    Usability activities

  • 7/30/2019 Quality Principles in Software Development

    82/114

    Usability activities

    User requirement specification analysing the user population and the tasks theyperform in a given working environment will help inproducing a more precise user requirement

    specification Studies have found that a major cause of IT system

    failure is that user requirements are not identifiedproperly, so the software was not matched to them.

    Design guidelines and standards

    Use and advise design guidelines and ergonomicstandards relevant to IT applications

    Usability Acitivities(contd)

  • 7/30/2019 Quality Principles in Software Development

    83/114

    Usability Acitivities(contd)

    The user interface may follow the latest styles guides,and it'll look great. But unless the system helps the usercarry out what they want to do effectively and efficiently,this glossy front may restrict rather than help them.

    Prototyping Use the methods for making and evaluating prototypes,

    to validate the functions of the system and to developthe user interface.

    An International rent-a-car company wanted to provide a24-hour service via stand alone terminals in airportlounges. By using prototyping techniques, an efficientand user-friendly design (based upon touchscreen

    terminals) was produced in less than two months.

    Usability Activities(contd)

  • 7/30/2019 Quality Principles in Software Development

    84/114

    Usability Activities(contd)

    User Acceptance Testing

    There are well estd methods for testing systems interms of user performance and peoples attitudescrucial to acceptance in the work place.

    A telecommunications company, developed a desktopvideophone. They wanted to ensure that it could beused by senior, non-technical, staff. Acceptancetesting with typical users confirmed that the

    videophones simple and elegant user interface wouldbe well accepted.

    Usability Activities(contd)

  • 7/30/2019 Quality Principles in Software Development

    85/114

    Usability Activities(contd)

    Introduction of new technologiesAdvise on how to introduce systems into the

    workplace so that users learn and cope with thechanges as easily as possible, without the need for

    expensive re-training courses and minimisingdisruption to the business.

    Creating a usable system will also involve consideringhow it will fit into the customer's organisation and be

    widely acceptable to its employees. This requiresuser involvement throughout the design process.

    Usability Questions

  • 7/30/2019 Quality Principles in Software Development

    86/114

    Usability Questions

    What is user-centered design

    It means that the design is based on the needs andrequirements of the users of the future system.

    How can user centred design be achieved?

    Firstly by studying the users, their tasks and theenvironment in which the system will be located.Secondly the system should be developed iteratively, sothat it gradualy meets user requirements.

    How do you know when a usable design has beenachieved?

    As part of user requirements, a set of of usability goalsshould be defined in specific terms. Thus usability testing

    can show to what extent the goals have been achieved.

    Usability Questions(contd)

  • 7/30/2019 Quality Principles in Software Development

    87/114

    Usability Questions(contd)

    What would be an example of such a goal ?

    For example, for a new telephone system, a usability goalmight be:"It should be possible for 95% of users to make a callsuccessfully within 30 seconds, making no errors".

    How do you identify such goals ?

    By studying the user performing tasks, and identifying therequired performance levels for those tasks.

    How do you define usability ?

    It is the effectiveness, efficiency and satisfaction withwhich a product can be used by a given set of usersperforming a given set of tasks in a given environment.

    Usability Questions(contd)

  • 7/30/2019 Quality Principles in Software Development

    88/114

    y Q ( ) Why is it such a long definition ?

    This is because it recognises that usability is not a uniqueproperty. It depends on the particular circumstances in whichthe systen will be used i.e. its 'context of use'

    How do go about measuring usability?

    By studying the context of use of the intended product orsystem. From this study, a sample of typical users and taskswill emerge. based on the tasks, a set of usability goals (or testcriteria) can be defined. A set of tests can then be run with asample of users to see if when they perform the defined tasks,

    the criteria levels are achieved.

    How many users do you need ?

    From experience, about 10 users are employed from eachmajor user group e.g. 10 novices and 10 experts. In this way

    the results from different user groups can be compared.

    Usability Standards

  • 7/30/2019 Quality Principles in Software Development

    89/114

    y

    Standards related to human-centred design

    process-oriented: these specify procedures andprocesses to be followed.

    product-oriented: these specify required attributes of

    the user interface. Process oriented standards

    1981, Ergonomic principles in the design ofwork systems

    1997, Human-centred design processes forinteractive systems

    1993, Ergonomic requirements for office work with

    visual display terminals (VDTs)

    Usability Standards(contd)

  • 7/30/2019 Quality Principles in Software Development

    90/114

    y ( )

    Process oriented Standards

    1993, Guidance on task requirements

    Guidance on usability(how to identify the informationwhich it is necessary to take into account when

    specifying or evaluating usability in terms ofmeasures of user performance and satisfaction)

    1994, Ergonomic principles related to mental work-load

    Evaluation of Software Products(the extent to whichan entity satisfies stated and implied needs whenused under stated conditions)

    Usability Standards(contd)

  • 7/30/2019 Quality Principles in Software Development

    91/114

    Usability Standards(contd)

    Product oriented standardsVisual display requirements

    Keyboard requirements

    Workstation layout and postural requirements Environmental requirements

    Display requirements with reflections

    Requirements for displayed colours

    Requirements for non-keyboard input devices

    Dialogue(b/w human & informationsystems)principles

    Usability Standards(contd)

  • 7/30/2019 Quality Principles in Software Development

    92/114

    Usability Standards(contd)

    Product oriented Standards Presentation of information of visual displays

    User guidance for user interfaces

    User-computer Menu dialogues

    Command language user-computer dialogues

    Direct Manipulation dialogues

    Form filling dialogues

    Dialogue interaction - cursor control for text editing

    Framework for icon symbols and functions

    Usability Evaluation Methods

  • 7/30/2019 Quality Principles in Software Development

    93/114

    y

    Testing Approach

    Here the representative users work on typical tasks usingthe system and evaluators use the results to see how theuser interface supports the user to do their tasks

    Inspection Approach Here usability specialists and sometimes software

    developers, users and other professionals, examineusability-related aspects of a user interface

    Inquiry approach Here usability evaluators obtain information about users' likes,

    dislikes, needs, and understanding of the system by talking tothem, observing them using the system in real work or letting

    them answer questions verbally or in written form

    Portability - Definition

  • 7/30/2019 Quality Principles in Software Development

    94/114

    Portability Definition

    Portability is an attribute which may be possessedby a software unit to a specific degree withrespect to a specific class ofenvironments.

    Portability may also be an attribute of auxiliary

    elements such as data, documentation, and humanexperience.

    Asoftware unit is portable (exhibits portability)

    across a class ofenvironments to the degreethat the cost to transport and adapt it to a newenvironment in the class is less than the cost ofredevelopment.

    Portability - Key Concepts

  • 7/30/2019 Quality Principles in Software Development

    95/114

    y y p

    Software Units

    Environments

    Classes of Environments

    Degree of Portability

    Costs and benefits

    Phases of Porting : Transportation & Adaptation

    Porting vs Redevelopment

    Why Should we port ?

  • 7/30/2019 Quality Principles in Software Development

    96/114

    Why Should we port ?

    Many Hardware and Software Platforms

    We want familiar software in differentenvironments

    We want easier migration to new systemversions and to totally new environments

    We want more new development, lessredevelopment, and lower software costs

    Who should care for Portability

  • 7/30/2019 Quality Principles in Software Development

    97/114

    y

    Users

    Portable software should be cheaper

    Portable software should work the same in various environments

    Developers

    Portable software costs less to develop for multiple environments Portable software is easire to maintain for multiple environments

    Vendors

    Portable software is easier to support

    Users will repurchase the same product for new environments

    Managers

    Portable software reduces maintenance costs

    Portability reduces headaches during product enhancement

  • 7/30/2019 Quality Principles in Software Development

    98/114

    What can we port ?

    Programs , Components, Systems

    Data

    Libraries

    Tools

    System Software

    Documentation

    Experience

  • 7/30/2019 Quality Principles in Software Development

    99/114

    Levels of Porting

    Source

    Programming language or higher-level form.Adaptation is feasible.

    Binary

    Executable form. Most convenient, butadaptation is difficult.

    Intermediate

    May allow limited adaptation withoutexposing source.

  • 7/30/2019 Quality Principles in Software Development

    100/114

    Typical Activities

    Adapting existing programs to newenvironments

    Designing programs to be portable

    Improving portability of existing

    programs

    System support for portability

    Goals & Tasks

  • 7/30/2019 Quality Principles in Software Development

    101/114

    Application Installers

    Goal: To port applications to specific new environments.

    Tasks: Analyze environment; adapt and compile (perhaps);configure and install.

    Resources: Source (perhaps) or executable files;application documentation; system documentation.

    Application designers

    Goal: To design applications which can be easily ported

    among different environments. Tasks: Define environment classes; develop portable

    design; document for portability.

    Resources: Requirements specification; language

    specification and other relevant standards.

    Goals & Tasks

  • 7/30/2019 Quality Principles in Software Development

    102/114

    Goals & Tasks

    System Implementors

    Goal: To provide mechanisms for specificenvironments which facilitate porting.

    Tasks: Identify relevant services and resources;

    support standards; document for porting.

    Resources: System documentation; relevantstandards.

  • 7/30/2019 Quality Principles in Software Development

    103/114

    Three Related Concepts

    Portability

    Ability to use the same program (orcomponent) in multiple environments

    Reusability

    Ability to use the same software componentin multiple programs

    Interoperability

    Ability of different programs to "worktogether," especially by exchanging data

    Portability Myths

  • 7/30/2019 Quality Principles in Software Development

    104/114

    Portability Myths

    It is claimed that portability has been solved by

    standard languages (e.g., FORTRAN, COBOL, Ada, C,C++, Java)

    universal operating systems (e.g., Unix, MS-DOS,

    Windows, JavaOS)

    universal platforms (e.g., IBM-PC, SPARC, JavaVM)

    open systems and POSIX

    OOP and distributed object models (e.g., OLE,CORBA)

    Software patterns, architectures, and UML

    The World Wide Web

  • 7/30/2019 Quality Principles in Software Development

    105/114

    Quality Pioneers

    What relevance do general quality

    principles that have been developed in

    other fields have with softwaredevelopment and software quality?

    This is addressed by studying the

    principles advocated by Qualtiy Experts

    JURAN - Strategy for achieving Quality

  • 7/30/2019 Quality Principles in Software Development

    106/114

    JURAN Strategy for achieving Quality

    structured annual improvements inquality

    a massive quality-oriented trainingprogramme

    upper management must lead company'sapproach to product quality

    JURAN -Achieving Quality Improvement

  • 7/30/2019 Quality Principles in Software Development

    107/114

    JURAN Achieving Quality Improvement

    Study the symptoms of defects and failures

    Develop a theory on the causes of symptoms

    Test the theory until the cause is known

    Stimulate the remedial action by appropriateaction

    Juran - Classification of defects

  • 7/30/2019 Quality Principles in Software Development

    108/114

    Worker Controllable and Management controllable

    Worker Responsibility

    worker knows what to do

    worker knows result of own work

    worker has means of controlling result

    Management Responsibility

    Sequence of events for improving quality andreducing quality costs

    Universal feedback loop for control

    Fundamental is data collection and analysis

    Deming - 14 Principles

  • 7/30/2019 Quality Principles in Software Development

    109/114

    Create constancy of purpose towards improvement of

    product and service

    Adopt the new philosophy

    Cease dependence on inspection to achieve quality -

    build quality in, in the first place

    End the practice of awarding business on the basis ofprice tag - get single supplier for any one item.

    Instead minimize total cost

    Improve constantly and forever the system ofproduction and service to improve quality and

    productivity - this constantly decreases costs

    Deming - 14 Principles

  • 7/30/2019 Quality Principles in Software Development

    110/114

    Institute training on the job

    Institute leadership. The aim of supervision is to helppeople to do a better job

    Drive out fear, so everyone may work effectively for the

    company

    Break down the barriers between departments - work inteams

    Eliminate slogans, and targets for the workforce askingfor zero-defects and new levels of productivity. Theycreate adversarial relationships. The bulk of the causesof low quality and low productivity belong to the system

    Deming - 14 Principles

  • 7/30/2019 Quality Principles in Software Development

    111/114

    Eliminate work standards and management by

    objectives - substitute leadership

    Remove barriers that rob workers/managers ofthe right to pride of workmanship - abolish

    annual merit rating

    Institute a vigorous program of education andself improvement

    Put everybody in the company to work toaccomplish the transformation - thetransformation is everybody's job

    Deming - Contribution to QC

  • 7/30/2019 Quality Principles in Software Development

    112/114

    The economicand social revolution which took hold in

    Japan, upset in 15 years the economy of the world andshows what can be accomplished by serious study andadoption of statistical methods and statistical logic inindustry at all levels from the top downwards

    The analysis of errors for either type or cause will helpcontrol errors - this is particularly important for software.

    The results enable improvement of the process so that

    less errors are produced.

    You cannot inspect quality into a product - you mustbuild in quality right from the outset.

    CROSBY

  • 7/30/2019 Quality Principles in Software Development

    113/114

    Crosby suggests there are five maturing stages

    through which quality management evolves. uncertainty

    awakening

    enlightenment wisdom

    certainty

    Crosby used a Quality Management Maturity Grid todefine his approach. The advantage in this is itdefines a quality improvement path for anorganization as well as a means for assessing where

    at any time the organization is on the path to quality

    Crosbys defintion of Software Quality

  • 7/30/2019 Quality Principles in Software Development

    114/114

    "conformance to requirements

    Misconceptions about software quality

    quality means goodness, cannot be defined or measured

    people do not produce quality because they don't care

    it costs a lot more to produce quality software

    people make mistakes - it is inevitable there will be errorsin large systems

    There is an underlying assumption that the threegoals of quality, cost, schedule are conflicting andmutually exclusive In contrast Deming claims that