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

  1. Introduction: who this is for and what it covers.
  2. 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.
  3. 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.
  4. More Features: more complex simulations.
    • Handling jobs in strict priority order.
    • Using priorities as weights.
    • The effect of periodic triage.
  5. Interruptions: the bane of our existence.
    • Throwing work away when it is interrupted.
    • Resuming interrupted work (buggy and correct versions).
  6. 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.
  7. Conclusion: where we've been and what comes next

Appendices

  1. Generators
  2. License
  3. Code of Conduct
  4. Contributing
  5. Bibliography
  6. Glossary

Acknowledgments