I am writing this article on the basic understanding of software development process and its lifecycle through out the different stages.
What is software development?
Software development is the process of transforming customer requirements into a complete software product.
Software development only starts once we completed below processes which are involved in Software Development Life Cycle:
- Requirement gathering session with the Customer
- Solution Architect or engineering team finalize the design and basic architecture of the software or product
- Delivery Manager splits the phases of development according to the design and planning session with technical leads.
- Project Manager got the development request feature based and then he assigned this request to development team.
What is Software Development Life Cycle?
The Software Development Life Cycle also known as SDLC which aims to produce high-quality software that meets or exceeds customer expectations reaches completion within times and cost estimates.
ISO/IEC 12207 is an international standard for software life-cycle processes. It aims to be the standard that defines all the tasks required for developing and maintaining software.
In software development lifecycle, it involves different stages and needs to follow the order to achieve the goal as below
Requirements
This is the most important phase in the software development lifecycle. In this stage, the requirements are gathered from the Customers and then requirements gets analyzed to ensure the feasibility
Design
Once the requirement are received, the architect transform these requirements in to the technical specifications and plan the software components which have to be designed.
Implementation
The specifications are then passed on to the developers which create the application based on these specifications.
Verification
Once the development work is done on the application, it is verified by the group of testers to map the application functionalities with the specification given by the customers
Maintenance
Once the code is verified, it is pushed to production. Post this, the application is updated with any future enhancements or optimizations whenever required.
Software Development Life Cycle Models (SDLC Models)
Traditionally, there have been 3 major software development models that most companies follows:
- Waterfall Model
- Agile Model
- Lean Model
Waterfall Model:
Waterfall Model was among the first development models which followed SDLC. It follows a linear sequential model of development i.e. until the first stage not finished; the next stage will not start.
Advantages of Waterfall Model | Disadvantages of Waterfall Model |
Clear objective and Specific deadlines | Working product is not available until the later stage in lifecycle |
No ambiguous requirements | Poor model for large and complex projects |
Well understood Milestones | Cannot accommodate change in requirements |
Process and results are well documented | High risk and uncertainty |
Agile Model:
To overcome the challenges faced in waterfall model, we came up with Agile methodology.
Agile method believes in creating shorter development lifecycles. These are achieved by not releasing all features by once and following an incremental model of development. Priority and feature wise development and delivery model.
Advantages of Agile Model | Disadvantages of Agile Model |
Customer satisfaction is High | Not suitable for handling complex dependencies in projects |
Less planning required | Knowledge transfer to colleagues can be difficult |
Requirements can be dynamic in nature | There is less documentation |
Functionality can be created and tested quickly | Success on projects depends heavily on Customer interactions |
Lean Model:
Lean Model has 7 principles. Lean development is a philosophy of increasing quality in software delivery by making use of Agile methods. It only focus on what is required now(Priority).
Lean Methodology’s has its primary focus on two things – Respect for frontline workers and Continuous improvement.
Advantages of Lean Model | Disadvantages of Lean Model |
Carries the same advantages as Agile Methodology | Largely depend on the skill set of the team therefore require strong team |
Creates a positive working environment | No room for error |
Customer feedback is given the utmost importance | Missed delivery cannot be tolerated |
Limiting Wastes saves time and money | Success of the project depends heavily on Customer interaction |
Summarizing all three Models
Problem with Waterfall Model was, the development lifecycle took a lot of time to complete its cycle. Therefore at the time we finished the product delivery, the customer requirements were no longer the same.
The problem in Waterfall Model was fixed in Lean and Agile methodologies, these methodologies strictly focused on Customer feedback and improving the software quality that too in a shorter development lifecycle.