Software Reliability Techniques for Real-World Applications (eBook)

eBook Download: EPUB
2022 | 1. Auflage
352 Seiten
Wiley (Verlag)
978-1-119-93184-3 (ISBN)

Lese- und Medienproben

Software Reliability Techniques for Real-World Applications -  Roger K. Youree
Systemvoraussetzungen
106,99 inkl. MwSt
  • Download sofort lieferbar
  • Zahlungsarten anzeigen
SOFTWARE RELIABILITY TECHNIQUES FOR REAL-WORLD APPLICATIONS

SOFTWARE RELIABILITY TECHNIQUES FOR REAL-WORLD APPLICATIONS

Authoritative resource providing step-by-step guidance for producing reliable software to be tailored for specific projects

Software Reliability Techniques for Real-World Applications is a practical, up to date, go-to source that can be referenced repeatedly to efficiently prevent software defects, find and correct defects if they occur, and create a higher level of confidence in software products. From content development to software support and maintenance, the author creates a depiction of each phase in a project such as design and coding, operation and maintenance, management, product production, and concept development and describes the activities and products needed for each.

Software Reliability Techniques for Real-World Applications introduces clear ways to understand each process of software reliability and explains how it can be managed effectively and reliably. The book is supported by a plethora of detailed examples and systematic approaches, covering analogies between hardware and software reliability to ensure a clear understanding. Overall, this book helps readers create a higher level of confidence in software products.

In Software Reliability Techniques for Real-World Applications, readers will find specific information on:

  • Defects, including where defects enter the project system, effects, detection, and causes of defects, and how to handle defects
  • Project phases, including concept development and planning, requirements and interfaces, design and coding, and integration, verification, and validation
  • Roadmap and practical guidelines, including at the start of a project, as a member of an organization, and how to handle troubled projects
  • Techniques, including an introduction to techniques in general, plus techniques by organization (systems engineering, software, and reliability engineering)

Software Reliability Techniques for Real-World Applications is a practical text on software reliability, providing over sixty-five different techniques and step-by-step guidance for producing reliable software. It is an essential and complete resource on the subject for software developers, software maintainers, and producers of software.

ROGER K. YOUREE is a Systems Scientist at Instrumental Sciences, Inc. Dr. Youree received his Doctorate degree in Applied Mathematics from the University of Alabama in Huntsville, USA, and has more than thirty-five years of experience with military, NASA, and commercial programs, including responsibilities such as planning, cost estimates, and progress tracking. Dr. Youree has extensive expertise in reliability engineering, including RAM Plan development, requirements development, modeling for allocation, predictions, and system improvement.


Authoritative resource providing step-by-step guidance for producing reliable software to be tailored for specific projects Software Reliability Techniques for Real-World Applications is a practical, up to date, go-to source that can be referenced repeatedly to efficiently prevent software defects, find and correct defects if they occur, and create a higher level of confidence in software products. From content development to software support and maintenance, the author creates a depiction of each phase in a project such as design and coding, operation and maintenance, management, product production, and concept development and describes the activities and products needed for each. Software Reliability Techniques for Real-World Applications introduces clear ways to understand each process of software reliability and explains how it can be managed effectively and reliably. The book is supported by a plethora of detailed examples and systematic approaches, covering analogies between hardware and software reliability to ensure a clear understanding. Overall, this book helps readers create a higher level of confidence in software products. In Software Reliability Techniques for Real-World Applications, readers will find specific information on: Defects, including where defects enter the project system, effects, detection, and causes of defects, and how to handle defects Project phases, including concept development and planning, requirements and interfaces, design and coding, and integration, verification, and validation Roadmap and practical guidelines, including at the start of a project, as a member of an organization, and how to handle troubled projects Techniques, including an introduction to techniques in general, plus techniques by organization (systems engineering, software, and reliability engineering) Software Reliability Techniques for Real-World Applications is a practical text on software reliability, providing over sixty-five different techniques and step-by-step guidance for producing reliable software. It is an essential and complete resource on the subject for software developers, software maintainers, and producers of software.

ROGER K. YOUREE is a Systems Scientist at Instrumental Sciences, Inc. Dr. Youree received his Doctorate degree in Applied Mathematics from the University of Alabama in Huntsville, USA, and has more than thirty-five years of experience with military, NASA, and commercial programs, including responsibilities such as planning, cost estimates, and progress tracking. Dr. Youree has extensive expertise in reliability engineering, including RAM Plan development, requirements development, modeling for allocation, predictions, and system improvement.

Preface xi

Series Editor's Foreword by Dr. Andre Kleyner xiii

Acronyms xv

Glossary xvii

1 Introduction 1

1.1 Description of the Problem 1

1.2 Implications for Software Reliability 2

References 3

2 Understanding Defects 5

2.1 Where Defects Enter the Project System 5

2.2 Effects of Defects 6

2.3 Detection of Defects 7

2.4 Causes of Defects 9

References 12

3 Handling Defects 13

3.1 Strategy for Handling Defects 13

3.2 Objectives 14

3.3 Plan 15

3.4 Implementation, Monitoring, and Feedback 28

3.5 Analogies Between Hardware and Software Reliability Engineering 31

References 33

4 Project Phases 35

4.1 Introduction to Project Phases 35

4.2 Concept Development and Planning 43

4.2.1 Description of the CDP Phase 43

4.2.2 Defects Typical for the CDP Phase 46

4.2.3 Techniques and Processes for the CDP Phase 47

4.2.4 Metrics for the CDP Phase 51

4.3 Requirements and Interfaces 62

4.3.1 Description of the Requirements and Interfaces Phase 62

4.3.2 Defects Typical for the Requirements and Interfaces Phase 63

4.3.3 Techniques and Processes for the Requirements and Interfaces Phase 65

4.3.4 Metrics for the Requirements and Interfaces Phase 68

4.4 Design and Coding 73

4.4.1 Description of the DC Phase 73

4.4.2 Defects Typical for the DC Phase 76

4.4.3 Techniques and Processes for the DC Phase 78

4.4.4 Metrics for the DC Phase 82

4.5 Integration, Verification, and Validation 91

4.5.1 Description of the IV&V Phase 91

4.5.2 Defects Typical for the IV&V Phase 94

4.5.3 Techniques and Processes for the IV&V Phase 96

4.5.4 Metrics for the IV&V Phase 98

4.6 Product Production and Release 105

4.6.1 Description of the Product Production and Release Phase 106

4.6.2 Defects Typical for the Product Production and Release Phase 107

4.6.3 Techniques and Processes for the Product Production and Release Phase 108

4.6.4 Metrics for the Product Production and Release Phase 111

4.7 Operation and Maintenance 115

4.7.1 Description of the Operation and Maintenance Phase 116

4.7.2 Defects Typical for the OM Phase 119

4.7.3 Techniques and Processes for the OM Phase 119

4.7.4 Metrics for the OM Phase 121

4.8 Management 125

4.8.1 Description of Management 125

4.8.2 Defects Typical for Management 126

4.8.3 Techniques and Processes for Management 128

4.8.4 Metrics for Management 131

References 139

5 Roadmap and Practical Guidelines 141

5.1 Summary and Roadmap 141

5.1.1 Start of a Project 142

5.1.2 As a Member of an Organization 145

5.1.3 Troubled Projects 145

5.2 Guidelines 149

References 150

6 Techniques 151

6.1 Introduction to the Techniques 151

6.2 Techniques for Systems Engineering 151

6.3 Techniques for Software 161

6.4 Techniques for Reliability Engineering 179

6.5 Project-Wide Techniques and Techniques for Quality Assurance 254

References 316

Index 323

2
Understanding Defects


To prevent and control software defects, we need to understand them. This chapter explains the nature of software defects, including where they enter into the system, what effects they can have, how to detect them, and what causes them.

To reduce the number and impact of defects in our software, it is important to understand the nature of errors and defects. Almost any error on a project can affect the reliability of the software. Anything that makes it more difficult for project personnel to perform their tasks can negatively impact reliability, even if it does not directly result in placing a defect in the software code. A frustrated, angry, or confused programmer is more likely to make an error resulting in a software defect than a motivated, generally happy, and well-informed programmer. A poor work environment and a lack of good software development tools are examples of defect precursors. Defect precursors do not directly cause a software defect, but they make defects more likely and so are considerations for software reliability. Projects that produce high-quality software tend to be well-run projects. Not all errors or defect precursors result in defects, but reducing errors and precursors reduces the likelihood of defects. Similarly, not all defects produce software faults, and not all software faults result in software failures, but again, reducing them improves our chances of reliable software.

As we want to produce reliable software, our understanding of software defects needs to be tailored to that purpose. To this end, we consider the following:

  1. Where defects enter the project system
  2. Effects defects can have on the project system
  3. How we can detect defects
  4. What causes defects
  5. How we can handle defects

The first four of these are addressed in Sections 2.12.4, while the fifth is covered in Chapter 3. Chapter 4 covers the material in more detail by addressing it for specific phases of a project.

2.1 Where Defects Enter the Project System


Knowing where defects can enter a project system is important because we can use this information to design mechanisms to prevent or detect them. When we think of software defects, we typically think of specific types of errors, such as typographical errors, logical errors, synchronization errors, resource errors, or interface errors, to name just a few, and the software defects that may result from them. These types of errors are obviously important, and we must be able to handle them; however, defects affecting the software can enter a system in almost any phase and through almost anything used to design or produce the software product. Processes and products in one phase are used by later phases to produce the final product, so defects in an early phase may propagate to the final product.

In Chapter 4, we describe six phases that are typical for a project. They are as follows:

  1. Concept Development and Planning
  2. Requirements and Interfaces
  3. Design and Coding
  4. Integration, Verification, and Validation
  5. Product Production and Release
  6. Operation and Maintenance

We also consider management impacts. All of these use processes and produce products that create opportunities to introduce defects. Examples of potential defect sources include a poor understanding of customer needs, imprecise requirements, and not following good configuration control processes. The first two examples are typically from the Concept Development and Planning phase and the Requirements and Interfaces phase, respectively, while the last example can be from any phase. It is also important to realize that defects can be introduced into software that has a low defect density, but these defects may have very serious consequences. Also, correcting a detected defect or adding a feature to mature software may introduce defects. Chapter 4 takes each of these phases and describes it, outlining what defects are typical for each phase and how they can enter the project system. It describes techniques and processes to mitigate these defects and lists some metrics to help monitor progress in each phase.

2.2 Effects of Defects


Software defects manifest themselves in many ways, and understanding this helps us produce more reliable software. Of course, a defect may never manifest itself. For example, if the defective part of the code is never executed, the defect never causes a fault or failure. As we generally try not to write unused code, we will assume that defects have some likelihood of being executed.

We commonly think of software defects as causing software crashes, infinite loops, or incorrect software results. Crashes and infinite loop tend to be readily visible. Incorrect results may be obvious or may be subtle. Other types of defects, such as memory leaks, may manifest themselves even more subtly. Software defects, or “bugs,” are sometimes classified into two types:

  1. Mandelbugs: A mandelbug is a software defect whose activation and subsequent behavior is complex and its behavior appears chaotic. An example of a mandelbug is a type of defect jovially referred to as a “heisenbug.” Heisenbugs are altered by the attempts to find them. They may be affected by the timing of the execution, by the memory addresses used, by having debugging tools connected to the system, or any of a large number of other factors. Once introduced into the software, heisenbugs, and mandelbugs in general, can be notoriously difficult to find.
  2. Bohrbugs: A bohrbug is a software defect whose behavior is repeatable and predictable. Although the cause of the incorrect behavior may be unknown, they are repeatable if the right conditions are found and applied.

Knowing about these various types of defects helps us plan, carry out, and analyze software tests. However, the possible existence of these subtle and hard-to-find defects is one of the reasons why we should not rely solely on software testing to detect defects. It also adds emphasis to the fact that software testing can only show the existence of defects in software, not the absence of defects. Ultimately, it supports the idea that we need to put an emphasis of defect prevention.

If the only defects that we consider are defects in the software, we are missing opportunities to prevent defects from being introduced into the project system. As previously mentioned, almost any error or defect can increase the likelihood of software defects. For example, a poorly worded requirement may be interpreted differently by different software developers. If two developers are writing different software modules affected by this requirement, the different interpretations may mean that these modules do not work together correctly. Furthermore, the effects may be subtle and difficult to find, meaning that the most cost-effective and schedule-effective way to deal with the defect is by ensuring that the requirements are as clear and precise as possible.

Finally, not all defect effects are equally important. Defects that never manifest themselves are less important than defects that cause critical failures. Improving the reliability of software involves focusing on the defects that are most likely to occur and also on the defects that have the most serious consequences if they do occur.

2.3 Detection of Defects


An effective and efficient software reliability effort requires well-thought-out defect detection and monitoring. Good defect detection and monitoring should:

  1. Find errors and defects early when it is most cost-effective and schedule-effective to correct them.
  2. Be as complete as practical, finding a high percentage of the errors and defects, and finding them in all processes and products that can significantly affect the software product.
  3. Be reliable by not missing too many errors and defects while also not creating too many false alarms and the ensuing unproductive effort.
  4. Be cost-efficient and schedule-efficient to perform.

Good defect detection and monitoring should also add confidence in the software and related products. It should provide evidence that it is working, and project personnel should be able to trust the detection and monitoring processes and execution enough that the results can be used as a part of the final sign-off of the software.

Recognizing defect precursors is critical for preventing and removing defects efficiently. For example, knowing that a software defect may be due to a requirement defect informs us that we need to detect requirement issues and therefore institute appropriate processes for doing this. Process and product monitoring is important at each phase of the project, and Chapter 4 covers each in more detail.

There are many ways to identify an error, defect precursor, or defect. Some ways identify weaknesses or problems with the processes that produce a product and others identify issues with a product. Techniques to detect process defects and weakness include the following:

  1. Use a process failure modes effects and analysis (FMEA)/failure modes, effects, and criticality analysis (FMECA).
  2. Use process reviews, inspections, and independent assessors.
  3. Use error brainstorming sessions. Those responsible for a task brainstorm on what errors could occur while performing the task. The list can be used to develop checklists for the errors, and the brainstorming process sensitizes the task...

Erscheint lt. Verlag 30.11.2022
Reihe/Serie Wiley Series in Quality and Reliability Engineering
Sprache englisch
Themenwelt Technik Elektrotechnik / Energietechnik
Wirtschaft Betriebswirtschaft / Management
Schlagworte Computer Science • Electrical & Electronics Engineering • Elektrotechnik u. Elektronik • Informatik • Qualität u. Zuverlässigkeit • Quality & Reliability • Software engineering • Software-Engineering • Software Management • Software-Management • Software-Zuverlässigkeit • Technische Zuverlässigkeit
ISBN-10 1-119-93184-3 / 1119931843
ISBN-13 978-1-119-93184-3 / 9781119931843
Haben Sie eine Frage zum Produkt?
EPUBEPUB (Adobe DRM)
Größe: 3,7 MB

Kopierschutz: Adobe-DRM
Adobe-DRM ist ein Kopierschutz, der das eBook vor Mißbrauch schützen soll. Dabei wird das eBook bereits beim Download auf Ihre persönliche Adobe-ID autorisiert. Lesen können Sie das eBook dann nur auf den Geräten, welche ebenfalls auf Ihre Adobe-ID registriert sind.
Details zum Adobe-DRM

Dateiformat: EPUB (Electronic Publication)
EPUB ist ein offener Standard für eBooks und eignet sich besonders zur Darstellung von Belle­tristik und Sach­büchern. Der Fließ­text wird dynamisch an die Display- und Schrift­größe ange­passt. Auch für mobile Lese­geräte ist EPUB daher gut geeignet.

Systemvoraussetzungen:
PC/Mac: Mit einem PC oder Mac können Sie dieses eBook lesen. Sie benötigen eine Adobe-ID und die Software Adobe Digital Editions (kostenlos). Von der Benutzung der OverDrive Media Console raten wir Ihnen ab. Erfahrungsgemäß treten hier gehäuft Probleme mit dem Adobe DRM auf.
eReader: Dieses eBook kann mit (fast) allen eBook-Readern gelesen werden. Mit dem amazon-Kindle ist es aber nicht kompatibel.
Smartphone/Tablet: Egal ob Apple oder Android, dieses eBook können Sie lesen. Sie benötigen eine Adobe-ID sowie eine kostenlose App.
Geräteliste und zusätzliche Hinweise

Buying eBooks from abroad
For tax law reasons we can sell eBooks just within Germany and Switzerland. Regrettably we cannot fulfill eBook-orders from other countries.

Mehr entdecken
aus dem Bereich
Lehrbuch zu Grundlagen, Technologie und Praxis

von Konrad Mertens

eBook Download (2022)
Carl Hanser Verlag GmbH & Co. KG
34,99
Ressourcen und Bereitstellung

von Martin Kaltschmitt; Karl Stampfer

eBook Download (2023)
Springer Fachmedien Wiesbaden (Verlag)
66,99
200 Aufgaben zum sicheren Umgang mit Quellen ionisierender Strahlung

von Jan-Willem Vahlbruch; Hans-Gerrit Vogt

eBook Download (2023)
Carl Hanser Verlag GmbH & Co. KG
34,99