Software Quality Engineering Lecture 1 PDF

Summary

This document is a lecture on software quality engineering, covering basic concepts, definitions, and the importance of quality assurance in software development.

Full Transcript

Software Quality Engineering Lecture 1 Contents Lecture Contents: 1. Basic Concepts and Definitions 2. Background 1. Basic Concepts and Definitions What is Quality Where is Quality ? ? Activity Which car is a Quality...

Software Quality Engineering Lecture 1 Contents Lecture Contents: 1. Basic Concepts and Definitions 2. Background 1. Basic Concepts and Definitions What is Quality Where is Quality ? ? Activity Which car is a Quality car ? 1. Basic Concepts and Definitions Dilemma about Quality: Is Quality an Objective thing ? Can we measure it using scientific instruments ? Can we detect it ? Is Quality a Subjective thing ? Is it a feeling ? Is it an emotion ? 1. Basic Concepts and Definitions How Quality is perceived (concluded by David Garvin) “Quality” is a complex and multifaceted concept that can be described from different perspectives : The Transcendental View sees quality as something that can be recognized but not defined The User View sees quality as fitness for purpose The Manufacturing View sees quality as conformance to specification The Product View sees quality as tied to inherent characteristics of the product The Value-Based View sees quality as dependent on the amount a customer is willing to pay for it 1. Basic Concepts and Definitions Arriving at Definition of Quality: Relevant views : 1: User View : Quality as fitness for purpose or customer satisfaction 2: Manufacturing View : Quality as conformance to specifications 1. Basic Concepts and Definitions Arriving at Definition of Quality: Relevant views : 1: The User View sees quality as fitness for purpose or customer satisfaction (held by Juran) Fulfillment of Customer needs and achieving Customer Satisfaction is true goal of Quality Deficiency of following only this view: It frees Customer of any professional responsibility for accuracy and completeness of Specifications Needs may change at later or even final stage of Development. How to deal with it ? 1. Basic Concepts and Definitions Arriving at Definition of Quality: Relevant views (Contd) : 2: The Manufacturing View sees quality as conformance to specification (held by Crosby and Standards Organizations) Quality refers to degree to which product meets specifications prepared by Customer / Professional team Deficiency of following only this view: It means that Errors included in Specifications do not reduce Quality ‘Quality’ products may not satisfy the customers and solve their problems 1. Basic Concepts and Definitions Definition of Quality: IEEE Standard Glossary of Software Engineering Terminology gives a concise definition of Quality as: “The degree to which a system, component, or process meets a) specified requirements b) customer or user needs or expectations” Summary of above statement: - Conformance to Requirements - Fitness of use 1. Basic Concepts and Definitions Conformance to Requirements: Conformance to requirements implies that requirements must be clearly stated. Then in the development/manufacturing process measurement are taken to determine conformance to those requirements. The non-conformances are regarded as defects- the absence of quality. Fitness for Use: The fitness for use takes customers’ requirements and expectations into account which determines whether the product fit their uses. The two most important parameters of fitness for use are : a) Quality of Design- determination of requirements b) Quality of Conformance- conformance to requirements 1. Basic Concepts and Definitions From Quality to Software Quality: Moving from General to Specific The composite of all attributes which describe the degree of excellence of the computer system – (“Definitions in Software Quality Management” By Fisher and Light) The degree to which a software product possesses a specified set of attributes necessary to fulfill a stated purpose (“State of the Art in Software Quality Management” By Donald Reifer and “A Software Quality Framework” By Fisher and Baker) Conformance to Software Requirements (extended definition from “Quality is free” By Phillip Crosby) 1. Basic Concepts and Definitions Arriving at Definition of Software Quality: Problem ? What are Requirements ? Where are Requirements ? Are they Technical Requirements ? Are they Contractual Requirements ? Software Quality has inconsistencies regarding the Requirements that need to be conformed to. 1. Basic Concepts and Definitions Software Quality: “… that Software Quality is more likely to be attained by giving much greater emphasis to customer satisfaction….” (summary of opinions of Humphrey, Denning and Dromey) Definition of Software Quality: “Software quality is the fitness for use of the software product ” 1. Basic Concepts and Definitions What is Quality composed of ?: Quality Attribute: The basic building block on which fitness for use is build is the Quality Characteristic. Any feature (property, attribute, etc.) of the products, materials, or processes which is needed to achieve fitness for us is a Quality Characteristic 1. Basic Concepts and Definitions Software Quality Assurance: “SQA is a planned and systematic pattern of all actions necessary to provide adequate confidence that an item or product conforms to established technical requirements“ - IEEE Glossary “Unlike hardware systems, software is not subject to wear or breakage: its usefulness remains unchanged from its condition at delivery. SQA is systematic effort to improve delivery condition - James Dobbins “SQA is functional entity performing software quality assessment and measurement“ - Fisher and Baker 1. Basic Concepts and Definitions Software Quality Assurance: “Software Quality must be built into the product through the use of process that has Quality built in. Then SQA must be an aspect of all development and maintenance activities” - Robert Dunn “SQA involves both process and product assurance. The basic charter of SQA is thus to assure that software projects fulfill their commitments to both process and product - Richard Fairley 1. Basic Concepts and Definitions Definition of Software Quality Assurance: “Software Quality Assurance is the set of systematic activities providing evidence of the ability of the software process to produce a software product that is fit to use.” “SQA is defined as a group of related activities employed throughout the software lifecycle to positively influence and quantify the quality of the delivered software.“ 2. Background What SQA consists of: Quality Control (Downstream Activities): Quality Evaluation: The procedures applied after the development process has come to an end to determine whether the product conforms to the requirements. Example: Post implementation Testing Quality Control (Upstream Activities): Quality Control: Occasional/Systematic checking procedures throughout the development process to determine whether the product is being developed according to the specified requirements Example: Reviews and Inspections 2. Background Process Quality: Concept: The quality of a product is largely determined by the quality of the process that is used to develop and maintain it Quality Assurance: Software Quality Assurance insures: Proper Process is defined catering the needs of the organization Process should be standardized Process should include good practices/guidelines of industry Implementation of the Approved Process Process monitoring Process Audit 2. Background SQA- The Envelope Activity: The SQA process ensures that proper and effective procedures are applied throughout the development process to continuously check the quality of the product as well as evaluates it at the end of its development to quantify its quality and the quality of the development process Thus SQA not only ensures product quality but is a powerful means on evaluating and improving process quality SQE Software quality engineering (SQE) is the process of implementing quality checks throughout the entire development cycle. SQE plays a key role in ensuring fast-paced agile and DevOps teams produce high-quality software. When software quality engineering is integrated into workflows, it can improve agility, productivity, and ROI. What Is Quality Engineering? Quality engineering (QE) is a process that applies rigorous quality checks to each stage of product development. It does this through analysis, development, management, and maintenance of quality assurance (QA) protocols. QA is often continued after a product has been delivered. The goal of QE is to ensure the quality of a product from the beginning, minimizing potential losses caused by defects. QE is different from traditional quality control measures in that it is present throughout the production process. In traditional systems, quality is only checked in the final production stages. In comparison, traditional methods are inefficient and can lead to additional expenses and work. What Is Software Quality Engineering? Software quality engineering (SQE) is the application of QE practices to the software development lifecycle (SDLC). In software quality engineering, QE is closely integrated with existing agile and DevOps processes, as opposed to being added as a layer on top of existing workflows. This mirrors the shifted-left testing principles of DevSecOps teams and is intended to identify issues early on. In software quality engineering, engineers play a key role. Quality engineers design, implement, and maintain policies and procedures used to ensure the quality of development processes. This requires a thorough understanding of evaluation practices and technologies in use, including artificial intelligence (AI), big data analytics, and automation. Primary goals of software quality engineering Process control and oversight Implementing standards and metrics Data collection and analysis Test development Identification of issues and solutions Follow-up to ensure corrective actions Practices of Software Quality Engineering To ensure quality throughout the SDLC, you should follow several key standard practices of software quality engineering. Functional testing: Engineers evaluate user interfaces (UI) and APIs to ensure that design specifications are met. During the functional testing process, core functions are tested along with inputs, menus, and installation procedures. Peer review of code: Engineers should ensure that all source code is peer- reviewed. Peer review helps ensure that code is efficient and that logic is sound. It can also help developers learn from each other and improve collaboration. This is because a peer review of code requires clear communication of programming ideas and the reasoning behind implementation. Static code analysis: Static code analysis evaluates source code according to predefined standards. Engineers implement automated tools to perform static code analysis. Frequently, these tools can be integrated into integrated development environments (IDEs). These tools can then highlight quality issues for developers in real-time, promoting the adoption of higher-quality practices. Practices of Software Quality Engineering Unit testing: Unit testing is the process of checking code units (components, methods, or classes) against inputs to determine validity. Ideally, engineers automate these tests to be performed any time changes are made to code. User performance testing: User performance testing evaluates the speed of a product in a given environment. This testing can be done manually or automatically. It is designed to ensure that user experiences meet quality standards.

Use Quizgecko on...
Browser
Browser