Software Quality Lecture Notes PDF

Summary

This document provides an overview of software quality concepts. It explores different aspects of software quality assurance (SQA), including software quality factors, code reusability, and documentation. The material delves into software quality attributes like reliability and performance, and it also introduces software development life cycle (SDLC) models.

Full Transcript

5CS019 – Object-Oriented Programming and Design WEEK 5 – Software Quality LET’S GET STARTED WITH LECTURE Revision Topics Software Testing Types of software testing Test Driven Approach 1. Introduction to Software Quality 2.Importance of Software Introd...

5CS019 – Object-Oriented Programming and Design WEEK 5 – Software Quality LET’S GET STARTED WITH LECTURE Revision Topics Software Testing Types of software testing Test Driven Approach 1. Introduction to Software Quality 2.Importance of Software Introduction to Software Quality Quality 2.1 Impact of Poor Quality 2.2. Benefits of High Software Quality refers to the capability of a software Quality 3.Software Quality Factors product to meet functional and non-functional 4. Software Quality in Java requirements, ensuring stakeholder satisfaction and 4.1. Writing Clean Code 4.2. Code Reusability and error-free operation. Modularity 5.Common Software Quality Standards It is very important to maintain the software quality 6.Software Quality and because every individual or every company are Documentation 6.1. Self-documenting always willing to use the best system. Code 6.2. Javadoc Comments 7.Software Quality “Quality is not just a feature; it is the foundation of Assurance (SQA) successful software”. 8. SQA Activities 9. SQA Techniques 4 1. Introduction to Software Quality 2.Importance of Importance of Software Software Quality Quality 2.1 Impact of Poor Quality Impact of Poor Quality: 2.2. Benefits of High Quality Higher maintenance costs. 3.Software Quality Factors 4. Software Quality in Java 4.1. Writing Clean Code Increased risk of failures and downtime. 4.2. Code Reusability and Modularity Poor user satisfaction and reputation loss. 5.Common Software Quality Standards 6.Software Quality and Documentation 6.1. Self-documenting Code 6.2. Javadoc Comments 7.Software Quality Assurance (SQA) 8. SQA Activities 6 1. Introduction to Software Quality 2.Importance of Importance of Software Software Quality Quality 2.1 Impact of Poor Quality 2.2. Benefits of High Benefits of High Quality: Quality 3.Software Quality Factors Reliable and robust systems. 4. Software Quality in Java 4.1. Writing Clean Code 4.2. Code Reusability and Easier debugging and modification. Modularity 5.Common Software Scalability and adaptability. Quality Standards 6.Software Quality and Minimizes Bugs and reduce technical debt. Documentation 6.1. Self-documenting Code 6.2. Javadoc Comments 7.Software Quality Assurance (SQA) 8. SQA Activities 9. SQA Techniques 7 1. Introduction to Software Quality 2.Importance of Software Software Quality Quality Factors/Attributes 2.1 Impact of Poor Quality 2.2. Benefits of High Quality 3.Software Quality Factors 4. Software Quality in Java 4.1. Writing Clean Code 4.2. Code Reusability and Modularity 5.Common Software Quality Standards 6.Software Quality and Documentation 6.1. Self-documenting Code 6.2. Javadoc Comments 7.Software Quality Assurance (SQA) 8. SQA Activities 8 1. Introduction to Software Quality 2.Importance of Software Software Quality Quality Factors/Attributes 2.1 Impact of Poor Quality 2.2. Benefits of High Functionality: Quality 3.Software Quality The first form the list of software quality attributes we Factors will be focusing on is functionality. 4. Software Quality in Java 4.1. Writing Clean Code This attribute determines the conformity of a software- 4.2. Code Reusability and Modularity driven system with the defined requirements and 5.Common Software Quality Standards specifications. 6.Software Quality and Documentation Performance: 6.1. Self-documenting Code Measures how quickly the software responds to user 6.2. Javadoc Comments 7.Software Quality actions and handles computational tasks under specific Assurance (SQA) 8. SQA Activities conditions. 9 1. Introduction to Software Quality 2.Importance of Software Software Quality Quality Factors/Attributes 2.1 Impact of Poor Quality 2.2. Benefits of High Reliability: Quality 3.Software Quality Describes the software’s ability to operate without Factors failure under specified conditions for a designated 4. Software Quality in Java 4.1. Writing Clean Code period. 4.2. Code Reusability and Modularity Reliability ensures that the software is stable and 5.Common Software Quality Standards predictable, with minimal downtime or unexpected 6.Software Quality and Documentation behaviour. Testability: 6.1. Self-documenting Code Indicates how easily software can be tested to identify 6.2. Javadoc Comments 7.Software Quality defects or verify its correctness. Assurance (SQA) 8. SQA Activities 10 1. Introduction to Software Quality 2.Importance of Software Software Quality Quality Factors/Attributes 2.1 Impact of Poor Quality 2.2. Benefits of High Availability: Quality The readiness of the software to be operational and 3.Software Quality Factors accessible whenever required, minimizing downtime. 4. Software Quality in Java 4.1. Writing Clean Code 4.2. Code Reusability and Interoperability: Modularity 5.Common Software The ability of the software to interact and exchange Quality Standards 6.Software Quality and information with other systems seamlessly. Documentation 6.1. Self-documenting Security: Code 6.2. Javadoc Comments Ensures the software protects against unauthorized 7.Software Quality Assurance (SQA) access, data breaches, and other vulnerabilities. 8. SQA Activities 11 1. Introduction to Software Quality 2.Importance of Software Software Quality Quality Factors/Attributes 2.1 Impact of Poor Quality 2.2. Benefits of High Flexibility: Quality Refers to the software’s ability to adapt to changing 3.Software Quality Factors requirements or environments with minimal impact on 4. Software Quality in Java 4.1. Writing Clean Code functionality. 4.2. Code Reusability and Efficiency: Modularity 5.Common Software Quality Standards The optimal use of system resources such as memory, 6.Software Quality and CPU, and storage to deliver high performance. Documentation 6.1. Self-documenting Usability: Code 6.2. Javadoc Comments Indicates how intuitive and user-friendly the software 7.Software Quality Assurance (SQA) is, focusing on ease of learning, navigation, and 8. SQA Activities 12 1. Introduction to Software Quality 2.Importance of Software Software Quality in Java Quality 2.1 Impact of Poor Quality Writing Clean Code: 2.2. Benefits of High Quality Why it matters: 3.Software Quality Factors 4. Software Quality in ○ Readable, clean code is easier to understand, Java 4.1. Writing Clean Code debug, and maintain. 4.2. Code Reusability and Best Practices: Modularity 5.Common Software ○ Naming Conventions: Use descriptive names Quality Standards 6.Software Quality and (e.g.,calculateInvoiceTotal() instead of calc()). Documentation ○ Code Formatting: Follow consistent indentation 6.1. Self-documenting Code and spacing; use IDE auto-formatting tools. 6.2. Javadoc Comments 7.Software Quality ○ Consistency: Apply Java naming conventions Assurance (SQA) 8. SQA Activities (e.g., CamelCase for13 classes, camelCase for 1. Introduction to Software Quality 2.Importance of Software Software Quality in Java Quality 2.1 Impact of Poor Quality Code Reusability and Modularity: 2.2. Benefits of High Quality Reusability: 3.Software Quality Factors 4. Software Quality in ○ Break functionality into reusable methods and Java 4.1. Writing Clean Code classes to avoid duplication. 4.2. Code Reusability ○ Example: Utility classes for common tasks (e.g., and Modularity 5.Common Software FileUtils ). Quality Standards 6.Software Quality and Modularity: Documentation 6.1. Self-documenting ○ Divide code into independent modules to reduce Code 6.2. Javadoc Comments dependencies and improve testability. 7.Software Quality ○ Example: Logical package organization like Assurance (SQA) 8. SQA Activities com.example.services. 14 1. Introduction to Software Common Software Quality Quality 2.Importance of Software Standards Quality Static Code Analysis: 2.1 Impact of Poor Quality Use tools like Checkstyle (style checks) and 2.2. Benefits of High Quality SonarQube (Code quality). 3.Software Quality Factors 4. Software Quality in Java Benefits: Automatically enforces standards and 4.1. Writing Clean Code 4.2. Code Reusability and identifies bugs early. Modularity Code Reviews: 5.Common Software Quality Standards Why: Peer reviews catch bugs, enforce standards, and 6.Software Quality and Documentation promote knowledge sharing. 6.1. Self-documenting Code How: 6.2. Javadoc Comments ○ Use GitHub or GitLab for collaborative review. 7.Software Quality Assurance (SQA) ○ Provide constructive feedback focusing on 8. SQA Activities 15 1. Introduction to Software Quality 2.Importance of Software Software Quality and Quality Documentation 2.1 Impact of Poor Quality Self-Documenting Code: 2.2. Benefits of High Quality Definition: 3.Software Quality Factors 4. Software Quality in Java ○ Code that is so clear and well-organized that it is 4.1. Writing Clean Code 4.2. Code Reusability and understandable without excessive comments. Modularity 5.Common Software Best Practices: Quality Standards 6.Software Quality and ○ Use meaningful names for methods and variables. Documentation 6.1. Self-documenting ○ Keep methods small and focused to avoid cluttered Code 6.2. Javadoc Comments logic. 7.Software Quality Assurance (SQA) ○ Use clear structure and follow coding standards. 8. SQA Activities 9. SQA Techniques 16 1. Introduction to Software Quality 2.Importance of Software Software Quality and Quality Documentation 2.1 Impact of Poor Quality Javadoc Comments: 2.2. Benefits of High Quality Definition: 3.Software Quality Factors 4. Software Quality in Java ○ Structured comments that describe the purpose, 4.1. Writing Clean Code 4.2. Code Reusability and parameters, and return values of methods, classes, Modularity and fields. 5.Common Software Quality Standards Why It Matters: 6.Software Quality and Documentation ○ Essential for public APIs and projects with large 6.1. Self-documenting Code teams. 6.2. Javadoc Comments ○ Automatically generates documentation from 7.Software Quality Assurance (SQA) code. 8. SQA Activities 9. SQA Techniques 17 1. Introduction to Software Quality 2.Importance of Software Software Quality and Quality Documentation 2.1 Impact of Poor Quality Javadoc Comments: 2.2. Benefits of High Quality How to Write: 3.Software Quality Factors 4. Software Quality in Java 4.1. Writing Clean Code 4.2. Code Reusability and Modularity 5.Common Software Quality Standards 6.Software Quality and Documentation 6.1. Self-documenting Code 6.2. Javadoc Comments 7.Software Quality Assurance (SQA) 8. SQA Activities 9. SQA Techniques 18 1. Introduction to Software Quality 2.Importance of Software Software Quality Assurance Quality (SQA) 2.1 Impact of Poor Quality 2.2. Benefits of High Definition: Quality 3.Software Quality Factors Software Quality Assurance (SQA) is a set of activities 4. Software Quality in Java 4.1. Writing Clean Code designed to ensure that software meets quality 4.2. Code Reusability and standards and is free from defects. Modularity 5.Common Software SQA ensures that the software is developed according Quality Standards 6.Software Quality and to predefined requirements, processes, and standards. Documentation 6.1. Self-documenting Code 6.2. Javadoc Comments 7.Software Quality Assurance (SQA) 8. SQA Activities 9. SQA Techniques 19 1. Introduction to Software Quality 2.Importance of Software Software Quality Assurance Quality (SQA) 2.1 Impact of Poor Quality 2.2. Benefits of High Advantages: Quality 3.Software Quality Factors Increases Client’s Confidence 4. Software Quality in Java 4.1. Writing Clean Code SQA Saves Money 4.2. Code Reusability and Boost Customer Satisfaction Modularity 5.Common Software Promotes Productivity and Efficiency Quality Standards 6.Software Quality and Prevents from Unforeseen Emergencies Documentation 6.1. Self-documenting Reduces End Time Client Conflicts Code 6.2. Javadoc Comments 7.Software Quality Assurance (SQA) 8. SQA Activities 9. SQA Techniques 20 1. Introduction to Software Quality 2.Importance of Software Software Quality Assurance Quality (SQA) 2.1 Impact of Poor Quality 2.2. Benefits of High Quality 3.Software Quality Factors 4. Software Quality in Java 4.1. Writing Clean Code 4.2. Code Reusability and Modularity 5.Common Software Quality Standards 6.Software Quality and Documentation 6.1. Self-documenting Code 6.2. Javadoc Comments 7.Software Quality Assurance (SQA) 8. SQA Activities 9. SQA Techniques 21 1. Introduction to Software Quality 2.Importance of Software Software Quality Assurance Quality Activities 2.1 Impact of Poor Quality 2.2. Benefits of High Setting the Checkpoint: Quality 3.Software Quality Factors Regularly check software progress, quality, and 4. Software Quality in Java performance at specific intervals. 4.1. Writing Clean Code 4.2. Code Reusability and Ensure tasks are on track and completed as planned. Modularity 5.Common Software Quality Standards Measure Change Impact: 6.Software Quality and Documentation When a defect is fixed, test it again to ensure it works 6.1. Self-documenting Code and doesn’t create new issues. 6.2. Javadoc Comments Use metrics to track any new problems caused by fixes 7.Software Quality Assurance (SQA) or updates. 8. SQA Activities 9. SQA Techniques 22 1. Introduction to Software Quality 2.Importance of Software Software Quality Assurance Quality Activities 2.1 Impact of Poor Quality 2.2. Benefits of High Having Multiple Testing Strategies Quality 3.Software Quality Factors Don’t depend on one type of testing. 4. Software Quality in Java Use various tests (e.g., security, performance, load, 4.1. Writing Clean Code 4.2. Code Reusability and database) to cover all aspects of the software. Modularity 5.Common Software Quality Standards Maintaining Records and Reports: 6.Software Quality and Documentation Keep a record of all testing activities, such as test 6.1. Self-documenting Code cases, defects, fixes, and client changes. 6.2. Javadoc Comments Share these documents with stakeholders for 7.Software Quality Assurance (SQA) transparency and future reference. 8. SQA Activities 9. SQA Techniques 23 1. Introduction to Software Quality 2.Importance of Software Software Quality Assurance Quality Activities 2.1 Impact of Poor Quality 2.2. Benefits of High Managing Good Relations Quality 3.Software Quality Factors Build good teamwork between developers and testers 4. Software Quality in Java despite their different roles. 4.1. Writing Clean Code 4.2. Code Reusability and Focus on the common goal: delivering high-quality Modularity 5.Common Software software with minimal risks. Quality Standards 6.Software Quality and SQA Management Plan Documentation 6.1. Self-documenting Code Plan how SQA activities will be handled in the past. 6.2. Javadoc Comments Decide strategies, processes, and roles based on 7.Software Quality Assurance (SQA) project needs and team strengths. 8. SQA Activities 9. SQA Techniques 24 1. Introduction to Software Quality 2.Importance of Software Software Quality Assurance Quality Techniques 2.1 Impact of Poor Quality 2.2. Benefits of High Reviewing Quality 3.Software Quality Factors A team of stakeholders reviews the project to find 4. Software Quality in Java issues in requirements, design, or development. 4.1. Writing Clean Code 4.2. Code Reusability and Ensures the software meets customer expectations and Modularity 5.Common Software quality standards. Quality Standards 6.Software Quality and Auditing Documentation 6.1. Self-documenting Code Stakeholders inspect work products and date to ensure 6.2. Javadoc Comments standard processes are followed. 7.Software Quality Assurance (SQA) Verifies compliance with organisational and project 8. SQA Activities 9. SQA Techniques standards. 25 1. Introduction to Software Quality 2.Importance of Software Software Quality Assurance Quality Techniques 2.1 Impact of Poor Quality 2.2. Benefits of High Functional Testing Quality 3.Software Quality Factors Tests whether the software functions as expected 4. Software Quality in Java without checking its internal workings. 4.1. Writing Clean Code 4.2. Code Reusability and Focuses on “what the system does,” not “how it works” Modularity 5.Common Software (Black-box testing). Quality Standards 6.Software Quality and Standardization Documentation 6.1. Self-documenting Code Ensures all process and outputs follow agreed-upon 6.2. Javadoc Comments standards. 7.Software Quality Assurance (SQA) Reduces confusion and improves overall software 8. SQA Activities 9. SQA Techniques quality. 26 1. Introduction to Software Quality 2.Importance of Software Software Quality Assurance Quality Techniques 2.1 Impact of Poor Quality 2.2. Benefits of High Code Inspection Quality 3.Software Quality Factors A formal review led by a trained Moderator to find 4. Software Quality in Java defects in the code. 4.1. Writing Clean Code 4.2. Code Reusability and Requires team preparation and follows structured entry Modularity 5.Common Software and exit rules. Quality Standards 6.Software Quality and Stress Testing Documentation 6.1. Self-documenting Code Tests the software’s performance under heavy load to 6.2. Javadoc Comments find its limits. 7.Software Quality Assurance (SQA) Ensures the system can handle a high number of users 8. SQA Activities 9. SQA Techniques without failure. 27 1. Introduction to Software Quality 2.Importance of Software Software Quality Assurance Quality Standards 2.1 Impact of Poor Quality 2.2. Benefits of High Various national and international organizations contribute Quality 3.Software Quality Factors to developing SQA standards, including: 4. Software Quality in Java IEEE (Institute of Electrical and Electronics Engineers) 4.1. Writing Clean Code 4.2. Code Reusability and DOT (Department of Transportation) Modularity 5.Common Software ISO (International Organization for Standardization) Quality Standards 6.Software Quality and ANSI (American National Standards Institute) Documentation 6.1. Self-documenting EIA (Electronic Industries Alliance) Code IEC (International Electrotechnical Commission) 6.2. Javadoc Comments 7.Software Quality Assurance (SQA) 8. SQA Activities 9. SQA Techniques 28 1. Introduction to Software Quality 2.Importance of Software Software Quality Assurance Quality (SQA) 2.1 Impact of Poor Quality 2.2. Benefits of High Disadvantages/Limitations of SQA: Quality 3.Software Quality Factors Sometimes Difficult to Implement 4. Software Quality in Java 4.1. Writing Clean Code Time Consuming 4.2. Code Reusability and High Cost Modularity 5.Common Software Quality Standards 6.Software Quality and Documentation 6.1. Self-documenting Code 6.2. Javadoc Comments 7.Software Quality Assurance (SQA) 8. SQA Activities 9. SQA Techniques 29 12. Introduction to SDLC 13. Phases of SDLC 14. Software Development Software Development Life Cycle Models (SDLC) 14.1. Waterfall Model 14.2. Incremental Model Introduction 14.3. Prototype Model 14.4. Spiral Model Software Development Life Cycle is a methodology used to develop,maintain, and replace information systems. It is a systematic process of developing any system. It defines the entire procedure of software development step-by-step. Purpose: Ensures software meets quality standards, is delivered 30 12. Introduction to SDLC 13. Phases of SDLC 14. Software Development Software Development Life Models Cycle 14.1. Waterfall Model 14.2. Incremental Model 14.3. Prototype Model 14.4. Spiral Model 31 12. Introduction to SDLC 13. Phases of SDLC 14. Software Development Phases of SDLC Models 14.1. Waterfall Model 14.2. Incremental Model Planning 14.3. Prototype Model 14.4. Spiral Model Develops a project Management plan and other planning documents. Provides the basis for acquiring the resources needed to achieve a solution. Requirement Analysis Analyzes user needs and develops user requirements. Creates Detailed functional requirements documents. 32 12. Introduction to SDLC 13. Phases of SDLC 14. Software Development Phases of SDLC Models 14.1. Waterfall Model Design 14.2. Incremental Model 14.3. Prototype Model Transforms detailed requirements into complete, 14.4. Spiral Model detailed system design document. Focuses on how to deliver the required functionality. Development Converts a design into a complete information system. Includes acquiring and installing systems environment; creating and testing databases/preparing test case procedures, preparing test files; coding, compiling, refining programs and performing 33 test readiness 12. Introduction to SDLC 13. Phases of SDLC 14. Software Development Phases of SDLC Models 14.1. Waterfall Model Integration and Test 14.2. Incremental Model 14.3. Prototype Model Demonstrates that the developed system conforms to 14.4. Spiral Model requirements as specified in the functional requirements Documents. Conducted by Quality Assurance staff and users. Produces Test Analysis Reports. Maintenance Describes tasks to operate and maintain information systems in a production environment, includes post implementation and in-process reviews 34 12. Introduction to SDLC 13. Phases of SDLC 14. Software Software Development Models Development Models 14.1. Waterfall Model 14.2. Incremental Model 14.3. Prototype Model 14.4. Spiral Model 35 12. Introduction to SDLC 13. Phases of SDLC 14. Software Waterfall Model Development Models 14.1. Waterfall Model Introduction 14.2. Incremental Model 14.3. Prototype Model It is a traditional and sequential approach where each 14.4. Spiral Model phase of the software development lifecycle (SDLC) is completed before moving to the next. Use Cases Small projects with well-defined and static requirements. Projects where outcomes are predictable, like building internal tools. 36 12. Introduction to SDLC 13. Phases of SDLC 14. Software Waterfall Model Development Models 14.1. Waterfall Model 14.2. Incremental Model 14.3. Prototype Model 14.4. Spiral Model 37 12. Introduction to SDLC 13. Phases of SDLC 14. Software Incremental Development Model Development Models 14.1. Waterfall Model Introduction 14.2. Incremental Model 14.3. Prototype Model If divides the development process into small, 14.4. Spiral Model manageable increments. Each increment delivers a part of the functionality and is built upon previous increments. Use Cases Projects where early delivery is important, such as Minimum Viable Products (MVPs). Projects with requirements that are expected to evolve over time, like or web applications. 38 12. Introduction to SDLC 13. Phases of SDLC 14. Software Incremental Development Development Models Models 14.1. Waterfall Model 14.2. Incremental Model 14.3. Prototype Model 14.4. Spiral Model 39 12. Introduction to SDLC 13. Phases of SDLC 14. Software Prototype Model Development Models 14.1. Waterfall Model Introduction 14.2. Incremental Model 14.3. Prototype Model It emphasizes building a prototype (a working mock- 14.4. Spiral Model up) to gather user feedback and refine requirements before developing the actual software. Use Cases Projects with uncertain or unclear requirements, such as research-based projects. Applications requiring a highly user-centric design, like UI/UX heavy applications. 40 12. Introduction to SDLC 13. Phases of SDLC 14. Software Prototype Models Development Models 14.1. Waterfall Model 14.2. Incremental Model 14.3. Prototype Model 14.4. Spiral Model 41 12. Introduction to SDLC 13. Phases of SDLC 14. Software Spiral Model Development Models 14.1. Waterfall Model Introduction 14.2. Incremental Model 14.3. Prototype Model It combines iterative development with systematic risk 14.4. Spiral Model management. It involves repeated cycles, each consisting of planning, risk analysis, engineering, and evaluation. Use Cases Large, high-risk projects like critical software systems (e.g., banking, aerospace). Complex projects with changing or unclear requirements. 42 12. Introduction to SDLC 13. Phases of SDLC 14. Software Spiral Models Development Models 14.1. Waterfall Model 14.2. Incremental Model 14.3. Prototype Model 14.4. Spiral Model 15. Challenges in these models 43 12. Introduction to SDLC 13. Phases of SDLC 14. Software Development Challenges of these Model Models 14.1. Waterfall Model Waterfall Model 14.2. Incremental Model 14.3. Prototype Model Hard to adapt to changes after a phase is completed. 14.4. Spiral Model 15. Challenges of these Incremental Model Models Integrating new increments with existing components can become complex. Prototype Model Users may misunderstand the prototype as the final product, leading to unrealistic expectations. Spiral Model Expensive and requires skilled expertise to perform detailed risk analysis effectively. 44

Use Quizgecko on...
Browser
Browser