Content-Type: text/html
Libraries full of books have been written on the subject. Some of the best have been published by the Software Engineering Institute (SEI) at Carnegie-Mellon University in Pittsburgh, PA.
Methods have improved through the 1980s and 1990s, but complexity in requirements increase fast enough to consume any improvement. One problem is that very many customers are first time customers without previous experience from writing requirements for a software project. If the programmers are very good, the system will work, and the customer will not fully appreciate how complex the task was. There is also a constant eagerness to develop new tools and try the newest tools in each new project.
See also computer science. Exactly where is the border between science, technology, and engineering here?