Sim
discrete event simulation of software development
2025-12-19: This material is under active development. Feedback, suggestions, and corrections are very welcome, either as issues in the GitHub repository or by email.
Lessons
- Introduction: who this is for and what it covers.
- Simple Simulations: the basics of discrete event simulation.
- A regular schedule with a single programmer.
- Introducing randomness.
- Monitoring and visualizing the simulation.
- Connecting a manager and a team of programmers with a job queue.
- Measuring throughput, delay, and utilization.
- Teams: multiple actors and a little theory.
- The exponential and log-normal distributions.
- One manager with multiple programmers.
- Watching the backlog grow.
- Little's Law and average waiting times.
- More Features: more complex simulations.
- Handling jobs in strict priority order.
- Using priorities as weights.
- The effect of periodic triage.
- Interruptions: the bane of our existence.
- Throwing work away when it is interrupted.
- Resuming interrupted work (buggy and correct versions).
- Feedback: what goes around, comes around
- Adding testers and another queue to create a three-layer simulation.
- Refactoring to use classes instead of naked generators.
- Comparing three scenarios for handling re-work.
- Conclusion: where we've been and what comes next
Appendices
Acknowledgments
- Greg Wilson is a programmer, author, and educator based in Toronto. He was the co-founder and first Executive Director of Software Carpentry and received ACM SIGSOFT's Influential Educator Award in 2020.