Coupon Accepted Successfully!


Software Process Models

A number of process models have been developed.  Each emphasizes different aspects of the software life cycle and each will be appropriate for projects for which the emphasized aspects are important.


The Waterfall Model

As the original software process model, it can be viewed as a “first approximation” of the activities needed in the software development process.  Some versions provide feedback loops from each stage to the previous ones, but it is most used as a simple linear model as shown in Figure 1. In reality it is only suitable for projects in which all the customer requirements are known at the outset of the project, a rare condition, even for small scale projects.  Also note that a working version of the system is only available late in the project, a problem addressed by the incremental process models. Below is the Figure of Waterfall Model:


Incremental Process Models


These models add flexibility to the basic waterfall model by adding incremental iteration processes.  For example, each function of the system can be treated as a separate system and developed in accordance with the waterfall model.  With this approach the system can be delivered to the customer incrementally beginning with the first function and later functions one by one on a different project schedule, with each function delivered initially as a separately operating function.


A variation of this incremental theme, called the Rapid Application Development (RAD), applies the software specification stage to the entire system but for software design and implementation stages the system is divided into team projects to enable development time to be scaled down to the range of two to three months.  RAD may not be an appropriate choice if the customers and developers are not prepared for the rapid pace or if the system does not lend itself to the modularization required for assignment to teams.


Evolutionary Process Models


These models are designed to grow the final software system by iterative cumulative development.  For example, Rapid Prototyping is sometimes used at the beginning of projects to obtain improved understanding of the customer requirements.  The prototype can either be a throw-away or can be extended to the development of the entire system.   The Spiral Model combines elements of the waterfall model and rapid prototyping to implement evolutionary development as shown in Figure 2 below.  Each traversal around the spiral, beginning with Objectives, represents a new more complete version of the system with a risk assessment each time around.  Each version can be viewed as a system prototype during any phase of the evolutionary development. For example, one of the spiral traversals might represent the system design and another might focus on integration testing.


                         Objectives                                                                             Risk Assessment


                        Next Phase Planning                                                                Production and Validation


Concurrent Development Model

 In the Concurrent Development Model, all activities in the process model exist concurrently in various states such as “awaiting changes”, “none” and “under development”.  This model describes the software process to be implemented as a network of activities rather than a simple linear process.  Component-Based Development uses off-the-shelf software packages as the defining characteristic of the process.  This is a software reuse approach and often leads to large reductions in cost and development time but depends on the nature and quality of the components library available.


Clean Room Software Engineering


This model makes use of formal methods during design and serves as the basis for identifying errors that might not be detected during the testing phase.  This is not a mainstream approach and requires special mathematical skills and often produces difficulties in communication to the customers.


Aspect-Oriented Software Development (AOSD)


AOSD is a new concept intended to model localized features, functions and information content that have impact across the software system.  It is sometimes called crosscutting concerns that go beyond mechanisms such as subroutines.


Agile Development

A somewhat controversial approach to the software process is to compress and overlap the traditional life cycle phases as much as possible with close customer partnership. The overriding objective is rapid time to delivery.  “Extreme Programming” is also a term that is associated with this strategy.  Some have said that agile development models are appropriate for web applications developers, a group that has tended to resist the discipline of software processes.


Test Your Skills Now!
Take a Quiz now
Reviewer Name