Reading Assignment • Kshirasagar Naik and Priyadarshi Tripathy, Software Testing and Quality Assurance: Theory and Practice, 2008. • Chapter 17 Section 17.1
Objectives • A Deeper Understanding of Quality Assurance • Quality Assurance • What is software quality assurance (SQA).
Quality Assurance - Introduction • Quality can not be added to a piece of software after you have built it. • Quality must be built into the software from the beginning.
Quality Assurance - Introduction • Two sources of constraints that requires specialized methods: • Non-functional requirements that come from the client and their application domain. • Constraints that come from quality standards
Quality Assurance for Software Engineers • Quality is a ubiquitous concern in software engineering. • Achieving quality pervades • Software engineering processes, methods, and tools; and • One of the main aims of project managements.
Quality Assurance for Software Engineers • Quality products can • Increase market shares, • Provide long term profitability for companies; and • Poor quality can certainly have the opposite effect. • Yet, in spite of the focus on quality • It can be remarkably elusive to attain in actual software engineering projects.
Quality Assurance for Software Engineers • A reason for the concern with quality is the sheer complexity of many modern software systems. • For example, • Approx. 10 Mbytes of object code in an A320 airbus flight control system. • The aircraft has been described as • ‘aircraft wrapped around a network’.
Quality Assurance for Software Engineers • Complexity in software systems arises in a number of ways. • The large number of modules, concurrent processes, and diversity of platforms that must interact to achieve the aims and requirements of the system; and • The development of the product itself which is subject to changes in requirements, changes in personal and the ever present technological churn. The phrase means constantly changing technology used in implementing and engineering products.
What is software Quality? • The End-user’s Perspective • End-users judge the quality of a product by their interaction with it. • For users a system has quality if • It is fit for purpose, reliable and has reasonable performance, easy to learn and use. Sometime, if the functionality is hard to learn but is extremely important, then users will still judge the system to have high quality.
What is software Quality? • The Developer’s Perspective • Typically includes the number of faults • Ease of changing the system • Ease of testing the system • The nature of the design • Conformance to requirements; • Resource usage; and performance.
What is software Quality? • The Maintainer’s Perspective • Similar to developer’s perspective; but also includes • The simplicity and modularity of the system, • The documentation produced by the developers; and • The ease of understanding the implementation.
What is software Quality? • Software engineers need to choose • Processes, tools and techniques to monitor and control the quality of the software as it is being developed. • If we can not directly monitor the attributes, • We often need to monitor the quality of the processes, under the assumption that The quality of the process influences the quality of the product.
Software Quality Assurance (SQA) • SQA encompasses (1) a quality management approach, (2) effective software engineering technology (methods and tools), (3) formal technical reviews that are applied throughout the software process, (4) a multi-tiered testing strategy,
Software Quality Assurance (SQA) (5) control of software documentation and the changes made to it, (6) a procedure to ensure compliance with software development standards (when applicable), and (7) measurement and reporting mechanisms.
Software Quality • Software quality: • Conformance to explicitly stated requirements and standards • Quality assurance: • is the activity that leads to “fitness of purpose”. • Quality product: • is the one that does what the customer expects it to do. User satisfaction = compliant product + good quality + delivery within budget and schedule
Quality Concepts • Quality control: a series of inspections, reviews, and tests to ensure a product meets the requirements placed upon it. • Includes a feedback loop to the process that created the work product. • Quality control activities may be fully automated, entirely manual, or a combination of automated tools and human interaction.
Quality Concepts • Quality assurance: analysis, auditing and reporting activities. • provide management with the data necessary to be informed about product quality,
Software Quality Factors • Functionality, Usability, Reliability, Performance, and Supportability (FURPS) quality factors • Functionality: feature set, capabilities, generality of functions, and security • Usability: human factors like consistency, and documentation • Reliability: frequency and severity of failures, accuracy of outputs, mean time between failures, ability to recover, predictability
Software Quality Factors • Performance: • processing speed, response time, resource consumption, throughput, and efficiency • Supportability: • extensibility, adaptability, maintainability, testability, compatibility, configurability
Why SQA Activities Pay Off? cost to find and fix a defect 100 60.00-100.00 log scale 10.00 10 3.00 1.50 1.00 0.75 1 test Design field Req. use code system test
Key points • Quality must be built into the software from the beginning. • The evidence suggest that we cannot simply fix up our software post-hoc; and • Add in quality attributes after building the system. • Quality assurance: is the activity that leads to “fitness of purpose” • Major software quality factors: functionality, usability, reliability, performance, and supportability.