Credit: Creative Commons

Cooperative Software Development

Amy J. Ko with contributions from Benjamin Xie

After teaching software engineering for many years, I've been frustrated by the lack of a simple, concise, and practical introduction to the human aspects of software engineering for students interested in becoming software engineers.

In response, I've distilled my lectures from the past decade into these brief writings. They don't represent everything we know about software engineering (in particular, I don't discuss the deep technical contributions from the field), but the chapters do synthesize the broad evidence we have about how teams have to work together to succeed.

I hope you enjoy! If you see something missing or wrong, Submit an issue or a pull request on GitHub.

Chapter 1. History
Chapter 2. Organizations
Chapter 3. Communication
Chapter 4. Productivity
Chapter 5. Quality
Chapter 6. Requirements
Chapter 7. Architecture
Chapter 8. Specifications
Chapter 9. Process
Chapter 10. Comprehension
Chapter 11. Verification
Chapter 12. Monitoring
Chapter 13. Evolution
Chapter 14. Debugging

Revision history

This material is based upon work supported by the National Science Foundation under Grant No. 0952733. Any opinions, findings, and conclusions or recommendations expressed in this material are those of the author(s) and do not necessarily reflect the views of the National Science Foundation.

Creative Commons License
This work is licensed under a Creative Commons Attribution-NoDerivatives 4.0 International License