Software development life cycle(SDLC)
Different stages involved in Developing a software product.
Hi 🤚 there,
We people, generally gone through different stages in our life journey like birth, Live, death . Not only humans , if you observe surroundings , you came to know that everything in the earth has their own stages of life. Like all other things, Software development process has also some stages. That is what you are going to learn today.
why we need to learn stages of it(software Development) ?
The reason is simple to understand the problem if we understand the problem clearly then only we can solve the problem quickly right ?
with that let's start our learning.....
In these blog you are going to learn about
1. why SDLC & who created it ?
2. what is SDLC ?
3. What are the different stages involved in SDLC ?
4. what are different types of SDLC models ?
Quick check at the end
Note : All the images used in these article are taken from internet , all credits goes to respective owners.
SDLC stands for software development life cycle
why SDLC ?
--> To overcome conflicts of designing a process of developing a software product --> To reduce time & cost of designing software development design process --> Without SDLC, there will be a conflict arise between both customers & SD team and also among the people involved in the software development.
who created SDLC ?
--> According to sources over the internet, **Winston Royce** was director of the **Lockheed Software Technology Center in Austin, Texas** and also first person to tell about the **waterfall model** and later **Dr. Barry Boehm** expanded the work of **Winston Royce**.
what is SDLC ?
There are so many definitions for this on the internet. But, standard one among them is it is a blueprint of software/application development process.
The process that we follow inorder to create a new product/application from start to end is called software development life cycle(SDLC)
The steps involved in SDLC process are
1.Requirements gathering
2. Design
3. Implementation
4. Verification
5. Deployment & maintainance
Stage | Description | people involved |
Requirements Gathering | collection/Gathering of requirements from the customer | HR,Business owner, Architect |
Design | Designing which helps the developer to write code to build an application | UI/UX designer |
Implementation | Developer starts writing code with the help of design document given by designer | Developers |
Verification | verify/test the application that was developed. All types of testing will be done here | testers |
Deployment & Maintainance | Deploying the product and providing further support to the customer will be done in this phase | ALL the people involved in Software Development process Depending upon need of an them |
Note : MODEL is a blueprint of doing a process
In order to Implement SDLC, we follow different Modules/Models. They are
- waterfall Model
- RAD Model
- Spiral Model
- V-Model
- Incremental Model
- Agile Model
- Iterative Model
- Bigbang Model
- prototype model
- Devops
1. waterfall Model
- It is also called as Linear sequential life cycle model.
- waterfall model/methodology is one of the most widely used software development methodologies.
- According to this methodology. Every step involved in the waterfall model starts only when preceding step completes.
the steps involved in waterfall Model
- Requirements Gathering
- Analysing the requirements
- Designing
- Implementation
- verification
- Monitoring
- All the steps involved in waterfall model were just like the flow of water from upside to downside.
PROS
- Easy for doing complex applications
- simple & Easy to understand and use.
- clearly defined stages
- process & results are well documented
CONS
- Time taking process
- Releasing / deployment time is more
- If one's comes to the forward step then if we need any modification in previous step it is not possible and we have to start from scratch if it is mandatory
- High risk & uncertainity
- It is difficult to measure progress within a stage
- poor model for long and ongoing projects
- No working software is produced until late during the life cycle.
2.RAD Model It is a model based on both prototyping and iterative development with no specific planning involved. Rapid Application Development is a software development methodology that uses minimal planning in favor of rapid prototyping. A prototyping is a working model that is functionality equivalent to component of the product. In the RAD model, the functional modules are developed in parallel as prototypes and are integrated to make the complete product for faster product delivery. Since there is no detailed preplanning, it makes it easier to incorporate the changes within the development process.
The most important aspect for this model to be successful is to make sure that the prototypes developed are reusable.
pros
- changing requirements can be accomdated.
- progress can be measured
- Reduced development time
- Mork work in less time with less people
- Encourages customer feedback
- Increases reusability of components
- Integration from very beginning solves a lot of integration issues.
cons
- Highly skilled developers/designers required
- Not applicable for cheaper projects
- Requires user involvement throughout the lifecycle
- suitable for projects with shorter development times.
- only System that can be modularized can be built using RAD
3.spiral Model The spiral model is used for risk management that combines the iterative development process model with elements of waterfall model. The spiral model is used by software engineers and is favored for large, expensive and complicated projects. The spiral model looks like a coil with many loops. The number of loops varies based on each project and is often designated by the project manager. Each loop of the spiral is a phase in the software development process.
The spiral model enables gradual releases and refinement of a product through each phase of spiral as well as the ability to build prototypes at each phase.
The most important feature of the model is its ability to manage unknown risks after the project has commenced; creating a prototype makes this feasible.
pros
- changing requiremenst can be accomdated
- Allows extensive use of prototypes
- Requirements can be captured more accurately
- users see the system early
- Development can be divided into smaller parts and the risky parts can be developed earlier which helps in better risk management.
cons
- Management is more complex
- End of project May not be known early
- Not suitable for small or low risk projects and could be expensive for small projects.
- spiral may go on indefinitely
- large number of intermediate stages requires excessive documentation
- process is complex
4.V-Model This also called as verification and validation model. It is just like watefall model, the v-shaped life cycle is a sequential path of execution of processes. each phase must be completed before the next phase begins. Testing of hte product is planned in parallel with a corresponding phase of development in V-model. This is highly disciplined model and the next phase starts only after completion of previous phase.
pros
- This is a higly disciplined model and phases are completed one at a time
- works well for smaller projects where requirements are very well understood
- simple and easy to understand and use
- Easy to manage due to the rigidity of model. Each phase has specific deliverables and a review process.
cons
- High risk and uncertainity
- Not a good model for complex and object oriented projects
- poor model for long and ongoing projects
- Not suitable for projects where requirements are at a moderate to high risk of changing.
- once an application is in the testing stage, it is difficult to go back and change a functionality.
- No working software is produced until late during the life cycle.
5.Incremental Model It is a process of software development where requirements divided into multiple standalone modules of the software development life cycle. In this model, each module goes through the requirements, design, implementation and testing phases. Every subsequent release of the module adds function to the previous release. The process continues until the complete system achieved.
pros
- Errors are easy to be recognized
- Easier to test and debug
- More flexible
- simple to manage risk because it handled during its iteration
- the client gets important functionality early
cons
- Needs good planning
- Total cost is high
- well defined module interfaces are needed.
6.Agile Model
It focuses on collaborative decision making, customer satisfaction , and development over multiple short cycles or sprints, rather than a top-down process with a single series of stages. It is a combination of iterative and incremental process models with focus on process adaptability and customer satisfaction by rapid delivery of working software product. Agile methods break the product into small incremental builds. These builds are provided in iterations. Each iteration typically lasts from about one to three weeks.Every iteration involves cross functional teams working simultaneously on various areas like planning, requirements analysis, design, coding ,unit testing and acceptance testing At the end of the iteration, a working product is displayed to the customer and important stackholders.
The most popular agile methods include Rational Unified process,scrum,crystal clear, extreme programing,Adaptive software development, feature driven development, and dynamic systems development method.These are now collectively referred as Agile Methodologie Agile manifesto principles
- Individuals and interactions
- working software
- customer collaboration
- Responding to change
pros
- Minimal resource requirement
- promotes teamwork and cross training
- functionality can be developed rapidly and demonstrated
- Easy to manage
- little or no plannnig required
- Minimum Resource requirements
cons
- More risk of sustainability, maintainability and extensibility
- Not suitable for handling complex dependencies
- Depending heavily on customer interaction. so, if customer is not clear , team can be driven in the wrong direction.
- There is a very high individual dependency. Since there is minimum documentation generated.
7.Iterative Model
Iterative process starts with a simple implementation of a subset of the software requirements and iteratively enhances the evolving versions until the full system is implemented. At each iteration, design modifications are made and new functional capabilities are added. The basic idea behind this method is to develop a system through repeated cycles (iterative) and in smaller portions at a time (incremental).
pros
- some working functionality can be developed quickly and early in the life cycle.
- Results are obtained early and periodically
- parallel development can be planned
- Better risk analysis
- Initial operating time is less
- Better suited for large and mission-critical projects
- Testing and debugging during smaller iteration is easy.
- During the life cycle, software is produced early which facilitates customer evaluation and feedback
cons
- Management complexity is more
- system architecture or design issues may arise because not all requirements are gathered in the beginning of the entire life cycle
- Not suitable for small projects
- End of project may not be known which is a risk
- Highly skilled resources are required for risk analysis
- project progress highly dependent upon the risk analysis phase
8.Bigbang Model The Bigbang Model is an SDLC model where we do not follow any specific process. The development just starts with the required money and efforts as input, and the output is the software developed which may or maynot be as per customer requirement. The Bigbang model doesn't follow a process/procedure and there is very little planning requited. Even the customer is not sure what exactly he wants and the requirements are implemented on the fly without much analysis. This model is mostly used for small,college,practice projects
pros
- This is very simple model
- little or no planning required
- Easy to manage
- very few resources required
- Gives flexibility to developers
- It is a good learning aid for new comers or students
cons
- very high risk and uncertainity
- Not a good model for complexity and object oriented projects
- Poor model for long and ongoing projects
- can turn out to be very expensive if requirements are misunderstood.
9.prototype Model
- The prototype method revolves around the creation of low fidelity prototype for the purpose of collecting early feedback from the prospective users. From there, prototypes are evolved into final software requirements.
it is a software development model in which a prototype is build, tested, and reworked until an acceptable prototype is achieved. It also creates a base to produce the final system or software. It works best in scenarios where the project's requirements are not known in detail. It is an iterative , trial and error method which takes place between client and developer.
pros
- Encourages innovation and flexible designing
- no need of specialized experts to build the model.
- There will be hardly any chance of software rejection
- prototypes can be changed or even discarded
- prototypes may offer early training for future users of the software system.
cons
- It is slow and time taking process
- customer needs to be in the entire process
- poor documentation
- Higher expectation due to prototyping
- developers who want to build a prototype may end up building substandard development solution.
Below are not a SDLC technically but we use them 10.lean Lean is a system that focuses on making more with less. Many have more-recently discovered that Lean works extremely well with software development, especially Agile.
While Agile focuses on delivering continuous value, the goal of Lean is to increase the speed and decrease the cost of product development
Lean focuses on the following “just in time” principles:
- Eliminating waste in cost, scope, and scheduling
- Amplifying learning
- Taking decisions as late as possible
- Fast delivery
- Empowering the team
- Building integrity
- Optimizing the entire project
11.Devops DevOps is not technically an SDLC methodology but it does share the goal of maximizing software project success and includes Agile-inspired concepts.
DevOps is defined as “a set of practices that combines software development and IT operations. It aims to shorten the systems development life cycle and provide continuous delivery with high software quality.
advantages of Devops
- Software development teams are self-sufficient; shipping and maintaining software without depending on the IT or technical operations teams.
- The deployment process is automated and optimized. A junior developer can learn to safely deploy, with less effort.
- Teams implement Continuous Integration / Continuous Delivery (CI/CD).
- Using the right tools, engineers save time on deployment so they can focus on coding.
- Feedback loops integrated throughout the entire process.
Quick Check :
- what is SDLC & why it is needed ?
- what is waterfall model ?
- Difference between prototype and iterative model ?
- Difference between spiral and incremental model ?
- what is agile model & Devops ?
Hope you had some learning.. Please Share and Comment your feedback
See you soon with next article, until then Keep Learning .......