McConnell 2004 Chapter 20 The Software Quality Landscape Flashcards
Software has both external and internal quality characteristics. External characteristics are characteristics that a user of the software product is aware of, including: ● Correctness. The degree to which a system is free from faults in its specification, design, and implementation. ● Usability. The ease with which users can learn and use a system. ● Efficiency. Minimal use of system resources, including memory and execution time. ● Reliability. The ability of a system to perform its requi
- Outline the external and internal qualities which software may have?
Software has both external and internal quality characteristics. External characteristics are characteristics that a user of the software product is aware of, including
● Correctness. The degree to which a system is free from faults in its specification, design, and implementation.
● Usability. The ease with which users can learn and use a system.
● Efficiency. Minimal use of system resources, including memory and execution time.
● Reliability. The ability of a system to perform its required functions under
stated conditions whenever required—having a long mean time between
failures.
● Integrity. The degree to which a system prevents unauthorized or improper access to its programs and its data. The idea of integrity includes restricting unauthorized user accesses as well as ensuring that data is accessed properly—that is, that tables with parallel data are modified in parallel, that date fields contain only valid dates, and so on.
● Adaptability. The extent to which a system can be used, without modification, in applications or environments other than those for which it was specifically designed.
● Accuracy. The degree to which a system, as built, is free from error,especially with respect to quantitative outputs. Accuracy differs from correctness; it is a determination of how well a system does the job it’s built for rather than whether it was built correctly.
● Robustness. The degree to which a system continues to function in the presence of invalid inputs or stressful environmental conditions.
Some of these characteristics overlap, but all have different shades of meaning
that are applicable more in some cases, less in others.
External characteristics of quality are the only kind of software characteristics that users care about. Users care about whether the software is easy to use, not about whether it’s easy for you to modify. They care about whether the software works correctly, not about whether the code is readable or well structured.
Programmers care about the internal characteristics of the software as well as the external ones. This book is code-centered, so it focuses on the internal quality characteristics. They include
● Maintainability. The ease with which you can modify a software system to change or add capabilities, improve performance, or correct defects.
● Flexibility. The extent to which you can modify a system for uses or environments other than those for which it was specifically designed.
● Portability. The ease with which you can modify a system to operate in an environment different from that for which it was specifically designed.
● Re-usability. The extent to which and the ease with which you can use parts of a system in other systems.
● Readability. The ease with which you can read and understand the source code of a system, especially at the detailed-statement level.
● Test-ability. The degree to which you can unit-test and system-test a system; the degree to which you can verify that the system meets its requirements.
● Understandability. The ease with which you can comprehend a system at
both the system-organizational and detailed-statement levels. Understandability has to do with the coherence of the system at a moregeneral level than readability does.
As in the list of external quality characteristics, some of these internal
characteristics overlap, but they too each have different shades of meaning that
are valuable.
- Why is it important to set explicit quality objectives for a software development project?
Explicitly setting quality objectives is a simple, obvious step in achieving quality software, but it’s easy to overlook. You might wonder whether, if you set explicit quality objectives, programmers will actually work to achieve them? The answer is, yes, they will, if they know what the objectives are and the objectives are reasonable. Programmers can’t respond to a set of objectives that change
daily or that are impossible to meet.
- What are the most effective techniques for ensuring that a software developer produces quality software?
????
- What is the cheapest way of finding a defect and fixing a defect?
- inspections are cheaper than testing.
- the longer the defect remains in the system, the more expensive it becomes to remove.
- What is the ‘General Principle of Software Quality”?
The General Principle of Software Quality is that improving quality reduces development costs.