Developing software can be a complex and challenging experience. Custom software can have a significant positive impact on business. In order to realize this gain, the software development process has to be approached in a disciplined and organized way. Failure to use a disciplined approach to software development can result in total project failure, along with the loss of any investment in the project.