Object-oriented defect management of software
Houman Younessi · 2002
From the Book: Preface If you selected this book to learn more about testing of object-oriented programs, you are about to get more than you bargained for. As the title implies, this book discusses defect management of object-oriented software systems. This latter activity goes beyond merely testing object-oriented code in many respects. First, we will be discussing defect management, of which testing is only one type. Defects can potentially be injected into our software systems at any stage of the software process. If left unchecked and undiscovered, they would manifest themselves as errors or bugs when the final executable is set into operation. Testingexercising the executable in the hopes of making it failcan uncover many of these defects. However, there are other techniques that do not require the executable code to be available and instead rely on examining various artifacts of the process. We could call these static techniques to contrast with the former, which we might call dynamic. In this book, I discuss in detail both the static and the dynamic approaches to defect management. Second, testing is the removal of defects at the last, or nearly last, available opportunity before the product is to be used. It can thus be argued that taking an approach based on testing of code alone, a strictly corrective approach, is contrary to the very axiom of software engineering. We also need preventive approaches. Software engineeringin its entiretycan in fact be viewed as the process of managing defects in a software product. This claim may sound controversial at first, but in reality it is not so at all. Look at it this way: Anyactivity we perform as part of our software process is targeted toward either preventing defects from being included in our product or identifying and removing of those that have been already introduced. This in turn implies that defect management techniques are not uniquely applied to code, but can also be employed in relation to every activity of the software engineering process. In this book, I cover defect management techniques relevant to all stages of the software engineering process and not just techniques that deal with code. Additionally, both the corrective and preventive approaches are considered. Third, this book is about managing defects in an object-oriented environment. This does not mean, however, that all defect management techniques that are introduced in this book are exclusive to object orientation. Conversely, however, every technique I cover is useful in an object-oriented context, although it may not have been originally developed for that domain. Finally, given the recent ascent of the Unified Modeling Language (UML) and the Rational Unified Proces (RUP) to the level of having been accepted as standard means of modeling and conducting an object-oriented process respectively, we have made every attempt to be compatible with both when logically possible. Given these characteristics, this book might be used in many fashions. It is targeted to professional software engineers, researchers in object technology and in defect management, and postgraduate students in software engineering. It may be used as a textbook for an advanced course (masters and Ph.D. level) in object-oriented defect management or as supporting material for advanced courses in object-oriented software engineering. It may also be used as training material in a professional industry-based course in object-oriented defect management.