The Four Stages of Software Development