Software Development Life Cycle
Software Development Life Cycle
Software Development Life Cycle
The SDLC aims to produce high-quality software that meets or exceeds customer
expectations, reaches completion within times and cost estimates.
System analysts can use it, designers and developers to plan and implement the
applications and deliver the systems or products on time and within budget.
The following figure shows the details process of Software Development Life Cycle,
Project Initiation
This is the first stage in the Software Development Life Cycle where the project is
initiated.
The high-level scope, problems and solutions are determined, and planning is carried
out accordingly for other stages.
Extensibility:
Other components that are to be considered in this stage are Resources,
time/schedules, milestones, cost, business benefits and deadlines. In the case of
enhancements to existing projects, the strengths and weaknesses of the current
software are studied, and the improvements are set as a goal, along with the collected
requirements.
Requirements Gathering
Analysis
The Analysis Phase is where you break down the deliverables in the high-level Project
Charter into the more detailed business requirements. The Analysis Phase is also the
part of the project where you identify the overall direction that the project will take
through the creation of the project strategy documents.
System Design
• The technical architects and developers develop the logical plan of the system which
is then reviewed by all the stakeholders.
• At last, prepare a design document which will be used during next phases.
Development
• Taking all the detailed design documents from the design phase and transforming
them into the actual system.
• This stage in more straightforward terms is where the “real work begins” and we “build
what is needed”.
• The developers start to code as per the requirements and the developed design.
• Along with the coding, all the other required set-up will begin. i.e., the database set up
by database admin, interface and GUI creation by front-end developers, etc.
• Along with coding, it is also essential for developers to develop unit tests for their
module, peer review other module’s unit tests, deploy builds to the intended
environment and execute unit tests.
Testing
• This stage is the one where the quality check takes place. The developed software is
assessed to ensure that all the specified requirements are met.
• Write the test condition and perform the testing of the system.
• This stage is used to validate whether the application addresses all User
Requirements, technical performance.
• This is performed by the testing team, and the focus is to find the defects.
• During test case execution, all the error found which are reported in the test
management tool and the decision of considering the defect as Valid or Invalid depends
on developers.
• Each defect that is found will have to go through the Defect Life Cycle in the defect
management tool.
• Again, the testing approach that the project choose depends on various factors: the
complexity of the project, the team’s capability, time, etc.
Deployment or Implementation
• Write detailed user documentation and provide training for the system user.
• Once the testing is completed and, there are no open high priority issues, then comes
the time to deploy the build to the Production environment. This is the environment
which is accessible by real users. Real users can then use the software as per their
needs.
• Due to the high cut-over time, the Production deployment usually takes place during
non-peak hours and / or weekends.
Maintenance
• This stage is when the “fine tuning” of the software takes place. Once the build is
deployed to Production environment, any issues that the real users face are considered
as Post-Production issues.
• These Post-Production issues are addressed and resolved by the internal team
usually termed as Maintenance team.
• This stage also addresses minor change requests, code fixes, etc. and deploys them
in short intervals.
• You can fix any historical defects of the application in this phase
Software Development Life Cycle is needed in any of the project for the below reasons:
• Enhance the quality of the software
• Define the goals to the team so that developers know what to build and testers know
what and how to test
• Reduce the rate of vulnerabilities (fewer or none)
• Management control
• Effective documentation and reduced dependencies
• Effective resource utilization
• Effective cost and time definition
• Ensure the architecture and design are secure
• Define and adhere to the set processes and objectives
• Meet and exceed Customer’s expectation