Software project planning has become more specialized since the branching out of software project management from general project management. The initial project planning models available for use by software project managers were from engineering projects. These models did not meet the needs of the software industry because of the nature of software projects.
This led to the development of several models for software project management that apply to the unique nature of the software development process. The aim of this paper is to review these models and their application. The models include the build-and-fix model, the waterfall model, the incremental process models, evolutionary process models, and the unified process model.
Build-and-Fix Model
The simplest project-planning model in software engineering is the build-and-fix model. As the name suggests, this model has only two stages. The developer develops the software and fixes arising problems.
Figure 1: The Build-and-Fix Model
The main limitation of this model is that it is not applicable in the development process of any meaningful software. It can help with very small adjustments of larger projects and the development of small patches and fixes to an existing project. Otherwise, it is too simple to support a fully-fledged software development project even for relatively small projects.
Waterfall Model
The name of the waterfall models comes from the relative similarity of this software development model to a cascading waterfall. This project management model came from the construction industry. It is very useful in situations where there is a high degree of predictability in a project.
Construction projects are predicable because of the large body of knowledge based on the long experience of the construction Industry. The main attributes of this model is that after the completion of each phase, there is no room for revisiting earlier choices. It calls for careful planning, followed by precise execution. There is no room to accommodate any changes in scope.
This model works best if the developers of the project have a wide experience dealing with similar projects. This gives them the ability to define the project requirements accurately, and to determine the best procedures for use in advance. In addition, this model works well if the client is sure about the needs of their organization.
The model is not suited for software novel products, and projects employing new techniques. In addition, the model can lead to massive loss of time and money if there is failure to detect bugs in an earlier phase of the project. The cost of fixing bugs escalates depending on the gap between its occurrence and its detection.
Figure 2: The Waterfall Model
Incremental Process Models
Incremental process models are refinements of the waterfall model that take advantage of the clarity of results and processes, while avoiding problems caused by bugs and bottlenecks noticed late in the design phase.
These models work very well when the project includes several independent units that do not rely on the other units to operate. The two models under the incremental process models are the iterative enhancement model and the rapid application model.
The iterative enhancement model resembles the waterfall model with the exception that it allows several iterations of the design process. After each cycle, there is a product released. The lessons learnt feed into the next cycle.
Figure 3: The Iterative Enhancement Model
The second type of incremental process model is the Rapid Application Development (RAD) model . This model involves the quick creation of a prototype, which the users analyze and provide feedback. The feedback forms the basis of the refinements made to the prototype, until the product achieves the desired level of functionality. RAD works only if there is an active set is users willing to offer feedback on the prototypes.
Evolutionary Process Models
Evolutionary process models are useful for projects that need to start functioning immediately, but the full needs of the system are unclear. It requires developers to work concurrently on all parts of the project and to add functionality as needs become clear. These models are ideal for very large projects composed of several parts. The specific models under evolutionary process models are the prototyping model and the spiral model.
The prototyping model maintains the overall structure of the rapid application prototyping, but applies it to several components of the project simultaneously.
Therefore, it is possible to create a very large system in a very short time. After producing the first operational system, the prototyping model requires the developer, working with the users, to refine all sections of the project in an incremental way until the project reaches acceptable standards.
The second model under the evolutionary process models is the spiral model. This model stresses the functional aspect of project management. The development cycle follows a cyclic path based on the project development cycle in use. As the spiral fans out, the four quadrants remind the project manager to carry out certain functions.
The model is very good for taking care of risks by committing one of the quadrants to risk management. It ensures that risk management is a regular aspect of managing the project. However, this model makes it difficult to keep track of project time. It is necessary to have a separate means for time management for the project.
The Unified Process
The unified process model provides a conceptual means of addressing the modeling of long-term software development projects. This model is ideal for guiding the development of software released in versions over time. A good example is the Windows Operating System.
Microsoft releases a new version of Windows periodically based on the feedback it receives from customers and based on the trends in the software industry. The unified process model categorizes software development processes into four phases within each development cycle. The phases are inception, elaboration, construction, and transition.
The inception phase of a project cycle covers the preparatory aspects of a software development project. It includes budgeting, planning, and risk identification. In addition, the developer and the client clarify the scope of the project and establish timelines for the project. Where needed, the software developers also establish the business case of the project.
During the elaboration phase, the developers test the viability of the project, and establish the needed resources and technologies. This stage is the final preparation phase of the project. The client revises all costs and estimates, and prepares to commission the project.
The development phase follows the elaboration phase. During this stage, the developers create the product and release it to the client or to the wider market. The software development process under this stage can include the full cycle of the other software development models.
For instance, the software developer can use the Rapid Application Development (RAD) model to deploy a limited version of the software. The developer then works with a test group to develop a stable version of the software for release at the end of the development phase.
After successful development, the project moves to the transition phase. During this phase, the developers study consumer reaction and collect data relating to user experience. The developers also train users as needed and keep track of consumer satisfaction levels.
Model Selection Criteria
The selection of an appropriate model depends on the exact circumstances of the project. Each model works best within a given set of conditions. The four main aspects to take into account are the requirements of the project, the technical capacity of the development team, the nature of users, and risk exposure of the project.
The requirements of the project determine the ideal model for a particular software development project. If the requirements are clear, then a linear model can suffice. The capacity of the development team is also an important part of the software development process. If the team has experience, then the project can proceed using a linear model and with little input from the users.
The users influence the project based on whether they can use the software on their own and whether they know what they need. Whenever the users are not sure about what they need, then a model that allows them to interact with the process is advisable. The spiral model is ideal for any project with significant risks because it stresses the functional aspects of project management.
References
Kerzner, H. (2009). Project Management: A Systems Approach to Planning, Scheduling and Controlling (10 Ed.). Hoboken, NJ: John Wiley and Sons.
Klastorin, T. (2003). Project Management: Tools and Trade-offs. New York: Wiley.
Selby, R. W. (2007). Software Engineering: Barry W. Boehm’s Lifetime Contributions to Software Development, Management, and Research. New York: John Wiley and Sons.