Types of Software Process Models

J.E.D.I management, requirements management, risk management, formal technical reviews etc.

1.4.1 Types of Software Process Models

There are many types of software process models that suggest how to build software. Common process models are discussed within this section. Linear Sequential Model The Linear Sequential Model is also known as the waterfall model or the classic life cycle. This is the first model ever formalized, and other process models are based on this approach to development. It suggests a systematic and sequential approach to the development of the software. It begins by analyzing the system, progressing to the analysis of the software, design, coding, testing and maintenance. It insists that a phase can not begin unless the previous phase is finished. Figure 1.3 shows this type of software process model. The advantages of this model are: • It is the first process model ever formulated. • It provides a basis for other software process models. The disadvantages of this model are: • Real software projects rarely follow a strict sequential flow. In fact, it is very difficult to decide when one phase ends and the other begins. Software Engineering 18 Figure 1.3 Linear Sequential Model Requirements Engineering Design Engineering Coding Testing Operation and Maintenance J.E.D.I • End-user involvement only occurs at the beginning requirements engineering and at the end operations and maintenance. It does not address the fact the requirements may change during the software development project. • End-users sometimes have difficulty stating all of their requirements. Thus, it delays the development of the software. Prototyping Model To aid in the understanding of end-user requirements, prototypes are built. Prototypes are partially developed software that enable end-users and developers examine aspects of the proposed system and decide if it is included in the final software product. This approach is best suited for the following situations: • A customer defines a set of general objectives for the software but does not identify detailed input, processing, or output requirements. • The developer may be unsure of the efficiency of an algorithm, the adaptability of a technology, or the form that human-computer interaction should take. Figure 1.4 shows this process model. The advantage of this process model is: • The end-users have an active part in defining the human-computer interaction requirements of the system. They get the actual feel of the software. The disadvantages of this process model are: • Customers may mistakenly accept the prototype as a working version of the software. Software quality is compromised because other software requirements are not considered such as maintainability. • Developers tent to make implementation compromises in order to have a working prototype without thinking of future expansion and maintenance. Software Engineering 19 Figure 1.4 Prototyping Model Listen to Customers Build or Revise Prototype by Developers Test-drive the Prototype by Customer J.E.D.I Rapid Application Development RAD Model This process is a linear sequential software development process that emphasizes an extremely short development cycle. It is achieved through a modular-based construction approach. It is best used for software projects where requirements are well-understood, project scope is properly constrained, and big budget with resources are available. Everybody is expected to be committed to a rapid approach to development. In this process model, the software project is defined based on functional decomposition of the software. Functional partitions are assigned to different teams, and are developed in parallel. Figure 1.5 shows this process model. The advantage of this model is: • A fully functional system is created in a short span of time. The disadvantages of this model are: • For large but scalable projects, this process requires a sufficient number of developers to have the right number of development teams. • Developers and customers must be committed to the rapid-fire of activities necessary to develop the software in a short amount of time. • It is not a good process model for systems that cannot be modularized. • It is not a good process model for systems that require high performance. • It is not a good process model for systems that make use of new technology or Software Engineering 20 Figure 1.5 Rapid Application Development Requirements Engineering Design Engineering Coding Testing Turn-over FuntionalPartition 1- Team Requirements Engineering Design Engineering Coding Testing Turn-over FuntionalPartition 2- Team Requirements Engineering Design Engineering Coding Testing Turn-over FuntionalPartition 3- Team 60 – 90 Days J.E.D.I high degree of interoperability with existing computer programs such as legacy systems. Evolutionary Process Models This process model recognizes that software evolves over a period of time. It enables the development of an increasingly more complicated version of the software. The approach is iterative in nature. Specific evolutionary process models are Incremental Model, Spiral Model, and Component-based Assembly Model. Incremental Model This process model combines the elements of a linear sequential model with the iterative philosophy of prototyping. Linear sequences are defined where each sequence produces an increment of the software. Unlike prototyping, the increment is an operational product. Figure 1.6 shows this process model. Software Engineering 21 Figure 1.6 Incremental Process Model Requirements Engineering Design Engineering Coding Testing Delivery of the 1st Increment First Increment Requirements Engineering Design Engineering Coding Testing Turn-over Second Increment Requirements Engineering Design Engineering Coding Testing Turn-over Third Increment First SW Increment Second SW Increment First SW Increment Third SW Increment First SW Increment Second SW Increment J.E.D.I Spiral Model It was originally proposed by Boehm. It is an evolutionary software process model that couples the iterative nature of prototyping with the controlled and systematic aspects of linear sequential model. It provides potential rapid development of incremental versions of the software. An important feature of this model is that it has risk analysis as one of its framework of activities. Therefore, it requires risk assessment expertise. Figure 1.7 shows an example of a spiral model. Software Engineering 22 Figure 1.7 Spiral Model Risk Analysis Planning Communication Analysis Design Coding Release Evaluation A B C D A. Initial Software Project B. Maintenance of New Software C. Enhancement of Software D. Development of another interrelated system J.E.D.I Component-based Assembly Model It is similar to Spiral Process Model. However, it makes use of object technologies where the emphasis of the development is on the creation of classes which encapsulates both data and the methods used to manipulate the data. Reusability is one of the quality characteristics that are always checked during the development of the software. Figure 1.8 shows the Component-based Assembly Model. Software Engineering 23 Figure 1.8 Component-based Assembly Model Risk Analysis Planning Communication OO Analysis Design Coding Release Evaluation A B C D A. Initial Software Project B. Maintenance of New Software C. Enhancement of Software D. Development of another interrelated system Determine Candidate Classes Look for the Classes in the Library Get the Classes Build New Class Put New Classes in Library Build the nth Iteration of Software J.E.D.I Concurrent Development Model The Concurrent Development Model is also known as concurrent engineering. It makes use of state charts to represents the concurrent relationship among tasks associated within a framework of activities. It is represented schematically by a series of major technical tasks, and associated states. The users need, management decisions and review results drive the over-all progression of the development. Figure 1.9 shows the concurrent development model. Formal Methods The Formal Methods is a software engineering approach which encompasses a set of activities that lead to mathematical specification of the software. It provides a mechanism for removing many of the problems that are difficult to overcome using other software engineering paradigm. It serves as a means to verify, discover and correct errors that might otherwise be undetected.

1.4.2 Factors that Affect the Choice of Process Model