Software Quality Management
Prerequisite Knowledge
This lecture builds on the following concepts from earlier lectures. If any feel unfamiliar, review the linked notes before proceeding.
Previously Covered in This Subject
- Verification and validation — covered in Lecture 7 (Software Testing)
- System testing and release testing — covered in Lectures 7 and 8 (Software Testing; Software Testing: Test-Driven Development, Release Testing, and User Testing)
- Non-functional requirements — performance, security, safety, availability, and maintainability, covered in Lecture 5 (Architectural Design)
- Fitness for purpose — confidence in the product's fitness for its purpose, covered in Lecture 7 (Software Testing)
Software Quality Management
10.1 Why Quality Management Matters
10.1.1 Quality, Cost, and Time — The Triple Constraints
Hook: Imagine a client says, "I want this app built well, delivered quickly, and at the lowest possible price." Would you sign that contract as-is? Most experienced engineers would hesitate — because quality, cost, and time pull against one another, and you cannot have all three at full strength at once.
Quality management is one of the three important factors of software engineering. Those three factors are the triple constraints — quality, cost, and time — which people often summarize as "good, fast, and cheap." The rule of thumb is that you can choose any two at full strength, but the third pays the price:
- Good and fast, but not cheap. You bring in more engineers, better tools, and more testing time, and the budget grows.
- Fast and cheap, but not good. You skip reviews and cut testing to hit the date, and the delivered software is full of defects.
- Good and cheap, but not fast. You keep the team small and the budget tight, so the schedule stretches.
Think of the Venn diagrams of these three constraints and their intersections: the diagram is three overlapping circles. Any pair of circles overlaps in a region where two constraints are satisfied, but the region where all three overlap is a tiny sliver in the middle — it is always challenging to achieve all three simultaneously. Delivering a high-quality product on time and within budget has always been the central challenge of software engineering, and that is exactly what software engineering is about — you need to deliver good quality products on time and within budget, where "good product" means quality products.
10.1.2 What Quality Management Means
Definition: Quality management (QM) is concerned with ensuring that the developed software meets the needs of its users, performs efficiently and reliably, and is delivered on time and within budget — good, fast, and cheap. In short, it is the systematic management of product quality across the whole project, not a single activity done once at the end.
Three things that statement contains deserve attention:
- Meets the needs of its users — the software must do the right things for the people who actually use it, not just what the contract literally says.
- Performs efficiently and reliably — it must behave well in normal use and keep working without failures.
- Delivered on time and within budget — a "perfect" product that arrives a year late and twice the agreed price has failed a real constraint.
The use of quality management techniques together with new software technologies and testing methods has led to significant improvements in product quality over the past two to three decades. This is an honest industry-wide observation: quality did not improve by accident or by luck — it improved because organizations deliberately invested in defined quality processes, better tools, and better testing.
Formalized software quality management, especially in plan-driven processes such as the waterfall model, is particularly important for teams that develop large, long-lifetime systems that take several years to build. These systems are developed for external clients and usually use a plan-based process — a sequence of defined phases, each completed before the next begins. For such systems, quality management is an organizational issue as well as an individual project issue: the organization must own the framework, and each project must apply it.
10.1.3 Organizational-Level Quality Management
For a plan-based project — a large, long-lifetime project — there are three principal concerns in quality management. The first is the organizational level. Here a quality management team, led by a quality head, a chief quality officer, or a quality manager, is concerned with establishing a framework of organizational processes and standards that will lead to high-quality software.
Concretely, the quality management team at this level should:
- Take responsibility for defining the software development process to be used across the organization.
- Define the standards that should apply to the software and its related documentation, including the system requirements, the design, the code, and so on.
- Keep that framework alive — reviewing it and updating it as technologies and methods change.
The organizational level answers "how do we want every project in this company to produce software?" It is deliberately broad, because the same framework is shared by many projects.
10.1.4 Project-Level Quality Management
The second and third concerns sit at the project level and have two aspects.
Aspect 1 — apply the quality processes. The first aspect is the application of specific quality processes: checking that the planned processes are being followed and ensuring that the project outputs meet the defined project standards — in other words, checking whether quality processes are being followed. This is the day-to-day enforcement of the organizational framework on one project.
Aspect 2 — write the project quality plan. The second aspect is defining a quality plan for the project. Even while following a standard process, a project needs its own quality plan because it sets out the goals for the project and defines which processes and standards are to be used for that specific project. Organizational plans, standards, and goals may be very broad and may not apply directly at the project level.
So at the project level, depending on project factors — budget and time constraints, the capability of the people, the nature of the product, and the nature and experience of the team — we get a project-specific quality plan. A small web prototype and a five-year banking core system will not share the same quality plan even inside the same organization. Quality management includes having the plan, agreeing to the plan, and checking that everything has been done correctly.
Recap: Quality management works at two levels — the organization builds the framework of processes and standards, and each project applies those processes and writes its own quality plan tuned to the project's factors.
Exam note: Be ready to contrast organizational-level quality management (the framework of processes and standards) with project-level quality management (applying quality processes and writing the project quality plan).
10.2 Quality Assurance and Quality Control
10.2.1 Roots in Manufacturing: QA versus QC
Software quality management techniques have their roots in the methods and techniques developed in the manufacturing industry, where the terms quality assurance and quality control are widely used. In organizations you will often hear "software quality assurance" (SQA) and "quality control" as part of quality management, but quality control is typically part of manufacturing quality terminology. The words sound similar, but they describe two different jobs — one builds the machinery of quality, the other operates it on the production line.
Q: We hear about software quality assurance in our organizations, but what exactly is quality control, and how is it different?
A: Quality control comes from manufacturing terminology. Quality assurance means the definition of the quality processes and standards that should lead to high-quality products, and the introduction of those quality processes into the design and manufacturing process. Quality control is the application of quality processes to weed out products that are not of the required level of quality. Both quality assurance and quality control are important parts of quality management, in addition to quality planning.
A simple way to hold the two apart: quality assurance sets the rules; quality control applies the rules to remove the bad output. In a toy factory, QA would be "we define how a safe toy is designed and how the assembly line must run," while QC would be "we inspect the finished toys and throw out the ones with loose parts." The same logic transfers to software: QA defines the development and review standards, and QC checks the actual outputs — the documents, the code, the builds — and rejects those that do not meet the required level.
Even within the software industry the meaning of SQA varies by company. Some companies see software quality assurance as the definition of procedures, processes, and standards that ensure software quality is achieved. In other companies, quality assurance also includes verification and validation activities, and all configuration management activities applied after a product has been handed over by the development team. In other words, the exact boundary of "SQA" is a company decision — but the core idea of defining quality processes and standards is shared.
10.2.2 Quality Management as an Independent Check
Key idea: Quality management provides an independent check on the software development process. The quality management team checks the project deliverables periodically to make sure they are consistent with the organizational standards and goals. It can also check the process documentation. The quality management activity is designed to be an independent check — the team checks not only the product but also whether the process itself is effective enough to deliver the right product quality.
Notice the double check hidden in that paragraph. The team asks two different questions:
- Is the product right? — do the deliverables (documents, designs, code) match the organizational standards and goals?
- Is the process effective? — is the process that produced them actually capable of producing the right product quality?
If a process routinely produces documents that fail review, the problem is not just the documents — the process itself needs fixing. An independent team is in a position to say that out loud, because it does not share the development team's pressure to declare everything on track.
10.2.3 Deliverables, Reviews, and Process Documentation
In a software development process there are deliverables — call them D1, D2, D3, D4, D5 — such as requirements elicitation, user requirements, system requirements, high-level design, detailed design, coding, and so on. You must have a quality plan right at the beginning. But before that, your standards, processes, and procedures for quality management are defined. Based on these, you create a quality plan specific to the project, depending on the project factors, the constraints (budget, time, and even quality), the type of product, and the kind of resources.
After each and every deliverable you conduct a quality review, which results in quality review reports. The quality management processes run in parallel with the software development process, with a review after every deliverable to ensure that the processes are being followed, the standards are being followed, and the product and the processes are of acceptable quality.
Worked example — the D1 to D5 quality gate chain
Think of a project that produces five named deliverables, each followed by a quality review before the next phase starts:
| Gate | Deliverable | What the review checks |
|---|---|---|
| D1 | User requirements document | Is every requirement traceable to a stakeholder need? Does it follow the organization's document structure standard? |
| D2 | System requirements specification | Are the requirements complete, unambiguous, and consistent? Any missing sections or open questions? |
| D3 | High-level design | Does the architecture cover every D2 requirement? Is it consistent with the design review form? |
| D4 | Detailed design | Are the modules, interfaces, and data structures specified well enough to code from? |
| D5 | Code (for system building) | Does the code follow the Java programming style standard? Is it integrated into the build? |
The flow works like this: produce D1 → quality review 1 → review report → produce D2 → quality review 2 → review report → and so on through D5. Each review report records what was checked, what passed, and what must be reworked before the next deliverable is produced. A review that finds D2 missing a requirement sends it back for correction before the design phase starts, so the error never compounds into a wrong architecture.
Sense-check: The reviews run in parallel with development, not after it — five deliverables, five reviews, and every review happens while the next deliverable is still being made. That is what "quality review after every deliverable" means in practice.
The quality management team also checks the process documentation, which records the tasks that have been completed by each team working on the project. The team uses this documentation to check that important tasks have not been forgotten and that one group has not made incorrect assumptions about what other groups have done. Example: if the design team assumed the database team would handle performance tuning, but no one recorded that handover, the process documentation reveals the gap before it becomes a late-project surprise.
10.2.4 Release and System Testing under Quality Management
In large companies, the quality management team is usually responsible for managing the release testing process — the testing of the software before it is released to customers, which appears earlier in the study of software testing. In addition, the quality management team is responsible for checking that the system testing tests provide coverage of the requirements and that proper records of the testing processes are maintained.
Two responsibilities are worth underlining:
- Requirement coverage: the system tests must map back to the requirements, so the team verifies that nothing in the requirements specification is untested.
- Test records: the team checks that the testing was actually carried out and recorded properly — a passing test with no record is, from the quality point of view, a test that did not happen.
10.2.5 Independence and Reporting Line
Ideally, the quality management team should be independent of the development team and not part of the software development group, so that it can take an objective view of the quality of the software. It should have organization-wide responsibility for quality management and should report to a management level above the project manager level.
Q: Why should the quality manager report to a manager higher than the project manager?
A: Because project managers have to maintain the project budget and schedule, so they will be tempted to compromise on product quality to meet schedule or budget constraints. Has this happened in your organizations — reducing testing to meet deadlines or budget constraints? Some students acknowledged yes. One student said that in his organization testing is never reduced even when the delivery is delayed — no compromise on quality. That is exactly the role and responsibility of a quality manager: you should not be influenced by short-term budget and schedule considerations, and you should ensure that the organizational goals of quality are not influenced by these short-term considerations.
However, in small teams or small companies this may not be practically possible, because the testing, quality, and development teams are usually the same set of people with both development and quality responsibilities — especially in agile teams.
The reporting line is the mechanism that makes independence real. A project manager's success metric is delivering on time and on budget; if the quality manager reports to that same manager, any quality verdict that threatens the schedule can be quietly overruled. Reporting above the project manager level means the quality voice cannot be silenced by the schedule.
Pitfall: Treating "independent" as a nice-to-have rather than a structural decision. If the quality manager reports to the project manager, the check is no longer independent — it becomes a suggestion the manager can ignore. In practice this is exactly the pressure point where testing gets cut to meet a deadline.
Real-world: cutting testing to save time is a common pressure in real projects; the whole point of an independent quality manager reporting above the project manager is to resist it. In small companies and agile teams the same people do development and quality, so the independence is an ideal that has to be balanced against what is practically possible.
Recap: QA defines the quality processes and standards; QC applies them to weed out sub-standard products. The quality management team runs an independent, parallel check — a review after every deliverable — and must report above the project manager level so that budget and schedule pressures cannot compromise product quality.
10.3 Quality Planning
10.3.1 What a Quality Plan Must Contain
Formalized quality planning is an integral part of the plan-based development process. Quality planning is done once the standards and procedures are defined. The quality plan should set out the desired qualities and describe how these qualities are to be assessed. In other words, it defines what high-quality software actually means for a particular system, so that the engineers have a shared understanding of the most important quality attributes.
Definition: A quality plan is the project-level document that answers two questions: "which qualities do we want in this system?" and "how will we measure or check each one?" It turns the vague phrase "we want good software" into a concrete, agreed list that every engineer on the project shares.
Why does the plan matter if the organization already has standards? Because "high quality" is not one fixed thing — a banking system and a mobile game are both "software," but they prioritize completely different qualities. The quality plan is where the project decides what quality means for this system, which processes to use, and which attributes matter most.
The quality plan should describe which organizational standards should be applied, define new standards if required, and define the quality assessment process, the desired product qualities to be assessed, and the most significant quality attributes.
10.3.2 Typical Quality Plan Outline
A typical quality plan follows this outline — five sections that together cover the product, the schedule, the process, the goals, and the risks:
- Product introduction — a description of the product, its intended market, and the quality expectations for the product. This is the "what are we building and how good must it be" section.
- Product plans — the critical release dates and responsibilities for the product, along with plans for distribution and product servicing. This ties quality to the calendar: what must be ready by each release date, and who owns it.
- Process descriptions — the development and services process standards to be used for product development and management, described in detail. This is the "how will we build it" section: which standards apply, which tools, which reviews.
- Quality goals — the quality goals and plans for the product, including the identification and justification of the critical product quality attributes. Here the project states which attributes matter most and defends the choice.
- Risk and risk management — a quality plan is incomplete without this: list all the risks that will affect product quality and the actions to be taken to mitigate these risks. Example risks: key developer leaves mid-project, the client changes requirements late, the chosen third-party component is withdrawn — each with a mitigation action.
Exam note: Know the typical quality plan outline: product introduction, product plans, process descriptions, quality goals, and risk management. If a question asks what a quality plan contains, the five-part outline is the complete answer — and never forget risk management.
10.3.3 Keeping Quality Plans Short and Simple
Quality plans, developed as part of the general project planning process, may differ in detail depending on the size and type of the system being developed. But when writing quality plans you should try to keep them as short and simple as possible. If the document is too long and complicated, people may not read it, which defeats the purpose of producing the quality plan in the first place.
Pitfall: Writing a quality plan so long that nobody reads it. A quality plan's only value is that engineers, testers, and managers use it; a 200-page plan that sits unread on a shelf has negative value — it consumed effort and shaped nobody's behavior. Short and simple wins.
10.3.4 Does a Good Process Guarantee a Good Product?
Q: Do you believe a good process will result in a good product quality? Is it always true that a well-defined process with good standards results in good product quality?
A: In manufacturing, yes — you calibrate a process and let it run to produce products, then check the products for tolerances and minor defects, and recalibrate the process or the product output to reach the required quality. But software is a creative and highly people-centric, human-centric activity with a lot of variables that impact product quality — in design, testing, everything. So the concept of process-based quality as it applies to manufacturing may not always apply to the software industry.
The contrast between the two worlds is the heart of this section. In manufacturing, the process largely determines the product, because machines execute it repeatedly. In software, the process is executed by people making creative judgments, so the same process can produce very different products depending on the team, the individuals, and the pressure of the moment. A good process improves your odds — it does not guarantee the outcome.
A related point: traditional quality management is a formal process that relies on maintaining extensive documentation about testing, system validation, and how processes have been followed. In this respect it is diametrically opposed to agile development, where the aim is to spend as little time as possible writing documents and formalizing how development work should be done.
| Dimension | Traditional quality management | Agile quality management |
|---|---|---|
| Foundation | Formalized, documented processes and standards | A team quality culture |
| Documentation | Extensive records of testing, validation, and process compliance | As little documentation as possible |
| Where quality lives | In the defined process and its standards | In the team's shared responsibility and discipline |
| Key activity | Reviews, inspections, process audits | Continuous integration, testing, and team self-management |
The point is not that one is right and the other wrong: quality management techniques had to evolve with agile methods — agile quality management is based on developing a team quality culture rather than on a standardized process, which we come to later.
Recap: The quality plan defines what high-quality means for a particular system (product introduction, product plans, process descriptions, quality goals, risks) and must be short enough to be read. A good process does not guarantee a good product in software — quality has to be managed through the plan, and in agile through team culture.
10.4 Software Quality versus Manufacturing Quality
10.4.1 The Manufacturing View: Conformance with Tolerance
The fundamentals of quality management were established in the manufacturing industry in Japan, especially in the drive to improve the quality of manufactured products. As part of that effort, the manufacturing industry developed a definition of quality based on conformance with the detailed product specification. The underlying assumption was that the product should be completely specified, and that procedures could be established to check the manufactured product against its specification.
Of course, even precision-manufactured products never exactly meet the specification, so some tolerance is allowed. If the product is almost right, it is classified as acceptable.
Intuition: Think of a machined metal bolt specified to be 10.0 mm in diameter. In reality, the factory cannot make every bolt exactly 10.0000 mm — so the specification adds a tolerance band, say 9.9 to 10.1 mm. A bolt at 10.05 mm is "almost right," but it is accepted: it falls inside the tolerance, it will do its job, and it is classified as acceptable. This is the conformance-with-tolerance model: write the specification, add tolerance, measure, accept or reject.
10.4.2 Why Software Cannot Be Judged the Same Way
Software quality is not comparable with quality in manufacturing. The idea of tolerances applies to manufactured systems but does not apply to software, and it is impossible to reach an objective conclusion about whether a software system meets its specification.
Q: In manufacturing, a product that is almost right is accepted as within tolerance. Why does the same idea not work for software?
A: Tolerances do not apply to software, and it is impossible to come to an objective conclusion about whether a software system meets its specification. It is difficult to write a complete and unambiguous software requirements specification. Software developers and customers may interpret the requirements in different ways, and it may be impossible to reach agreement on whether the software conforms to its specification — especially if the specification says "user friendly" or "usable," "good to look at," "good to use." How do you precisely define and measure that? Requirements specifications usually integrate requirements from different stakeholders, and these requirements are usually conflicting; whatever is written as a specification is invariably a compromise and may not include the requirements of all stakeholder groups. The excluded stakeholders may so perceive the system as poor quality, even though it implements the commonly agreed requirements. And most often it is impossible to measure quality characteristics of software such as usability and maintainability directly, or specify them in an unambiguous way.
The rejection of the tolerance analogy is not a minor detail — it changes the whole job of quality management. Three reasons stand behind it:
- Software specifications cannot be complete and unambiguous. "Usable," "user friendly," "good to look at" — these cannot be written as measurable tolerances. Developers and customers can interpret the same requirement differently, so "conforms to specification" cannot even be agreed on.
- Specifications are compromises between conflicting stakeholders. Different stakeholder groups want different things; whatever gets written leaves someone out, and those excluded stakeholders will judge the system as poor quality even though it implements the agreed requirements.
- Key quality characteristics cannot be measured directly. You cannot measure "maintainability" with a gauge the way you measure a bolt. If you cannot measure it, you cannot specify a tolerance for it.
10.4.3 Fitness for Purpose Instead of Conformance
Because of these problems, the assessment of software quality is a subjective process — unlike manufacturing, where you can check conformance to specifications. The quality management team has to use judgment to decide whether an acceptable level of quality has been achieved. They decide whether the software is fit for its purpose rather than checking whether it conforms to its specifications.
Definition: Fitness for purpose is a judgment call: does this software do the job it was meant to do, well enough, for the people who will use it? Because the specification is never a complete yardstick, the quality team evaluates the system's characteristics with professional judgment instead of a tolerance gauge.
To check fitness for purpose, the quality management team asks questions about the system's characteristics:
- Has the system been properly tested, and has it been shown that all the requirements have been implemented properly and correctly?
- Is the software sufficiently reliable, dependable, and safe to be put into use?
- Is the performance of the software acceptable for normal use?
- Is the software usable by the concerned end users and stakeholders?
- Is the software well structured and understandable, and so maintainable?
- Have the programming and documentation standards been followed in the development process?
These are the questions to ask whenever you check the quality of a product before it is released, either to the customer or to the release testing team.
Worked example — the release-readiness check on a concrete product
Suppose a small company built an online food-ordering app and wants to hand it to the release testing team. The quality manager applies the six fitness-for-purpose questions:
- Properly tested with all requirements implemented? The team shows the test records: 42 requirement-level tests, all executed and logged, with 3 failures fixed and re-tested. ✓
- Reliable, dependable, and safe? The app held 2,000 concurrent sessions in load testing without crashing; payment data is encrypted in transit. ✓ (with the caveat that long-term reliability needs real-world use.)
- Performance acceptable for normal use? Order screens load in under a second on the office test network; the team still flags that slow 3G connections were not fully tested. ⚠
- Usable by end users and stakeholders? A restaurant owner and two regular customers tried the flow; the restaurant owner found the menu-editing screen confusing. ✗ — design change requested before release.
- Well structured, understandable, maintainable? The design review form confirms the code follows the layering standard, and a developer unfamiliar with the project could navigate the modules. ✓
- Programming and documentation standards followed? The Java style standard was checked by a tool, and the review reports are on file. ✓
The verdict: the app is not yet fit for purpose — the usability problem in question 4 must be fixed, and the 3G performance gap must be either tested or accepted as a known limitation. This is a subjective, judgment-based conclusion; there is no tolerance band that settles it automatically.
Sense-check: The questions are the same six for any product, but the answers are judgments — the quality team weighs evidence from tests, reviews, and people, and decides. That is fitness for purpose in action.
10.4.4 Judging Quality from Test Results
There is a general assumption in software quality management that the system will be tested against its requirements, and that the judgment on whether it delivers the required functionality should be based on the results of these tests during system testing. The quality management team should so review the tests that have been developed for acceptance testing and examine the test records to check that the testing has been carried out properly.
In some companies, the quality management group itself carries out the final system testing. In other companies, an independent testing team does the system testing or release testing and reports to the quality manager.
Q: Have you actually checked fitness for purpose before releasing a product to a customer or to the release testing team?
A: Yes — the class confirmed that these questions are in fact asked before release in their organizations.
A follow-up question pushed one level deeper: who actually does the testing that these judgments are based on?
Q: In your organizations, does the SQA team do all the testing, or is there an independent testing group for system testing and release testing — or are developers involved in system testing too?
A: One student reported that in his organization it is the developers plus a different group — the developers are involved alongside a separate testing group.
The two class answers show the range of real-world practice: the fitness-for-purpose questions are genuinely asked before release, but who does the final testing varies — the quality group, a dedicated independent testing team, or developers alongside a separate group.
Recap: Manufacturing judges quality by conformance to specification with tolerances; software cannot do that, so quality is judged subjectively by fitness for purpose — the six release-readiness questions. The judgment is based on test results, and the quality team must ensure testing was properly carried out and recorded.
Exam note: The fitness-for-purpose questions are a ready-made answer for any question about how software quality is judged — memorize the six questions and the reasons why conformance with tolerance cannot apply to software.
10.5 Quality Attributes and McCall's Quality Factors
10.5.1 Non-Functional Characteristics Drive Subjective Quality
The subjective quality of a software system is largely based on its non-functional characteristics. From the study of requirements engineering, we distinguish functional requirements — the functionality or services provided by the system — from non-functional requirements, which are behavioral properties or emergent properties of the system observed only when the complete system is in execution: performance, usability, reliability, maintenance, and so on.
Analogy: The non-functional properties of software are like the properties of a car — the mileage, the velocity, the acceleration, the crash durability. All of these can be tested only when the full system has been assembled and run. You cannot test a car's crash durability by looking at the engine blueprint, and you cannot test a software system's reliability by reading its code — the property only exists when the complete system executes.
Where does the analogy break? A car's mileage is a measurable number with a standard test procedure, while most software non-functional qualities (reliability, maintainability) are only observed over time and judged subjectively. The shared point, though, is the emergent nature: these properties are not visible in parts, only in the whole running system.
These emergent, non-functional properties are largely observed through practical user experience. Here the professor made a sharp observation about how users react:
- If the software's functionality is not what is expected, users might often just work around the inefficiency and find other ways to do what they want — they click around, use a keyboard shortcut, or use a workaround path.
- But if the software is unreliable or too slow, it is practically impossible for them to use it for the required purpose. There is no workaround for "the app crashes" or "the page takes a minute to load."
Pitfall: Treating "it has the right features" as "it is a quality product." A system that does all the listed functions but crashes every hour or responds too slowly is unusable in practice — users walk away even though the functionality is complete.
Software quality, so, is not just about whether the functionality has been correctly implemented — it also depends on the non-functional system attributes.
10.5.2 The Four Core Attributes
Definition: The key software quality attributes are four core properties — dependability, usability, efficiency, and maintainability — the important characteristics of any product. These four main properties can be complemented by other related aspects, giving a larger set of software quality attributes.
- Dependability — the software does not fail when it should not; it is reliable, safe, and secure in use.
- Usability — the software can be learned and used by its intended users with reasonable effort.
- Efficiency — the software makes good use of computing resources and delivers acceptable performance.
- Maintainability — the software can be understood, modified, and repaired without excessive effort.
Notice that none of the four is a functional requirement. A system can implement every requested function and still be a poor product if it is undependable, hard to use, slow, or impossible to change. This is why the four core attributes appear at the center of any quality discussion.
10.5.3 McCall's Fifteen Quality Factors
Some of these attributes are classified under the quality factors described by a software scientist named McCall. McCall's quality factors are 15 factors shown as part of three different arms of a triangle:
- Safety
- Security
- Reliability
- Resilience
- Robustness
- Understandability
- Testability
- Adaptability
- Modernity
- Complexity
- Portability
- Usability
- Reusability
- Efficiency
- Learnability
Worked example — the McCall triangle
Picture an equilateral triangle. Along its three arms sit the fifteen factors, each arm carrying a family of related qualities:
Understandability
/ \
/ Modernity \
/ Complexity \
/ \
Safety/___________ ____________\Usability
Security | Portability
Reliability | Reusability
Resilience Learnability Efficiency
Robustness | Adaptability
Testability |
The exact assignment of factors to arms varies between editions and texts — what matters for the course is the complete list of fifteen factors and the fact that they are presented as the three arms of a triangle.
The factors group naturally into families: safety, security, reliability, resilience, robustness all describe how the system behaves under stress or attack; understandability, testability, complexity, modernity describe how easy the system is to work with internally; portability, usability, reusability, efficiency, adaptability, learnability describe how the system serves its users and its environment.
One naming note: some versions of this classification list modularity where this lecture lists modernity. Both describe internal system qualities — modularity means the system is built from clean, interchangeable parts; modernity means it keeps up with current technology and practices. Keep the professor's list (modernity) as your exam answer, but do not be surprised to see modularity in other texts.
Sense-check: The list is a memory anchor, not a theorem — fifteen named qualities, all measurable only indirectly, arranged on the three arms of a triangle.
These factors cannot be measured directly; they have to be measured indirectly through various internal attribute measurements, which we see later. For example, you cannot measure "usability" with a gauge — but you can measure proxy quantities: time to complete a task, number of wrong clicks, number of support calls. The indirect measurements are evidence from which the factor is judged.
Exam note: Know McCall's 15 quality factors and the fact that they are measured indirectly through internal attribute measurements. If the exam asks for them, listing the fifteen factors is the answer — and the "measured indirectly" point is the reasoning that accompanies it.
10.5.4 Prioritizing Attributes in the Quality Plan
It is not possible for any system to be optimized for all of these attributes. For example, improving security may lead to a loss of performance. The quality plan should so define the most important quality attributes for the software being developed. It may be that efficiency is critical and other factors must be sacrificed to achieve it — and if the quality plan emphasizes the importance of efficiency, the engineers working on the development can work together to achieve it.
Scope: You cannot have everything. Every real system trades qualities against one another — encryption costs speed, deep testability costs time, portability costs performance. The quality plan is where the project decides which factors win, so the whole team pulls in the same direction. A plan that lists all fifteen factors as equally critical is a plan that commits to nothing.
The quality plan should also include a definition of the quality assessment process: an agreed way of assessing whether some quality such as maintainability, robustness, or usability is present in the product. You must choose only the most important quality attributes, prioritize what should be assessed, and agree on the way to assess each one.
Recap: Software quality is driven by non-functional attributes — dependability, usability, efficiency, maintainability — which exist only in the running system. McCall's fifteen factors name the wider set, measured indirectly. The quality plan must choose and prioritize the few attributes that matter for this system and define how each will be assessed.
10.6 Process-Based Quality and Its Limits in Software
10.6.1 The Manufacturing Process Loop
Traditional manufacturing quality management is based on the assumption that the product's quality is directly linked to the process quality. This assumption comes from manufacturing systems, where product quality is intimately related to the production process. The manufacturing process involves configuring, setting up, and operating the machines involved in the process. Once the machines are operating correctly, product quality naturally follows. You can measure the quality of the product and fine-tune or change the process until you achieve the level of quality you need. This is called the process-based approach to quality.
Definition: The process-based approach to quality is the assumption that product quality is directly linked to process quality — if the production process is right and calibrated, the product quality follows. It is a loop, not a one-shot activity.
The loop works like this:
- Define the manufacturing process.
- Use that process to develop the product.
- Check the product's quality — whether it conforms to its specification.
- If the quality is okay, standardize the process and run it for subsequent production lots.
- If the quality is not okay (not within accepted tolerance limits), improve the process, calibrate it, develop the product once again, and check the quality again.
- Repeat until the quality is okay; then standardize the process and allow it to produce more products.
In manufacturing there is a clear link between process quality and product quality, because it is relatively easy to standardize the manufacturing process and monitor it. Once manufacturing systems are calibrated, they can be run again and again to output high-quality products at the same quality levels.
Worked example — tracing the loop on a bottling line
A factory fills 500 ml bottles of juice on a single machine. Follow the loop:
- Define: the process is "set the filler nozzle pressure to 2.0 bar, run the conveyor at 40 bottles per minute."
- Develop: the machine runs a first batch of 1,000 bottles.
- Check: the quality team samples 50 bottles and measures the fill — the average is 492 ml, outside the specification of 500 ml ± 3 ml.
- Improve: the team increases the nozzle pressure to 2.3 bar and runs another batch.
- Check again: the new sample averages 499 ml — within tolerance. Quality is OK.
- Standardize: the settings (2.3 bar, 40 bottles/minute) are written down as the standard process, and the line runs the remaining production lots without re-calibration.
Sense-check: The loop is a control cycle — measure the output, adjust the machine, repeat until the output is inside tolerance, then lock the process. It works because the "product" is made by a machine that can be tuned and replicated.
10.6.2 Why Software Does Not Follow the Loop
Software is designed — it is a creative effort rather than a manufactured product — and the relationship between process quality and product quality is more complex. Software design is a creative process where the influence of individual skills and experience is very significant. External factors such as the novelty of an application or commercial pressure for an early product release may also affect product quality, irrespective of the process used.
The difference is the actor that executes the process. A bottling machine has no bad days, no mood, no new ideas; it runs the calibrated process exactly. A software engineer brings skill, judgment, and creativity — which is exactly why software quality varies with the people even when the process is identical.
10.6.3 Do Deadlines and Budget Pressure Affect Quality?
Q: Will the quality of the product be influenced by external pressures — tight deadlines, lack of budget for testing?
A: One student gave an ambivalent answer: it may. Another said you have to manage — but manage how, when there is no time? If there is no time and no money, how do you test? Testing is a very elaborate, time-consuming, and expensive process. You can buy more time, or add more resources if your budget permits. The reality is that you work under budget and schedule constraints almost every day as a developer and as a manager. Quality is affected by various external factors.
Pitfall: Pretending the process alone protects quality. A good process run under a brutal deadline with zero testing budget does not automatically produce good quality — external factors push directly on the outcome, whatever the process definition says.
The honest answer the class reached: external factors do influence quality. Testing is elaborate, time-consuming, and expensive; a tight deadline with no budget simply removes the testing the product needs. This is why the reporting-line argument from topic 10.2 matters — someone must be able to say "we need the time and budget to do this properly."
10.6.4 What Still Holds: Process Quality and Fewer Defects
The development process used has a significant influence on the quality of software, and good processes are more likely to lead to good-quality software. Process quality management and process improvement can result in fewer defects in the software being developed.
But there are real limits. It is difficult to assess software quality attributes such as reliability without using the software for a long period of time, so it is hard to tell how process characteristics influence these attributes. Also, because of the role of design and creativity in the software process, process standardization can sometimes stifle creativity, which may lead to poorer rather than better quality software.
Warning: Process standardization can stifle creativity and lead to poorer quality software. The manufacturing loop assumes every repeat of the process should be identical — but in software, the creative step (design) is exactly where the value lives, and over-standardizing it can damage the product it was meant to protect.
The two limits in one sentence each: reliability is only observable over long use, so you cannot quickly prove a process produces it; and standardization fights creativity, the very source of software quality.
10.6.5 Team Quality Culture
The quality manager should also aim to develop a team quality culture, in which everyone is responsible for achieving a higher level of product quality, and should encourage teams to take responsibility for the quality of their work and to develop new approaches to quality improvement.
While standards and procedures are the basis of quality management in a large project, good quality managers recognize that there are many intangible aspects of software quality — the team culture, the elegance of the code, the readability of the code, the efficiency of the algorithm — that cannot be embodied in standards. They should support people who are interested in these intangible and creative aspects of quality and encourage professional behavior in all team members.
Q: As team members, do you take responsibility for the quality of the products you develop, or is quality only the testing team's job — the developers just write code and the testing team finds the defects?
A: A student said the team takes collective responsibility. Collective responsibility is important because the product is developed by a team, and everyone should have a sense of achieving quality in the product rather than just doing their job of coding.
Pitfall: "Quality is the testing team's problem." Intangible aspects of quality — team culture, elegance and readability of code, efficiency of algorithms — cannot be embodied in standards, so they cannot be checked by any process or testing team. If the developers do not feel ownership of quality, these aspects simply will not exist.
This team quality culture is exactly what agile development follows, relying on culture instead of on standards and procedures.
Recap: The process-based approach to quality — define, develop, check, improve, standardize — works in manufacturing because machines can be calibrated and repeated. Software is designed by creative people, so the loop has limits: external pressures, hard-to-measure long-term qualities, and the creativity-stifling risk of standardization. The complement is a team quality culture, which is also the heart of agile quality management.
Exam note: Study the chapter on quality management and the courseware modules — the define-develop-check-improve-standardize loop and its limits in software are a core topic.
10.7 Software Standards: Why They Matter
10.7.1 Standards Capture Organizational Wisdom
Software standards can be international, national, organizational, or project-specific standards. They are very important for several reasons.
First, standards capture the wisdom that is of extremely significant value to the organization. They are based on knowledge of the best practices — or the most appropriate practices — for the company. This knowledge is often acquired only after a great deal of trial and error over several projects in the past. Building it into standards helps the company reuse its experience and avoid the previous mistakes. Standards encapsulate best practices and capture wisdom of value to the organization.
Intuition: Think of a standard as the organization's memory. Every standard in the handbook represents lessons somebody already paid for — a project that failed because the database design was reviewed too late, a release that broke because changes were not recorded. The standard lets the next project reuse that experience for free and avoid the same mistakes.
10.7.2 Standards Define What Quality Means
Second, standards provide a framework for defining what quality means in a particular setting. Software quality is quite subjective, and by using standards you establish a basis for deciding whether a required level of quality has been achieved. This depends on setting standards that reflect user expectations for software usability, dependability, and performance, and so on.
The connection to topic 10.5 is direct: quality factors like usability are subjective judgments, so "was the quality good enough?" needs a yardstick. The standards are that yardstick — a fixed, agreed definition of "good enough" that the quality team can check against. Without standards, every review is a personal opinion; with standards, it is a comparison.
10.7.3 Standards Give Continuity Across Teams
Third, standards assist continuity when work is carried out by different teams successively. Standards ensure that all engineers, developers, and testers within the organization adopt the same practices, so the learning effort required when starting new work is reduced. Once you have a set of standardized processes, methods, techniques, and tools, everyone knows what to use and what standards to apply. This makes it easier for new teams to take over the work from an earlier team, or from a person who moves to another team or leaves the organization.
The three reasons, in one line each:
| Reason | What it does for the organization |
|---|---|
| Captures wisdom | Reuses hard-won experience; avoids previous mistakes |
| Defines quality | Gives a yardstick for judging subjective quality |
| Gives continuity | Lets new teams take over work with less learning effort |
10.7.4 The Four P's of Software Engineering
Q: What are the four pillars of software engineering — the four P's of software engineering that are to be measured and managed?
A: People, product, process, and project. People came first in the class discussion, and people is indeed the most important — but in the context of standards we are measuring product standards and process standards. Project standards come in when you go for PMI certification, and people standards and measurements belong to HR. Of the four pillars, the most important is people — without people there is no software.
The four P's — people, product, process, and project — are the four pillars of software engineering that must be measured and managed. The class discussion placed people first, and the professor confirmed that is correct: without people there is no software. But each pillar connects to a different kind of measurement:
- People — standards and measurements belong to human resources (HR).
- Product — product standards, the subject of this lecture.
- Process — process standards, also the subject of this lecture.
- Project — project standards, which appear when you pursue PMI certification.
10.7.5 People Cannot Be Replaced by Tools
Q: Can software be manufactured automatically — even with generative AI, without needing software engineers? Will your job profile change because of ChatGPT and generative AI?
A: The class agreed you cannot do without people. You cannot replace people in software engineering. Even if ChatGPT writes code for you, who has to give the specification? People have to give the specification and check that it is done correctly. The requirements come from customers and stakeholders, and are refined by the developers. In the future, new things may emerge — but the requirements still have to be given by people.
The question was not hypothetical — the class discussed whether generative AI tools change the software engineer's job. The conclusion: the tool can write code, but it cannot do the two things that start and end every project — giving the specification (requirements come from customers and stakeholders, refined by developers) and checking that the work is correct.
The class concluded that the role changes — engineers increasingly specify, guide, and verify AI-generated code — but the role does not disappear, because the requirements still come from people.
Exam note: The mid-semester test included a question on the challenges to software engineering in this decade; mentioning AI tools such as ChatGPT as a challenge is a valid answer — but remember the counter-argument the class established: people still provide the specification and verify the result.
Recap: Standards matter for three reasons — they capture organizational wisdom, define what quality means, and give continuity across teams. The four P's of software engineering are people, product, process, and project, and people is the most important: even generative AI cannot replace the people who give the specification and check the work.
10.8 Product Standards and Process Standards
10.8.1 Two Kinds of Standards
There are two types of standards that are important in software quality management: product standards and process standards.
Product standards apply to the software product being developed. They describe what the product should be like — coding standards, document standards, the structure of documents, and so on. You need a defined and measurable product: your quality is defined and it is measurable. Without a defined and measurable product, you cannot engineer the product and you cannot check that you have achieved it.
Process standards describe how to do things — the processes to be followed during software development. They include good development practices, definitions of how the specification should be collected, how design should be done, how the verification and validation process should be done, what support tools should be used for various processes, and what documents should be written during all these processes. A systematic and quantifiable approach is the standardized process.
Definition (side by side):
- Product standard — describes what the product should be like: its format, structure, style. Examples: the structure of a requirements document, a method header format, a Java programming style.
- Process standard — describes how to do things: the steps and techniques to follow. Examples: how to conduct a design review, how to submit code for system building, how to control change.
The two standards work as a pair: the process standard governs the journey (how the work is done), and the product standard defines the destination (what the work must look like when finished).
| Dimension | Product standards | Process standards |
|---|---|---|
| Answers the question | What should the product be like? | How should things be done? |
| Applies to | The work products (documents, code, forms) | The activities and procedures |
| Checked by | Comparing the artifact against the standard | Auditing how the work was carried out |
| Typical examples | Requirements document structure, Java programming style, method header format | Design review conduct, version release process, change control process |
When to pick which: if you are defining an artifact's required form, you need a product standard; if you are defining the steps someone must follow, you need a process standard — most projects need both, because a product without a producing process and a process without a defined output are both incomplete.
10.8.2 The Health Checkup Analogy
Analogy: Think of a medical checkup. There are many parameters, there are techniques to measure all of them, and for each there is a range — and that range is the standard. Based on your reading being normal or above normal, the doctor may see indicators of certain health issues, and then certify that your health is at a particular state, or getting better, and so on. Every medical test has a standard operating procedure — that is the process standard — and the product standard defines what the product (your health state) should be like. Standard operating procedures are common in manufacturing as well.
The analogy maps cleanly onto the two standard types:
- Parameters and ranges — blood pressure, cholesterol, heart rate, each with a normal range. The range is the product standard: it defines what a healthy result looks like.
- Standard operating procedures (SOPs) — how the blood sample must be taken, how the ECG electrodes are placed, how the lab test is run. These are process standards: they define how each measurement must be done so that results are comparable and trustworthy.
Where the analogy breaks: a checkup's ranges come from medical research across millions of patients, while software standards are usually defined inside one organization from its own experience — but the two-layer structure (measured quantity + range, and the procedure that measures it) is exactly the same.
10.8.3 Examples of Product Standards
Worked example — product standards from everyday work
Examples of product standards include:
- Form for design review — every design review must be recorded on this form, so reviews across projects look alike and nothing important is skipped.
- Requirements document structure — the same chapter and section layout in every requirements document, so readers know where to find scope, constraints, and acceptance criteria.
- Method header format — every method in the code starts with a standard header describing its purpose, parameters, and return value.
- Java programming style — the same naming, indentation, and commenting conventions in every Java file.
- Project plan format — one standard layout for project plans, so stakeholders compare plans across projects.
- Change request form — every requested change arrives on the same form, capturing description, impact, cost, and priority.
These are all work products used in the development process, and each needs a standard: a format, a document structure, a way of capturing information. The point of each standard is that the artifact becomes defined and measurable — a requirements document that does not follow the structure is immediately recognizable as non-conforming.
Sense-check: Every example is a thing (a form, a document, a header, a style), not an activity — that is the tell-tale sign of a product standard.
10.8.4 Examples of Process Standards
Process standards describe how to do things, such as:
- How to conduct a design review. The meeting steps, the roles, what gets recorded — the review process itself.
- How to submit new code for system building. Every day you integrate your code with the build and test, then integrate it with the build again.
- How to release a version. When you have configuration and multiple releases are produced during development, how to control the version release.
- How to approve the project plan. The project plan approval process — who signs off, in what order.
- How to control change. The change control process. Change requests keep coming: you have to measure the impact of the change, assess the cost of the change, do a cost-benefit analysis, and check the priority — is it urgent, immediate, low priority, or already done?
- How to record tests and share them with the teams. Test results are recorded in a standard way and shared, so every team reads the same record.
Worked example — tracing the change control process
A client requests a new report in the system. Follow the process standard for change control:
- Record the request: the change request arrives on the standard change request form — description, requester, date. The form is a product standard; using the form is the first step of the process standard.
- Measure the impact: the team estimates which modules, data structures, and tests the change touches — three modules, one database table, forty existing tests.
- Assess the cost: the estimate is five developer-days plus two test-days.
- Do a cost-benefit analysis: the change brings the client a new regulatory report worth the effort — benefits outweigh costs.
- Check the priority: urgent, immediate, low priority, or already done? This one is "immediate" — the client needs it before the quarterly deadline.
- Decide and implement: the change is approved, scheduled, and its progress is recorded in the standard process documentation.
Sense-check: The process standard tells the team how to handle any change request, and the product standards (the form, the record) make the result measurable — the same six steps apply to every change, big or small.
Standards are not something alien — they are part of your everyday work. Every build you submit, every review you attend, every form you fill is a standard in action.
10.8.5 Standards Must Pay Their Way
Standards should not be just on paper. They should deliver value in the form of increased product quality. There is no point in defining standards that are expensive in terms of time and effort to apply and that only lead to marginal improvements in quality that are hardly noticeable. Product standards have to be designed so that they can be applied and checked in a cost-effective way, and process standards should include definitions of the processes used to check whether the product standards and process standards have been followed.
Pitfall: Defining impressive-looking standards that cost more than they return. A standard that demands hours of manual effort per artifact for a barely noticeable quality gain is a drag on the team — and teams respond by quietly ignoring it. Every standard must earn its place by improving quality more than it costs in effort.
Recap: Product standards define what the product should be like (forms, document structures, code style); process standards define how to do things (design review conduct, version release, change control). Like a medical checkup — the range is the product standard and the standard operating procedure is the process standard — and every standard must deliver more quality value than it costs to apply.
10.9 Making Standards Work
10.9.1 Standards Are Often Seen as Over-Prescriptive
The software engineering standards used within a company are usually adapted from broader national or international standards. Software engineers sometimes consider standards to be over-prescriptive and irrelevant to the technical activity of software development. This is particularly likely when the project standards require tedious documentation and a lot of recording work. And if the engineers are not supported by tools, following the standards is difficult.
Hook: Why do developers so often roll their eyes at the standards handbook — even when they agree that standards are a good idea in general? Because a standard that demands hours of manual form-filling, with no tool to help, feels like bureaucracy sitting on top of real engineering work.
The root of the problem is usually not the concept of standards but the way they are imposed: too many forms, too much recording, no tool support. Engineers usually accept the general need for standards — they object to standards that do not fit their project.
10.9.2 Involve Engineers and Explain the Why
The quality manager should involve the software engineers in the selection of product standards. If developers understand why standards have been selected, they are more likely to be committed to these standards. Ideally, the standards document should not just set out the standards to be followed but should also include commentary explaining why these standardization decisions were made, so that the engineers accept that the standards are relevant to their project.
Key idea: Commitment beats enforcement. A standard that engineers helped choose and understand is followed because people agree with it; a standard that arrives from above with no explanation is followed only when someone is watching. The standards document should carry the reasons next to the rules.
10.9.3 Keep Standards Alive and Tool-Supported
The quality manager should review the standards often and modify them regularly to reflect changing technologies, the business environment, and methodologies. Standards are expensive to develop, and they often tend to be enshrined in a company's standards handbook that nobody uses — because of the costs and elaborate discussions required, there is often reluctance to change standards once they are put into the quality or standards manual. The standards handbook is essential for the reasons given earlier — encapsulation of best practices, continuity in development, a framework for quality — but it should also evolve to reflect changing circumstances and technology.
Warning: Standards often end up enshrined in a handbook that nobody uses. Because standards are expensive to develop, there is reluctance to change them — so the handbook quietly goes stale, and stale standards drift away from how people actually work. A handbook that never changes is a museum, not a guide.
Standards also cannot be followed without adequate tool support. The quality manager must make sure that tool support is available for standards-based development. Developers often find standards to be a problem when conformance involves very tedious manual work that a software tool could do. Automatic data collection, analysis, and reporting can be done by software tools, so if tool support is available, standards can be followed without much extra effort. For example, program layout standards can be defined and implemented by a syntax-directed program and editing system. You need tools that capture and collect data, analyze it, and provide inferences.
Warning: Standards cannot be followed without tool support. Conformance that means tedious manual work — counting, measuring, re-typing — will not be done reliably by humans; the same work automated by a tool becomes cheap and correct. Without tooling, even a good standard is effectively unenforced.
10.9.4 Adapt Standards to Each Project
Different types of software need different development processes, so standards have to be adaptable. There is no point in prescribing a particular way of working if it is inappropriate for the project or the project team. Each project manager should have the authority to modify the process standards according to the individual circumstances. However, when changes are made, it is important to ensure that the changes do not lead to a loss of product quality — changing standards should not suddenly reduce product quality.
The project manager and the quality manager can avoid the problems of inappropriate standards by careful quality planning early in the project. They should decide which of the organization's standards should be used without change, which should be modified, and which should be ignored. New standards may have to be created in response to customer requirements or project requirements. For example, if you are developing a real-time system, you may have to use formal specifications that include mathematical models, and standards for these may have to be developed as well if they were not used in previous projects.
Recap: Standards are not sacred texts — they must be chosen with engineers, explained with commentary, kept alive through regular review, supported by tools, and adapted by each project manager to the project's circumstances, as long as adaptation does not reduce product quality.
10.9.5 Measuring against Standards, and What Comes Next
Standards are important in quality assurance because only when you define product standards can you measure them and assess product quality. Similarly, only when you define the process and can measure the process activities — in terms of the time taken, the resources consumed, and the frequency of occurrence of events — can you assess compliance with the processes and standards for ensuring product standards.
Key idea: A standard that cannot be measured is a standard that cannot be enforced. Product standards make the product measurable; process standards make the process measurable (time taken, resources consumed, frequency of events) — and only measurable things can be checked for compliance.
There are many standards-based frameworks for standards at the project level and the organizational level. One of them is the ISO 9001 standards framework, which is discussed next along with the review, walkthrough, and inspection techniques used to assess static quality. Frameworks like ISO 9000 and CMMI are part of quality management in the software industry and are widely used in organizations.
Real-world: ISO 9001 certification and CMMI maturity models are the standards frameworks you will most often meet in industry quality programs.
Recap: Only what is defined can be measured, and only what is measured can be checked. Next session moves from standards to the frameworks built on them — ISO 9001, and the review, walkthrough, and inspection techniques for static quality assessment.
Exam Guidance Summary
- The mid-semester test included a question on the challenges to software engineering in this decade; naming AI tools like ChatGPT as a challenge is a strong answer — and pairing it with the counter-argument (people still give the specification and verify the work) makes it stronger.
- A second quiz is being made available, with an announcement to follow.
- Study the chapter on quality management, plus the modules on quality management in the courseware.
- Quality management is a very important topic related to the software testing topic covered before the mid-semester, and it connects to software project management.
- Next session: the ISO 9000 standards framework, review/walkthrough/inspection techniques for static quality assessment, and quality management in agile projects.
- Be ready to distinguish: quality assurance versus quality control, organizational-level versus project-level quality management, product standards versus process standards, and conformance to specification versus fitness for purpose.
- Know McCall's fifteen quality factors and the fact that they are measured indirectly through internal attribute measurements.
- Know the typical quality plan outline: product introduction, product plans, process descriptions, quality goals, and risk management.
- Remember the fitness-for-purpose questions the quality team asks before release — they are a ready-made answer for any question about how software quality is judged.
- Know why the quality manager reports above the project manager, and why small teams and agile teams cannot always keep the roles independent.
Key Industry Applications
- Real-world: ISO 9001 and ISO 9000 certification frameworks and CMMI maturity models are the standards frameworks used in industry quality programs; you will have seen them in organizations.
- Real-world: companies run software quality assurance teams and, in many cases, independent testing groups that do system testing and release testing and report to the quality manager.
- Real-world: PMI certification introduces project standards; people standards and measurements belong to HR.
- Real-world: standard operating procedures (SOPs), common in manufacturing and in medical testing, are the everyday form of process standards.
- Real-world: generative AI tools like ChatGPT can write code, but people still give the specification and verify the result — the requirements come from customers and stakeholders.
- Real-world: daily build and test integration, version release control under configuration management, and change control processes (impact measurement, cost assessment, cost-benefit analysis, priority setting) are everyday process standards in software companies.
- Real-world: Java programming style, method header formats, design review forms, and change request forms are typical product standards in industry.
- Real-world: McCall's quality factors are a classic quality model for naming and discussing software quality attributes such as safety, security, reliability, portability, and efficiency.
- Real-world: plan-driven (waterfall) projects for large, long-lifetime systems with external clients are where formalized quality management is most visible; agile teams substitute a team quality culture for heavy standardization.
- Real-world: the fitness-for-purpose questions are applied before release in real organizations, and the testing work behind the answers is shared between quality teams, independent testing groups, and developers.
SE Lecture 10 notes · Software Quality Management
Sections Breakdown
The triple constraints of quality, cost, and time, what quality management means, and the organizational-level versus project-level concerns of quality management.
The manufacturing roots of QA versus QC, quality management as an independent check, deliverables and reviews, release and system testing, and the reporting line for independence.
What a quality plan must contain, the typical five-part quality plan outline, keeping plans short and simple, and whether a good process guarantees a good product.
The manufacturing view of conformance with tolerance, why software cannot be judged that way, fitness for purpose with the six release-readiness questions, and judging quality from test results.
Non-functional characteristics as the drivers of subjective quality, the four core attributes, McCall's fifteen quality factors, and prioritizing attributes in the quality plan.
The manufacturing process loop of define, develop, check, improve, and standardize, why software does not follow the loop, external pressures on quality, and the team quality culture.
Standards capture organizational wisdom, define what quality means, and give continuity across teams; the four P's of software engineering and why people cannot be replaced by tools.
Product standards versus process standards, the health checkup analogy, examples of both from everyday work, and why standards must pay their way.
Why standards are seen as over-prescriptive, involving engineers and explaining the why, keeping standards alive and tool-supported, and adapting standards to each project.
Consolidated exam guidance: the four distinction pairs, McCall's fifteen factors, the quality plan outline, the fitness-for-purpose questions, and the quality manager reporting line.
Real-world quality management: ISO 9001 and CMMI frameworks, SQA teams and independent testing groups, SOPs, and everyday product and process standards.
Exam Revision Notes
Below is the distilled, exam-ready core. Every entry comes from the full explanation above. Use this section for rapid review; return to the main notes when a point needs more context.
Why Quality Management Matters
Must-know: Quality management is one of the three triple constraints (quality, cost, time — good, fast, cheap) and spans organizational level (framework of processes and standards) and project level (applying quality processes + writing the project quality plan).
⚠️ Top pitfall: Confusing the two levels: the organizational framework is broad and shared; the project quality plan is specific and tuned to project factors like budget, time, team capability, and product nature.
Self-check: Why must a project still write its own quality plan even when the organization has standard processes?
Connects to: Quality Assurance and Quality Control, Quality Planning
Quality Assurance and Quality Control
Must-know: Distinguish quality assurance (definition of processes and standards leading to high-quality products) from quality control (application of those processes to weed out products that are not of the required level); the quality manager must report above the project manager so budget and schedule pressures cannot compromise quality.
⚠️ Top pitfall: Making the quality manager report to the project manager — then the quality check is no longer independent and testing tends to be cut under schedule pressure.
Self-check: In the D1 to D5 deliverable chain, when does the first quality review happen?
Connects to: Why Quality Management Matters, Quality Planning
Quality Planning
Must-know: The typical quality plan outline: product introduction, product plans, process descriptions, quality goals, and risk management; quality plans must be short and simple; in manufacturing a good calibrated process yields good products, but software is creative and people-centric, so process-based quality does not always apply.
⚠️ Top pitfall: Writing quality plans so long that nobody reads them — the plan only works if people actually use it.
Self-check: Why is the same organizational process not enough — why does each project still need its own quality plan?
Connects to: Why Quality Management Matters, Quality Assurance and Quality Control, Process-Based Quality and Its Limits in Software
Software Quality versus Manufacturing Quality
Must-know: Software quality cannot be judged by conformance with tolerance: specifications are incomplete and ambiguous, they compromise conflicting stakeholders, and key qualities cannot be measured directly — so the quality team judges fitness for purpose by asking the six release-readiness questions.
⚠️ Top pitfall: Trying to treat 'almost right' software as acceptable within tolerance — a single wrong requirement interpretation can make the system unfit even if everything else works.
Self-check: List the six fitness-for-purpose questions the quality team asks before release.
Connects to: Quality Assurance and Quality Control, Quality Attributes and McCall's Quality Factors
Quality Attributes and McCall's Quality Factors
Must-know: The fifteen McCall quality factors (safety, security, reliability, resilience, robustness, understandability, testability, adaptability, modernity, complexity, portability, usability, reusability, efficiency, learnability) shown on three arms of a triangle, measured indirectly through internal attribute measurements; users work around unexpected functionality but cannot use software that is unreliable or too slow.
⚠️ Top pitfall: Assuming all quality attributes can be maximized together — improving security can lose performance, so the quality plan must prioritize and choose which attributes to assess.
Self-check: Why can usability not be measured directly, and what does the quality team measure instead?
Connects to: Quality Planning, Software Quality versus Manufacturing Quality
Process-Based Quality and Its Limits in Software
Must-know: The manufacturing quality loop is define-develop-check-improve-standardize; it works where machines can be calibrated and repeated, but software is a creative, people-centric activity — quality is affected by external factors like deadlines and testing budget, reliability is hard to assess quickly, and process standardization can stifle creativity and lower quality, so a team quality culture (as in agile) is needed.
⚠️ Top pitfall: Assuming a good process guarantees a good product under deadline and budget pressure — external factors push quality down no matter how well the process is defined, and over-standardization can itself reduce quality by stifling creativity.
Self-check: Why does the manufacturing loop break down for software, and what does a team quality culture add?
Connects to: Quality Planning, Quality Attributes and McCall's Quality Factors
Software Standards: Why They Matter
Must-know: Standards capture organizational wisdom, define what quality means, and assist continuity across teams; the four P's are people, product, process, and project (people most important, product/process standards are measured in quality management, project standards in PMI, people standards in HR); AI tools like ChatGPT can write code but people still give the specification and check the result.
⚠️ Top pitfall: Believing generative AI removes the need for software engineers — the requirements come from customers and stakeholders, and people must give the specification and verify the output.
Self-check: Name the four P's of software engineering and say which one is most important and why.
Connects to: Why Quality Management Matters, Product Standards and Process Standards
Product Standards and Process Standards
Must-know: Product standards describe what the product should be like (design review form, requirements document structure, method header format, Java programming style, project plan format, change request form) and process standards describe how to do things (design review conduct, code submission for builds, version release, project plan approval, change control, test recording) — and standards must pay their way by increasing product quality.
⚠️ Top pitfall: Defining standards that are expensive to apply and yield only marginal quality gains — they must be cost-effective and checked by defined processes.
Self-check: Give one example of a product standard and one of a process standard, and say how to tell them apart.
Connects to: Software Standards: Why They Matter, Making Standards Work
Making Standards Work
Must-know: Standards are often seen as over-prescriptive and irrelevant, so the quality manager must involve engineers in selection and explain why standards were chosen; review and modify standards regularly because they otherwise get enshrined in an unused handbook; provide tool support because conformance without tools means tedious manual work; and let each project manager adapt process standards to the project as long as product quality does not drop.
⚠️ Top pitfall: Treating the standards handbook as fixed — standards that never change go stale, and standards without tool support are effectively unenforced because conformance becomes tedious manual work.
Self-check: What three actions keep standards alive, and why must project managers be allowed to adapt process standards?
Connects to: Software Standards: Why They Matter, Product Standards and Process Standards
Exam Guidance Summary
Must-know: Be ready to distinguish quality assurance versus quality control, organizational-level versus project-level quality management, product standards versus process standards, and conformance to specification versus fitness for purpose; know McCall's fifteen factors (measured indirectly), the quality plan outline (product introduction, product plans, process descriptions, quality goals, risk management), and the fitness-for-purpose questions.
⚠️ Top pitfall: Answering a quality question with only one side of a distinction — the exam rewards naming both concepts and the relationship between them.
Self-check: Which four distinction pairs should you be ready to explain on the exam?
Connects to: Quality Assurance and Quality Control, Software Quality versus Manufacturing Quality, Quality Attributes and McCall's Quality Factors, Software Standards: Why They Matter, Product Standards and Process Standards
Key Industry Applications
Must-know: In industry, quality management shows up as ISO 9001/ISO 9000 certification and CMMI maturity models, SQA teams with independent testing groups reporting to the quality manager, SOPs and change control as process standards, Java style and review forms as product standards, and a team quality culture in agile.
⚠️ Top pitfall: Imagining quality management as a purely academic topic — every listed practice maps to something you will meet in real organizations.
Self-check: Name two real-world standards frameworks and one everyday process standard used in software companies.
Connects to: Process-Based Quality and Its Limits in Software, Software Standards: Why They Matter, Product Standards and Process Standards, Making Standards Work
Was this lecture useful?
BitsNotes AI Assistant
Subject Notes AssistantConfigure AI Chat
Choose how to access the chatbotSigned in as
Powered by BitsNotes — 20 messages per day. No API key needed. Want unlimited access? Use "Bring Your Own Key" mode.
Sign in to use AI Chat
Get 20 free AI messages per day to ask questions about your lecture notes. Sign in with Google or GitHub — it takes 5 seconds.
Sign In to BitsNotesSwitch to "Bring Your Own Key" tab above for unlimited access with any OpenAI-compatible provider.