1. Quality Fundamentals Quality: The degree to which a set of inherent characteristics fulfills requirements. User satisfaction, fitness for purpose. Quality Assurance (QA): A set of activities designed to ensure that the development and maintenance processes are adequate for a system to meet its objectives. Process-oriented. Quality Control (QC): A set of activities designed to evaluate the quality of a developed or manufactured product. Product-oriented. QA vs. QC Feature Quality Assurance (QA) Quality Control (QC) Focus Process Product Goal Prevent defects Identify defects When During development After development/testing Example Process audits, training Testing, inspections 2. SQA Challenges Evolving requirements Tight deadlines and budget constraints Lack of skilled resources Complex system integrations Communication gaps Managing legacy systems Measuring and demonstrating ROI of SQA 3. SQA Planning & Standards SQA Plan: Document outlining SQA activities, roles, responsibilities, tools, and metrics. Key components: Purpose and Scope Reference Documents (e.g., project plan, requirements) Management (tasks, responsibilities) Documentation (standards, reviews) Standards, Practices, Conventions, Metrics Reviews and Audits Test Plan Problem Reporting and Corrective Action Tools, Technologies, and Methodologies ISO 9000 Series: International standards for quality management systems. ISO 9001: Specifies requirements for a quality management system (QMS) to demonstrate ability to consistently provide products and services that meet customer and regulatory requirements. Focuses on customer satisfaction, process approach, continuous improvement. 4. SQA Activities Defining SQA processes and procedures Reviewing and auditing software work products (requirements, design, code) Establishing and enforcing quality standards Conducting training for quality awareness Developing and executing test plans Managing configurations Analyzing and reporting quality metrics Implementing corrective and preventive actions 5. Building Blocks of SQA Software Engineering Standards: Adherence to industry best practices and organizational standards. Formal Technical Reviews: Peer reviews of work products (e.g., walkthroughs, inspections). Software Testing: Verification and validation activities. Change Management: Controlling changes to requirements, design, and code. Configuration Management: Managing versions of software artifacts. Measurement & Reporting: Collecting and analyzing quality data. Education & Training: Ensuring personnel are skilled in quality practices. Defect Prevention & Removal: Proactive and reactive approaches to quality. 6. Software Quality Factors (McCall's Factor Model) Product Operation: Correctness: Does it do what it's supposed to do? Reliability: How often does it fail? (Availability, accuracy) Efficiency: How well does it use resources? (Performance, resource utilization) Integrity: How secure is it? (Access control, data security) Usability: How easy is it to use? (Operability, training) Product Revision: Maintainability: How easy is it to fix/update? (Analyzability, changeability, stability) Flexibility: How easy is it to change? (Adaptability) Testability: How easy is it to test? (Simplicity, verifiability) Product Transition: Portability: How easy is it to transfer to another environment? (Adaptability, installability) Reusability: Can parts be used elsewhere? Interoperability: Can it interface with other systems? 7. Software Reliability & Measurement Factors Software Reliability: The probability that software will operate without failure for a specified period in a specified environment. ROCOF (Rate Of Occurrence Of Failure): Frequency of failure occurrence. Measures how often failures are likely to occur. MTTF (Mean Time To Failure): Average time between two consecutive failures that are not immediately fixed. Focuses on time until the first failure or between non-repaired failures. $$MTTF = \frac{\sum_{i=1}^{N} (T_{i+1} - T_i)}{N}$$ Where $T_i$ is the time of the $i$-th failure and $N$ is the number of failures. MTTR (Mean Time To Repair): Average time required to repair a failed system or component. $$MTTR = \frac{\text{Total Down Time}}{\text{Number of Failures}}$$ MTBF (Mean Time Between Failures): Average time between two consecutive failures including the repair time. For repairable systems. $$MTBF = MTTF + MTTR$$ POFOD (Probability Of Failure On Demand): Likelihood that the system will fail when a service request is made. Relevant for safety-critical systems or systems with infrequent demands. $$POFOD = \frac{\text{Number of Failures}}{\text{Number of Demands}}$$ Availability: The probability that the system is operating correctly at a given point in time or over a given interval. $$Availability = \frac{MTBF}{MTBF + MTTR} = \frac{Uptime}{Uptime + Downtime}$$