Most software projects require a complex web of sequential and parallel steps to achieve success. As the scale increases, more overhead steps must be included just to manage the complexity of this web. All project processes consist of productive activities and overhead activities. Productive activities result in tangible progress toward the end product. For software efforts, these activities include prototyping, modeling, coding, testing, and delivery. Overhead activities, which have an indirect impact on the end product, include management, planning, documenting, progress monitoring, risk assessment, metrics collection, configuration control, regression testing, personnel training, and business administration. Another source of overhead is unnecessary scrap and rework.