Preface
Does the MMR vaccine cause autism? Does watching violence on TV make children more violent? Are some programming languages better than others? People argue about these questions every day. Every serious attempt to answer the first two questions relies on the scientific method: careful collection of evidence, and impartial evaluation of its implications. Until recently, though, only a few people have tried to apply these techniques to the third. When it comes to computing, it often seems that a couple glasses of beer and an anecdote about a startup in Warsaw are all the evidence most programmers expect.
That is changing, thanks in part to the work of the contributors to this book. Drawing on fields as diverse as data mining, cognitive psychology, and sociology, they and their colleagues are creating an evidence-based approach to software engineering. By gathering evidence drawn from a myriad of primary sources and analyzing the results, they are shedding new light onto some vexing questions of software development. What do most programmers get wrong in their first job? Does test-driven development lead to better code? What about pair programming, or code reviews? Is it possible to predict the likely number of bugs in a piece of code before its released? If so, how?
The essays in this book will present answers to some of these questions, and explain why the jury is still out on others. Just as importantly, they will show you how to find and evaluate evidence yourself, both quantitatively and qualitatively. Every programmer is unique, and no two programs are exactly the same, but if you are careful, patient, and open-minded, they can be persuaded to give up their secrets.
We hope the questions and answers in this book will change how you think about software development. We also hope these essays will persuade you to say, Citation, please, the next time someone claims that one way of laying out braces in C or Java is better than another. And as with Beautiful Code (Andy and Gregs previous collaboration for OReilly), all author royalties will be donated to Amnesty International, which has been demanding answers to much more difficult questions than these for almost 50 years.
Organization of This Book
Each chapter of this book was written by a different contributor or team. The order is not particularly important, but weve started the book with several chapters that look at the topics of research, validity, and meaning at a rather high level. We think that reading Part I, General Principles of Searching For and Using Evidence, will give you a stronger background for understanding Part II, Specific Topics in Software Engineering.
consists of the following contributions:
, by Tim Menzies and Forrest Shull.
, by Lutz Prechelt and Marian Petre.
, by Barbara Kitchenham.
, by Andrew Ko.
, by Victor R. Basili.
, by Jo E. Hannay.
, by Mark Guzdial.
, by Israel Herraiz and Ahmed E. Hassan.
consists of the following contributions:
, by Elaine J. Weyuker and Thomas J. Ostrand.
, by Barry Boehm.
, by Christian Bird.
, by Burak Turhan, Lucas Layman, Madeline Diep, Hakan Erdogmus, and Forrest Shull.
, by Michele A. Whitecraft and Wendy M. Williams.
, by Lutz Prechelt.
, by Diomidis Spinellis.
, by Robert DeLine.
, by Laurie Williams.
, by Jason Cohen.
, by Jorge Aranda.
by Marcelo Cataldo.
, by Neil Thomas and Gail Murphy.
, Walter Tichy.
, by Nachiappan Nagappan and Thomas Ball.
, by Rahul Premraj and Thomas Zimmermann.
, by Dewayne Perry.
, by Andrew Begel and Beth Simon.
, by Kim Sebastian Herzig and Andreas Zeller.
, by Michael Godfrey and Cory Kapser.
, by Steven Clarke.
, by Steve McConnell.
Conventions Used in This Book
The following typographical conventions are used in this book:
Italic
Indicates new terms, URLs, email addresses, filenames, and file extensions.
Constant width
Used for program listings, as well as within paragraphs to refer to program elements such as variable or function names.
Constant width italic
Shows text that should be replaced with user-supplied values or values determined by context.
Safari Books Online
Note
Safari Books Online is an on-demand digital library that lets you easily search over 7,500 technology and creative reference books and videos to find the answers you need quickly.
With a subscription, you can read any page and watch any video from our library online. Read books on your cell phone and mobile devices. Access new titles before they are available for print, and get exclusive access to manuscripts in development and post feedback for the authors. Copy and paste code samples, organize your favorites, download chapters, bookmark key sections, create notes, print out pages, and benefit from tons of other time-saving features.
OReilly Media has uploaded this book to the Safari Books Online service. To have full digital access to this book and others on similar topics from OReilly and other publishers, sign up for free at http://my.safaribooksonline.com.
Using Code Examples
This book is here to help you get your job done. In general, you may use the code in this book in your programs and documentation. You do not need to contact us for permission unless youre reproducing a significant portion of the code. For example, writing a program that uses several chunks of code from this book does not require permission. Selling or distributing a CD-ROM of examples from OReilly books does require permission. Answering a question by citing this book and quoting example code does not require permission. Incorporating a significant amount of example code from this book into your products documentation does require permission.
We appreciate, but do not require, attribution. An attribution usually includes the title, author, publisher, and ISBN. For example: