Simulating the Software Development Lifecycle: The Waterfall Model
Antonios Saravanos (1), Matthew X. Curinga (2) ((1) New York, University, (2) MIXI Institute for STEM, the Imagination, Adelphi, University)

TL;DR
This paper presents a simulation-based approach using the Waterfall model to estimate project timelines, identify resource bottlenecks, and improve planning in software development.
Contribution
It adapts the Waterfall model into a simulation framework with SimPy, providing a novel tool for project estimation and resource optimization in software engineering.
Findings
Simulation accurately estimates phase completion times.
Resource bottlenecks identified, especially programmer shortages.
Using simulations improves project planning and resource allocation.
Abstract
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…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsSoftware Engineering Techniques and Practices · Software System Performance and Reliability · Software Engineering Research
