Sunday, 12 June 2011

Software Model


A software process model is an abstract strategy that provides an approach for building and maintaining a software product. It helps the project management in planning and executing the project. A software process model defines:
  • The phases (also called stages) of the software process: These are the major activities to be performed throughout the software process and are defined in terms of the input, the output, the functions to be performed, the work products, the quality checkpoints, etc.
  • The sequence of the phases and their flow: This may Include iterations and overlaps of the phases.
  • The management and technical tasks performed in each phase: These include scheduling and managing resources.
Over a period of time, several process models have evolved, each using a different approach and suitable in a particular context.
The importance of process models
In his paper, 'A Spiral Model of Software Development and Enhancement', Dr. Barry Boehm explains that a process model addresses the following questions in a software project.
  • What shall we do next?
  • How long shall we continue to do it?
The primary function of a process model is to determine the order of the stages involved in developing software and to establish the transition criteria for progressing from one stage to another. The process model provides guidance for the order in which the major tasks of the project should be performed.
Dr. Boehm cautions against confusing a process model with a software method, also called a methodology. Methodologies focus on how to navigate through each phase (such as determining the data and partitioning functions) and represent phase products (such as structure charts and state transition diagrams).
Types of process models
Many types of process models have evolved over the years. Although all the process models are used for building software products, they differ in the phases they have, the way these phases are sequenced and overlapped, and the tasks within each phase. Some examples of process models are the linear sequential, prototyping, and spiral models.
While software engineering provides a broad collection of practices, it does not prescribe a rigid approach for building a product.
It is necessary to select a suitable process model to build a software product. However, a project team may adapt or alter a process model to suit the needs of a specific project.
Adapting a process model
A process model can be adapted to suit the project characteristics, the skills of the people available, and the current business requirements. It is important to maintain the integrity of the engineering approach while adapting a process model to a particular project.
Many organizations define a common process framework (CPF) that projects can adapt to their specific needs. This includes all the framework activities and umbrella activities that are essential for building high-quality software. While adapting the CPF for a specific project, care is taken not to compromise on the engineering approach or eliminate any essential activity.
The establishment and use of a CPF is necessary for any organization that wants to use suitable processes for its projects and yet follow an engineering approach and achieve quality.
The linear sequential process model
After looking at what a process model is, let us look at the linear sequential process model as an example.
The linear sequential model evolved in the 1960s and 1970s based on the work done by the U.S. Department of Defense to define a systematic approach for building software.
The linear sequential model provides a simplistic view of software engineering to software developers and customers.
It is also called the 'classic model' or the 'waterfall model'.
The simplest form of the linear sequential model
Although there are many minor variations of the linear sequential model, let us discuss the simplest form of the model, which represents the minimum activities needed to develop a software product.
The linear sequential model, in its simplest form, consists of a set of major activities or phases arranged in a linear sequence. These phases—analysis, design, code, test—address the essential software engineering activities.
In this model, the essential steps that are required to build any software product are captured in the sequence of analysis-design-coding-testing. To build a product, we need to analyze what is required, design the product, build (or code) it, and then test it to check whether it meets the requirements.
Benefits of the linear sequential model
The linear sequential model became popular when it was introduced because of the following reasons.
  • It is easy to understand and to explain.
  • It identifies a predictable sequence of events.
  • It provides a relatively easy means for assessing progress.
  • It covers the essence of the engineering activities required to build the software product.
Any product to be built follows the inherent sequence of analysis-design-coding-testing. The analogy of building a house as discussed on the preceding pages, shows how this approach is applicable to areas other than software engineering and can be easily explained to a customer, a project sponsor, or any other person involved in the project. The approach is also useful because it explains the bare essential activities required for building any software product and places them in the correct sequence
Drawbacks of the linear sequential model
Although the linear sequential process model is simple, it has the following drawbacks.
  • The requirements are expected to be specified clearly, correctly, and completely at the beginning of the project.
  • Customer involvement is low—the customer is only involved during analysis and later when the system is ready to be delivered.
  • Development is treated as a long, unidirectional pipeline of activities.
  • Changes in requirements are difficult to incorporate in the product.
  • Large systems take a long time to be completed.
One of the variations in the model allows iterations back to the previous phase. This provides flexibility and is an improvement on the simple version of the linear sequential process model we have discussed so far.

0 comments:

Post a Comment