Each chapter of this book was written by a different contributor or team. The order is not particularly important, but we’ve 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.”
Part I consists of the following contributions:
Chapter 1, The Quest for Convincing Evidence, by Tim Menzies and Forrest Shull.
Chapter 2, Credibility, or Why Should I Insist on Being Convinced?, by Lutz Prechelt and Marian Petre.
Chapter 3, What We Can Learn from Systematic Reviews, by Barbara Kitchenham.
Chapter 5, Learning Through Application: The Maturing of the QIP in the SEL, by Victor R. Basili.
Chapter 7, Why Is It So Hard to Learn to Program?, by Mark Guzdial.
Chapter 8, Beyond Lines of Code: Do We Need More Complexity Metrics?, by Israel Herraiz and Ahmed E. Hassan.
Part II consists of the following contributions:
Chapter 9, An Automated Fault Prediction System, by Elaine J. Weyuker and Thomas J. Ostrand.
Chapter 10, Architecting: How Much and When?, by Barry Boehm.
Chapter 11, Conway’s Corollary, by Christian Bird.
Chapter 12, How Effective Is Test-Driven Development?, by Burak Turhan, Lucas Layman, Madeline Diep, Hakan Erdogmus, and Forrest Shull.
Chapter 13, Why Aren’t More Women in Computer Science?, by Michele A. Whitecraft and Wendy M. Williams.
Chapter 14, Two Comparisons of Programming Languages, by Lutz Prechelt.
Chapter 15, Quality Wars: Open Source Versus Proprietary Software, by Diomidis Spinellis.
Chapter 16, Code Talkers, by Robert DeLine.
Chapter 17, Pair Programming, by Laurie Williams.
Chapter 18, Modern Code Review, by Jason Cohen.
Chapter 19, A Communal Workshop or Doors That Close?, by Jorge Aranda.
Chapter 20, Identifying and Managing Dependencies in Global Software Development by Marcelo Cataldo.
Chapter 21, How Effective Is Modularization?, by Neil Thomas and Gail Murphy.
Chapter 22, The Evidence for Design Patterns, Walter Tichy.
Chapter 23, Evidence-Based Failure Prediction, by Nachiappan Nagappan and Thomas Ball.
Chapter 24, The Art of Collecting Bug Reports, by Rahul Premraj and Thomas Zimmermann.
Chapter 25, Where Do Most Software Flaws Come From?, by Dewayne Perry.
Chapter 26, Novice Professionals: Recent Graduates in a First Software Engineering Job, by Andrew Begel and Beth Simon.
Chapter 27, Mining Your Own Evidence, by Kim Sebastian Herzig and Andreas Zeller.
Chapter 28, Copy-Paste as a Principled Engineering Tool, by Michael Godfrey and Cory Kapser.
Chapter 29, How Usable Are Your APIs?, by Steven Clarke.
Chapter 30, What Does 10x Mean? Measuring Variations in Programmer Productivity, by Steve McConnell.