And, crucially, the entire project is preplanned. That preplanning is the software phase equivalent - the construction is running the code. (Or at least, the preplan is defining all the necessary function definitions and connecting them confidently, and construction is just writing each implementation.)