Software development process model is evolving rapidly. We may tempt to adopt latest and shiny process model to develop our software. But it would be better to know details about the process model before adopting. Understand its strengths and weaknesses. Then make your decision. If you find that that process model is not suitable for your software project then check another.
So why we have to know every detail, its strengths and weaknesses of a process model before adopting it to our project?
Well, think you are developing a simple database application for a non-profit organization. It can be done with a simple process model. In that case more advanced process model may be increase overhead code those are beyond of that organization’s affordability.
So before adopt any process consider your project nature like is it complex enough or simple one. Shall the owner of the product would be able to afford the cost of the selected process? What are the strengths and weaknesses of the selected process? By knowing all of them then make decision about process.
Now we will discuss about some successful well known process model.
Linear Process Models
Linear process model follow a pattern which is completing phases one by one. In this case after completing a phase it will move to next phase and as soon as moves to next phase there is no way to back to previous phase.
Linear process model is suitable for those projects, who has little or no feedback or refinement. To make a project successful by using linear process model then understand what client want and all requirements at the very beginning of the project because there is no option for revisit any stage.
Some well-known linear process models are- Waterfall Model & V-Model.
Now we will discuss details about them.
Waterfall model is a linear process model. In this process model-
Each phase produces an approved work product and then that product is used by the next phase.
If a work product moves to next phase there is no way to comeback to previous phase. It just move forward until the end of the process.
A waterfall model has following phases-
First of all we collect requirements from user. Analyze them and documented them. This is known as requirement documentation. This document needs to approve by the client. After approval of the document we move to next phase i.e. design phase. We design the system according to the requirements. Then move to next phase and the process is continues until the software product is the final output.
Benefits and Drawbacks of Waterfall model
Waterfall model have some benefits whose are-
- Process is easy to understand
- Clearly define deliverable and milestones
- Emphasizes to analysis the system and requirement before design and implementation
- It can be suitable for those product whose are well specified and no need to change after development
- Not very adaptable to changes
- Need to know all requirement before start the process and there is no option to change in middle of the process
- Testing occurs at the very end of the project so if there any bug found during testing it become costly to fix those bug
In waterfall model client can’t see the product until close to the end of development. The developed product may not match with what customer wants. In that case the product may become meaningless
Like waterfall model V-model is also a linear process model. It focuses more on testing the system. V model has two branches looks like V.
Like linear model V model also starts with analysis and identification of requirements then move to design and implementation phases.
The left branch forms analysis and design related activities on the other hand the right branch forms different types of testing like Unit Testing, Integration Testing, System Testing, Acceptance Testing etc. Each testing activity right branch verifies corresponding analysis and design related activities of left branch.
Benefits and Drawbacks
- Straightforward so easy to understand
- Allow to verify product at multiple level by executing different types of testing
- Doesn’t accommodate any changes
In iterative process model each stages is repeating in cyclic order during the lifetime of the project. So it has the ability to revisit previous phases. Such type of models allows getting client feedback and changing the system as per client’s feedback.
Spiral model is the example of iterative process model. Now we will discuss about Spiral model and their benefits and drawbacks-
In this process the development team can design and implement a software system by revisiting each phases of the process after they had been completed.
A typical spiral model has four phases whose are-
- Determine objectives
- Identify and resolve risks
- Develop & Test
- Plan for next iteration
Above four phases represent a full iteration. Each subsequent iterations are the sequence of above four phases. In each iteration produces a product prototype. It allows the development team to review the product, get feedback from the client and change according to the feedback of client. Early iterations are involve with ideas and concepts and later iterations are involve with building working software prototype.
Drawbacks of Spiral Model
Estimating work can be more difficult.
Parallel Process Models
In spiral process the product build in a repeated series of phases and product refinement happen in a specific phase within the cycle. Parallel process use similar style of iteration i.e. products are built in iterative format. Parallel process allows more concurrency of activities and tasks.
Unified process model is one of a well-known Parallel process model. Now we will discuss about Parallel process model in detail.
Unified Process Model
Unified process model is an iterative software development process model. In each iteration it performs four phases whose are Inception, Elaboration, Construction and Transition. In each of these phases we perform slandered software engineering phases i.e. Business Modeling, Requirements, Analysis & Design, Test & Deployment.
To better understand let’s see following image-
In Inception phase most of the work those are done is Business Modeling and Requirements. In Elaboration model most of the we define the domain analysis and define the system architecture. In construction phase mostly work with development of the system and Testing them. In Transition phase system goes from development to production so that it becomes available to the users. In each phase we actually do software engineering related works like Business Modeling, Requirements, Analysis & Design, Implementation, Test and Deployment.
Phases within the Unified Process Model
We saw four phases inside this process model whose are completely unknown to us. Those phases are-
- Inception phase
- Elaboration phase
- Construction phase
- Transition Phase
Now let’s detail discuss about each individual phases.
In this phase create business case which includes business context, success factors (expected revenue, market recognition, etc.), and financial forecast. To do this what are doing is
- Create use cases to define the user interaction with the system
- Define the scope and potential risk of the project
In this phase the project starts to take shape. The main activities of this phase is
- Analyze the problem domain
- Design and refine the architecture of the project
- Refine the requirements (that was conceived in previous phase)
- Create requirements and architectural documentation e.g.- use case and class diagrams
This phase is involves with build the software system. The main activities of this phase is-
“Develop the components and other features of the system”
- Transit the system from development into production
- Making the system available to end user for understand and use
Activities in this phase is
- Training end users
- Validate the system by end users to know whether the system meets user expectation
CSM, CSPO, CSD, CSP-SM, CSP-PO (ScrumAlliance.org)
Certification Profile Link-
Currently working as Lead Team (Application Architecture) at Raven Systems Ltd. Passion for software development especially agile practices such as TDD with in depth knowledge of Object Oriented Programming, SOLID Principles, Gang of Four Design Patterns, Some Enterprise Application Architectural Patterns. Over 8 years of software development experience ASP.NET. Has the ability to understand and transform complex business requirements into software ensuring applications are delivered on time. Also experience in non Microsoft .NET technologies such as Dapper.Net, Git, Structure Map & Angular, Bootstrap, HTML-5, CSS-3 etc.