Software
Development Life Cycle
The Software Development Life Cycle (SDLC) is a structured process used for developing high-quality software systematically. It defines steps to follow, from the initial planning to the final deployment and maintenance of software.
Need of SDLC (Software Development Life Cycle)
- SDLC provides a structured
approach to
software development, helping developers follow a clear, step-by-step
process.
- It improves project management by allowing better planning,
scheduling, and tracking of resources, time, and progress.
- It helps in early detection of
errors, reducing
the cost and effort required to fix issues later in the development cycle.
- SDLC enhances communication between developers, testers,
clients, and stakeholders by maintaining clear documentation and process
flow.
- It ensures quality assurance by including validation and
testing activities at every stage of development.
- It helps manage complex projects by dividing the work into
manageable phases, making it easier to develop and monitor.
Importance of SDLC
- SDLC ensures a clear understanding
of user requirements, helping the development team deliver what the
client actually needs.
- It makes efficient use of
resources,
including time, cost, and workforce, by avoiding unnecessary work and
rework.
- It leads to higher customer
satisfaction by
involving the client throughout the development process and delivering a
usable product.
- It helps in identifying and
managing risks early, preventing major issues in later stages of the
project.
- It maintains proper documentation at each stage, which is helpful
for future maintenance, updates, or upgrades.
- SDLC offers flexibility in
development, as it
supports different models like Waterfall, Agile, Spiral, etc., depending
on project needs.
Phases of SDLC
1. Planning
This initial phase involves defining what the software should do, who will use
it, and why it is needed. The team sets clear goals, decides the budget,
creates a timeline, identifies risks, and checks if the project is feasible. A
detailed project plan is made to guide the entire process.
2.
Requirements Analysis
In this phase, the team meets with users and clients to gather all necessary
requirements. They clearly document these needs in the Software Requirements
Specification (SRS) to avoid confusion later and ensure everyone agrees on what
the software must deliver.
3. Design
Here, the team designs how the software will function and appear. This includes
creating system architecture, user interface layouts, data flow diagrams, and
database designs. All these details are compiled into the Software Design
Document (SDD), serving as a blueprint for development.
4.
Coding and Unit Testing
Developers write the actual code based on the design documents. Each part or
module of the software is tested individually through unit testing to catch and
fix errors early while following coding standards.
5.
Integration and System Testing
After individual modules are complete, they are combined and tested together in
integration testing. Then, system testing verifies that the entire software
meets user requirements and functions correctly as a whole, with any bugs found
being fixed.
6.
Deployment
Once testing is successful, the software is released or installed for
end-users. This phase often includes user training and ongoing support to help
users effectively use the software.
7.
Maintenance
After deployment, the software requires continuous support to fix bugs, update
features, and improve performance based on user feedback and changing needs.
Elaborate System Study
System Study is the first and most important step in system development. It is done to understand the current system completely and to identify the need for a new system.
Key Objectives:
· Understand how the existing system works.
· Identify problems, weaknesses, or limitations.
· Determine user needs and expectations.
· Study the business processes and information flow.
Techniques Used:
· Interviews with users and stakeholders
· Observations and document reviews
· Questionnaires and surveys
· Studying system reports and data flow
Output: A clear understanding of the current system and a strong base for planning the new system.
Elaborate the Feasibility Study and Its Types
Feasibility Study checks if the new system is practical and possible. Before spending time and money on development, we must know whether it is worth doing.
Purpose:
· To evaluate if the project is possible, useful, and affordable.
· To help management decide whether to go ahead with the project.
Types of Feasibility:
1. Technical Feasibility – Do we have the technology, tools, and expertise to build the system?
2. Economic Feasibility – Will the benefits of the system be greater than its cost?
3. Operational Feasibility – Will the users accept and be able to use the system easily?
4. Legal Feasibility – Are there any laws or regulations that affect the system?
5. Time Feasibility – Can we complete the project within the required deadline?
Output: A Feasibility Report stating whether the project is suitable for development.
Describe the System Analysis
System Analysis is the process of gathering and analyzing all requirements for the new system. This is where we understand what the system should do, but not how to do it.
Goals:
· Find out what users want and need.
· Understand problems in the current system.
· Document the functional and non-functional requirements.
Output:
· A Software Requirement Specification (SRS) document should be prepared
SRS
SRS (Software Requirements Specification) is a document that clearly describes what a software system should do. It is used by developers, testers, and clients to understand all the system's requirements.
It includes:
1.
Introduction
– Purpose and scope of the project
2.
Overall Description
– Users, system environment, and features
3.
Functional
Requirements – What the system should do
4.
Non-Functional
Requirements – How the system should behave (e.g. speed, security)
5. Interfaces – User interface, hardware/software connections
Types of requirements
Functional Requirements
Functional requirements describe the specific actions or tasks that a software system must be able to perform. They tell us what the system should do to meet the needs of users. For example, in an online shopping website, a functional requirement would be that users can add items to their shopping cart and place an order. These requirements focus on the features and behaviors of the system.
Non-Functional Requirements
Non-functional requirements describe the qualities or characteristics that the software must have. They explain how the system should perform rather than what it does. For instance, in the same online shopping website, a non-functional requirement could be that the website should load within 2 seconds or that the user’s personal data must be securely protected. These requirements focus on performance, security, usability, and other system attributes.
Describe the System Design
System Design is the phase where the structure and components of the system are planned. This includes how the system will look and how it will work internally.
Activities:
· Design system architecture and modules
· Create database design (ER diagrams, tables)
· Design user interfaces and screen layouts
· Plan inputs, outputs, reports, and data flow
Output:
· Software Design Document (SDD) that guides the programmers in coding
· Helps break down the system into manageable parts
Describe the System Development
System Development (also called Coding or Programming) is when the actual software is created by developers. They write the code using the programming languages defined during design.
Activities:
· Developers write and organize code module by module
· Unit testing is done for each small piece
· Developers may use tools like version control (e.g., Git) to manage code
· Follow coding standards and documentation
Output: A working software system based on design.
Demonstrate the System Testing
System Testing checks if the software works properly and is free from bugs or errors. It ensures that the software meets all the requirements.
Types of Testing:
1. Unit Testing – Testing individual components or modules
2. Integration Testing – Testing combined modules together
3. System Testing – Testing the complete software system
4. User Acceptance Testing (UAT) – Final testing by the end-users
5. Alpha Testing: Done by internal team before release.
6. Beta Testing: Done by selected real users after alpha and before final release.
7. Black Box Testing: Tester doesn't know internal code, focuses on input/output.
8. White Box Testing: Tester knows internal logic and tests paths, loops, etc.
9. Grey Box Testing: Combines both black and white box techniques.
Goal:
· To find and fix bugs
· To check whether the system works correctly, securely, and efficiently
Output: A fully tested and verified software product, ready for use.
Describe the System Implementation
System Implementation is the phase where the tested software is delivered to the users and installed in the real environment.
Activities:
· Installing the software on user systems or servers
· Migrating data from old to new system
· Training users and IT staff
· Providing manuals and support
Implementation Strategies:
· Direct (Big Bang) – Replace old system completely at once
· Parallel – Use both old and new systems for a while
· Phased – Implement one part/module at a time
· Pilot – Test the system at one location before full rollout
Output: The system goes live, and users start using it in real scenarios.
Describe the System Maintenance and Reviews
System Maintenance is the phase after deployment where the system is regularly checked, updated, and improved.
Types of Maintenance:
1. Corrective Maintenance – Fixing bugs or problems
2. Adaptive Maintenance – Making the system work with new hardware/software
3. Perfective Maintenance – Improving performance or adding small features
4. Preventive Maintenance – Making changes to avoid future problems
System Review:
· Regularly checking system performance
· Collecting user feedback
· Planning for future updates or replacement
Output: A stable, updated system that keeps meeting users' needs over time.
Comments
Post a Comment