Making software what really works, and why we believe it / edited by Andy Oram and Greg Wilson

Online: Connect to Safari Books online
Location:
Retrieving Holdings Information
Subjects: Electronic books
Computer software--Development
Formats: Electronic Resource, Remote
Material Type: Books
Language: English
Audience: Unspecified
Edition: 1st ed
Published: Sebastopol, CA : O'Reilly, c2011
Series: Theory in practice
Theory in practice (Sebastopol, Calif.)
LC Classification: Q, QA
Physical Description: 1 online resource (xv, 602 p.) : ill
Table of Contents: Preface
Part One. General Principles of Searching for and Using Evidence
1. The Quest for Convincing Evidence / Forrest Shull 3
In the Beginning 4
The State of Evidence Today 4
Change We Can Believe In 8
The Effect of Context 10
Looking Toward the Future 11
2. Credibility, or Why Should I Insist on Being Convinced? / Marian Petre 17
How Evidence Turns Up in Software Engineering 17
Credibility and Relevance 19
Aggregating Evidence 22
Types of Evidence and Their Strengths and Weaknesses 25
Society, Culture, Software Engineering, and You 32
Acknowledgments 33
3. What We Can Learn From Systematic Reviews / Barbara Kitchenham 35
An Overview of Systematic Reviews 36
The Strengths and Weaknesses of Systematic Reviews 39
Systematic Reviews in Software Engineering 44
Conclusion 49
4. Understanding Software Engineering Through Qualitative Methods / Andrew Ko 55
What Are Qualitative Methods? 56
Reading Qualitative Research 58
Using Qualitative Methods in Practice 60
Generalizing from Qualitative Results 62
Qualitative Methods Are Systematic 62
5. Learning Through Application: The Maturing of the QIP in the SEL / Victor R. Basili 65
What Makes Software Engineering Uniquely Hard to Research 65
A Realistic Approach to Empirical Research 66
The NASA Software Engineering Laboratory: A Vibrant Testbed for Empirical Research 67
The Quality Improvement Paradigm 69
Conclusion 75
6. Personality, Intelligence, and Expertise: Impacts on Software Development / Jo E. Hannay 79
How to Recognize Good Programmers 81
Individual or Environment 95
Concluding Remarks 101
7. Why is it so Hard to Learn to Program? / Mark Guzdial 111
Do Students Have Difficulty Learning to Program? 112
What Do People Understand Naturally About Programming? 114
Making the Tools Better by Shifting to Visual Programming 117
Contextualizing for Motivation 118
Conclusion: A Fledgling Field 121
8. Beyond Lines of Code: Do We Need More Complexity Metrics? / Ahmed E. Hassan 125
Surveying Software 126
Measuring the Source Code 127
A Sample Measurement 128
Statistical Analysis 133
Some Comments on the Statistical Methodology 139
So Do We Need More Complexity Metrics? 140
Part Two. Specific Topics in Software Engineering
9. An Automated Fault Prediction System / Thomas J. Ostrand 145
Fault Distribution 146
Characteristics of Faulty Files 149
Overview of the Prediction Model 150
Replication and Variations of the Prediction Model 151
Building a Tool 157
The Warning Label 157
10. Architecting: How Much and When? / Barry Boehm 161
Does the Cost of Fixing Software Increase over the Project Life Cycle? 162
How Much Architecting Is Enough? 162
Using What We Can Learn from Cost-to-Fix Data About the Value of Architecting 165
So How Much Architecting Is Enough? 178
Does the Architecting Need to Be Done Up Front? 181
Conclusions 182
11. Conway's Corollary / Christian Bird 187
Conway's Law 187
Coordination, Congruence, and Productivity 189
Organizational Complexity Within Microsoft 194
Chapels in the Bazaar of Open Source Software 201
Conclusions 205
12. How Effective Is Test-Driven Development? / Forrest Shull 207
The TDD Pill---What Is It? 208
Summary of Clinical TDD Trials 209
The Effectiveness of TDD 211
Enforcing Correct TDD Dosage in Trials 214
Cautions and Side Effects 215
Conclusions 216
Acknowledgments 217
13. Why Aren't More Women in Computer Science? / Wendy M. Williams 221
Why So Few Women? 222
Should We Care? 227
Conclusion 234
14. Two Comparisons of Programming Languages / Lutz Prechelt 239
A Language Shoot-Out over a Peculiar Search Algorithm 240
Plat̲Forms: Web Development Technologies and Cultures 248
So What? 257
15. Quality Wars: Open Source Versus Proprietary Software / Diomidis Spinellis 259
Past Skirmishes 260
The Battlefield 261
Into the Battle 265
Outcome and Aftermath 286
Acknowledgments and Disclosure of Interest 289
16. Code Talkers / Robert DeLine 295
A Day in the Life of a Programmer 295
What is All This Talk About? 298
A Model for Thinking About Communication 307
17. Pair Programming / Laurie Williams 311
A History of Pair Programming 312
Pair Programming in an Industrial Setting 314
Pair Programming in an Educational Setting 317
Distributed Pair Programming 319
Challenges 320
Lessons Learned 321
Acknowledgments 322
18. Modern Code Review / Jason Cohen 329
Common Sense 329
A Developer Does a Little Code Review 330
Group Dynamics 334
Conclusion 336
19. A Communal Workshop or Doors That Close? / Jorge Aranda 339
Doors That Close 339
A Communal Workshop 342
Work Patterns 345
One More Thing... 347
20. Identifying and Managing Dependencies in Global Software Development / Marcelo Cataldo 349
Why Is Coordination a Challenge in GSD? 350
Dependencies and Their Socio-Technical Duality 351
From Research to Practice 362
Future Directions 366
21. How Effective is Modularization? / Gail Murphy 373
The Systems 374
What Is a Change? 376
What Is a Module? 381
The Results 383
Threats to Validity 389
Summary 390
22. The Evidence for Design Patterns / Walter Tichy 393
Design Pattern Examples 394
Why Might Design Patterns Work? 397
The First Experiment: Testing Pattern Documentation 398
The Second Experiment: Comparing Pattern Solutions to Simpler Ones 403
The Third Experiment: Patterns in Team Communication 407
Lessons Learned 410
Conclusions 412
Acknowledgments 413
23. Evidence-Based Failure Prediction / Thomas Ball 415
Introduction 416
Code Coverage 417
Code Churn 418
Code Complexity 421
Code Dependencies 422
People and Organizational Measures 423
Integrated Approach for Prediction of Failures 426
Summary 430
Acknowledgments 432
24. The Art of Collecting Bug Reports / Thomas Zimmermann 435
Good and Bad Bug Reports 436
What Makes a Good Bug Report? 437
Survey Results 439
Evidence for an Information Mismatch 441
Problems with Bug Reports 444
The Value of Duplicate Bug Reports 445
Not All Bug Reports Get Fixed 448
Conclusions 449
Acknowledgments 450
25. Where Do Most Software Flaws Come From? / Dewayne Perry 453
Studying Software Flaws 454
Context of the Study 455
Phase 1. Overall Survey 456
Phase 2. Design/Code Fault Survey 462
What Should You Believe About These Results? 486
What Have We Learned? 490
Acknowledgments 492
26. Novice Professionals: Recent Graduates in a First Software Engineering Job / Beth Simon 495
Study Methodology 497
Software Development Task 501
Strengths and Weaknesses of Novice Software Developers 505
Reflections 507
Misconceptions That Hinder Learning 509
Reflecting on Pedagogy 510
Implications for Change 512
27. Mining Your Own Evidence / Andreas Zeller 517
What is There to Mine? 518
Designing a Study 518
A Mining Primer 519
Where to Go from Here 526
Acknowledgments 528
28. Copy-Paste as a Principled Engineering Tool / Cory Kapser 531
An Example of Code Cloning 532
Detecting Clones in Software 533
Investigating the Practice of Code Cloning 535
Our Study 540
Conclusions 543
29. How Usable Are Your Apis? / Steven Clarke 545
Why Is It Important to Study API Usability? 546
First Attempts at Studying API Usability 548
If At First You Don't Succeed... 552
Adapting to Different Work Styles 559
Conclusion 563
30. What Does 10X Mean? Measuring Variations in Programmer Productivity / Steve McConnell 567
Individual Productivity Variation in Software Development 567
Issues in Measuring Productivity of Individual Programmers 569
Team Productivity Variation in Software Development 571
A. Contributors 575
Index 587
Alternate Titles: In: Safari books online
Print version: Making software. (OCoLC)648096823 Farnham; Cambridge : O'Reilly, c2011 9780596808327
Additional Authors: Editor : Oram, Andrew
Editor : Wilson, Greg, 1963-
Safari Books Online (Firm)
Notes: ISBN: 9780596808310
ISBN: 0596808313
ISBN: 9780596808327 (pbk.)
ISBN: 0596808321 (pbk.)
Description based on print version record
Includes bibliographic references and index
OCLC Number: 738407040
ISBN/ISSN: 9780596808310
0596808313
9780596808327
0596808321