We shall begin by breaking down the term into phrases, digesting the definitions of each phrase and understanding the relationship between the phrases.

Software Process

A software process is a set of related activities leading towards the development of a software product using whatever tool or stack needed. The process includes four fundamental activities to software engineering: Software specification, design and implementation, validation, and evolution.

In describing these processes, we make use of models or interfaces that would represent the activities of these process. For critical systems, a well defined process is imperative to the success of the project. However, these processes differ based on their specification. The latter critical system would be categorized as plan-driven while systems with rapidly changing requirements would entail agile processes.

Software Process Models

Software process models are simplified representation of software processes. These models allow an easier illustration of the software process. Models give you an overview of the process. For example, overview of activities and sequences may be reflected on the model, yet, the specific roles of persons may not be shown. We see a framework of the whole process. The process models we’re going to define are:

1. Build and Fix Model

The product is implemented without any specification or design. The model is fine for short programs (with a few hundred lines of code) that won’t require any maintenance, but it would be totally unsatisfactory for nontrivial programs especially since it would entail high cost and difficult maintenance.

2. Waterfall Model 

The waterfall model is perhaps the model widely used until early 1980s. The model is a fitting representation for plan-driven processes. The model is characterized by Feedback Loops.

The waterfall model enforces a disciplined approach.

3. Rapid Prototyping Model

The product is developed with reduced capability. The product is presented to client for approval, and developed specification with better understanding.

The first step is to construct the prototype as rapidly as possible. Only those aspects of the software that will be visible to customer/user. It is characterized by a linear model with no feedback loops. The model is not proven and has its own problems. The possible solution might be to use rapid prototyping for defining requirements then proceed to using Waterfall model for the rest of the life cycle.

The rapid prototype is used in the requirements phase. It is evaluated by the customer (or user) and then discarded and not turned into a product.

4. Incremental Model

The product is divided into builds with each build containing an operational quality subsystem. With each additional build a new subsystem is integrated with the previous build. Other types of Incremental Models include Extreme Programming Model and Synchronize-And-Stabilize Model.

The project is divided into builds or modules interacting to provide a specific functionality. The typical product is 5 to 25 builds.

While the waterfall and rapid prototyping models deliver a complete product at the end, the incremental model on the other hand delivers portion of the product at each stage.

5. Synchronize-and-Stabilize Model

The SaS Model is Microsoft’s life-cycle model. It is a version of incremental model.

In requirements analysis, potential customers are interviewed. The features with priorities are listed. Specifications are drawn and the project is divided into 3 or 4 builds. Each build is carried out by small teams working in parallel.

At the end of the day – synchronize (put together partially completed components; test and debug), At the end of the build – stabilize (fix the remaining faults; freeze build)

6. Spiral Model

The concept is to minimize risk via the use of prototypes and other means. Set of important requirements are selected for each prototype. It is a simplified form of Waterfall model combined with risk analysis.

Preceed each phase by Alternatives and Risk Analysis, Follow each phase by Evaluation and Planning of the next phase. If risks cannot be resolved, project may be terminated immediately.

7. Object-Oriented Life-Cycle Models

There is a need for iteration within and between phases. All Object oriented life cycles are: Iterative, Parallel, and Incremental.

Conclusion

Although there is no “ideal” software process, there is always an advantage to adapting software engineering best practices and improving the current processes of an organization. Legacy processes may undergo standardization and new software engineering methods and techniques may be introduced resulting to hybrid models.

My name is Roselle and I’m still working on my success story. You heard that right. I’m young, I work at home on my PJs and I’m still going to make many more mistakes in life. Just like you, just like we all do. But the other thing you should know about me is that I love helping people and this blog is one of the many outlets I have in connecting with you. I talk a lot about finance, business, and personal development. Visit my About page, if you want to know more about my story!

Write A Comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Pin It