LESSON 2 SE 2 Software Quality Management.pdf
Document Details
Uploaded by Deleted User
Full Transcript
LESSON 2: SOFTWARE DEPLOYMENT CS 17/L Software Engineering 2 Table of Content ▪ Introduction to Software Quality Management (SQM) ▪ Quality Assurance (QA) and Quality Control (QC) in SQM ▪ Software Quality Standards and Metrics ▪ Analyzing and Evaluating S...
LESSON 2: SOFTWARE DEPLOYMENT CS 17/L Software Engineering 2 Table of Content ▪ Introduction to Software Quality Management (SQM) ▪ Quality Assurance (QA) and Quality Control (QC) in SQM ▪ Software Quality Standards and Metrics ▪ Analyzing and Evaluating Software Quality Management Processes ▪ Conclusion Learning Objectives: 1. Understand the foundational principles and practices of Software Quality Management (SQM) 2. Identify and apply various software quality standards and metrics 3. Analyze and evaluate software quality management processes ______________________________________________________________________________ Software Quality Management Software quality management is a systematic process of ensuring that software meets the highest standards in terms of functionality, reliability, and user satisfaction. It is a disciplined approach to overseeing and enhancing all aspects of software development, deployment, and maintenance to ensure the final product meets or exceeds user expectations. It encompasses processes, standards, and practices that focus on functionality, performance, reliability, and user satisfaction, ultimately creating high-quality software products. Software Quality Management (SQM) is the process of constant improvement of product quality, integrated into the development process until the expectations are achieved. Software quality management aims to create a working environment where quality is the responsibility of everyone on the team. Software quality management for software systems involves three main concerns: 1. Organizational Level: This focuses on establishing organizational processes and standards to ensure high-quality software. The quality management team is responsible for defining software development processes, standards for software and related documentation, such as system requirements, design, and code. 2. Project Level: Quality management at this level involves applying specific quality processes, ensuring adherence to planned processes, and verifying that project outputs meet the relevant standards. 3. Project Quality Plan: Quality management at the project level also includes creating a quality plan that outlines quality goals, processes, and standards to be used for the project. 1 The difference between quality assurance (QA) and quality control (QC) in the manufacturing industry: QA focuses on prevention. It is about establishing processes and standards that aim to ensure high-quality products are produced. This involves defining how things should be done to achieve quality throughout the manufacturing process. QC focuses on detection. It is about applying those defined quality processes to identify and remove products that do not meet the required quality standards. This is the "quality check" step where faulty products are caught and discarded. Essentially, QA sets the stage for quality, while QC checks if the stage was successful. The assessment of software quality is a subjective process where the quality management team must use their judgment to decide if an acceptable level of quality has been achieved. The quality management team must consider whether the software is fit for its intended purpose. This involves answering questions about the system’s characteristics. For example: 1. Have programming and documentation standards been followed in the development process? 2. Has the software been properly tested? 3. Is the software sufficiently dependable to be put into use? 4. Is the performance of the software acceptable for normal use? 5. Is the software usable? 6. Is the software well-structured and understandable? Figure 1. Process-based quality in software quality management means focusing on the quality of the development processes themselves to ensure high-quality software. It is not just about the final product, but about how the product is created. 2 Software Quality. Software quality refers to the degree to which a software product meets the needs and expectations of its users and stakeholders. It encompasses various attributes like functionality, reliability, usability, performance, maintainability, and portability. Achieving high software quality is crucial for software success, as it directly impacts user satisfaction, business value, and project cost. Software Standards. Software standards provide a framework for achieving consistent and predictable quality across different software projects. They define guidelines, best practices, and requirements for various aspects of software development, including coding practices, documentation, testing, and deployment. Adhering to standards helps to reduce errors, improve maintainability, and enhance communication among team members. The importance of software standards for three key reasons: 1. Knowledge Preservation: Standards act as a repository of valuable knowledge and best practices accumulated within an organization. This knowledge, often gained through trial and error, is captured in standards to ensure its reuse, and prevent past mistakes from being repeated. 2. Defining Quality: Software quality is subjective, meaning it can vary based on context and user needs. Standards provide a framework for defining what "quality" means for a particular project or organization. This framework helps establish a clear benchmark for evaluating whether the desired level of quality has been achieved, ensuring the software meets user expectations for dependability, usability, and performance. 3. Continuity and Consistency: Standards promote continuity and consistency in software development processes, especially when projects involve multiple engineers. By ensuring everyone adheres to the same practices, standards reduce the learning curve for new team members and facilitate smooth knowledge transfer, leading to more efficient and collaborative development. There are two related types of software engineering standard that may be defined and used in software quality management: 1. Product standards. These apply to the software product being developed. They include document standards, such as the structure of requirements documents, documentation standards, such as a standard comment header for an object class definition, and coding standards, which define how a programming language should be used. 3 2. Process standards. These define the processes that should be followed during software development. They should encapsulate good development practice. Process standards may include definitions of specification, design and validation processes, process support tools, and a description of the documents that should be written during these processes. Figure 2. Product Process and Standards Product processes in software development refer to the structured steps and procedures followed throughout the software lifecycle. These processes encompass activities like: Requirement Gathering: Defining the software's purpose, functionalities, and user needs. Design: Creating the software architecture, user interface, and data structures. Development: Writing the code, implementing features, and integrating components. Testing: Verifying the software's functionality, performance, and security. Deployment: Releasing the software to users and managing updates. Maintenance: Addressing bugs, enhancing features, and providing ongoing support. Product standards in software development are guidelines, specifications, or requirements that define the acceptable characteristics of the software. These standards can be: Industry-Specific: Established by organizations like ISO, IEEE, or NIST to ensure compliance with best practices and safety regulations. Company-Specific: Defined by individual organizations to reflect their unique quality expectations and development methodologies. Project-Specific: Tailored to the specific requirements of a particular software project, considering its target audience, functionalities, and technical constraints. Reviews and Inspections. Reviews and inspections are formal processes used to identify and address potential defects in software products. They involve a team of reviewers examining the software artifacts, such as code, design documents, or test cases, to identify any deviations from standards or potential issues. 4 Three-phase process for conducting software reviews, designed to ensure quality and identify potential issues early in the development cycle: 1. Pre-review Activities: This phase focuses on preparation and planning. A review team is assembled, a meeting time and place are set, and the documents to be reviewed are distributed. Team members independently read and understand the software or documents, comparing them to relevant standards and identifying potential errors, omissions, or deviations. Written comments can be submitted if reviewers cannot attend the meeting. 2. Review Meeting: During the meeting, the author of the document or code 'walks through' the material with the review team. The meeting is kept concise (ideally under two hours). A designated chair leads the discussion, ensuring all written comments are addressed, and a team member formally records decisions and actions. 3. Post-review Activities: Following the meeting, the identified issues and problems are addressed. This may involve fixing bugs, refactoring code to meet standards, or rewriting documents. If issues are significant, a management review may be required to determine resource allocation for corrections. The review chair verifies that all comments are addressed, and sometimes a follow-up review is conducted to ensure the changes made cover all the initial concerns. Software Measurement and Metrics. Software measurement involves quantifying various aspects of software quality to track progress, identify areas for improvement, and make informed decisions. Metrics provide objective data that can be used to assess the effectiveness of quality management practices. Common software metrics: Defect density: Number of defects per line of code. Code complexity: Measures the complexity of the codebase. Test coverage: Percentage of code covered by tests. Time to resolve defects: Time taken to fix defects. Customer satisfaction: Measures user satisfaction with the software. There are two ways in which measurements of a software system may be used: 1. Assessing Overall Quality: By measuring specific characteristics of individual components (like cyclomatic complexity, which indicates code complexity), and aggregating these measurements, you can assess overall system quality attributes, such as maintainability. This gives a holistic view of the system's quality. 2. Identifying Problem Areas: Measurements can also pinpoint specific components that deviate from the norm, indicating potential quality issues. For instance, identifying components with high complexity can highlight areas more likely to contain bugs due to their inherent difficulty to understand and maintain. This allows for targeted improvement efforts. In essence, software measurements can be used both to evaluate the overall quality of a system and to identify specific components that require attention to improve overall quality. 5 Key Points: ▪ Software quality management is concerned with ensuring that software has a low number of defects and that it reaches the required standards of maintainability, reliability, portability, and so on. It includes defining standards for processes and products and establishing processes to check that these standards have been followed. ▪ Software standards are important for quality assurance as they represent an identification of ‘best practice’. When developing software, standards provide a solid foundation for building good quality software. ▪ You should document a set of quality assurance procedures in an organizational quality manual. This may be based on the generic model for a quality manual suggested in the ISO 9001 standard. ▪ Reviews of the software process deliverables involve a team of people who check that quality standards are being followed. Reviews are the most widely used technique for assessing quality. ▪ In a program inspection or peer review, a small team systematically checks the code. They read the code in detail and look for possible errors and omissions. The problems detected are then discussed at a code review meeting. Conclusion: Software quality management is a critical aspect of software development that directly impacts user satisfaction, business value, and project success. By understanding the principles of software quality, adopting relevant standards, implementing effective reviews and inspections, and utilizing appropriate metrics, software development teams can ensure the delivery of high-quality software products that meet the needs and expectations of their users. 6