One of, and maybe the best way that we know as an organization of how to drive improvement in the software development process is to really deploy an SEI defined process. In the other camp are the people who build systems for a living, and have accepted that developing systems is a unpredictable, chaotic business. Some methods claim to fully automate the process, to tell you every step to follow so that software design is painless and faultless. Our attempts to use the Waterfall Methodology, an approach which assumes a fully constrained development environment, has been a fools errand. The debate between these two camps has heated up during the last year, with major bombardments in the press and on the Internet.
Every debate needs to refer to first principles.
In the case of the people that claim systems development is unpredictable and chaotic, the first principles from process engineering have been used.6 The question, Defined or Empirical, was put to process automation scientists at DuPont's Advanced Research Facility. They inspected some of the leading systems development processes and concluded that it is no surprise that most development projects don't reach their planned conclusion. Systems development is an empirical, unpredictable process. Correctly categorizing a process is critical to its successful implementation. Models of defined processes are derived from first principles, using material and energy balances and fundamental laws to determine the process model.