ABSTRACT

As the size and complexity of software is increasing, software organizations are facing the pressure of delivering high-quality software within a specific time, budget, and available resources. The software development life cycle consists of a series of phases, including requirements analysis, design, implementation, testing, integration, and maintenance. Software professionals want to know which tools to use at each phase in software development and desire effective allocation of available resources. The software planning team attempts to estimate the cost and duration of software development, the software testers want to identify the fault-prone modules, and the software managers seek to know which tools and techniques can be used to reduce the delivery time and best utilize the manpower. In addition, the software managers also desire to improve the software processes so that the quality of the software can be enhanced. Traditionally, the software engineers have been making decisions based on their intuition or individual expertise without any scientific evidence or support on the benefits of a tool or a technique.