Bishwadeep Bose - ESC - 501
Bishwadeep Bose - ESC - 501
Bishwadeep Bose - ESC - 501
1. Phases of SDLC
1.1. Planning and Requirement Analysis
• Objective: This is the most critical phase where
project goals are established, and the feasibility of
the project is evaluated.
• Activities:
o Requirement gathering from stakeholders
database, UI/UX).
o Defining software modules, data flow, and
interface designs.
o Preparing technical documentation to guide
developers during coding.
programming language.
o Code is broken down into small, manageable
components or modules.
o Integration of modules once individual
different environments.
o Verification that the software fulfills all
training.
o Providing post-deployment support for any
2. SDLC Models
Different SDLC models are used based on the project
requirements, complexity, and goals. Here are a few
common models:
2.1. Waterfall Model
• Description: A linear, sequential approach where
each phase must be completed before the next one
begins.
• Advantages: Simple, easy to manage, and suitable
for small projects with well-defined requirements.
• Disadvantages: Inflexible; difficult to make
changes once the project is in later stages.
2.2. Agile Model
• Description: An iterative and incremental
approach that promotes flexibility and customer
collaboration. Development is done in sprints
(short cycles).
• Advantages: Flexible, allows for frequent changes
and client feedback, and promotes rapid delivery.
• Disadvantages: Can be challenging to manage
without clear documentation, and scope creep is
possible.
2.3. Spiral Model
• Description: Combines elements of both iterative
and Waterfall models. It focuses on risk analysis
and evolves through multiple iterations (spirals).
• Advantages: Risk management is prioritized, and
the model is suitable for large, complex projects.
• Disadvantages: Expensive due to ongoing risk
assessments and frequent changes.
4. Importance of SDLC
4. Challenges in SDLC
• Changing Requirements: Projects with unclear or
frequently changing requirements can be difficult
to manage.
• Time and Resource Constraints: Tight deadlines
or insufficient resources may compromise the
quality of the final product.
• Complexity in Large Projects: Managing large-
scale projects with multiple interdependent
modules can be challenging, especially in models
like Waterfall.
1. Waterfall Model
The Waterfall Model is one of the earliest SDLC
models and follows a linear and sequential approach.
Each phase in the development process must be
completed before the next one begins, and there is little
to no overlap between phases. This model is best suited
for projects with well-defined requirements that are
unlikely to change.
Example: Traditional Banking System
A traditional banking system upgrade or development
project could be an ideal use case for the Waterfall
model. The requirements for such systems are
generally well-understood and stable. The bank would
define clear objectives (such as automating certain
banking processes), and the Waterfall model's strict
phase-by-phase approach ensures that every feature is
thoroughly designed, implemented, and tested before
moving forward.
Phases:
1. Requirements Gathering: Defining detailed
system requirements such as transaction handling,
account management, and security features.
2. System Design: Architects design the overall
system structure, database schema, and software
architecture.
3. Implementation: Developers write the code for
the system following the design.
4. Testing: The system undergoes comprehensive
testing to identify and fix bugs.
5. Deployment: Once testing is complete, the
software is deployed into the banking environment.
6. Maintenance: Ongoing support is provided to
handle any issues or changes that arise post-
deployment.
2. Agile Model
The Agile Model is an iterative and flexible approach
to software development. Instead of delivering a
complete system at once, development is broken into
smaller cycles called sprints. Agile encourages
collaboration with customers and adapts to changes in
requirements throughout the development process.
Example: Mobile App Development
Agile is commonly used in the development of mobile
applications, where customer feedback and frequent
updates are vital. A team developing a social media app
may use Agile to release minimum viable products
(MVPs) in iterations, gathering user feedback and
adding features in subsequent sprints.
Phases (in each sprint):
1. Planning: The team works with stakeholders to
prioritize tasks for the sprint, such as adding a new
messaging feature.
2. Design: Designers and developers collaborate to
sketch out the feature design.
3. Development: The team develops the feature
within the sprint, ensuring that code is
continuously integrated.
4. Testing: The feature is tested for bugs and
performance issues within the sprint.
5. Review and Feedback: Stakeholders review the
completed feature, provide feedback, and decide on
new priorities for the next sprint.
Agile allows the app to be deployed quickly, with
iterative improvements based on user feedback, making
it ideal for dynamic and evolving projects.
4. Iterative Model
The Iterative Model focuses on delivering software in
small, incremental builds, with each iteration improving
upon the previous one. Instead of starting with the full
set of requirements, the development team starts with a
basic version and gradually adds features in subsequent
iterations.
Example: Video Game Development
Video game development often follows the iterative
model due to the complexity of gameplay mechanics,
user interface design, and graphics.
Phases (for each iteration):
1. Initial Planning: The development team builds a
prototype or a simplified version of the game with
basic gameplay mechanics.
2. Design and Development: Developers and artists
collaborate to implement and refine game features,
such as character movement or level design.
3. Testing: Each iteration undergoes testing for bugs
and player feedback.
4. Feedback and Improvement: Based on user
feedback, the team refines the game, adding new
features or improving gameplay mechanics in
subsequent iterations.
The iterative model allows game developers to test
ideas quickly and refine the game based on player
experience and market feedback.
5. Spiral Model
The Spiral Model combines elements of both the
iterative and Waterfall models, focusing on risk
assessment at each iteration. It is especially useful for
large, complex projects where risk management is
critical.
Example: Large-Scale Enterprise Software
For large enterprise resource planning (ERP) software,
the Spiral Model helps manage risks such as cost
overruns, changing requirements, or integration
challenges.
Phases:
1. Planning: Initial requirements are gathered, such
as inventory management or payroll processing for
the ERP system.
2. Risk Analysis: Each requirement or feature is
assessed for potential risks, such as integration
challenges with existing systems or data security
concerns.
3. Engineering: The ERP system is developed
incrementally, with high-risk features tackled first.
4. Evaluation: After each iteration, stakeholders
review the system and decide on the next set of
features to develop based on risks and priorities.
The Spiral Model’s emphasis on risk analysis makes it
well-suited for large, mission-critical projects where
failing to identify risks early can lead to costly delays or
failures.
6. DevOps Model
The DevOps Model integrates development (Dev) and
operations (Ops) to ensure continuous delivery and
integration. It emphasizes automation, collaboration,
and monitoring throughout the software development
and deployment process.
Example: Cloud-Based Applications
A cloud-based platform, such as an e-commerce website,
can leverage DevOps to ensure continuous updates,
high availability, and scalability.
Phases:
1. Development: Developers continuously write and
commit code to a shared repository.
2. Continuous Integration (CI): Automated tools
compile and test the code after every commit,
ensuring that the build is stable.
3. Continuous Deployment (CD): The code is
automatically deployed to production once it passes
all tests, reducing downtime.
4. Monitoring: The live application is monitored for
performance and user feedback, which feeds into
the next development cycle.
In the case of a cloud-based e-commerce platform,
DevOps ensures that the website remains available
24/7, and new features or bug fixes can be rolled out
quickly without disrupting service.