68.

Contradictions do not exist. Whenever you think that you are facing a contradiction, check your premises. You will find that one of them is wrong.

Ayn Rand, Atlas Shrugged

THE DESIGN OF SECURE AND robust software systems has seen a renaissance of activity lately, both in industry and academia. Ensuring a robust, secure design involves building in a great deal of preventative measures-simple design, unit testing, etc. But, inevitably, some bugs defy even the strongest measures.

In those cases, fast and effective diagnosis of a bug can have a significant impact on the overall costs incurred. This book discusses a method of such effective diagnosis; with that method, it also presents a series of bug patterns-recurring relationships between signaled errors and underlying bugs in a program. By studying these patterns, we can learn to recognize their occurrence quickly. We can also discover ways to repent them.

This book does not treat debugging as if it were an isolated activity, performed by a special team that plays no role in developing the original software. In the real world, most software is debugged by the people who wrote it. An effective method of debugging can be discussed only in the context of a particular method of development. And I will show that the method of development used can have very strong repercussions on how effectively we can debug the software.

Audience

This book is written for anyone familiar with programming in Java who wants to more effectively prevent, explain, communicate about, or fix bugs. This may include developers from industry, the government, or academia, was well as computer science students. Developers in each of these categories possess a wide range of skill in debugging.

In the case of computer science students, skill employed in debugging correlates greatly with the nature of the curriculum. Some curricula focus heavily on large-scale software development, and students of such programs tend to gain a great deal of debugging experience early on. Other curricula focus much more on the theoretical aspects of computer science; students in these curricula develop a great deal of advanced theoretical knowledge, but they often acquire much of their debugging skill once they are already working on real-world software projects.

In industry, many companies have tried to alleviate the shortage of highly skilled programmers by filling programming positions with individuals who have no formal education in software development. Typically, these programmers possess advanced technical abilities in other domains, which allows them to adapt quickly to many aspects of the programming process. But in many respects, software development is quite different from other forms of engineering, and certain aspects of programming can remain elusive for a long time. One such aspect is effective testing and debugging.

Because of the wide variety in the backgrounds of programmers, this book is not targeted at programmers of any particular level of experience. The only knowledge I assume is readers possess a working knowledge of the Java language. Knowledge of object-oriented design patterns is helpful (but not necessary) for understanding some of the examples. Similarly, experience with the extreme programming method of software development will provide added context, but the aspects o that method relevant to debugging are explained in the text. In general, the material should be accessible to programmers with many different backgrounds.



Bug Patterns in Java
Bug Patterns In Java
ISBN: 1590590619
EAN: 2147483647
Year: N/A
Pages: 95
Authors: Eric Allen

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net