Software Quality Ch3
Chapter 3: The Software Quality Challenges
3.1 Introduction
Basic Question: Do we need a specialized quality assurance methodology for software products?
Challenge: Why can’t we use general QA tools from other industries (e.g., food, metal)?
Answer: The unique characteristics of software, the software development process, and its maintenance necessitate unique QA tools and methodologies for software development and maintenance.
Topics Covered in Chapter:
Uniqueness of software quality assurance related to software characteristics and development processes.
The software development, maintenance, and SQA (Software Quality Assurance) environment comprising legal, managerial, social, and technological requirements.
3.2 The Uniqueness of Software Quality Assurance
Discussion Prompt: Why is specialized software quality assurance needed?
Warranty Document Comparison:
Typical Hardware Warranty (e.g., Printers):
Commences on purchase date for one year.
Manufacturer will repair/replace defective products at no charge if delivered to authorized service facility.
Typical Software Warranty:
Acts as a disclaimer rather than a guarantee.
States the Manufacturer makes no warranty regarding quality, performance, merchantability, or fitness for a particular purpose; licensed 'AS IS'.
Consequence: Manufacturer uncertain about software quality, unlike hardware manufacturers.
Example of Standards:
ISO/IEC 9000 Family Standards:
Serve nearly all industries (Updated every few years):
ISO/IEC 9000:2015 - Fundamentals and vocabulary.
ISO/IEC 9001:2015 - Requirements.
ISO/IEC 9000:2015 - Managing for sustained success.
Specialized Standard for Software Industry:
ISO/IEC 90003:2014 - Guidelines for applying ISO 9001:2008 to computer software.
Unique Requirements in ISO/IEC 90003 not reflected in general standards:
Documentation requirements.
Quality planning.
Design and development planning.
Customer-related requirements.
Customer communication during development requirements.
Root Causes for the Uniqueness of Software Quality Assurance:
Complexity of Software:
Complexity measured by operation modes; can reach thousands or millions.
Ensuring correct operation for each mode is virtually impossible.
Lack of Visibility:
Software defects are invisible and intangible.
Requires predefined processes to display software listings for defect identification.
Few Opportunities to Identify Defects:
Defect identification occurs only during the software development phase.
Industrial product defects can be identified during multiple phases (prototype development, production planning, manufacturing).
3.3 Software Development, Maintenance, and SQA Environment
Definition: Software developed and maintained commercially, in teams or units, subject to various requirements.
Key Characteristics of the Software Development, Maintenance, and SQA Environment:
Contractual Conditions:
Contracts define commitments between developers/maintainers and customers.
Project includes functional requirements, budgets, schedules, team qualifications.
Internal projects managed similarly to formal contracts; lack of contract leads to unsuccessful projects.
Customer-Supplier Relationship:
Important for continuous cooperation throughout the software lifecycle.
Activities include obtaining information, discussing changes, and obtaining approvals.
Teamwork Necessity:
Factors necessitating a project team:
Schedule requirements.
Need for diverse specializations.
Professional mutual support and review.
Cooperation with Internal Teams:
Often, software projects require collaboration with other internal development teams.
Coordination with External Participants:
Larger projects may involve external organizations – suppliers, subcontractors, partner teams, and customer teams.
Required Product Interfaces:
Modern software must interface with other systems for data exchange.
Types of Interfaces:
Input Interfaces: e.g., attendance data for payroll processing.
Output Interfaces: e.g., salary lists sent to banks.
Continuity Amid Team Changes:
Projects must proceed as team members may leave; the leader must replace them.
Long-term Maintenance Requirements:
Software systems require ongoing maintenance, typically managed by the original developers.
3.4 Summary of Key Takeaways
Software Quality Assurance Uniqueness:
Fundamental differences between software products and other industrial products needing SQA:
Higher complexity in software.
Lack of visibility of defects in software.
Fewer defect detection opportunities.
Environmental Factors in SQA:
Contractual requirements (functional, budget, schedule).
Need for ongoing customer relations for approval and communication.
Teamwork and cooperation required both internally and externally.
Continued project execution despite personnel changes.
Long-term maintenance obligation for software products.
Review Questions
Identify and describe the three significant differences between software products and other industrial products.
Discuss the claim that limited SQA activities occur during production planning and manufacturing phases of software products.
Identify and describe the eight characteristics of the professional software development and maintenance environment, detailing those that necessitate managerial efforts for project execution.