CompSci 230 Software Design and Construction Software Quality 2015S1 Revision.

Slides:



Advertisements
Similar presentations
Object Oriented Analysis And Design-IT0207 iiI Semester
Advertisements

Testing and Quality Assurance
SOFTWARE DEVELOPMENT METHODOLOGIES Methodologies Waterfall Prototype model Incremental Iterative V-Model Spiral Scrum Cleanroom RAD DSDM RUP.
Chapter 4 Quality Assurance in Context
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 17 Slide 1 Rapid software development.
Alternate Software Development Methodologies
Agile development By Sam Chamberlain. First a bit of history..
Software Testing. “Software and Cathedrals are much the same: First we build them, then we pray!!!” -Sam Redwine, Jr.
Software Development Overview CPSC 315 – Programming Studio Spring 2008.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 4 Slide 1 Software Processes.
Chapter 11: Testing The dynamic verification of the behavior of a program on a finite set of test cases, suitable selected from the usually infinite execution.
CompSci 230 Software Design and Construction Software Quality 2015S1 What is software quality?
CompSci 230 Software Design and Construction
Functional Testing Test cases derived from requirements specification document – Black box testing – Independent testers – Test both valid and invalid.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 17 Slide 1 Extreme Programming.
Software Quality Assurance Lecture #8 By: Faraz Ahmed.
Chapter 3 – Agile Software Development 1Chapter 3 Agile software development.
INFO 637Lecture #81 Software Engineering Process II Integration and System Testing INFO 637 Glenn Booker.
CompSci 230 Software Design and Construction
Extreme Programming(XP)
SE-02 SOFTWARE ENGINEERING LECTURE 3 Today: Requirements Analysis Requirements tell us what the system should do - not how it should do it. Requirements.
Software Testing.
RUP Implementation and Testing
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 4 Slide 1 Software Processes.
CS 360 Lecture 3.  The software process is a structured set of activities required to develop a software system.  Fundamental Assumption:  Good software.
©Ian Sommerville 2000, Mejia-Alvarez 2009 Slide 1 Software Processes l Coherent sets of activities for specifying, designing, implementing and testing.
Software Testing Testing principles. Testing Testing involves operation of a system or application under controlled conditions & evaluating the results.
1 e X treme P rogramming D. Dranidis September 2000 CITY College.
University of Palestine software engineering department Testing of Software Systems Testing throughout the software life cycle instructor: Tasneem Darwish.
Software Engineering Management Lecture 1 The Software Process.
Extreme/Agile Programming Prabhaker Mateti. ACK These slides are collected from many authors along with a few of mine. Many thanks to all these authors.
Dr. Tom WayCSC Testing and Test-Driven Development CSC 4700 Software Engineering Based on Sommerville slides.
Rapid software development 1. Topics covered Agile methods Extreme programming Rapid application development Software prototyping 2.
University of Palestine software engineering department Testing of Software Systems Testing throughout the software life cycle instructor: Tasneem.
Chapter 2 Software processes. Topics covered Software process models Process activities Coping with change.
Software Development Overview CPSC 315 – Programming Studio Spring 2013.
The Software Development Process
LECTURE 19 23/11/15 Software Quality and Testing.
Software Engineering Jon Walker. What is Software Engineering? Why do we call it Software Engineering? Why not just call it programming or software development?
Software Engineering1  Verification: The software should conform to its specification  Validation: The software should do what the user really requires.
Software Testing 1Software testing. V model Software testing2.
Requirements Engineering Requirements Engineering in Agile Methods Lecture-28.
Software Quality Assurance SOFTWARE DEFECT. Defect Repair Defect Repair is a process of repairing the defective part or replacing it, as needed. For example,
1 Software Testing Strategies: Approaches, Issues, Testing Tools.
Extreme Programming. Extreme Programming (XP) Formulated in 1999 by Kent Beck, Ward Cunningham and Ron Jeffries Agile software development methodology.
©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 4 Slide 1 Software Processes.
Software Quality Assurance and Testing Fazal Rehman Shamil.
Agenda: Overview of Agile testing Difference between Agile and traditional Methodology Agile Development Methodologies Extreme Programming Test Driven.
Dynamic Testing.
1 The Software Development Process ► Systems analysis ► Systems design ► Implementation ► Testing ► Documentation ► Evaluation ► Maintenance.
HNDIT23082 Lecture 09:Software Testing. Validations and Verification Validation and verification ( V & V ) is the name given to the checking and analysis.
Software Development Process CS 360 Lecture 3. Software Process The software process is a structured set of activities required to develop a software.
Introduction to Software Engineering Muhammad Nasir Agile Software Development(2)
CS 4500: Software Development Software Process. Materials Sommmerville Chapters 1, 2 and 3 Software Cycle and Models:
Software Design and Development Development Methodoligies Computing Science.
Software Development. The Software Life Cycle Encompasses all activities from initial analysis until obsolescence Analysis of problem or request Analysis.
 System Requirement Specification and System Planning.
Software Development.
Software Testing.
CompSci 230 Software Construction
PREPARED BY G.VIJAYA KUMAR ASST.PROFESSOR
Software Development methodologies
Software Processes.
Lecture 09:Software Testing
Testing and Test-Driven Development CSC 4700 Software Engineering
Software Testing & Quality Management
CSE 303 Concepts and Tools for Software Development
Extreme Programming.
Chapter 7 Software Testing.
Presentation transcript:

CompSci 230 Software Design and Construction Software Quality 2015S1 Revision

Lecture plan Week 1: No class - Anzac Day What is software quality? Some key developer practices (version control, testing). Week 2:Black box testing. White-box testing. Myers' testing principles. Week 3:Traditional approach to testing (Waterfall). Agile approach to testing (XP). Famous failures S1Software Quality

Questions  What do we mean by ‘software quality’?  How can we achieve ‘software quality’? S1Software Quality

What is software quality?  Some ideas:  Fitness for use  How well does the product perform its intended functions?  Varies according to user group (concept of ‘grade’)  In a car, I want fuel-efficiency and safety  You may prefer a car that looks good and has powerful acceleration  For software, a user may care about, for example, security, usability, reliability, etc S1Software Quality

What is software quality?  So the answer to ‘what is software quality?’ is ‘it depends’  Some products to consider  Control software for a patient monitoring system  reliability? accuracy?  Game to support children learning maths  usability? child-age appropriate?  Mobile app  resource usage? usability? developer can easily modify to upgrade frequently? S1Software Quality

Quality models  A number of quality models have been developed that describe the quality characteristics to be considered when developing a quality product.  As a developer, you should understand which of these apply to the product you are developing S1Software Quality

Quality models  ISO/IEC – System and software quality models S1Software Quality

Historical perspective  First look at where many of the software quality ideas come from.  Origins are in manufacturing.  Brief historical look at manufacturing:  US  Japan S1Software Quality

Historical perspective  Brief historical look at manufacturing:  adapted from Juran S1Software Quality

Quality themes  Deming:  Quality is conformance to specification  Get the specs right and build according to them. Basis of the ‘waterfall’ approach to software development.  You cannot inspect quality into a product – it must be built in from the start  Inspecting (testing) finds what is wrong with the product, which then has to be reworked. Too late. For developer, it’s your job to make sure what is passed on to testing team or another developer is of high quality.  Most problems are a result of the system (process) – don’t blame the workers, it’s a management problem  Consider: team of 5 developers, 4 experienced and 1 new. The new one is in charge of keeping the specification wiki up to date. Hmmm… S1Software Quality

Quality themes  Juran:  Quality is fitness for use (issues of ‘grade’)  Seen in agile approaches to software development i.e. work closely with the client to make sure you deliver what (s)he really wants.  Developer must understand required quality characteristics.  Workers must be empowered by support of top management  Basis of TQM initiatives.  HUGE problem in many (most?) software development initiatives S1Software Quality

Quality themes  Pareto:  Only a few factors are responsible for most of the problems  If you want to improve your software process, identify the small number of areas that will make the biggest difference.  Toyota:  Eliminate waste (inventory, processing steps)  Basis of the lean approach to software development S1Software Quality

Quality themes and SE  Underlying belief is : Good process -> quality product  This idea is behind all the (heated) discussions about software process. For example, should an organisation implement a waterfall approach? XP? Perhaps Lean Software Development is the way to go?  Each of these approaches implements some of the ideas from above.  Current thinking is that practices must be adapted to the particular circumstances of the project S1Software Quality

Key developer practices  Two key developer practices that support quality outcomes are:  version control  testing S1Software Quality

15 Version Control Best Practices 1. Complete one change at a time and commit it  If you committing several changes together you cannot undo/redo them individually  If you don’t commit and your hard disk crashes… 2. Don’t break the build  Test your changes before committing 3. Commit only the source files (e.g. not.class files) 4. Use the log by writing a summary for each commit  What has been changed and why 5. Communicate with the other developers  See who else is working on a part before changing it  Discuss and agree on a design  Follow the project guidelines & specifications Dear diary 2015 S1Software Quality

Testing  Black box  Design tests from the specifications only (no knowledge of code structure)  Tester must understand the user perspective  Independent tester? Or developer with domain knowledge?  Techniques  Equivalence partitioning (split the input into partitions, where values in each partition can be viewed as being ‘similar’ )  Boundary value analysis (for each partition, choose values at the boundaries over those in the middle of the partition) S1Software Quality

Testing  Black box S1Software Quality Thoughts Perhaps if the software-under-test is an application, someone who understands the users viewpoint will be more effective? Is this technique really appropriate for within-development? What if the software-under-test is an API? Who is the user? In a way, Black box testing can be viewed as testing interfaces – between human user and application, system interfaces, development modules, … Can we use only for functionality? Or can we use to test other quality characteristics (efficiency, reliability, …)?

Testing  White box  Design tests from a knowledge of code structure  Tester must be familiar with programming language  Developer ? (BEFORE submitting code)  Logic path techniques (in order of strength)  Statement coverage  Decision coverage  Decision/condition coverage S1Software Quality

Testing  White box S1Software Quality Thoughts Developer unwillingness to find defects in his or her own work (Myers’ psychology of testing). What if the code is wrong in the first place (developer didn’t understand the specification)? Tests will pass when carried out by developer, but QA may later reject code when testing from the specs. It might be difficult to find inputs that will force a test to take a specific path. Even more difficult to be sure every path is taken (recognising ‘dead code’ is surprisingly difficult in a procedural programming language such as Java or C). Aim to exercise the most likely usage paths? Is the developer the best person to know this? Is this where Black box testing comes in?

Waterfall model  Staged model. Each stage :  implemented by different people with different skill sets  must be completed and ‘signed off’ before the next begins  verified against the previous stage before sign-off S1Software Quality

Waterfall model - verification  At each stage, what is needed to verify that the product is being built according to what is stated in the previous stage (Are we building the product right)?  Documents – requirements specs, design specs, code, test cases  Stringent specification includes quality requirements  Process – reviews, walkthroughs, inspections S1Software Quality

V-model for testing  Staged model testing : Each stage  has a corresponding kind of test S1Software Quality AKA Unit test AKA Integration test

V-model for testing  System, acceptance and release tests aim to validate that the software does what the customer wants it to do (Did we build the right product?)  System test  Does the software deliver to the specification? Test team.  Acceptance test  Does the software deliver what the customer wanted? Customer.  Release test  Does the software work in the existing business environment? Operations team S1Software Quality

Testing quality characteristics  Testing relating to quality characteristics:  Load testing – apply maximum loads to test maximum capacity.  Stress testing – find breaking point by applying over the maximum load.  Usability testing – measure how quickly users  learn to use the system  complete specific tasks  etc.  Reliability testing  Portability testing  etc S1Software Quality

Other testing  Other kinds of testing :  Smoke testing. During integration, before the product is handed over to the test team, a superficial check is made by the build person that the product’s basic features do what they are supposed to. Purpose is, of course, to not waste the test team’s time.  Regression testing. Applied when changes to the product are needed (to fix bugs or add functionality) to make sure nothing is broken. Applied at unit, integration and system test levels, S1Software Quality

Waterfall summary  Waterfall is a staged approach based on a manufacturing paradigm.  Created to address problems in large, complex development efforts.  Communication is largely via documentation.  Serious issues relating to documentation, communication and delivering what the customer really wanted S1Software Quality

Agile alliance  Many practitioners explored ways to mitigate issues  Many (most?) projects actually implemented an iterative and incremental approach.  1970s: Harlan Mills - upfront specification, deliver in many increments.  adapt designs as a result of customer feedback.  1976: Tom Gilb formally introduced ideas of ‘evolutionary project management’.  no upfront specification, rather discover requirements in an iterative way.  In 2001, a number of separate groups working on ‘agile’ approaches to software development formed the Agile Alliance S1 Software Quality

XP testing  XP is one popular agile methodology  Unit testing - create the unit (module) and acceptance tests before coding - Extreme Testing (XT).”  ? Isn’t a more common name “Test Driven Development” (TDD) ?  ? Did Kent Beck really invent the idea ?  ? Was TDD originally part of XP ?  Acceptance testing – carried out at the end of each iteration by the customer - Extreme Acceptance Testing (XAT).”  ? What if there’s more than one customer?  ? What if the stakeholders disagree about requirements? S1Software Quality

Myers’s Summative Evaluation of XP  “Although glamorous, XP is not for every project or every organization.”  “Proponents of XP [claim] that the chances of successful application development increase dramatically”  “Detractors say that because XP is a process, you must do all or nothing. If you skip a practice, then … your program quality may suffer.”  “[D]etractors claim that the cost of changing a program in the future to add more features is more than the cost of initially anticipating and coding the requirement.”  “[S]ome programmers find working in pairs very cumbersome and invasive, therefore they do not embrace the XP methodology.” S1Software Quality

Where are we now?  Many development methodologies have been proposed  Each tends to gather a number of zealots who:  advocate application of the methodology under all circumstances  spend significant time ‘proving’ the methodology works under all circumstances.  Architects originally stated that all practices must be carried out:  each supports the others  if you omit some, there will be gaps in the process  The current wisdom is that no one approach is guaranteed to be effective in all cases  Each organisation must tailor a development process suitable for its specific contexts  ‘Agile’ has morphed to mean ‘flexible’  When the next ‘silver bullet’ arrives (as it surely will), you should ask ‘what is the evidence?’ S1Software Quality