Quality Management (Unit 5)
- From the user's point of view, quality is determined based on the ability of the product (software) in meetings its customer's needs (goals)
- From the manufacturer's point of view, quality product confirms to the original specification of the product (system specifications)
- From the product view, quality refers to the various inherent characteristics (e.g., functions and features) of the product
- From the value-based view, quality is determined based on how much it is valued in the market place
- During analysis, requirements are identified and documented to identify the needs of the user
- In design phase, the blue print of the software is prepared based on the specifications identified.
- Development is carried out based on the design documents and then the testing takes place to verify and validate the quality of the software
- An effective software process establishes the infrastructure that supports any effort at building a high-quality software product.
- Quality of conformance is a metric that determines the degree to which the implementation (3rd phase of SDLC) follows the design and the resulting system meets its requirements and performance goals.
- The quality of the design is based on the degree to which the design (2nd phase of SDLC) meets the functions and features specified in the requirements model.
- Conformance to Requirements: Does the software do what it's supposed to do as defined in the requirements and design? This is often called as functional quality.
- Fitness for Use: Does the software meet user expectations in terms of its behaviour, performance, and attributes? This includes non-functional aspects like reliability, usability, and maintainability (characteristics) of the software.
- A useful product delivers the content, functions, and features that the end user desires in a reliable, error-free way. It always satisfies the requirements that have been explicitly stated by stakeholders.
- Software quality dilemma refers to the constant pressure applied to compromise the desire for high-quality software in order to yield the constraints of development work in terms of time, cost, and scope.
- Software quality dilemma manifests most clearly in the trade-offs development teams have to make.
Speed vs. Quality:
- Rushing to release a product or some portion of the product quickly often means cutting corners on testing, code reviews, and proper design.
- This leads to technical debt—a hidden cost of fixing bugs and maintaining the poorly built system later, which ultimately slows down future development.
Cost vs. Quality:
- Investing in quality processes (hiring senior engineers, implementing rigorous testing, setting up robust automation) costs money and time upfront.
- A smaller budget often forces a team to skimp on these investments, leading to a cheaper, faster initial release but a much more expensive product to maintain in the long run.
Scope Creep vs. Stability:
Trying to pack too many features into a release (expanding scope) inevitably puts pressure on the schedule and budget, leading to the same shortcuts that degrade quality.
The "Good, Fast, Cheap" Triad:
In this triad of Good quality, Fast delivery and Low cost production, we are allowed to pick any two of the three in order to overcome the dilemma in producing the quality software:
- Good (High Quality): Reliable, maintainable, secure, and user-friendly.
- Fast (Quick Delivery): Meeting tight deadlines and time-to-market.
- Cheap (Low Cost/Resource Use): Staying within a strict budget.
For instance:
- Developing software with low budget (cheap) and quick delivery (fast) will result in software that may not have the expected quality
- Compromising any one of the two factors - quick delivery (fast) or low budget (cheap) can help in developing software with low budget or speedy delivery
- Software Quality Assurance (SQA) is a systematic process that ensures software development processes and developed products meet pre-defined standards and requirements.
- It's an umbrella activity applied throughout the entire software development lifecycle (SDLC) to prevent defects and improve the overall quality of the product and the process used to create it.
SQA encompasses testing, but it is not only testing. The primary goals of SQA include:
- Defect Prevention: Stick to the procedures, standards, and guidelines to avoid errors (defects) in the development process
- Process Improvement: Continuously evaluate and refine the development process to increase efficiency and quality of the development process
- Verification and Validation (V&V):
- Verification: Answers the questions, "Are we building the product right?" to verify if the product conforms to stated specifications of the user
- Validation: Answers the question, "Have we built the right product?" to confirm that the product meets the needs of the user, both functional and non-functional.
- Standard Conformance: Ensures that the software and the process adhere to internal organizational standards, external regulatory standards (like ISO 9000), and best practices.
SQA is broader than just testing and involves various activities as follows:
- Defining Standards and Metrics: Establishes a set of engineering practices, development standards, and metrics (e.g., defect density, mean time to failure) that the project must adhere to.
- Reviews and Audits: Conduct of formal technical reviews, quality audits, and inspections on artifacts like requirements, design documents, and code to catch errors early in the development process
- Process Monitoring: Tracking the development process against the defined plan to ensure compliance and identify deviations
- Testing: Perform various types of testing (unit, integration, system, acceptance, etc.) to confirm functionality and identify defects
- Configuration Management: Monitors and controls changes to the software artifacts throughout the SDLC
SQA Vs. Software Testing:
While related, SQA and Software Testing are distinct concepts:
| Feature | Software Quality Assurance (SQA) | Software Testing |
| Focus | Process Management and Prevention of defects | Product Management and Identification of defects |
| Goal | Improving development methodology | Ensuring that the product meets requirements of the user |
| Scope | Encompasses the entire SDLC (requirements, design, coding, testing, etc.). | Primarily a phase within the SDLC (systematically executing the product). |
| Question | How can we build the software better? | Does the software being developed work as expected? |


