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, please send me feedback. |
Chapter 1. History of software engineering |
Chapter 2. Software engineering organizations | |
Chapter 3. Communication | |
Chapter 4. Productivity | |
Chapter 5. Software quality | |
Chapter 6. Requirements engineering | |
Chapter 7. Architecture | |
Chapter 8. Functional specifications | |
Chapter 9. Process | |
Chapter 10. Comprehension | |
Chapter 11. Verification | |
Chapter 12. Monitoring | |
Chapter 13. Evolution | |
Chapter 14. Debugging |