0% found this document useful (0 votes)
27 views3 pages

SDLC Overview and Class Notes

The Software Development Life Cycle (SDLC) is a structured process that guides software engineers through the phases of requirement analysis, system design, implementation, testing, deployment, and maintenance to produce high-quality software. Various models such as Waterfall, Agile, and Spiral cater to different project needs and complexities. The SDLC ensures clear structure, improved tracking, and early risk detection, ultimately leading to reliable software that meets user expectations.
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
27 views3 pages

SDLC Overview and Class Notes

The Software Development Life Cycle (SDLC) is a structured process that guides software engineers through the phases of requirement analysis, system design, implementation, testing, deployment, and maintenance to produce high-quality software. Various models such as Waterfall, Agile, and Spiral cater to different project needs and complexities. The SDLC ensures clear structure, improved tracking, and early risk detection, ultimately leading to reliable software that meets user expectations.
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd

# Software Development Life Cycle (SDLC) - Detailed Class Notes

## 1. Introduction
The Software Development Life Cycle (SDLC) is a structured process used by software
engineers to design, develop, test, and deploy software systems.
It defines *how* software projects are planned, executed, and maintained.

Goal: To produce high-quality software that meets or exceeds customer expectations,


reaches completion within time and cost estimates, and is maintainable.

---

## 2. Phases of SDLC

### 2.1 Requirement Analysis


- Purpose: To understand what the user wants.
- Activities:
- Conduct stakeholder interviews.
- Create Software Requirement Specification (SRS).
- Identify functional and non-functional requirements.
- Output: SRS document.

### 2.2 System Design


- Converts requirements into a blueprint for software construction.
- Includes architecture, data flow diagrams (DFD), and database schema.
- Example:
[User] → [Login Page] → [Dashboard] → [Database]
- Output: Design Document Specification (DDS).

### 2.3 Implementation (Coding)


- Developers write the code using programming languages like Python, Java, or C#.
- Coding follows design standards and naming conventions.
- Example:
def login(username, password):
if username == "admin" and password == "1234":
return "Access Granted"
else:
return "Access Denied"

### 2.4 Testing


- Purpose: To identify and fix software defects.
- Types:
- Unit Testing
- Integration Testing
- System Testing
- User Acceptance Testing (UAT)
- Example tools: Selenium, JUnit, Pytest.

### 2.5 Deployment


- Software is released to production.
- Deployment may occur in stages (alpha, beta, live).
- CI/CD pipelines automate this phase.

### 2.6 Maintenance


- After release, the software is monitored for issues.
- Bug fixes and enhancements are applied through updates or patches.

---
## 3. SDLC Models

### 3.1 Waterfall Model


- Linear and sequential.
- Each phase must be completed before the next begins.
- Best for small, well-defined projects.

### 3.2 Agile Model


- Iterative and incremental.
- Focuses on collaboration, customer feedback, and quick delivery.
- Example frameworks: Scrum, Kanban.

### 3.3 Spiral Model


- Combines iterative development with risk analysis.
- Ideal for large and complex projects.

### 3.4 V-Model (Verification and Validation)


- Extension of the waterfall model.
- Each development phase has a corresponding testing phase.

### 3.5 Iterative Model


- Develops software through repeated cycles.
- Allows frequent updates and refinements.

---

## 4. Comparison Table

| Model | Flexibility | Feedback | Suitable For |


|-------------|--------------|-----------|--------------------------|
| Waterfall | Low | Late | Simple, fixed projects |
| Agile | High | Continuous| Dynamic environments |
| Spiral | Medium | Early | Risk-prone projects |
| V-Model | Low | Early | Verification-focused |

---

## 5. Advantages of SDLC
- Clear structure and control.
- Improved project tracking.
- Early risk detection.
- Enhanced quality and maintainability.

---

## 6. Real-World Example
**Case Study: Online Banking Application**
1. Requirement: Secure login, balance check, fund transfer.
2. Design: Use microservices and encryption.
3. Coding: REST APIs with Python Flask.
4. Testing: Unit, Integration, and Penetration testing.
5. Deployment: AWS Cloud.
6. Maintenance: Security updates every 3 months.

---

## 7. Summary
SDLC provides a roadmap for developing reliable software.
Each phase plays a crucial role in transforming an idea into a functional product
that satisfies end-users.

Common questions

Powered by AI

The Spiral model combines iterative development by allowing repeated cycles of development, testing, and refinement, with a strong emphasis on risk analysis during each cycle. This dual focus helps to continuously address potential risks and challenges incrementally throughout the project lifecycle . It is suitable for large and complex projects because its iterative nature allows for regular assessments and modifications, reducing risks over time while accommodating the complexities and unpredictabilities of extensive projects .

The SDLC model selected impacts the maintenance phase by determining how easy it is to implement updates and bug fixes post-deployment. Models like Agile, with iterative cycles, support frequent enhancements and adjustments through ongoing releases, thus streamlining maintenance activities . In contrast, the Waterfall model, being rigid and linear, can complicate maintenance as it does not naturally accommodate changes after deployment. The Spiral model, with its risk analysis focus, might ensure better preparedness for maintenance challenges by identifying potential issues early .

The Agile model is considered more suitable for dynamic environments because it is iterative and incremental, allowing for ongoing collaboration and customer feedback, which leads to quick delivery and adaptation to changing requirements . In contrast, the Waterfall model is linear and sequential, requiring the completion of one phase before the next begins, making it less flexible and slower to respond to changes, thus not ideal for environments that require frequent iteration .

Testing in the SDLC serves to identify and fix software defects before deployment, ensuring software quality and reliability. It includes unit testing, integration testing, system testing, and user acceptance testing (UAT). In the V-Model, testing is planned parallel with each phase of software development, where each development phase has a corresponding testing phase aimed at validation and verification, providing early detection of issues before building on them in subsequent stages .

CI/CD pipelines enhance the deployment phase of the SDLC by automating the steps required to release software, thereby reducing manual errors, ensuring consistency, and accelerating the software release process . Continuous Integration (CI) involves automatic testing and integration of code changes, while Continuous Deployment (CD) automates the release process into production. This seamless integration and deployment facilitate frequent and reliable software updates, allowing development teams to quickly deliver features and fixes to users .

Key factors in choosing between different SDLC models include project size and complexity, the level of risk involved, requirements volatility, and stakeholder feedback needs. For example, the Agile model is suitable for environments with high uncertainty and dynamic requirements due to its adaptability and iterative nature . Conversely, the Waterfall model may be appropriate for small, well-defined projects with minimal expected changes. Additionally, considering factors like resource availability, timeline constraints, and the desired flexibility for changes can also guide the choice of the most suitable SDLC model .

The system design phase in the SDLC converts requirements specified in the Software Requirement Specification (SRS) into a blueprint for constructing software. This phase includes creating architecture, data flow diagrams (DFD), and database schema to ensure a structured approach before actual coding begins . By providing a clear design document specification (DDS), this phase minimizes ambiguities, ensures alignment with user requirements, and facilitates efficient coding, leading to high-quality software outcomes .

The requirement analysis phase ensures software projects meet user expectations through various activities such as stakeholder interviews, creation of Software Requirement Specification (SRS) documents, and identification of functional and non-functional requirements . These activities provide a comprehensive understanding of what the user needs, enabling a precise translation of user expectations into technical specifications that guide later stages of the development process, thus ensuring software alignment with user needs .

Using microservices in the design of an online banking application offers benefits such as scalability, flexibility, and improved fault isolation. Each service can be developed, deployed, and scaled independently, allowing for efficient management of banking operations like secure login, balance checks, and fund transfers . Applications of microservices include enhancing security by isolating functions into discrete services and enabling seamless integration of third-party services, thereby improving both functionality and user experience .

The primary advantages of using the Waterfall model include its clear, linear structure which provides a straightforward management of each stage in the SDLC, making it easier to track progress and manage timelines for simple, well-defined projects . However, potential drawbacks include its inflexibility in accommodating changes once a phase is completed, leading to challenges in adapting to unforeseen changes or requirements that emerge later in the development process, often resulting in cost and time inefficiencies .

You might also like