  This study employs a simulation-based approach, adapting the waterfall model,
to provide estimates for software project and individual phase completion
times. Additionally, it pinpoints potential efficiency issues stemming from
suboptimal resource levels. We implement our software development lifecycle
simulation using SimPy, a Python discrete-event simulation framework. Our model
is executed within the context of a software house on 100 projects of varying
sizes examining two scenarios. The first provides insight based on an initial
set of resources, which reveals the presence of resource bottlenecks,
particularly a shortage of programmers for the implementation phase. The second
scenario uses a level of resources that would achieve zero-wait time,
identified using a stepwise algorithm. The findings illustrate the advantage of
using simulations as a safe and effective way to experiment and plan for
software development projects. Such simulations allow those managing software
development projects to make accurate, evidence-based projections as to phase
and project completion times as well as explore the interplay with resources.
