Unit 1
Unit 1
Software Quality
Software quality refers to the degree to which a software system meets its intended requirements, is
reliable, efficient, and easy to use, and provides value to its users. It encompasses various aspects of
software development, including:
2. Reliability: Does the software consistently perform its functions without errors or failures?
4. Efficiency: Does the software use system resources efficiently, such as CPU, memory, and storage?
7. Portability: Can the software run on different hardware, software, and operating systems?
8. Scalability: Can the software handle increased load, users, or data without compromising
performance?
9. Security: Does the software protect user data, prevent unauthorized access, and ensure
confidentiality, integrity, and availability?
10. Adaptability: Can the software adapt to changing user needs, requirements, and technologies?
3. Code quality: Adherence to coding standards, best practices, and design principles.
4. User satisfaction: Feedback from users on the software's usability, performance, and overall
experience.
6. Mean time to recovery (MTTR): Average time to recover from a software failure.
Quality Software quality refers to the degree to which a software system meets its intended
requirements, is reliable, efficient, and easy to use, and provides value to its users. It encompasses
various aspects of software development, including:
2. Reliability: Does the software consistently perform its functions without errors or failures?
4. Efficiency: Does the software use system resources efficiently, such as CPU, memory, and storage?
7. Portability: Can the software run on different hardware, software, and operating systems?
8. Scalability: Can the software handle increased load, users, or data without compromising
performance?
9. Security: Does the software protect user data, prevent unauthorized access, and ensure
confidentiality, integrity, and availability?
10. Adaptability: Can the software adapt to changing user needs, requirements, and technologies?
3. Code quality: Adherence to coding standards, best practices, and design principles.
4. User satisfaction: Feedback from users on the software's usability, performance, and overall
experience.
6. Mean time to recovery (MTTR): Average time to recover from a software failure.
1. User Perspective: Software should meet user needs, be easy to use, and provide a good user
experience.
1. Functionality: Software should perform its intended functions correctly and consistently.
2. Reliability: Software should be able to perform its functions without failure or interruption.
3. Usability: Software should be easy to use, with an intuitive interface and minimal user
errors.
4. Efficiency: Software should optimize system resources, such as CPU, memory, and storage.
6. Scalability: Software should be able to handle increased load, usage, or data without
compromising performance.
7. Security: Software should protect user data, prevent unauthorized access, and ensure
confidentiality, integrity, and availability.
1. McCall's Quality Model: Focuses on product operation, product revision, and product
transition.
3. ISO 9126 Quality Model: Covers functionality, reliability, usability, efficiency, maintainability,
and portability.
Quality Frameworks
2. ISO 9001: A quality management standard that applies to all industries, including software
development.
ISO 9126
ISO 9126 is an international standard for evaluating software quality. It provides a framework for
assessing software quality characteristics, which are divided into six categories:
2. Reliability: The ability of the software to perform its functions without failure or
interruption.
3. Usability: The ease with which users can operate and understand the software.
5. Maintainability: The ease with which the software can be modified, updated, or repaired.
6. Portability: The ability of the software to operate on different hardware and software
platforms.
Functionality:
o Suitability
o Accuracy
o Interoperability
o Compliance
Reliability:
o Maturity
o Fault tolerance
o Recoverability
Usability:
o Understandability
o Learnability
o Operability
Efficiency:
o Time behavior
o Resource utilization
Maintainability:
o Analyzability
o Changeability
o Stability
o Testability
Portability:
o Adaptability
o Installability
o Co-existence
ISO 9126 provides a comprehensive framework for evaluating software quality, and it is widely used
in the software industry.
Correctness and Defects
Software quality, correctness, and defects are interconnected concepts that ensure software meets
its specifications, requirements, and expectations.
Software Quality
Software quality refers to the degree to which software meets its specifications, requirements, and
expectations. It encompasses various aspects, including:
Correctness
Correctness refers to the degree to which software meets its specifications, requirements, and
expectations. Correct software:
Defects A defect is an error, flaw, or imperfection that causes software to fail to meet its
specifications, requirements, or expectations. Defects can be:
4. Performance Issues: Issues that affect software performance, such as slow response times
or memory leaks.
Defect Classification
1. Critical Defects: Defects that cause software to fail or produce incorrect results.
3. Minor Defects: Defects that are cosmetic or do not affect software functionality.
1. Ad-hoc development: Software development was in its infancy, with a focus on getting the code to
work.
2. Lack of quality focus: Quality was not a primary concern, as software was seen as a secondary
aspect of hardware systems.
3. Debugging-oriented approach: Developers focused on fixing errors as they occurred, rather than
preventing them.
1. Software engineering emerges: The term "software engineering" was coined in 1968, recognizing
software development as a distinct engineering discipline.
2. First quality metrics: Metrics like lines of code and cyclomatic complexity emerged to measure
software quality.
3. Introduction of testing: Testing became a formal process, with the development of testing
methodologies and tools.
1. Quality assurance (QA) emerges: QA became a formal process, with the introduction of
methodologies like ISO 9000.
2. Testing and validation improve: Testing and validation techniques improved, with the
development of automated testing tools.
3. Introduction of quality standards: Quality standards like ISO 9000 and IEEE standards emerged to
guide software development.
1. Agile Manifesto: The Agile Manifesto (2001) emphasized flexibility, collaboration, and rapid
delivery, shifting the focus from traditional waterfall methodologies.
2. Continuous Integration and Continuous Deployment (CI/CD): CI/CD practices emerged, enabling
faster and more reliable software delivery.
1. DevOps emerges: DevOps, a cultural and technical movement, aimed to bridge the gap between
development and operations teams.
2. Shift-left approach: The shift-left approach emphasized integrating quality and testing earlier in
the development cycle, rather than treating them as separate phases.
3. Increased focus on automation: Automation became a key aspect of software quality, with the
adoption of automated testing, continuous integration, and continuous deployment.
2. Increased focus on data quality: The importance of data quality and data-driven decision-making
grew, as software systems became increasingly data-dependent.
3. Emergence of new quality metrics: New quality metrics like technical debt, code coverage, and
test automation coverage emerged to measure software quality.
3. Increased focus on customer experience: Customer experience became a key aspect of software
quality, with a focus on delivering high-quality, user-friendly software systems.