Lecture 1
Let's start with a question: What is Quality?
Where is Quality?
Which one is a quality car?
Example: Sofa 7194
Transcendental View: Recognizable but not definable.
User View: Fitness for purpose.
Manufacturing View: Conformance to specification.
Product View: Tied to inherent product characteristics.
Value-Based View: Dependent on the payment a customer is willing to make.
Concise Definition: Quality is the degree to which a system, component, or process meets specified requirements, customer or user needs, or expectations (IEEE Standard Glossary of Software Engineering Terminology).
Conformance to Requirements: Requirements must be clear; non-conformances are defects.
Fitness for Use: Must meet customer expectations.
Important Parameters:
Quality of Design: Determination of requirements.
Quality of Conformance: Adherence to stated requirements.
Two Key Expectations:
Do the Right Things: Software performs intended functions accurately.
Do Things Right: Software executes functions correctly and efficiently.
Example: Airline Reservation System.
Doing Right: Should handle flight reservations, validated for purpose.
Doing Right: Should validate reservations quickly, avoiding errors.
Focus Activities: Validation and Verification (ensure needs and operations are met).
The practice of integrating quality checks throughout the development cycle.
Aim: Ensure efficient testing for quality during the software development cycle.
Responsibility includes designing and maintaining quality assurance policies and processes.
Reflecting on experiences in software development: What is the role of quality? How can quality engineering be performed?
Key Components:
Set quality goals early in development.
Choose and monitor QA strategies to meet those goals.
Analyze QA and development data for continuous improvement.
Feedback Loop: QA insights assist in better decisions and measurable improvements.
Real-Life Scenario: Self-driving car.
Testing for traffic law adherence, inspection for logic errors, fault tolerance for sensor failures.
Increased software complexity due to modern system demands.
Quality issues can have severe impacts due to high reliance on software.
Example: Banking app; incorrect interest calculations lead to loss of trust.
Software Quality Engineering (SQE):
Overarching process ensuring high-quality software.
Scope: Encompasses all quality-related activities.
Goal: Achieve and maintain software quality.
Definition: A subset of SQE focused on systematic activities to prevent/reduce software problems.
Scope: Techniques include inspection, defect prevention, fault tolerance, and testing.
Role: To meet predefined quality standards by minimizing problem occurrence.
Definition: Core QA activity to verify software against specifications.
Scope: Detects defects and validates system functionality.
Role: Central QA method for identifying discrepancies and aiding defect removal.
SQE serves as the framework for QA activity planning and management.
QA is part of SQE employing technical and procedural methods.
Testing plays a pivotal role in validation and defect detection within QA.
SQE: Establish quality goals (e.g., 99.9% uptime).
QA: Code inspections, validation techniques, automated fault tolerance.
Testing: Functional, stress, and regression tests across various scenarios.
Ubiquity: Software systems central to modern life (e.g., information processing).
Dependence: Reliable, efficient software necessary for user activities.
High-Quality Requirements: User-friendly and maintainable software essential.
Developer Role: Developers must engage in quality assurance activities.
Evidence-Based Quality: Quality claims must be backed by measurements.
Transition to Software Quality Engineering, Lecture 2.
Process Goals:
Fit-for-use software production.
Implement and check compliance with suitable processes.
Evaluate processes for improvement.
Produce Correct, Reliable, Accurate, and Maintainable products.
Definition: Likely performance under specific conditions over time.
Example: A washing machine functions without issues for 5 years.
Software Reliability: Encompasses correctness, accuracy, consistency.
Example: A banking app should correctly calculate transactions.
Ability to perform defined functions under specified conditions.
Reliance on correctness, confidence, accuracy, precision over time.
Definition: Modifications post-delivery to correct faults and improve performance.
Types of Maintenance:
Corrective: Fixes bugs post-delivery.
Adaptive: Updates to maintain operation with changing environments.
Perfective: Adds improvements or features.
Definition: Planned enhancements to software creation process.
Distinctions:
Process Improvement: Upgrades and standardizes software production.
Process Management: Effective resource usage for developing quality software.
Verification: Ensures accuracy in building software (process adherence).
Validation: Ensures the right software is built (meets user needs).
Testing: Engaging software under conditions to check functionality and compliance.
Evaluation: Judging overall software quality and performance based on testing.
Set requirements for software quality.
Establish methodology for development processes.
Evaluate process and product quality consistently.
Inception: Project conceptualization and feasibility.
Requirements Analysis: Gathering and documenting software needs.
SQA Activity: Requirements review for completeness.
High-Level Design: Structure outlines (e.g., modules).
SQA Activity: Inspect the design for accuracy and issues.
Coding: Writing code per design.
SQA Activity: Conduct reviews and testing for error detection.
Create a management system for class scheduling at an educational institution.
Key requirements: Resource management and ease-of-use considerations.
Details of resource fields and constraints (e.g., uniqueness, alphanumeric types).
Analyze requirements, raise concerns for improvement, and generate test cases.
Core functionalities for resource management and classroom setup.
Identify and report defects related to UI.
Quality defined by various models (ISO-9126).
Key characteristics of software quality.
Definition: Functionality attributes meeting user needs.
Sub-characteristics include suitability, accuracy, interoperability, security.
Definition: Capability to maintain performance.
Sub-characteristics include maturity, fault tolerance, and recoverability.
Definition: Effort needed for use and user assessment.
Sub-characteristics include understandability, learnability, and operability.
Definition: Performance vs resource usage under conditions.
Sub-characteristics include time behavior and resource behavior.
Definition: Effort needed for modifications.
Sub-characteristics include analyzability and changeability.
Definition: Software adaptability to various environments.
Sub-characteristics include adaptability and installability.
Phase wise application of ISO-9126 in context of a fitness tracking app.
Ongoing focus on testing, deployment, and maintenance in app lifecycle.
Definitions: Error (human mistake), Fault (hidden problem), Failure (unexpected behavior).
Defect Prevention: Steps to mitigate defect occurrence.
Example: Clear requirement documentation and coding guidelines.
Detection & Removal: Identify problems before release.
Example: Testing and code reviews.
Strategies to minimize impacts of existing defects.
Example: Quick fixes and backup systems.
Analysis of defect costs through development phases.
Comparison of defect rates with and without QA functions.
Cost implications of defects across different development phases.
Previous focus on correctness shifted to QA processes aimed at defect minimization.
Focuses on prevention, detection and removal, containment methods.
Strategies to eliminate error sources to enhance software quality.
Primary prevention methods including clarity in requirements and training.
Code reviews and strict coding standards to enhance quality.
Handling division by zero error effectively in code.
Corrected code handling division by zero with error messages.
Inspections and software testing as core methods for quality assurance.
Techniques for identifying faults without and during program execution.
Focus on maintaining functionality in the face of faults.
Critical system safety measures for defect management.
Critical activity; verifying and validating software functionality.
Different testing stages from unit to beta testing focusing on functionality.
Black-Box: Functional view; testing based on requirements.
White-Box: Structural view; examining code.
Insight into black-box and white-box testing differences and contexts.
Practical example of verifying functionality without accessing code.
Tailored testing utilizing program insights.
Criteria based on coverage and reliability for efficient testing completion.
Overview of purpose and significance in the development lifecycle.
Critical for error prevention and ensuring customer expectations are met.
Initial analysis ensures understanding and clarity of testing requirements.
Engage with defining leave functionalities.
Functional and non-functional requirements documented.
Comprehensive test cases to track testing activities.
Essential steps for establishing effective test management.
Ensuring well-defined goals and strategies for testing.
Establishing necessary requirements for testing preparation and validation.
Group tasks to develop a comprehensive test plan.
Key activities in creating structured test cases for execution.
Comprehensive documentation and preparation details.
Steps directed at defining and organizing test cases.
Illustrative examples of test case creations and their expected results.
Preparatory actions for ensuring a suitable testing environment.
Requirements needed for confirming environment readiness.
Core activities during the execution phase of testing.
Entry and exit points for effective test execution.
Structured guide for conducting and tracking testing outcomes.
Detailed formats for documenting discovered defects.
Summary activities marking the conclusion of the testing cycle.
Essential conditions for completing the testing phase.
Systematic approach for finalizing the testing process.
Sample reporting depicting test outcomes and recommendations.