Untitled
MODULE 2: Software Quality Assurance
Objectives
- At the end of this chapter, the students should be able to:
- Differentiate quality control from quality assurance.
- Explain the different Software Quality Assurance (SQA) activities.
- Estimate the quality of the software based on software quality metrics.
Software Quality Assurance (SQA)
- Definition: An umbrella activity that is applied throughout the software engineering process. It serves as an error-prevention technique focusing on the process of systems and software development.
- Characteristics:
- Planned and systematic actions to ensure software quality.
- Encompasses various methods: analysis, design, coding, testing, and tools.
- Involves formal technical reviews applied during each software engineering step.
- Employs a multi-tiered testing strategy.
- Controls software documentation and changes made to it.
- Ensures compliance with software development standards.
- Features a measurement and reporting mechanism.
- Misconceptions:
- SQA is not merely a software testing activity. Quality must be ingrained in the product before testing; if quality is absent prior, it will not be present post-testing.
Goals of SQA
- To improve software quality by monitoring both the process and the product.
- To ensure compliance with local standards for Software Engineering.
- To ensure defects, process variance, or standards non-compliance are noted and rectified.
Scenario
A hired management role involves:
- Context: Managing a new product estimated at 25,000 lines of code with three to four team members over 18 months.
- Queries:
- What must be in place before the project starts?
- What quality checkpoints should be established?
- What measures to collect to determine the level of work quality?
Realities of SQA
- SQA cannot incorporate quality into a product.
- An existing SQA function does not guarantee quality.
- Management's active involvement in SQA is necessary; otherwise, it becomes ineffective.
- Close collaboration between SQA and development staff is essential for tangible benefits.
Quality Control vs. Quality Assurance
- Quality Control:
- Focuses on work products.
- Measures the product, identifies deficiencies, suggests improvements; results in product changes (e.g., code alterations).
- Considered an error-removal technique.
- Quality Assurance:
- Focuses on work processes.
- Measures the processes, identifies deficiencies, suggests improvements; results in process changes (e.g., improved compliance).
- The output from quality control often serves as input for quality assurance activities.
Software Quality Defined
- Conformance to:
- Explicitly stated functional and performance requirements.
- Explicitly documented development standards.
- Implicit characteristics expected of professionally developed software.
- Alternative definition (W. Edwards Deming): Striving for excellence in reliability and functions through continuous process improvement, supported by statistical analysis of failure causes.
Three Important Points on Software Quality
- Software requirements form the foundation from which quality is measured; lack of conformance to requirements indicates a lack of quality.
- Specified standards guide software engineering practices; failure to follow these can lead to a lack of quality.
- Implicit requirements may go unmentioned but are crucial (e.g., the need for maintainability).
Quality Characteristics
- Definition: Any property or element that can define a product's nature, including both physical or chemical properties such as size, weight, volume, color, or composition.
Characteristics of Software Quality
- Achieved through a disciplined approach - called software engineering (SE).
- Can be defined, described, and measured.
- Can be assessed before any code is written.
- Cannot be tested into a product.
Challenges in Software Quality
- Defining quality.
- Describing quality qualitatively.
- Measuring quality quantitatively.
- Achieving quality technically.
Design Analogy
- Design quality is similar to music; following rules enhances the outcome. Philip Crosby draws an analogy between quality and sex, emphasizing subjective perceptions of quality (e.g., Beethoven’s music vs. another's).
General Notions about Quality
- Universal support for quality exists, except in certain situations.
- Many believe they understand quality but resist explaining it.
- Many think execution relies on natural inclinations.
- Issues of quality are often deflected as someone else's fault.
Realizing Quality Through Abstract Quality Factors
- A set of quality factors defined as "the ilities":
- Product Revision (Changing Software):
- Flexibility: Effort required to modify an operational program.
- Maintainability: Effort required to locate and fix an error in a program.
- Testability: Effort required to test a program to ensure it performs intended functions.
- Product Transition (Modifying Software for Different Environments):
- Interoperability: Effort required to couple one system to another.
- Portability: Effort required to transfer a program across different environments.
- Reusability: Extent to which a program can be reused in different applications.
- Product Operations (Using Software):
- Correctness: Degree to which a program meets specifications and mission objectives.
- Reliability: Consistency in performing intended functions under specified conditions.
- Efficiency: Resource consumption during function performance.
- Integrity: Security against unauthorized access.
- Usability: Ease of learning, operating, and interpreting software output.
Quality Metrics
- Auditability: Ease of verifying conformance to standards.
- Accuracy: Precision of computations and control; qualitative and quantitative assessment of error.
- Communication Commonality: Use of standard interfaces and protocols.
- Completeness: Full implementation of required functions; proper identification of data items.
- Conciseness: Compactness of code.
- Consistency: Uniform design and documentation techniques throughout the project.
- Data Commonality: Use of standard data structures.
- Error Tolerance: Damage when encountering an error; preventive and detection procedures in place.
- Execution Efficiency: Run-time performance assessments.
- Expandability: Extent to which designs can be extended.
- Generality: Applicability breadth of program components.
- Hardware Independence: Software decoupling from operating hardware.
- Instrumentality: Self-monitoring capability of the program.
- Modularity: Functional independence of program components.
- Operability: Ease of program operation.
- Robustness: Continuation of operation despite invalid inputs.
- Security: Protection mechanisms for programs and data.
- Self-documentation: Code providing meaningful documentation.
- Simplicity: Understandability of the program.
- Software System Independence: Independence from nonstandard programming features.
- Traceability: Ability to track components back to requirements.
- Training: Capabilities that enable new users to utilize the software.
Laws of Software Evolution Dynamics (by Belady and Lehman)
- Law of Continuing Change: A usable program undergoes continuous change until more cost-effective to rewrite it.
- Law of Increasing Entropy: System disarray increases over time unless maintained or reduced.
- Law of Statistically-Smooth Change: Global system attributes may appear irregular, but are self-regulating with identifiable trends.
SQA Activities
- Application of Technical Methods: Employing technical tools and methods enables better specification and design quality.
- Conduct of Formal Technical Reviews (FTR): Reviews find defects in work products; outcomes potentially induce process changes.
- Types of Reviews:
- Walk-through: Interactive process engaging participants to discuss unclear items.
- Inspection: Detailed review of each logical piece.
- Requirements: Overview, participant preparation, inspection, rework and follow-up.
- Software Testing: Activity aimed at error discovery in software.
- Enforcement of Standards: Ensuring standards compliance.
- Control of Change: Formalizing requests to manage change impacts.
- Measurement: Tracking software quality impacts.
- Record Keeping and Reporting: Procedures for collecting and disseminating SQA information.
Software Quality and Productivity: Role of Top Management
- Create Constancy of Purpose: Aim for increased software quality and productivity for competitiveness.
- Adopt New Philosophy: Embrace quality-focused methods over traditional, error-prone practices.
- Cease Dependence on Conventional Methods: Require statistical evidence of quality to mitigate inspection needs.
- End Lowest Cost Basis Awards: Demand quality along with price; eliminate non-compliant developers.
- Find Problems: Continuous improvement in practices; fostering ongoing training and methodology advancement.
- Institute Modern Training Methods: Employ rigorous training programs in software engineering and quality assurance.
- Change Supervision: Shift focus from numbers to quality alongside metrics.
- Drive Out Fear: Ensure an effective, fear-free working environment.
- Break Down Barriers: Encourage interdepartmental collaboration among all project areas.
- Create Management Structures: Direct control aligning with the above nine points to guide improvements effectively.